diff -Nur linux-2.4.36.2.org/Makefile linux-2.4.36.2/Makefile --- linux-2.4.36.2.org/Makefile 2008-02-25 05:38:03.000000000 +0900 +++ linux-2.4.36.2/Makefile 2008-04-19 22:47:42.000000000 +0900 @@ -1,7 +1,7 @@ VERSION = 2 PATCHLEVEL = 4 SUBLEVEL = 36 -EXTRAVERSION = .2 +EXTRAVERSION = .2-kuroBOX KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) @@ -74,7 +74,7 @@ # images. Uncomment if you want to place them anywhere other than root. # -#export INSTALL_PATH=/boot +export INSTALL_PATH=/boot # # INSTALL_MOD_PATH specifies a prefix to MODLIB for module directory diff -Nur linux-2.4.36.2.org/arch/ppc/config.in linux-2.4.36.2/arch/ppc/config.in --- linux-2.4.36.2.org/arch/ppc/config.in 2008-02-25 05:38:03.000000000 +0900 +++ linux-2.4.36.2/arch/ppc/config.in 2008-04-19 22:47:00.000000000 +0900 @@ -6,6 +6,7 @@ define_bool CONFIG_RWSEM_GENERIC_SPINLOCK n define_bool CONFIG_RWSEM_XCHGADD_ALGORITHM y define_bool CONFIG_HAVE_DEC_LOCK y +define_bool CONFIG_GENERIC_ISA_DMA y mainmenu_name "Linux/PowerPC Kernel Configuration" @@ -129,16 +130,13 @@ IBM-Spruce CONFIG_SPRUCE \ Motorola-LoPEC CONFIG_LOPEC \ Motorola-Sandpoint CONFIG_SANDPOINT \ + Buffalo-Linkstation CONFIG_LINKSTATION \ Motorola-PowerPlus CONFIG_PPLUS \ Motorola-PrPMC750 CONFIG_PRPMC750 \ SBS-Palomar4 CONFIG_PAL4 \ Synergy-Gemini CONFIG_GEMINI" CHRP/PowerMac/PReP fi -if [ "$CONFIG_SANDPOINT" = "y" ]; then - bool 'Enable MPC10x store gathering' CONFIG_MPC10X_STORE_GATHERING -fi - if [ "$CONFIG_LOPEC" = "y" ]; then define_bool CONFIG_EPIC_SERIAL_MODE y define_bool CONFIG_GEN550 y @@ -155,6 +153,21 @@ if [ "$CONFIG_SANDPOINT" = "y" ]; then define_bool CONFIG_EPIC_SERIAL_MODE y define_bool CONFIG_GEN550 y + bool 'Enable MPC10x store gathering' CONFIG_MPC10X_STORE_GATHERING +fi + +if [ "$CONFIG_LINKSTATION" = "y" ]; then + define_bool CONFIG_GEN550 y +# define_bool CONFIG_EPIC_SERIAL_MODE y + bool 'Enable MPC10x store gathering' CONFIG_MPC10X_STORE_GATHERING + bool ' Use EPIC serial mode' CONFIG_EPIC_SERIAL_MODE + choice 'Model Type' \ + "HD-LAN CONFIG_LAN \ + HD-HLAN CONFIG_HLAN \ + KUROBOX CONFIG_KUROBOX \ + HD-HGLAN CONFIG_HGLAN \ + KUROBOXHG CONFIG_KUROBOXHG \ + HD-HTGL CONFIG_HTGL" HD-HTGL fi if [ "$CONFIG_SPRUCE" = "y" ]; then diff -Nur linux-2.4.36.2.org/arch/ppc/kernel/Makefile linux-2.4.36.2/arch/ppc/kernel/Makefile --- linux-2.4.36.2.org/arch/ppc/kernel/Makefile 2008-02-25 05:38:03.000000000 +0900 +++ linux-2.4.36.2/arch/ppc/kernel/Makefile 2008-04-19 22:47:00.000000000 +0900 @@ -88,6 +88,9 @@ pplus_common.o obj-$(CONFIG_SANDPOINT) += i8259.o open_pic.o mpc10x_common.o \ pci_auto.o indirect_pci.o todc_time.o +# __LS_COMMENT__ BUFFALO change 2004.8.28 +obj-$(CONFIG_LINKSTATION) += open_pic.o mpc10x_common.o \ + pci_auto.o indirect_pci.o obj-$(CONFIG_SPRUCE) += indirect_pci.o pci_auto.o todc_time.o obj-$(CONFIG_8260) += m8260_setup.o cpm2_pic.o obj-$(CONFIG_BOOTX_TEXT) += btext.o diff -Nur linux-2.4.36.2.org/arch/ppc/kernel/mpc10x_common.c linux-2.4.36.2/arch/ppc/kernel/mpc10x_common.c --- linux-2.4.36.2.org/arch/ppc/kernel/mpc10x_common.c 2008-02-25 05:38:03.000000000 +0900 +++ linux-2.4.36.2/arch/ppc/kernel/mpc10x_common.c 2008-04-19 22:47:00.000000000 +0900 @@ -247,6 +247,53 @@ mpc10x_disable_store_gathering(hose); #endif + /* + * 8240 erratum 26, 8241/8245 erratum 29, 107 erratum 23: speculative + * PCI reads may return stale data so turn off. + */ + if ((host_bridge == MPC10X_BRIDGE_8240) + || (host_bridge == MPC10X_BRIDGE_8245) + || (host_bridge == MPC10X_BRIDGE_107)) { + + early_read_config_dword(hose, + 0, + PCI_DEVFN(0,0), + MPC10X_CFG_PICR1_REG, + &picr1); + + picr1 &= ~MPC10X_CFG_PICR1_SPEC_PCI_RD; + + early_write_config_dword(hose, + 0, + PCI_DEVFN(0,0), + MPC10X_CFG_PICR1_REG, + picr1); + } + + /* + * 8241/8245 erratum 28: PCI reads from local memory may return + * stale data. Workaround by setting PICR2[0] to disable copyback + * optimization. Oddly, the latest available user manual for the + * 8245 (Rev 2., dated 10/2003) says PICR2[0] is reserverd. + */ + if (host_bridge == MPC10X_BRIDGE_8245) { + ulong picr2; + + early_read_config_dword(hose, + 0, + PCI_DEVFN(0,0), + MPC10X_CFG_PICR2_REG, + &picr2); + + picr2 |= MPC10X_CFG_PICR2_COPYBACK_OPT; + + early_write_config_dword(hose, + 0, + PCI_DEVFN(0,0), + MPC10X_CFG_PICR2_REG, + picr2); + } + if (ppc_md.progress) ppc_md.progress("mpc10x:exit", 0x100); return 0; } diff -Nur linux-2.4.36.2.org/arch/ppc/mm/init.c linux-2.4.36.2/arch/ppc/mm/init.c --- linux-2.4.36.2.org/arch/ppc/mm/init.c 2008-02-25 05:38:03.000000000 +0900 +++ linux-2.4.36.2/arch/ppc/mm/init.c 2008-04-19 22:47:00.000000000 +0900 @@ -353,7 +353,9 @@ #ifdef CONFIG_HIGHMEM ioremap_base = PKMAP_BASE; #else - ioremap_base = 0xfe000000UL; /* for now, could be 0xfffff000 */ +// __LS_COMMNET__ BUFFALO change 2004.8.31 EUMB +// ioremap_base = 0xfe000000UL; /* for now, could be 0xfffff000 */ + ioremap_base = 0x80100000UL; /* for now, could be 0xfffff000 */ #endif /* CONFIG_HIGHMEM */ ioremap_bot = ioremap_base; diff -Nur linux-2.4.36.2.org/arch/ppc/platforms/Makefile linux-2.4.36.2/arch/ppc/platforms/Makefile --- linux-2.4.36.2.org/arch/ppc/platforms/Makefile 2008-02-25 05:38:03.000000000 +0900 +++ linux-2.4.36.2/arch/ppc/platforms/Makefile 2008-04-19 22:47:00.000000000 +0900 @@ -58,6 +58,7 @@ obj-$(CONFIG_PPLUS) += pplus_pci.o pplus_setup.o obj-$(CONFIG_PRPMC750) += prpmc750.o obj-$(CONFIG_SANDPOINT) += sandpoint.o +obj-$(CONFIG_LINKSTATION) += linkstation.o linkstation_hwctl.o obj-$(CONFIG_SPRUCE) += spruce_setup.o spruce_pci.o cpc700_pic.o ifeq ($(CONFIG_SMP),y) diff -Nur linux-2.4.36.2.org/arch/ppc/platforms/linkstation.c linux-2.4.36.2/arch/ppc/platforms/linkstation.c --- linux-2.4.36.2.org/arch/ppc/platforms/linkstation.c 1970-01-01 09:00:00.000000000 +0900 +++ linux-2.4.36.2/arch/ppc/platforms/linkstation.c 2008-04-19 22:47:00.000000000 +0900 @@ -0,0 +1,748 @@ +/* + * arch/ppc/platforms/linkstation.c + * Based on sandpoint.c + * + * Author: Mark A. Greer + * mgreer@mvista.com + * + * Copyright 2000-2002 MontaVista Software Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "linkstation_serial.h" + +#define BUFFALO_DBG + +// __LS_COMMENT__ BUFFALO add 2004.8.27 +#include "buffalo/linkstation_hwctl.h" + +#define BOTTOM_BLOCK 0x02 + +extern void gen550_progress(char *, unsigned short); +extern void gen550_init(int, struct serial_struct *); + +extern struct serial_state rs_table[]; + +unsigned char __res[sizeof(bd_t)]; + +static void linkstation_halt(void); + +static int linkstation_panic_handler(struct notifier_block *this, + unsigned long event, + void *unused); + +// 2005.5.17 : BUFFALO +int IsUseRevClock=0; + +/* + * Define all of the IRQ senses and polarities. Taken from the + * Sandpoint X3 User's manual. + */ +static u_char linkstation_openpic_initsenses[] __initdata = { + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* EPIC IRQ 0 */ + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* EPIC IRQ 1 */ + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* EPIC IRQ 2 */ + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* EPIC IRQ 3 */ + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE) /* EPIC IRQ 4 */ +}; + +static struct notifier_block linkstation_panic_notifier = { + linkstation_panic_handler, + NULL, + 150 /* priority: INT_MAX >= x >= 0 */ +}; + +/* + * Buffalo linkstation interrupt routing. + */ +static inline int +linkstation_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned char pin) +{ + static char pci_irq_table[][4] = + /* + * PCI IDSEL/INTPIN->INTLINE + * A B C D + */ + { +// __LS_COMMENT__ BUFFALO change 2004.8.27 PCIIRQ + { 16, 17, 18, 19 }, /* IDSEL 11 - IRQ0 LAN Controller */ + { 17, 18, 19, 16 }, /* IDSEL 12 - IRQ1 IDE Controller1 */ + { 20, 16, 17, 18 }, /* IDSEL 13 - IRQ4 IDE Controllert2 */ + { 19, 19, 19, 19 }, /* IDSEL 14 - IRQ3 USB2.0 Controller */ + { 18, 19, 16, 17 }, /* -------- - IRQ2 FAN Controller */ + }; + + const long min_idsel = 11, max_idsel = 15, irqs_per_slot = 4; + return PCI_IRQ_TABLE_LOOKUP; +} + +void __init +linkstation_find_bridges(void) +{ + struct pci_controller *hose; + + hose = pcibios_alloc_controller(); + + if (!hose) + return; + + hose->first_busno = 0; + hose->last_busno = 0xff; + + if (mpc10x_bridge_init(hose, + MPC10X_MEM_MAP_B, + MPC10X_MEM_MAP_B, + MPC10X_MAPB_EUMB_BASE) == 0) { + + hose->last_busno = pciauto_bus_scan(hose, hose->first_busno); + + ppc_md.pcibios_fixup = NULL; + ppc_md.pcibios_fixup_bus = NULL; + ppc_md.pci_swizzle = common_swizzle; + ppc_md.pci_map_irq = linkstation_map_irq; + } + else { + if (ppc_md.progress) + ppc_md.progress("Bridge init failed", 0x100); + printk("Host bridge init failed\n"); + } + + return; +} + +#ifdef CONFIG_SERIAL +static void __init +linkstation_early_serial_map(void) +{ + struct serial_struct serial_req; + + /* Setup serial port access */ + memset(&serial_req, 0, sizeof(serial_req)); + serial_req.baud_base = BASE_BAUD; + serial_req.line = 0; + serial_req.port = 0; + serial_req.irq = 26; + serial_req.flags = STD_COM_FLAGS; + serial_req.io_type = SERIAL_IO_MEM; + serial_req.iomem_base = (u_char *)LINKSTATION_SERIAL_1; + serial_req.iomem_reg_shift = 0; + + +#if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB) + gen550_init(0, &serial_req); +#endif + + if (early_serial_setup(&serial_req) != 0) + printk("Early serial init of port 0 failed\n"); + + /* Assume early_serial_setup() doesn't modify serial_req */ + serial_req.line = 1; + serial_req.port = 1; + serial_req.irq = 25; /* XXXX */ + serial_req.iomem_base = (u_char *)LINKSTATION_SERIAL_0; + + +} +#endif +static void __init +linkstation_setup_arch(void) +{ + loops_per_jiffy = 100000000 / HZ; + +#ifdef CONFIG_BLK_DEV_INITRD + if (initrd_start) + ROOT_DEV = MKDEV(RAMDISK_MAJOR, 0); + else +#endif +#ifdef CONFIG_ROOT_NFS + ROOT_DEV = to_kdev_t(0x00FF); /* /dev/nfs pseudo device */ +#else + ROOT_DEV = to_kdev_t(0x0301); /* /dev/hda1 IDE disk */ +#endif + + /* Lookup PCI host bridges */ + linkstation_find_bridges(); + +#ifdef CONFIG_SERIAL + linkstation_early_serial_map(); +#endif + +#ifdef CONFIG_DUMMY_CONSOLE + conswitchp = &dummy_con; +#endif + + + printk(KERN_INFO "BUFFALO Network Attached Storage Series\n"); + printk(KERN_INFO "(C) 2002-2005 BUFFALO INC.\n"); + + /* DINK32 12.3 and below do not correctly enable any caches. + * We will do this now with good known values. Future versions + * of DINK32 are supposed to get this correct. + */ + if (cur_cpu_spec[0]->cpu_features & CPU_FTR_SPEC7450) + /* 745x is different. We only want to pass along enable. */ + _set_L2CR(L2CR_L2E); + else if (cur_cpu_spec[0]->cpu_features & CPU_FTR_L2CR) + /* All modules have 1MB of L2. We also assume that an + * L2 divisor of 3 will work. + */ + _set_L2CR(L2CR_L2E | L2CR_L2SIZ_1MB | L2CR_L2CLK_DIV3 + | L2CR_L2RAM_PIPE | L2CR_L2OH_1_0 | L2CR_L2DF); +} + +/* + * Interrupt setup and service. + */ +static void __init +linkstation_init_IRQ(void) +{ + OpenPIC_InitSenses = linkstation_openpic_initsenses; + OpenPIC_NumInitSenses = sizeof(linkstation_openpic_initsenses); + + /* + * We need to tell openpic_set_sources where things actually are. + * mpc10x_common will setup OpenPIC_Addr at ioremap(EUMB phys base + + * EPIC offset (0x40000)); The EPIC IRQ Register Address Map - + * Interrupt Source Configuration Registers gives these numbers + * as offsets starting at 0x50200, we need to adjust occordinly. + */ + + /* Map serial interrupt 0 */ + openpic_set_sources(0, 5, OpenPIC_Addr + 0x10200); + /* Map serial interrupts 2-5 */ + openpic_set_sources(5, 3, OpenPIC_Addr + 0x11040); + /* Skip reserved space and map Message Unit Interrupt (I2O) */ + openpic_set_sources(8, 1, OpenPIC_Addr + 0x110C0); + /* Map Internal Duart Ch 1 and Ch 2 */ + openpic_set_sources(9, 2, OpenPIC_Addr + 0x11120); + + openpic_init(NUM_8259_INTERRUPTS); +} + +/* + */ +static int +linkstation_get_irq(struct pt_regs *regs) +{ + int irq; + + irq = openpic_irq(); + + if (irq == OPENPIC_VEC_SPURIOUS + 16) + irq = -1; + + return irq; +} + +static u32 +linkstation_irq_cannonicalize(u32 irq) +{ + if (irq == 2) + return 9; + else + return irq; +} + +static unsigned long __init +linkstation_find_end_of_memory(void) +{ +#if defined(CONFIG_HGLAN) || defined(CONFIG_HTGL) || defined(CONFIG_KUROBOXHG) + return 128*1024*1024; +#elif defined(CONFIG_HLAN) || defined(CONFIG_LAN) || defined(CONFIG_KUROBOX) + return 64*1024*1024; +#else + return 128*1024*1024; +#endif + +} + +static void __init +linkstation_map_io(void) +{ + // PCI I/O, ROM area + io_block_mapping(0xfe000000, 0xfe000000, 0x02000000, _PAGE_IO); + // EUMB area + io_block_mapping(MPC10X_MAPB_EUMB_BASE, MPC10X_MAPB_EUMB_BASE, + MPC10X_EUMB_SIZE, _PAGE_IO); +} + +/* + * Due to mpc8241 X2 errata, the Port 92 will not work. + */ +static void +linkstation_restart(char *cmd) +{ + __cli(); + + /* Reset system via Port 92 */ + for(;;) /* Spin until reset happens */ + out_8((void *)AVR_PORT, 0x47); // send shutdown messages +} + +static void +linkstation_power_off(void) +{ + __cli(); + for(;;) /* No way to shut power off with software */ + out_8((void *)AVR_PORT, 0x47); // send shutdown messages + /* NOTREACHED */ +} + +static void +linkstation_halt(void) +{ + linkstation_power_off(); + /* NOTREACHED */ +} + +static int +linkstation_show_cpuinfo(struct seq_file *m) +{ + seq_printf(m, "vendor\t\t: Motorola SPS\n"); + seq_printf(m, "machine\t\t: MPC8241\n"); + return 0; +} + +void linkstation_calibrate_decr(void) +{ + ulong freq; + +#if defined(CONFIG_HGLAN) || defined(CONFIG_HTGL) || defined(CONFIG_KUROBOXHG) + const ulong rev_freq=32522240; /* {32.768MHz*(100% - 0.75%)} * 4 / 4 */ + freq=32768000; +#elif defined(CONFIG_HLAN) || defined(CONFIG_KUROBOX) + const ulong rev_freq=24391680; /* {24.576MHz*(100% - 0.75%)} * 3 / 4 */ + freq=24576000; +#else + #error "not defined" +#endif + + if (IsUseRevClock){ + freq = rev_freq; + } + + tb_ticks_per_jiffy = freq / HZ; + tb_to_us = mulhwu_scale_factor(freq, 1000000); + printk("decrementer frequency = %ld.%6ld MHz \n", freq / 1000000, freq % 1000000); + return; +} + +/* + * Set BAT 3 to map 0xf8000000 to end of physical memory space 1-to-1. + */ +static __inline__ void +linkstation_set_bat(void) +{ + unsigned long bat2u, bat2l; + unsigned long bat3u, bat3l; + + __asm__ __volatile__( + " lis %0,0x8000\n \ + ori %1,%0,0x002a\n \ + ori %0,%0,0x000e\n \ + mtspr 0x21c,%0\n \ + mtspr 0x21d,%1\n \ + isync\n \ + sync " + : "=r" (bat2u), "=r" (bat2l)); + __asm__ __volatile__( + " lis %0,0xf800\n \ + ori %1,%0,0x002a\n \ + ori %0,%0,0x0ffe\n \ + mtspr 0x21e,%0\n \ + mtspr 0x21f,%1\n \ + isync\n \ + sync " + : "=r" (bat3u), "=r" (bat3l)); + +} + +#define PARM_ADDR 0xfff70000 +//bootcode cmdline +void __init +parse_kernelparm(void) { + unsigned char *cmdparm = cmd_line; + unsigned char *addr; + unsigned int magic = 0, i; + const char emroot[]="root=/dev/ram0"; + const char revclock[]="revclock=1"; + + if (strstr(cmd_line, revclock)){ + // + IsUseRevClock = 1; + } + if (strstr(cmd_line, emroot)){ + // bootcoderam0 EM + printk("--- force EM mode\n"); + return; + } + + addr = (unsigned char *)PARM_ADDR; + + //printk("--- cmd=%s\n",cmd_line); + for (i = 0; i < 4; i++) { + magic += (unsigned int)*addr << (i*8); + addr++; + } + /* not found magic number */ + if (magic != 0x82410000) { + // 2005.3.31: new + /* compatibility fo 2.4.17 linkstation */ + if (magic != 0x4b4f4b4f){ // OKOK + strcpy(cmdparm, emroot); + printk("invalid magic: %08x\n", magic); + return; + } + } + + addr = (unsigned char *)PARM_ADDR + 0x10; + + for (;;) { + unsigned char tmp_parm[0x20], *parm = tmp_parm; + unsigned int terminate; + + terminate = 0; + memset(tmp_parm, (char)NULL, sizeof(tmp_parm)); + + /* read kernel parameter from flash */ + for (i = 0; i < 0x20; i++) { + if (i < 4) terminate += (unsigned int)*addr << (i*8); + tmp_parm[i] = *addr++; + } + + if (strncmp(tmp_parm, "bootparm", 8) == 0) { + parm += 9; + if (strncmp(parm, "root=/dev/ram0", 14) == 0) { + memcpy(cmdparm, parm, 14); + cmdparm += 14; + *cmdparm++ = ' '; + *cmdparm++ = '\0'; + } + else if (strncmp(parm, "root=/dev/hda1", 14) == 0) { + memcpy(cmdparm, parm, 14); + cmdparm += 14; + *cmdparm++ = ' '; + *cmdparm++ = '\0'; + } + else if (strncmp(parm, "root=/dev/md0", 13) == 0) { + memcpy(cmdparm, parm, 13); + cmdparm += 13; + *cmdparm++ = ' '; + *cmdparm++ = '\0'; + } + } + + if (terminate == 0xffffffff) + /* not written in flash */ + break; + } + + if (!strstr(cmd_line,"root=/dev/ram0")){ + // restore cmd_line from kernel arg if boot device is not initrd. + strcpy(cmd_line, CONFIG_CMDLINE); + } +#ifdef BUFFALO_DBG + printk("--- cmd=%s\n",cmd_line); +#endif +} + +void __init +platform_init(unsigned long r3, unsigned long r4, unsigned long r5, + unsigned long r6, unsigned long r7) +{ + parse_bootinfo(find_bootinfo()); + + /* ASSUMPTION: If both r3 (bd_t pointer) and r6 (cmdline pointer) + * are non-zero, then we should use the board info from the bd_t + * structure and the cmdline pointed to by r6 instead of the + * information from birecs, if any. Otherwise, use the information + * from birecs as discovered by the preceeding call to + * parse_bootinfo(). This rule should work with both PPCBoot, which + * uses a bd_t board info structure, and the kernel boot wrapper, + * which uses birecs. + */ + if (r6){ + printk("KERNELBASE=%x r6=%x r7=%x\n",KERNELBASE,r6,r7); + *(char *)(r7+KERNELBASE) = 0; + strcpy(cmd_line, (char *)(r6+KERNELBASE)); + printk("cmd_line=%s\n",cmd_line); + } + +#ifdef CONFIG_BLK_DEV_INITRD + /* take care of initrd if we have one */ + if ( r4 ) + { + initrd_start = r4 + KERNELBASE; + initrd_end = r5 + KERNELBASE; + } +#endif /* CONFIG_BLK_DEV_INITRD */ + + /* Map in board regs, etc. */ + linkstation_set_bat(); + + parse_kernelparm(); + + notifier_chain_register(&panic_notifier_list, &linkstation_panic_notifier); + + isa_io_base = MPC10X_MAPB_ISA_IO_BASE; + isa_mem_base = MPC10X_MAPB_ISA_MEM_BASE; + pci_dram_offset = MPC10X_MAPB_DRAM_OFFSET; + ISA_DMA_THRESHOLD = 0x00ffffff; + DMA_MODE_READ = 0x44; + DMA_MODE_WRITE = 0x48; + + ppc_md.setup_arch = linkstation_setup_arch; + ppc_md.show_cpuinfo = linkstation_show_cpuinfo; + ppc_md.irq_cannonicalize = linkstation_irq_cannonicalize; + ppc_md.init_IRQ = linkstation_init_IRQ; + ppc_md.get_irq = linkstation_get_irq; + + ppc_md.restart = linkstation_restart; + ppc_md.power_off = linkstation_power_off; + ppc_md.halt = linkstation_halt; + + ppc_md.find_end_of_memory = linkstation_find_end_of_memory; + ppc_md.setup_io_mappings = linkstation_map_io; + + ppc_md.calibrate_decr = linkstation_calibrate_decr; + + ppc_md.time_init = NULL; + ppc_md.set_rtc_time = NULL; + ppc_md.get_rtc_time = NULL; + + ppc_md.nvram_read_val = NULL; + ppc_md.nvram_write_val = NULL; + +#ifdef CONFIG_SERIAL +#ifdef CONFIG_SERIAL_TEXT_DEBUG + ppc_md.progress = gen550_progress; +#endif + ppc_md.early_serial_map = linkstation_early_serial_map; +#endif + + return; +} + +// flash funtions -------------------- + +#define ATTACH_FLASH_ADDRESS 0xFFC00000 + +#define FLASH_CMDA(x) \ + *(volatile char*)(ATTACH_FLASH_ADDRESS + 0xaaa) = x; +#define FLASH_CMD5(x) \ + *(volatile char*)(ATTACH_FLASH_ADDRESS + 0x555) = x; +#define FLASH_START (volatile char*)(ATTACH_FLASH_ADDRESS) + +#define FLASH_COMMAND_CLEAR FLASH_CMDA(0xf0) +#define FLASH_COMMAND_READY FLASH_CMDA(0xaa);FLASH_CMD5(0x55) + +// erase funtion -------------------- +#define BIT(x) 1< 0) { + // erase + FLASH_COMMAND_CLEAR; + FLASH_COMMAND_READY; + FLASH_CMDA(0x80); + FLASH_COMMAND_READY; + *(baddr) = 0x30; + if (flash_state(baddr,0xff)) { + printk("Flash Erase fail?!\n"); + } + FLASH_COMMAND_CLEAR; + + // verify + caddr = baddr; + for (i=0;i 0) + printk("Flash Verify %d times\n", verify_count); + + for(i=0;i +#include +#include + +// output BYTE data +inline void out_b(volatile unsigned char *addr, int val) +{ + __asm__ __volatile__("stb%U0%X0 %1,%0; eieio" : "=m" (*addr) : "r" (val)); +} + +// PWR,DISK_FULL/STATUS,DIAG LED controll +void blink_led(unsigned char state) +{ +#ifdef CONFIG_HTGL + switch (state) + { + case FLASH_CLEAR_START: + case FLASH_UPDATE_START: + out_b(AVR_PORT, 0x61); + out_b(AVR_PORT, 0x61); + out_b(AVR_PORT, 0x38); + out_b(AVR_PORT, 0x30); + out_b(AVR_PORT, 0x34); + out_b(AVR_PORT, 0x31); + mdelay(10); + out_b(AVR_PORT, 0x61); + out_b(AVR_PORT, 0x61); + out_b(AVR_PORT, 0x38); + out_b(AVR_PORT, 0x31); + out_b(AVR_PORT, 0x34); + out_b(AVR_PORT, 0x31); + mdelay(10); + out_b(AVR_PORT, 0x71); + out_b(AVR_PORT, 0x71); +// out_b(AVR_PORT, 0x71); +// out_b(AVR_PORT, 0x71); + mdelay(10); + out_b(AVR_PORT, 0x73); + out_b(AVR_PORT, 0x73); +// out_b(AVR_PORT, 0x73); +// out_b(AVR_PORT, 0x73); + mdelay(10); + break; + case FLASH_CLEAR_END: + case FLASH_UPDATE_END: + out_b(AVR_PORT, 0x70); + out_b(AVR_PORT, 0x70); +// out_b(AVR_PORT, 0x70); +// out_b(AVR_PORT, 0x70); + mdelay(10); + out_b(AVR_PORT, 0x72); + out_b(AVR_PORT, 0x72); +// out_b(AVR_PORT, 0x72); +// out_b(AVR_PORT, 0x72); + mdelay(10); + break; + case RAID_RESYNC_START: + break; + case RAID_RESYNC_END: + break; + default: + out_b(AVR_PORT, state); + out_b(AVR_PORT, state); + out_b(AVR_PORT, state); + out_b(AVR_PORT, state); + break; + } +#else + out_b(AVR_PORT, state); + out_b(AVR_PORT, state); + out_b(AVR_PORT, state); + out_b(AVR_PORT, state); +#endif + +} + +// 2005.5.10 BUFFALO add +//-------------------------------------------------------------- +static inline void miconCntl_SendUart(unsigned char dat) +{ + out_b(AVR_PORT, dat); + mdelay(1); // + // wait +} + +//-------------------------------------------------------------- +static void miconCntl_SendCmd(unsigned char dat) +{ + int i; + + /* + static int ddd=0; + if (ddd++==0){ + printk("UDMB=%02x UFCR=%02x UMCR=%02x ULSR=%02x\n" + ,readb(0x80004500+1) + ,readb(0x80004500+2) + ,readb(0x80004500+4) + ,readb(0x80004500+5) + ); + printk("UMSR=%02x UDSR=%02x UDCR=%02x\n" + ,readb(0x80004500+6) + ,readb(0x80004500+10) + ,readb(0x80004500+11)); + } + */ + + for (i=0; i<4; i++){ + miconCntl_SendUart(dat); + } +} + +//-------------------------------------------------------------- +//FAN +void miconCntl_FanLow(void) +{ +#ifdef MICONMSG + printk(">%s\n",__FUNCTION__); +#endif +#ifdef CONFIG_HTGL + miconCntl_SendCmd(0x5C); +#endif +} +//-------------------------------------------------------------- +//FAN +void miconCntl_FanHigh(void) +{ +#ifdef MICONMSG + printk(">%s\n",__FUNCTION__); +#endif +#ifdef CONFIG_HTGL + miconCntl_SendCmd(0x5D); +#endif +} +//-------------------------------------------------------------- +//1000Mbps +void miconCntl_Eth1000M(int up) +{ +#ifdef MICONMSG + printk(">%s (%d)\n",__FUNCTION__,up); +#endif +#ifdef CONFIG_HTGL + if (up){ + miconCntl_SendCmd(0x93); + }else{ + miconCntl_SendCmd(0x92); + } +#else + if (up){ + miconCntl_SendCmd(0x5D); + }else{ + miconCntl_SendCmd(0x5C); + } +#endif +} +//-------------------------------------------------------------- +//100Mbps +void miconCntl_Eth100M(int up) +{ +#ifdef MICONMSG + printk(">%s (%d)\n",__FUNCTION__,up); +#endif +#ifdef CONFIG_HTGL + if (up){ + miconCntl_SendCmd(0x91); + }else{ + miconCntl_SendCmd(0x90); + } +#else + if (up){ + miconCntl_SendCmd(0x5C); + } +#endif +} +//-------------------------------------------------------------- +//10Mbps +void miconCntl_Eth10M(int up) +{ +#ifdef MICONMSG + printk(">%s (%d)\n",__FUNCTION__,up); +#endif +#ifdef CONFIG_HTGL + if (up){ + miconCntl_SendCmd(0x8F); + }else{ + miconCntl_SendCmd(0x8E); + } +#else + if (up){ + miconCntl_SendCmd(0x5C); + } +#endif +} +//-------------------------------------------------------------- +// +void miconCntl_5f(void) +{ +#ifdef MICONMSG + printk(">%s\n",__FUNCTION__); +#endif + miconCntl_SendCmd(0x5F); + mdelay(100); +} +//-------------------------------------------------------------- +// "reboot start" signal +void miconCntl_Rebooting(void) +{ +#ifdef MICONMSG + printk(">%s\n",__FUNCTION__); +#endif + miconCntl_SendCmd(0x43); +} +//-------------------------------------------------------------- +// "reboot start" signal +void miconCntl_RadiRecovery(void) +{ +#ifdef MICONMSG + printk(">%s\n",__FUNCTION__); +#endif +#ifdef CONFIG_HTGL + miconCntl_SendUart(0x61); // a + miconCntl_SendUart(0x61); // a + miconCntl_SendUart(0x38); // 8 + miconCntl_SendUart(0x30); // 0 + miconCntl_SendUart(0x34); // 4 + miconCntl_SendUart(0x31); // 1 + miconCntl_SendCmd(0x71); // q +#endif +} +//-------------------------------------------------------------- +// "reboot start" signal +void miconCntl_RadiRecoveryFin(void) +{ +#ifdef MICONMSG + printk(">%s\n",__FUNCTION__); +#endif +#ifdef CONFIG_HTGL + miconCntl_SendCmd(0x70); +#endif +} + + +// --------------------------------------------------------------- diff -Nur linux-2.4.36.2.org/arch/ppc/platforms/linkstation_serial.h linux-2.4.36.2/arch/ppc/platforms/linkstation_serial.h --- linux-2.4.36.2.org/arch/ppc/platforms/linkstation_serial.h 1970-01-01 09:00:00.000000000 +0900 +++ linux-2.4.36.2/arch/ppc/platforms/linkstation_serial.h 2008-04-19 22:47:00.000000000 +0900 @@ -0,0 +1,57 @@ +/* + * include/asm-ppc/sandpoint_serial.h + * + * Definitions for Motorola SPS Sandpoint Test Platform + * + * Author: Mark A. Greer + * mgreer@mvista.com + * + * Copyright 2001 MontaVista Software Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +#ifndef __ASMPPC_LINKSTATION_SERIAL_H +#define __ASMPPC_LINKSTATION_SERIAL_H + +#include + +#define LINKSTATION_SERIAL_0 0x80004500 +#define LINKSTATION_SERIAL_1 0x80004600 + +#ifdef CONFIG_SERIAL_MANY_PORTS +#define RS_TABLE_SIZE 64 +#else +#define RS_TABLE_SIZE 2 +#endif + +/* Rate for the 1.8432 Mhz clock for the onboard serial chip */ +#if defined(CONFIG_HGLAN) || defined(CONFIG_HTGL) || defined(CONFIG_KUROBOXHG) +#define BASE_BAUD ( 133000000 / 16) +#elif defined(CONFIG_HLAN) || defined(CONFIG_LAN) || defined(CONFIG_KUROBOX) +#define BASE_BAUD ( 100000000 / 16) +#else +#define BASE_BAUD ( 1843200 / 16 ) +#endif + +#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF|ASYNC_SKIP_TEST) + +#define STD_SERIAL_PORT_DFNS \ + { 0, BASE_BAUD, LINKSTATION_SERIAL_1, 26, STD_COM_FLAGS,/* ttyS0 */ \ + type: PORT_16550A, \ + xmit_fifo_size: 16, \ + iomem_base: (u8 *)LINKSTATION_SERIAL_1, \ + io_type: SERIAL_IO_MEM }, \ + { 0, BASE_BAUD, LINKSTATION_SERIAL_0, 25, STD_COM_FLAGS,/* ttyS1 */ \ + type: PORT_16550A, \ + xmit_fifo_size: 16, \ + iomem_base: (u8 *)LINKSTATION_SERIAL_0, \ + io_type: SERIAL_IO_MEM }, + +#define SERIAL_PORT_DFNS \ + STD_SERIAL_PORT_DFNS + +#endif /* __ASMPPC_LINKSTATION_SERIAL_H */ diff -Nur linux-2.4.36.2.org/config_kurobox linux-2.4.36.2/config_kurobox --- linux-2.4.36.2.org/config_kurobox 1970-01-01 09:00:00.000000000 +0900 +++ linux-2.4.36.2/config_kurobox 2008-04-19 22:48:17.000000000 +0900 @@ -0,0 +1,984 @@ +# +# Automatically generated make config: don't edit +# +# CONFIG_UID16 is not set +# CONFIG_RWSEM_GENERIC_SPINLOCK is not set +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_HAVE_DEC_LOCK=y +CONFIG_GENERIC_ISA_DMA=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_ADVANCED_OPTIONS is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +CONFIG_MODVERSIONS=y +CONFIG_KMOD=y + +# +# Platform support +# +CONFIG_PPC=y +CONFIG_PPC32=y +CONFIG_6xx=y +# CONFIG_40x is not set +# CONFIG_44x is not set +# CONFIG_POWER3 is not set +# CONFIG_POWER4 is not set +# CONFIG_8xx is not set +# CONFIG_8260 is not set +CONFIG_PPC_STD_MMU=y +# CONFIG_ALL_PPC is not set +# CONFIG_APUS is not set +# CONFIG_SPRUCE is not set +# CONFIG_LOPEC is not set +# CONFIG_SANDPOINT is not set +CONFIG_LINKSTATION=y +# CONFIG_PPLUS is not set +# CONFIG_PRPMC750 is not set +# CONFIG_PAL4 is not set +# CONFIG_GEMINI is not set +CONFIG_GEN550=y +CONFIG_MPC10X_STORE_GATHERING=y +# CONFIG_EPIC_SERIAL_MODE is not set +# CONFIG_LAN is not set +# CONFIG_HLAN is not set +CONFIG_KUROBOX=y +# CONFIG_HGLAN is not set +# CONFIG_KUROBOXHG is not set +# CONFIG_HTGL is not set +# CONFIG_SMP is not set +# CONFIG_ALTIVEC is not set +# CONFIG_TAU is not set +CONFIG_PPC_ISATIMER=y + +# +# General setup +# +# CONFIG_HIGHMEM is not set +CONFIG_HIGHMEM_START=0xfe000000 +CONFIG_LOWMEM_SIZE=0x30000000 +CONFIG_KERNEL_START=0xc0000000 +CONFIG_TASK_SIZE=0x80000000 +# CONFIG_ISA is not set +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_PCI=y +CONFIG_NET=y +CONFIG_SYSCTL=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_KCORE_ELF=y +CONFIG_BINFMT_ELF=y +CONFIG_KERNEL_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_OOM_KILLER is not set +# CONFIG_PCI_NAMES is not set +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +# CONFIG_PCMCIA is not set + +# +# Parallel port support +# +# CONFIG_PARPORT is not set +# CONFIG_GEN_RTC is not set +# CONFIG_PPC_RTC is not set +CONFIG_CMDLINE_BOOL=y +CONFIG_CMDLINE="root=/dev/hda1" + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_PARTITIONS=y +CONFIG_MTD_CONCAT=y +# CONFIG_MTD_REDBOOT_PARTS is not set +# CONFIG_MTD_CMDLINE_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +CONFIG_MTD_JEDECPROBE=y +CONFIG_MTD_GEN_PROBE=y +CONFIG_MTD_CFI_ADV_OPTIONS=y +CONFIG_MTD_CFI_NOSWAP=y +# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set +# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set +CONFIG_MTD_CFI_GEOMETRY=y +CONFIG_MTD_CFI_B1=y +# CONFIG_MTD_CFI_B2 is not set +# CONFIG_MTD_CFI_B4 is not set +# CONFIG_MTD_CFI_B8 is not set +CONFIG_MTD_CFI_I1=y +# CONFIG_MTD_CFI_I2 is not set +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +# CONFIG_MTD_CFI_INTELEXT is not set +CONFIG_MTD_CFI_AMDSTD=y +# CONFIG_MTD_CFI_STAA is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_OBSOLETE_CHIPS is not set +# CONFIG_MTD_AMDSTD is not set +# CONFIG_MTD_SHARP is not set +# CONFIG_MTD_JEDEC is not set + +# +# Mapping drivers for chip access +# +CONFIG_MTD_PHYSMAP=y +CONFIG_MTD_PHYSMAP_START=0xffc00000 +CONFIG_MTD_PHYSMAP_LEN=0x400000 +CONFIG_MTD_PHYSMAP_BUSWIDTH=1 +# CONFIG_MTD_TQM8XXL is not set +# CONFIG_MTD_RPXLITE is not set +# CONFIG_MTD_MBX860 is not set +# CONFIG_MTD_DBOX2 is not set +# CONFIG_MTD_CFI_FLAGADM is not set +# CONFIG_MTD_REDWOOD is not set +# CONFIG_MTD_PCI is not set +# CONFIG_MTD_PCMCIA is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLKMTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# NAND Flash Device Drivers +# +# CONFIG_MTD_NAND is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_CISS_SCSI_TAPE is not set +# CONFIG_CISS_MONITOR_THREAD is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_UMEM is not set +# CONFIG_BLK_DEV_SX8 is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=15000 +CONFIG_BLK_DEV_INITRD=y +CONFIG_BLK_STATS=y + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_MD_MULTIPATH is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +# CONFIG_NETLINK_DEV is not set +# CONFIG_NETFILTER is not set +CONFIG_FILTER=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set + +# +# SCTP Configuration (EXPERIMENTAL) +# +# CONFIG_IP_SCTP is not set +# CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +# CONFIG_BLK_DEV_IDE_SATA is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +# CONFIG_IDEDISK_STROKE is not set +# CONFIG_BLK_DEV_IDECS is not set +# CONFIG_BLK_DEV_DELKIN is not set +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_IDE_TASK_IOCTL is not set + +# +# IDE chipset support/bugfixes +# +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +CONFIG_BLK_DEV_IDEPCI=y +# CONFIG_BLK_DEV_GENERIC is not set +# CONFIG_IDEPCI_SHARE_IRQ is not set +CONFIG_BLK_DEV_IDEDMA_PCI=y +# CONFIG_BLK_DEV_OFFBOARD is not set +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set +# CONFIG_IDEDMA_PCI_AUTO is not set +# CONFIG_IDEDMA_ONLYDISK is not set +CONFIG_BLK_DEV_IDEDMA=y +# CONFIG_IDEDMA_PCI_WIP is not set +# CONFIG_BLK_DEV_ADMA100 is not set +# CONFIG_BLK_DEV_AEC62XX is not set +# CONFIG_BLK_DEV_ALI15X3 is not set +# CONFIG_WDC_ALI15X3 is not set +# CONFIG_BLK_DEV_AMD74XX is not set +# CONFIG_AMD74XX_OVERRIDE is not set +# CONFIG_BLK_DEV_ATIIXP is not set +# CONFIG_BLK_DEV_CMD64X is not set +# CONFIG_BLK_DEV_TRIFLEX is not set +# CONFIG_BLK_DEV_CY82C693 is not set +# CONFIG_BLK_DEV_CS5530 is not set +# CONFIG_BLK_DEV_HPT34X is not set +# CONFIG_HPT34X_AUTODMA is not set +# CONFIG_BLK_DEV_HPT366 is not set +# CONFIG_BLK_DEV_PIIX is not set +# CONFIG_BLK_DEV_NS87415 is not set +# CONFIG_BLK_DEV_OPTI621 is not set +# CONFIG_BLK_DEV_PDC202XX_OLD is not set +# CONFIG_PDC202XX_BURST is not set +# CONFIG_BLK_DEV_PDC202XX_NEW is not set +# CONFIG_BLK_DEV_RZ1000 is not set +# CONFIG_BLK_DEV_SC1200 is not set +# CONFIG_BLK_DEV_SVWKS is not set +CONFIG_BLK_DEV_SIIMAGE=y +# CONFIG_BLK_DEV_SIS5513 is not set +# CONFIG_BLK_DEV_SLC90E66 is not set +# CONFIG_BLK_DEV_TRM290 is not set +# CONFIG_BLK_DEV_VIA82CXXX is not set +# CONFIG_BLK_DEV_SL82C105 is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set +# CONFIG_IDEDMA_IVB is not set +# CONFIG_DMA_NONPCI is not set +# CONFIG_BLK_DEV_ATARAID is not set +# CONFIG_BLK_DEV_ATARAID_PDC is not set +# CONFIG_BLK_DEV_ATARAID_HPT is not set +# CONFIG_BLK_DEV_ATARAID_MEDLEY is not set +# CONFIG_BLK_DEV_ATARAID_SII is not set + +# +# SCSI support +# +CONFIG_SCSI=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +CONFIG_SD_EXTRA_DEVS=40 +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +# CONFIG_BLK_DEV_SR is not set +CONFIG_CHR_DEV_SG=y + +# +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs +# +# CONFIG_SCSI_DEBUG_QUEUES is not set +# CONFIG_SCSI_MULTI_LUN is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set + +# +# SCSI low-level drivers +# +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set +# CONFIG_SCSI_7000FASST is not set +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_AHA152X is not set +# CONFIG_SCSI_AHA1542 is not set +# CONFIG_SCSI_AHA1740 is not set +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC79XX is not set +# CONFIG_SCSI_AIC7XXX_OLD is not set +# CONFIG_SCSI_DPT_I2O is not set +# CONFIG_SCSI_ADVANSYS is not set +# CONFIG_SCSI_IN2000 is not set +# CONFIG_SCSI_AM53C974 is not set +# CONFIG_SCSI_MEGARAID is not set +# CONFIG_SCSI_MEGARAID2 is not set +# CONFIG_SCSI_SATA is not set +# CONFIG_SCSI_SATA_AHCI is not set +# CONFIG_SCSI_SATA_SVW is not set +# CONFIG_SCSI_ATA_PIIX is not set +# CONFIG_SCSI_SATA_NV is not set +# CONFIG_SCSI_SATA_QSTOR is not set +# CONFIG_SCSI_SATA_PROMISE is not set +# CONFIG_SCSI_SATA_SX4 is not set +# CONFIG_SCSI_SATA_SIL is not set +# CONFIG_SCSI_SATA_SIS is not set +# CONFIG_SCSI_SATA_ULI is not set +# CONFIG_SCSI_SATA_VIA is not set +# CONFIG_SCSI_SATA_VITESSE is not set +# CONFIG_SCSI_BUSLOGIC is not set +# CONFIG_SCSI_CPQFCTS is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_DTC3280 is not set +# CONFIG_SCSI_EATA is not set +# CONFIG_SCSI_EATA_DMA is not set +# CONFIG_SCSI_EATA_PIO is not set +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_GDTH is not set +# CONFIG_SCSI_GENERIC_NCR5380 is not set +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_NCR53C406A is not set +# CONFIG_SCSI_NCR53C7xx is not set +# CONFIG_SCSI_SYM53C8XX_2 is not set +# CONFIG_SCSI_NCR53C8XX is not set +# CONFIG_SCSI_SYM53C8XX is not set +# CONFIG_SCSI_PAS16 is not set +# CONFIG_SCSI_PCI2000 is not set +# CONFIG_SCSI_PCI2220I is not set +# CONFIG_SCSI_PSI240I is not set +# CONFIG_SCSI_QLOGIC_FAS is not set +# CONFIG_SCSI_QLOGIC_ISP is not set +# CONFIG_SCSI_QLOGIC_FC is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +# CONFIG_SCSI_SIM710 is not set +# CONFIG_SCSI_SYM53C416 is not set +# CONFIG_SCSI_DC390T is not set +# CONFIG_SCSI_T128 is not set +# CONFIG_SCSI_U14_34F is not set +# CONFIG_SCSI_NSP32 is not set +# CONFIG_SCSI_DEBUG is not set + +# +# IEEE 1394 (FireWire) support (EXPERIMENTAL) +# +# CONFIG_IEEE1394 is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_MACE is not set +# CONFIG_BMAC is not set +# CONFIG_GMAC is not set +# CONFIG_SUNLANCE is not set +# CONFIG_HAPPYMEAL is not set +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +# CONFIG_SUNGEM is not set +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_LANCE is not set +# CONFIG_NET_VENDOR_SMC is not set +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_HP100 is not set +# CONFIG_NET_ISA is not set +CONFIG_NET_PCI=y +# CONFIG_PCNET32 is not set +# CONFIG_AMD8111_ETH is not set +# CONFIG_ADAPTEC_STARFIRE is not set +# CONFIG_APRICOT is not set +# CONFIG_B44 is not set +# CONFIG_CS89x0 is not set +CONFIG_TULIP=y +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_MMIO is not set +# CONFIG_DE4X5 is not set +# CONFIG_DGRS is not set +# CONFIG_DM9102 is not set +# CONFIG_EEPRO100 is not set +# CONFIG_EEPRO100_PIO is not set +# CONFIG_E100 is not set +# CONFIG_LNE390 is not set +# CONFIG_FEALNX is not set +# CONFIG_NATSEMI is not set +# CONFIG_NE2K_PCI is not set +# CONFIG_FORCEDETH is not set +# CONFIG_NE3210 is not set +# CONFIG_ES3210 is not set +# CONFIG_8139CP is not set +# CONFIG_8139TOO is not set +# CONFIG_8139TOO_PIO is not set +# CONFIG_8139TOO_TUNE_TWISTER is not set +# CONFIG_8139TOO_8129 is not set +# CONFIG_8139_OLD_RX_RESET is not set +# CONFIG_SIS900 is not set +# CONFIG_EPIC100 is not set +# CONFIG_SUNDANCE is not set +# CONFIG_SUNDANCE_MMIO is not set +# CONFIG_TLAN is not set +# CONFIG_VIA_RHINE is not set +# CONFIG_VIA_RHINE_MMIO is not set +# CONFIG_WINBOND_840 is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_E1000 is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_R8169 is not set +# CONFIG_SKGE is not set +# CONFIG_SKY2 is not set +# CONFIG_SK98LIN is not set +# CONFIG_TIGON3 is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Old CD-ROM drivers (not SCSI, not IDE) +# +# CONFIG_CD_NO_IDESCSI is not set + +# +# Console drivers +# +# CONFIG_VGA_CONSOLE is not set + +# +# Frame-buffer support +# +# CONFIG_FB is not set + +# +# Input core support +# +# CONFIG_INPUT is not set +# CONFIG_INPUT_KEYBDEV is not set +# CONFIG_DUMMY_KEYB is not set +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set +# CONFIG_INPUT_UINPUT is not set + +# +# Macintosh device drivers +# + +# +# Character devices +# +# CONFIG_VT is not set +CONFIG_SERIAL=y +CONFIG_SERIAL_CONSOLE=y +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 + +# +# I2C support +# +CONFIG_I2C=y +# CONFIG_I2C_ALGOBIT is not set +# CONFIG_SCx200_ACB is not set +# CONFIG_I2C_ALGOPCF is not set +CONFIG_I2C_ALGO_8245=y +CONFIG_I2C_MPC8245=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_PROC=y + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_INPUT_GAMEPORT is not set + +# +# Input core support is needed for gameports +# + +# +# Input core support is needed for joysticks +# +# CONFIG_QIC02_TAPE is not set +# CONFIG_IPMI_HANDLER is not set +# CONFIG_IPMI_PANIC_EVENT is not set +# CONFIG_IPMI_DEVICE_INTERFACE is not set +# CONFIG_IPMI_KCS is not set +# CONFIG_IPMI_WATCHDOG is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_SCx200 is not set +# CONFIG_SCx200_GPIO is not set +# CONFIG_AMD_PM768 is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +CONFIG_RS5C372_RTC=y +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set + +# +# Direct Rendering Manager (XFree86 DRI support) +# +# CONFIG_DRM is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_QFMT_V2 is not set +# CONFIG_AUTOFS_FS is not set +CONFIG_AUTOFS4_FS=y +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BEFS_DEBUG is not set +# CONFIG_BFS_FS is not set +CONFIG_EXT3_FS=y +CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set +CONFIG_FAT_FS=m +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +CONFIG_VFAT_FS=m +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +# CONFIG_JFFS2_FS is not set +# CONFIG_CRAMFS is not set +CONFIG_TMPFS=y +CONFIG_RAMFS=y +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_ZISOFS is not set +# CONFIG_JFS_FS is not set +# CONFIG_JFS_DEBUG is not set +# CONFIG_JFS_STATISTICS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set +# CONFIG_XFS_FS is not set +# CONFIG_XFS_QUOTA is not set +# CONFIG_XFS_RT is not set +# CONFIG_XFS_TRACE is not set +# CONFIG_XFS_DEBUG is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=m +CONFIG_NFS_V3=y +# CONFIG_NFS_DIRECTIO is not set +# CONFIG_ROOT_NFS is not set +CONFIG_NFSD=m +CONFIG_NFSD_V3=y +CONFIG_NFSD_TCP=y +CONFIG_SUNRPC=m +CONFIG_LOCKD=m +CONFIG_LOCKD_V4=y +CONFIG_SMB_FS=m +CONFIG_SMB_NLS_DEFAULT=y +CONFIG_SMB_NLS_REMOTE="cp437" +CONFIG_SMB_UNIX=y +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set +# CONFIG_ZISOFS_FS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +CONFIG_SMB_NLS=y +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NLS_CODEPAGE_437=m +CONFIG_NLS_CODEPAGE_737=m +CONFIG_NLS_CODEPAGE_775=m +CONFIG_NLS_CODEPAGE_850=m +CONFIG_NLS_CODEPAGE_852=m +CONFIG_NLS_CODEPAGE_855=m +CONFIG_NLS_CODEPAGE_857=m +CONFIG_NLS_CODEPAGE_860=m +CONFIG_NLS_CODEPAGE_861=m +CONFIG_NLS_CODEPAGE_862=m +CONFIG_NLS_CODEPAGE_863=m +CONFIG_NLS_CODEPAGE_864=m +CONFIG_NLS_CODEPAGE_865=m +CONFIG_NLS_CODEPAGE_866=m +CONFIG_NLS_CODEPAGE_869=m +CONFIG_NLS_CODEPAGE_936=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_CODEPAGE_932=y +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_ISO8859_1=m +CONFIG_NLS_ISO8859_2=m +CONFIG_NLS_ISO8859_3=m +CONFIG_NLS_ISO8859_4=m +CONFIG_NLS_ISO8859_5=m +CONFIG_NLS_ISO8859_6=m +CONFIG_NLS_ISO8859_7=m +CONFIG_NLS_ISO8859_9=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_NLS_UTF8=m + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# USB support +# +CONFIG_USB=y +# CONFIG_USB_DEBUG is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_BANDWIDTH is not set + +# +# USB Host Controller Drivers +# +CONFIG_USB_EHCI_HCD=y +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +CONFIG_USB_OHCI=y + +# +# USB Device Class drivers +# +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_BLUETOOTH is not set +# CONFIG_USB_MIDI is not set +CONFIG_USB_STORAGE=y +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_ACM is not set +CONFIG_USB_PRINTER=m + +# +# USB Human Interface Devices (HID) +# +CONFIG_USB_HID=m + +# +# Input core support is needed for USB HID input layer or HIDBP support +# +# CONFIG_USB_HIDINPUT is not set +# CONFIG_USB_HIDDEV is not set +# CONFIG_USB_KBD is not set +# CONFIG_USB_MOUSE is not set +# CONFIG_USB_AIPTEK is not set +# CONFIG_USB_WACOM is not set +# CONFIG_USB_KBTAB is not set +# CONFIG_USB_POWERMATE is not set + +# +# USB Imaging devices +# +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_HPUSBSCSI is not set + +# +# USB Multimedia devices +# + +# +# Video4Linux support is needed for USB Multimedia device support +# + +# +# USB Network adaptors +# +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_CATC is not set +# CONFIG_USB_CDCETHER is not set +# CONFIG_USB_USBNET is not set + +# +# USB port drivers +# +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +CONFIG_USB_SERIAL=m +# CONFIG_USB_SERIAL_DEBUG is not set +CONFIG_USB_SERIAL_GENERIC=y +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +# CONFIG_USB_SERIAL_EMPEG is not set +# CONFIG_USB_SERIAL_FTDI_SIO is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_IPAQ is not set +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_EDGEPORT_TI is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_KLSI is not set +# CONFIG_USB_SERIAL_KOBIL_SCT is not set +CONFIG_USB_SERIAL_PL2303=m +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_XIRCOM is not set +# CONFIG_USB_SERIAL_OMNINET is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_AUERSWALD is not set +# CONFIG_USB_TIGL is not set +# CONFIG_USB_BRLVGER is not set +# CONFIG_USB_LCD is not set + +# +# Support for USB gadgets +# +# CONFIG_USB_GADGET is not set + +# +# Bluetooth support +# +# CONFIG_BLUEZ is not set + +# +# Cryptographic options +# +# CONFIG_CRYPTO is not set + +# +# Library routines +# +# CONFIG_CRC32 is not set +# CONFIG_ZLIB_INFLATE is not set +# CONFIG_ZLIB_DEFLATE is not set +# CONFIG_FW_LOADER is not set + +# +# Kernel hacking +# +# CONFIG_DEBUG_KERNEL is not set +# CONFIG_SERIAL_TEXT_DEBUG is not set +CONFIG_LOG_BUF_SHIFT=0 diff -Nur linux-2.4.36.2.org/config_kuroboxhg linux-2.4.36.2/config_kuroboxhg --- linux-2.4.36.2.org/config_kuroboxhg 1970-01-01 09:00:00.000000000 +0900 +++ linux-2.4.36.2/config_kuroboxhg 2008-04-19 22:48:17.000000000 +0900 @@ -0,0 +1,932 @@ +# +# Automatically generated make config: don't edit +# +# CONFIG_UID16 is not set +# CONFIG_RWSEM_GENERIC_SPINLOCK is not set +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_HAVE_DEC_LOCK=y +CONFIG_GENERIC_ISA_DMA=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_ADVANCED_OPTIONS is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +CONFIG_MODVERSIONS=y +CONFIG_KMOD=y + +# +# Platform support +# +CONFIG_PPC=y +CONFIG_PPC32=y +CONFIG_6xx=y +# CONFIG_40x is not set +# CONFIG_44x is not set +# CONFIG_POWER3 is not set +# CONFIG_POWER4 is not set +# CONFIG_8xx is not set +# CONFIG_8260 is not set +CONFIG_PPC_STD_MMU=y +# CONFIG_ALL_PPC is not set +# CONFIG_APUS is not set +# CONFIG_SPRUCE is not set +# CONFIG_LOPEC is not set +# CONFIG_SANDPOINT is not set +CONFIG_LINKSTATION=y +# CONFIG_PPLUS is not set +# CONFIG_PRPMC750 is not set +# CONFIG_PAL4 is not set +# CONFIG_GEMINI is not set +CONFIG_GEN550=y +CONFIG_MPC10X_STORE_GATHERING=y +# CONFIG_EPIC_SERIAL_MODE is not set +# CONFIG_LAN is not set +# CONFIG_HLAN is not set +# CONFIG_KUROBOX is not set +# CONFIG_HGLAN is not set +CONFIG_KUROBOXHG=y +# CONFIG_HTGL is not set +# CONFIG_SMP is not set +# CONFIG_ALTIVEC is not set +# CONFIG_TAU is not set +CONFIG_PPC_ISATIMER=y + +# +# General setup +# +# CONFIG_HIGHMEM is not set +CONFIG_HIGHMEM_START=0xfe000000 +CONFIG_LOWMEM_SIZE=0x30000000 +CONFIG_KERNEL_START=0xc0000000 +CONFIG_TASK_SIZE=0x80000000 +# CONFIG_ISA is not set +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_PCI=y +CONFIG_NET=y +CONFIG_SYSCTL=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_KCORE_ELF=y +CONFIG_BINFMT_ELF=y +CONFIG_KERNEL_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_OOM_KILLER is not set +# CONFIG_PCI_NAMES is not set +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +# CONFIG_PCMCIA is not set + +# +# Parallel port support +# +# CONFIG_PARPORT is not set +# CONFIG_GEN_RTC is not set +# CONFIG_PPC_RTC is not set +CONFIG_CMDLINE_BOOL=y +CONFIG_CMDLINE="root=/dev/hda1" + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_PARTITIONS=y +CONFIG_MTD_CONCAT=y +# CONFIG_MTD_REDBOOT_PARTS is not set +# CONFIG_MTD_CMDLINE_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +CONFIG_MTD_JEDECPROBE=y +CONFIG_MTD_GEN_PROBE=y +CONFIG_MTD_CFI_ADV_OPTIONS=y +CONFIG_MTD_CFI_NOSWAP=y +# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set +# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set +CONFIG_MTD_CFI_GEOMETRY=y +CONFIG_MTD_CFI_B1=y +# CONFIG_MTD_CFI_B2 is not set +# CONFIG_MTD_CFI_B4 is not set +# CONFIG_MTD_CFI_B8 is not set +CONFIG_MTD_CFI_I1=y +# CONFIG_MTD_CFI_I2 is not set +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +# CONFIG_MTD_CFI_INTELEXT is not set +CONFIG_MTD_CFI_AMDSTD=y +# CONFIG_MTD_CFI_STAA is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_OBSOLETE_CHIPS is not set +# CONFIG_MTD_AMDSTD is not set +# CONFIG_MTD_SHARP is not set +# CONFIG_MTD_JEDEC is not set + +# +# Mapping drivers for chip access +# +CONFIG_MTD_PHYSMAP=y +CONFIG_MTD_PHYSMAP_START=0xffc00000 +CONFIG_MTD_PHYSMAP_LEN=0x400000 +CONFIG_MTD_PHYSMAP_BUSWIDTH=1 +# CONFIG_MTD_TQM8XXL is not set +# CONFIG_MTD_RPXLITE is not set +# CONFIG_MTD_MBX860 is not set +# CONFIG_MTD_DBOX2 is not set +# CONFIG_MTD_CFI_FLAGADM is not set +# CONFIG_MTD_REDWOOD is not set +# CONFIG_MTD_PCI is not set +# CONFIG_MTD_PCMCIA is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLKMTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# NAND Flash Device Drivers +# +# CONFIG_MTD_NAND is not set + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_CISS_SCSI_TAPE is not set +# CONFIG_CISS_MONITOR_THREAD is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_UMEM is not set +# CONFIG_BLK_DEV_SX8 is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=15000 +CONFIG_BLK_DEV_INITRD=y +CONFIG_BLK_STATS=y + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_MD_MULTIPATH is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +# CONFIG_NETLINK_DEV is not set +# CONFIG_NETFILTER is not set +CONFIG_FILTER=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set + +# +# SCTP Configuration (EXPERIMENTAL) +# +# CONFIG_IP_SCTP is not set +# CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +# CONFIG_BLK_DEV_IDE_SATA is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +# CONFIG_IDEDISK_STROKE is not set +# CONFIG_BLK_DEV_IDECS is not set +# CONFIG_BLK_DEV_DELKIN is not set +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_IDE_TASK_IOCTL is not set + +# +# IDE chipset support/bugfixes +# +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +CONFIG_BLK_DEV_IDEPCI=y +# CONFIG_BLK_DEV_GENERIC is not set +# CONFIG_IDEPCI_SHARE_IRQ is not set +CONFIG_BLK_DEV_IDEDMA_PCI=y +# CONFIG_BLK_DEV_OFFBOARD is not set +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set +# CONFIG_IDEDMA_PCI_AUTO is not set +# CONFIG_IDEDMA_ONLYDISK is not set +CONFIG_BLK_DEV_IDEDMA=y +# CONFIG_IDEDMA_PCI_WIP is not set +# CONFIG_BLK_DEV_ADMA100 is not set +# CONFIG_BLK_DEV_AEC62XX is not set +# CONFIG_BLK_DEV_ALI15X3 is not set +# CONFIG_WDC_ALI15X3 is not set +# CONFIG_BLK_DEV_AMD74XX is not set +# CONFIG_AMD74XX_OVERRIDE is not set +# CONFIG_BLK_DEV_ATIIXP is not set +# CONFIG_BLK_DEV_CMD64X is not set +# CONFIG_BLK_DEV_TRIFLEX is not set +# CONFIG_BLK_DEV_CY82C693 is not set +# CONFIG_BLK_DEV_CS5530 is not set +# CONFIG_BLK_DEV_HPT34X is not set +# CONFIG_HPT34X_AUTODMA is not set +# CONFIG_BLK_DEV_HPT366 is not set +# CONFIG_BLK_DEV_PIIX is not set +# CONFIG_BLK_DEV_NS87415 is not set +# CONFIG_BLK_DEV_OPTI621 is not set +# CONFIG_BLK_DEV_PDC202XX_OLD is not set +# CONFIG_PDC202XX_BURST is not set +# CONFIG_BLK_DEV_PDC202XX_NEW is not set +# CONFIG_BLK_DEV_RZ1000 is not set +# CONFIG_BLK_DEV_SC1200 is not set +# CONFIG_BLK_DEV_SVWKS is not set +CONFIG_BLK_DEV_SIIMAGE=y +# CONFIG_BLK_DEV_SIS5513 is not set +# CONFIG_BLK_DEV_SLC90E66 is not set +# CONFIG_BLK_DEV_TRM290 is not set +# CONFIG_BLK_DEV_VIA82CXXX is not set +# CONFIG_BLK_DEV_SL82C105 is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set +# CONFIG_IDEDMA_IVB is not set +# CONFIG_DMA_NONPCI is not set +# CONFIG_BLK_DEV_ATARAID is not set +# CONFIG_BLK_DEV_ATARAID_PDC is not set +# CONFIG_BLK_DEV_ATARAID_HPT is not set +# CONFIG_BLK_DEV_ATARAID_MEDLEY is not set +# CONFIG_BLK_DEV_ATARAID_SII is not set + +# +# SCSI support +# +CONFIG_SCSI=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +CONFIG_SD_EXTRA_DEVS=40 +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +# CONFIG_BLK_DEV_SR is not set +CONFIG_CHR_DEV_SG=y + +# +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs +# +# CONFIG_SCSI_DEBUG_QUEUES is not set +# CONFIG_SCSI_MULTI_LUN is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set + +# +# SCSI low-level drivers +# +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set +# CONFIG_SCSI_7000FASST is not set +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_AHA152X is not set +# CONFIG_SCSI_AHA1542 is not set +# CONFIG_SCSI_AHA1740 is not set +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC79XX is not set +# CONFIG_SCSI_AIC7XXX_OLD is not set +# CONFIG_SCSI_DPT_I2O is not set +# CONFIG_SCSI_ADVANSYS is not set +# CONFIG_SCSI_IN2000 is not set +# CONFIG_SCSI_AM53C974 is not set +# CONFIG_SCSI_MEGARAID is not set +# CONFIG_SCSI_MEGARAID2 is not set +# CONFIG_SCSI_SATA is not set +# CONFIG_SCSI_SATA_AHCI is not set +# CONFIG_SCSI_SATA_SVW is not set +# CONFIG_SCSI_ATA_PIIX is not set +# CONFIG_SCSI_SATA_NV is not set +# CONFIG_SCSI_SATA_QSTOR is not set +# CONFIG_SCSI_SATA_PROMISE is not set +# CONFIG_SCSI_SATA_SX4 is not set +# CONFIG_SCSI_SATA_SIL is not set +# CONFIG_SCSI_SATA_SIS is not set +# CONFIG_SCSI_SATA_ULI is not set +# CONFIG_SCSI_SATA_VIA is not set +# CONFIG_SCSI_SATA_VITESSE is not set +# CONFIG_SCSI_BUSLOGIC is not set +# CONFIG_SCSI_CPQFCTS is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_DTC3280 is not set +# CONFIG_SCSI_EATA is not set +# CONFIG_SCSI_EATA_DMA is not set +# CONFIG_SCSI_EATA_PIO is not set +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_GDTH is not set +# CONFIG_SCSI_GENERIC_NCR5380 is not set +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_NCR53C406A is not set +# CONFIG_SCSI_NCR53C7xx is not set +# CONFIG_SCSI_SYM53C8XX_2 is not set +# CONFIG_SCSI_NCR53C8XX is not set +# CONFIG_SCSI_SYM53C8XX is not set +# CONFIG_SCSI_PAS16 is not set +# CONFIG_SCSI_PCI2000 is not set +# CONFIG_SCSI_PCI2220I is not set +# CONFIG_SCSI_PSI240I is not set +# CONFIG_SCSI_QLOGIC_FAS is not set +# CONFIG_SCSI_QLOGIC_ISP is not set +# CONFIG_SCSI_QLOGIC_FC is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +# CONFIG_SCSI_SIM710 is not set +# CONFIG_SCSI_SYM53C416 is not set +# CONFIG_SCSI_DC390T is not set +# CONFIG_SCSI_T128 is not set +# CONFIG_SCSI_U14_34F is not set +# CONFIG_SCSI_NSP32 is not set +# CONFIG_SCSI_DEBUG is not set + +# +# IEEE 1394 (FireWire) support (EXPERIMENTAL) +# +# CONFIG_IEEE1394 is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set + +# +# Ethernet (10 or 100Mbit) +# +# CONFIG_NET_ETHERNET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_E1000 is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +CONFIG_R8169=y +# CONFIG_SKGE is not set +# CONFIG_SKY2 is not set +# CONFIG_SK98LIN is not set +# CONFIG_TIGON3 is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Old CD-ROM drivers (not SCSI, not IDE) +# +# CONFIG_CD_NO_IDESCSI is not set + +# +# Console drivers +# +# CONFIG_VGA_CONSOLE is not set + +# +# Frame-buffer support +# +# CONFIG_FB is not set + +# +# Input core support +# +# CONFIG_INPUT is not set +# CONFIG_INPUT_KEYBDEV is not set +# CONFIG_DUMMY_KEYB is not set +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set +# CONFIG_INPUT_UINPUT is not set + +# +# Macintosh device drivers +# + +# +# Character devices +# +# CONFIG_VT is not set +CONFIG_SERIAL=y +CONFIG_SERIAL_CONSOLE=y +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 + +# +# I2C support +# +CONFIG_I2C=y +# CONFIG_I2C_ALGOBIT is not set +# CONFIG_SCx200_ACB is not set +# CONFIG_I2C_ALGOPCF is not set +CONFIG_I2C_ALGO_8245=y +CONFIG_I2C_MPC8245=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_PROC=y + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_INPUT_GAMEPORT is not set + +# +# Input core support is needed for gameports +# + +# +# Input core support is needed for joysticks +# +# CONFIG_QIC02_TAPE is not set +# CONFIG_IPMI_HANDLER is not set +# CONFIG_IPMI_PANIC_EVENT is not set +# CONFIG_IPMI_DEVICE_INTERFACE is not set +# CONFIG_IPMI_KCS is not set +# CONFIG_IPMI_WATCHDOG is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_SCx200 is not set +# CONFIG_SCx200_GPIO is not set +# CONFIG_AMD_PM768 is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +CONFIG_RS5C372_RTC=y +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set + +# +# Direct Rendering Manager (XFree86 DRI support) +# +# CONFIG_DRM is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_QFMT_V2 is not set +# CONFIG_AUTOFS_FS is not set +CONFIG_AUTOFS4_FS=y +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BEFS_DEBUG is not set +# CONFIG_BFS_FS is not set +CONFIG_EXT3_FS=y +CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set +CONFIG_FAT_FS=m +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +CONFIG_VFAT_FS=m +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +# CONFIG_JFFS2_FS is not set +# CONFIG_CRAMFS is not set +CONFIG_TMPFS=y +CONFIG_RAMFS=y +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_ZISOFS is not set +# CONFIG_JFS_FS is not set +# CONFIG_JFS_DEBUG is not set +# CONFIG_JFS_STATISTICS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set +# CONFIG_XFS_FS is not set +# CONFIG_XFS_QUOTA is not set +# CONFIG_XFS_RT is not set +# CONFIG_XFS_TRACE is not set +# CONFIG_XFS_DEBUG is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=m +CONFIG_NFS_V3=y +# CONFIG_NFS_DIRECTIO is not set +# CONFIG_ROOT_NFS is not set +CONFIG_NFSD=m +CONFIG_NFSD_V3=y +CONFIG_NFSD_TCP=y +CONFIG_SUNRPC=m +CONFIG_LOCKD=m +CONFIG_LOCKD_V4=y +CONFIG_SMB_FS=m +CONFIG_SMB_NLS_DEFAULT=y +CONFIG_SMB_NLS_REMOTE="cp437" +CONFIG_SMB_UNIX=y +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set +# CONFIG_ZISOFS_FS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +CONFIG_SMB_NLS=y +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NLS_CODEPAGE_437=m +CONFIG_NLS_CODEPAGE_737=m +CONFIG_NLS_CODEPAGE_775=m +CONFIG_NLS_CODEPAGE_850=m +CONFIG_NLS_CODEPAGE_852=m +CONFIG_NLS_CODEPAGE_855=m +CONFIG_NLS_CODEPAGE_857=m +CONFIG_NLS_CODEPAGE_860=m +CONFIG_NLS_CODEPAGE_861=m +CONFIG_NLS_CODEPAGE_862=m +CONFIG_NLS_CODEPAGE_863=m +CONFIG_NLS_CODEPAGE_864=m +CONFIG_NLS_CODEPAGE_865=m +CONFIG_NLS_CODEPAGE_866=m +CONFIG_NLS_CODEPAGE_869=m +CONFIG_NLS_CODEPAGE_936=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_CODEPAGE_932=y +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_ISO8859_1=m +CONFIG_NLS_ISO8859_2=m +CONFIG_NLS_ISO8859_3=m +CONFIG_NLS_ISO8859_4=m +CONFIG_NLS_ISO8859_5=m +CONFIG_NLS_ISO8859_6=m +CONFIG_NLS_ISO8859_7=m +CONFIG_NLS_ISO8859_9=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_NLS_UTF8=m + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# USB support +# +CONFIG_USB=y +# CONFIG_USB_DEBUG is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_BANDWIDTH is not set + +# +# USB Host Controller Drivers +# +CONFIG_USB_EHCI_HCD=y +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +CONFIG_USB_OHCI=y + +# +# USB Device Class drivers +# +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_BLUETOOTH is not set +# CONFIG_USB_MIDI is not set +CONFIG_USB_STORAGE=y +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_ACM is not set +CONFIG_USB_PRINTER=m + +# +# USB Human Interface Devices (HID) +# +CONFIG_USB_HID=m + +# +# Input core support is needed for USB HID input layer or HIDBP support +# +# CONFIG_USB_HIDINPUT is not set +# CONFIG_USB_HIDDEV is not set +# CONFIG_USB_KBD is not set +# CONFIG_USB_MOUSE is not set +# CONFIG_USB_AIPTEK is not set +# CONFIG_USB_WACOM is not set +# CONFIG_USB_KBTAB is not set +# CONFIG_USB_POWERMATE is not set + +# +# USB Imaging devices +# +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_HPUSBSCSI is not set + +# +# USB Multimedia devices +# + +# +# Video4Linux support is needed for USB Multimedia device support +# + +# +# USB Network adaptors +# +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_CATC is not set +# CONFIG_USB_CDCETHER is not set +# CONFIG_USB_USBNET is not set + +# +# USB port drivers +# +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +CONFIG_USB_SERIAL=m +# CONFIG_USB_SERIAL_DEBUG is not set +CONFIG_USB_SERIAL_GENERIC=y +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +# CONFIG_USB_SERIAL_EMPEG is not set +# CONFIG_USB_SERIAL_FTDI_SIO is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_IPAQ is not set +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_EDGEPORT_TI is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_KLSI is not set +# CONFIG_USB_SERIAL_KOBIL_SCT is not set +CONFIG_USB_SERIAL_PL2303=m +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_XIRCOM is not set +# CONFIG_USB_SERIAL_OMNINET is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_AUERSWALD is not set +# CONFIG_USB_TIGL is not set +# CONFIG_USB_BRLVGER is not set +# CONFIG_USB_LCD is not set + +# +# Support for USB gadgets +# +# CONFIG_USB_GADGET is not set + +# +# Bluetooth support +# +# CONFIG_BLUEZ is not set + +# +# Cryptographic options +# +# CONFIG_CRYPTO is not set + +# +# Library routines +# +# CONFIG_CRC32 is not set +# CONFIG_ZLIB_INFLATE is not set +# CONFIG_ZLIB_DEFLATE is not set +# CONFIG_FW_LOADER is not set + +# +# Kernel hacking +# +# CONFIG_DEBUG_KERNEL is not set +# CONFIG_SERIAL_TEXT_DEBUG is not set +CONFIG_LOG_BUF_SHIFT=0 diff -Nur linux-2.4.36.2.org/drivers/char/Config.in linux-2.4.36.2/drivers/char/Config.in --- linux-2.4.36.2.org/drivers/char/Config.in 2008-02-25 05:38:03.000000000 +0900 +++ linux-2.4.36.2/drivers/char/Config.in 2008-04-19 22:47:01.000000000 +0900 @@ -326,6 +326,9 @@ if [ "$CONFIG_TOSHIBA_RBTX4927" = "y" -o "$CONFIG_TOSHIBA_JMR3927" = "y" ]; then tristate 'Dallas DS1742 RTC support' CONFIG_DS1742 fi +if [ "$CONFIG_I2C" = "y" ]; then + tristate 'I2C RS5C372 RTC support' CONFIG_RS5C372_RTC +fi tristate 'Double Talk PC internal speech card support' CONFIG_DTLK tristate 'Siemens R3964 line discipline' CONFIG_R3964 diff -Nur linux-2.4.36.2.org/drivers/char/Makefile linux-2.4.36.2/drivers/char/Makefile --- linux-2.4.36.2.org/drivers/char/Makefile 2008-02-25 05:38:03.000000000 +0900 +++ linux-2.4.36.2/drivers/char/Makefile 2008-04-19 22:47:01.000000000 +0900 @@ -254,6 +254,7 @@ obj-$(CONFIG_SGI_DS1286) += ds1286.o obj-$(CONFIG_MIPS_RTC) += mips_rtc.o obj-$(CONFIG_SGI_IP27_RTC) += ip27-rtc.o +obj-$(CONFIG_RS5C372_RTC) += rs5c372.o ifeq ($(CONFIG_PPC),) obj-$(CONFIG_NVRAM) += nvram.o endif diff -Nur linux-2.4.36.2.org/drivers/char/rs5c372.c linux-2.4.36.2/drivers/char/rs5c372.c --- linux-2.4.36.2.org/drivers/char/rs5c372.c 1970-01-01 09:00:00.000000000 +0900 +++ linux-2.4.36.2/drivers/char/rs5c372.c 2008-04-19 22:47:01.000000000 +0900 @@ -0,0 +1,458 @@ +/* + * rs5c372.c + * + * Device driver for Real Time Controller's rs5c372 chips + * + * Copyright (C) 2005 Pavel Mironchik pmironchik@optifacio.net + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This driver is adapted from the m41st85w driver + */ + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define RS5C372_DEBUG 0 + +#define RS5C372_I2C_SLAVE_ADDR 0x32 +#define RS5C372_RAM_ADDR_START 0x00 +#define RS5C372_RAM_ADDR_END 0x0F +#define RS5C372_RAM_SIZE 0x10 +#define I2C_DRIVERID_RS5C372 0xF6 + +#define RS5C372_GETDATETIME 0 +#define RS5C372_SETTIME 1 +#define RS5C372_SETDATETIME 2 + +#define RTC_SECONDS 0 +#define RTC_MINUTES 1 +#define RTC_HOURS 2 +#define RTC_WEEKDAYS 3 +#define RTC_DAYS 4 +#define RTC_MONTHS 5 +#define RTC_YEARS 6 +#define RTC_TIMETRIMM 7 + +// ALARM A registers +#define RTC_AM 8 +#define RTC_AH 9 +#define RTC_AW 10 + +// ALARM B registers +#define RTC_BM 11 +#define RTC_BH 12 +#define RTC_BW 13 + +// Control registers +#define RTC_CR1 14 +#define RTC_CR2 15 + + +#define BCD_TO_BIN(val) (((val)&15) + ((val)>>4)*10) +#define BIN_TO_BCD(val) ((((val)/10)<<4) + (val)%10) +#define HOURS_24(n) BCD_TO_BIN((n)&0x3F) + +extern void to_tm(int tim, struct rtc_time * tm); + +struct i2c_driver rs5c372_driver; +struct i2c_client *rs5c372_i2c_client = NULL; + +static int rs5c372_rtc_ioctl(struct inode *, struct file *, unsigned int, + unsigned long); +static int rs5c372_rtc_open(struct inode *inode, struct file *file); +static int rs5c372_rtc_release(struct inode *inode, struct file *file); +/*RTC related staff*/ +static unsigned long rs5c372_get_rtc_time(void); +static int rs5c372_set_rtc_time(unsigned long); + +static struct file_operations rtc_fops = { + owner:THIS_MODULE, + llseek:no_llseek, + ioctl:rs5c372_rtc_ioctl, + open:rs5c372_rtc_open, + release:rs5c372_rtc_release, +}; + + +static struct miscdevice rs5c372_dev = { + RTC_MINOR, + "rtc", + &rtc_fops +}; + +static int rs5c372_attach_adapter(struct i2c_adapter *adap); +static int rs5c372_detach(struct i2c_client *client); +static int rs5c372_command(struct i2c_client *client, unsigned int cmd, + void *arg); +struct i2c_driver rs5c372_driver = { + name:"rs5c372", + id:I2C_DRIVERID_RS5C372, + flags:I2C_DF_NOTIFY, + attach_adapter:rs5c372_attach_adapter, + detach_client:rs5c372_detach, + command:rs5c372_command +}; + +extern struct machdep_calls ppc_md; + + +/*Pointers to get/set time via rs5c372 chip to substitute undefined (yet) + fields in struct ppc_md. we'll save current pointers concerning RTC from + ppc_md and will restore them in cleanup_module + */ +static int (*old_set_rtc_time)(unsigned long nowtime); +static unsigned long (*old_get_rtc_time)(void); + +static DECLARE_MUTEX (mutex); + +static int rs5c372_read(char *buf, int len) +{ + struct i2c_msg msgs[1] = { + {rs5c372_i2c_client->addr, I2C_M_RD, len, buf} + }; + int ret; + + if (down_interruptible (&mutex)) + return (-ERESTARTSYS); + ret = i2c_transfer(rs5c372_i2c_client->adapter, msgs, 1); + up (&mutex); + return ret; +} + +static int rs5c372_write(char *buf, int len) +{ + // warning refer of the format of the first byte + // in rs5c372a-e datasheet + + struct i2c_msg msgs[1] = { + {rs5c372_i2c_client->addr, 0, len, buf} + }; + int ret; + + if (down_interruptible (&mutex)) + return (-ERESTARTSYS); + ret = i2c_transfer(rs5c372_i2c_client->adapter, msgs, 1); + up (&mutex); + return ret; +} + +static int rs5c372_attach(struct i2c_adapter *adap, int addr, unsigned short flags, int kind) +{ + unsigned char buf[2]; + struct i2c_msg msgs[1] = { + {addr, 0, 2, buf} + }; + int ret = 0; + struct i2c_client *c; + + if (!(c = kmalloc(sizeof(struct i2c_client), GFP_KERNEL))) { + return -ENOMEM; + } + + memset(c, 0, sizeof(struct i2c_client)); + strncpy(c->name, "rs5c372", 0x20); + + c->id = rs5c372_driver.id; + c->flags = I2C_CLIENT_ALLOW_USE | I2C_DF_NOTIFY; + c->addr = addr; + c->adapter = adap; + c->driver = &rs5c372_driver; + + ret = i2c_attach_client(c); + rs5c372_i2c_client = c; + + if (ret < 0) { + printk(KERN_ERR "rs5c372: Attach was not ok!\n"); + kfree(c); + } + else + { + /* set 24h time */ + buf[0] = 0xf0; + buf[1] = 0x20; + i2c_transfer(adap, msgs, 1); + /* accuracy correction */ + buf[0] = 0x70; +#if defined(CONFIG_HTGL) + buf[1] = 0x77; // -9 +#else + buf[1] = 0x15; +#endif + i2c_transfer(adap, msgs, 1); + old_get_rtc_time=ppc_md.get_rtc_time; + old_set_rtc_time=ppc_md.set_rtc_time; + + ppc_md.get_rtc_time=rs5c372_get_rtc_time; + ppc_md.set_rtc_time=rs5c372_set_rtc_time; + + time_t sec = rs5c372_get_rtc_time(); + xtime.tv_usec = 0; + if (sec > 0) + xtime.tv_sec = sec; + } + return ret; +} + +static int rs5c372_attach_adapter(struct i2c_adapter *adap) +{ + return rs5c372_attach(adap, RS5C372_I2C_SLAVE_ADDR, 0, 0); +} + +static int rs5c372_detach(struct i2c_client *client) +{ + if (client) { + /*restore old handlers */ + ppc_md.get_rtc_time=old_get_rtc_time; + ppc_md.set_rtc_time=old_set_rtc_time; + i2c_detach_client(client); + kfree(client); + client = rs5c372_i2c_client = NULL; + } + return 0; +} + + +static void rs5c372_convert_to_time(struct rtc_time *dt, char *buf) +{ + dt->tm_sec = BCD_TO_BIN(buf[1] & 0x7f); + dt->tm_min = BCD_TO_BIN(buf[2] & 0x7f); + + /* 24 hour mode only */ + dt->tm_hour = HOURS_24(buf[3]); + + dt->tm_wday = BCD_TO_BIN(buf[4] & 0x07); + dt->tm_mday = BCD_TO_BIN(buf[5] & 0x3f); + + /* dt->tm_mon is zero-based */ + dt->tm_mon = BCD_TO_BIN(buf[6] & 0x1f) - 1; + /* year is 1900 dt->tm_year */ + dt->tm_year = BCD_TO_BIN(buf[7]); + + if (dt->tm_year < 70) { + dt->tm_year += 100; + } + +#if RS5C372_DEBUG + printk("rs5c372_get_datetime: year = %d\n", dt->tm_year); + printk("rs5c372_get_datetime: mon = %d\n", dt->tm_mon); + printk("rs5c372_get_datetime: mday = %d\n", dt->tm_mday); + printk("rs5c372_get_datetime: hour = %d\n", dt->tm_hour); + printk("rs5c372_get_datetime: min = %d\n", dt->tm_min); + printk("rs5c372_get_datetime: sec = %d\n", dt->tm_sec); +#endif +} + +static int rs5c372_get_datetime(struct i2c_client *client, struct rtc_time *dt) +{ + unsigned char buf[8]; + int ret = -EIO; + + ret = rs5c372_read(buf,8); + if (ret >= 0) { + rs5c372_convert_to_time(dt, buf); + ret = 0; + } else + printk("rs5c372_get_datetime(), i2c_transfer() returned %d\n", + ret); + return ret; +} + + +static int rs5c372_set_datetime(struct i2c_client *client, struct rtc_time *dt,int datetoo) +{ + unsigned char buf[7]; + int ret, len = 4; + +#if RS5C372_DEBUG + printk("rs5c372_set_datetime: tm_year = %d\n", dt->tm_year); + printk("rs5c372_set_datetime: tm_mon = %d\n", dt->tm_mon); + printk("rs5c372_set_datetime: tm_mday = %d\n", dt->tm_mday); + printk("rs5c372_set_datetime: tm_hour = %d\n", dt->tm_hour); + printk("rs5c372_set_datetime: tm_min = %d\n", dt->tm_min); + printk("rs5c372_set_datetime: tm_sec = %d\n", dt->tm_sec); +#endif + + buf[0] = 0; + buf[1] = (BIN_TO_BCD(dt->tm_sec)); + buf[2] = (BIN_TO_BCD(dt->tm_min)); + buf[3] = (BIN_TO_BCD(dt->tm_hour)); + + if (datetoo) { + len = 8; + buf[4] = (BIN_TO_BCD(dt->tm_wday)); + buf[5] = (BIN_TO_BCD(dt->tm_mday)); + buf[6] = (BIN_TO_BCD(dt->tm_mon + 1)); + buf[7] = (BIN_TO_BCD(dt->tm_year % 100)); + } + + ret = rs5c372_write(buf,len); + if (ret >= 0) + ret = 0; + else + printk + ("rs5c372_set_datetime(), i2c_master_send() returned %d\n", + ret); + return ret; +} + +static int rs5c372_command(struct i2c_client *client, unsigned int cmd, void *arg) +{ + switch (cmd) { + case RS5C372_GETDATETIME: + return rs5c372_get_datetime(client, arg); + case RS5C372_SETTIME: + return rs5c372_set_datetime(client, arg, 0); + case RS5C372_SETDATETIME: + return rs5c372_set_datetime(client, arg, 1); + default: + return -EINVAL; + } + return 0; +} + +static int rs5c372_rtc_open(struct inode *inode, struct file *file) +{ + return 0; +} + + +static int rs5c372_rtc_release(struct inode *inode, struct file *file) +{ + return 0; +} + +static int rs5c372_rtc_ioctl(struct inode *inode, struct file *file, + unsigned int cmd, unsigned long arg) +{ +// unsigned long flags; + struct rtc_time wtime; + int status = 0; + + switch (cmd) { + default: + case RTC_UIE_ON: + case RTC_UIE_OFF: + case RTC_PIE_ON: + case RTC_PIE_OFF: + case RTC_AIE_ON: + case RTC_AIE_OFF: + case RTC_ALM_SET: + case RTC_ALM_READ: + case RTC_IRQP_READ: + case RTC_IRQP_SET: + case RTC_EPOCH_SET: + case RTC_EPOCH_READ: + case RTC_WKALM_SET: + case RTC_WKALM_RD: + status = -EINVAL; + break; + case RTC_RD_TIME: +// spin_lock_irqsave(&rs5c372_rtc_lock, flags); + rs5c372_command(rs5c372_i2c_client, RS5C372_GETDATETIME, + &wtime); +// spin_unlock_irqrestore(&rs5c372_rtc_lock, flags); + if (copy_to_user((void *)arg, &wtime, sizeof(struct rtc_time))) + status = -EFAULT; + break; + + case RTC_SET_TIME: + if (!capable(CAP_SYS_TIME)) { + status = -EACCES; + break; + } + + if (copy_from_user + (&wtime, (struct rtc_time *)arg, sizeof(struct rtc_time))) { + status = -EFAULT; + break; + } + +// spin_lock_irqsave(&rs5c372_rtc_lock, flags); + rs5c372_command(rs5c372_i2c_client, RS5C372_SETDATETIME, + &wtime); +// spin_unlock_irqrestore(&rs5c372_rtc_lock, flags); + break; + } + + return status; +} + +/* + * Read the current RTC time and date + */ +static unsigned long rs5c372_get_rtc_time(void) +{ + int ret; + struct rtc_time tm; + if(!rs5c372_i2c_client) + { + printk("No client!!\n"); + return -EIO; + } + ret=rs5c372_command(rs5c372_i2c_client,RS5C372_GETDATETIME,&tm); + if(ret) + { + printk("%s:Command returned %d\n",__FUNCTION__,ret); + return ret;/*Something wrong */ + } + tm.tm_year += 1900; + tm.tm_mon += 1; + return mktime(tm.tm_year,tm.tm_mon,tm.tm_mday, + tm.tm_hour,tm.tm_min,tm.tm_sec); +} +/* + * Set the current RTC time and date + */ +static int rs5c372_set_rtc_time(unsigned long now) +{ + struct rtc_time tm; + to_tm(now,&tm); + /* convert from rtc_time to struct tm conventions */ + tm.tm_year -= 1900; + tm.tm_mon -= 1; + return rs5c372_command(rs5c372_i2c_client,RS5C372_SETDATETIME,&tm); +} + +static int __init rs5c372_init(void) +{ + int retval = 0; + retval = i2c_add_driver(&rs5c372_driver); + if (retval == 0) { + misc_register(&rs5c372_dev); + printk("I2C: rs5c372 RTC driver successfully loaded\n"); + } + else { + printk("I2C: rs5c372 RTC driver failed loading\n"); + } + return retval; +} + +static void __exit rs5c372_exit(void) +{ + misc_deregister(&rs5c372_dev); + i2c_del_driver(&rs5c372_driver); +} + +module_init(rs5c372_init); +module_exit(rs5c372_exit); + + +MODULE_AUTHOR("Pavel Mironchik pmironchik@optifacio.net"); +MODULE_LICENSE("GPL"); diff -Nur linux-2.4.36.2.org/drivers/char/serial.c linux-2.4.36.2/drivers/char/serial.c --- linux-2.4.36.2.org/drivers/char/serial.c 2008-02-25 05:38:03.000000000 +0900 +++ linux-2.4.36.2/drivers/char/serial.c 2008-04-19 22:47:01.000000000 +0900 @@ -5467,8 +5467,13 @@ serial_driver.type = TTY_DRIVER_TYPE_SERIAL; serial_driver.subtype = SERIAL_TYPE_NORMAL; serial_driver.init_termios = tty_std_termios; +#ifdef CONFIG_LINKSTATION + serial_driver.init_termios.c_cflag = + B9600 | CS8 | CREAD | CLOCAL | CSTOPB | PARENB; +#else serial_driver.init_termios.c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL; +#endif serial_driver.flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_NO_DEVFS; serial_driver.refcount = &serial_refcount; serial_driver.table = serial_table; @@ -5907,7 +5912,11 @@ static struct async_struct *info; struct serial_state *state; unsigned cval; +#ifdef CONFIG_LINKSTATION + int baud = 57600; +#else int baud = 9600; +#endif int bits = 8; int parity = 'n'; int doflow = 0; @@ -6023,7 +6032,6 @@ */ if (serial_in(info, UART_LSR) == 0xff) return -1; - return 0; } diff -Nur linux-2.4.36.2.org/drivers/i2c/Config.in linux-2.4.36.2/drivers/i2c/Config.in --- linux-2.4.36.2.org/drivers/i2c/Config.in 2008-02-25 05:38:03.000000000 +0900 +++ linux-2.4.36.2/drivers/i2c/Config.in 2008-04-19 22:47:01.000000000 +0900 @@ -57,7 +57,13 @@ if [ "$CONFIG_SGI_IP22" = "y" ]; then dep_tristate 'I2C SGI interfaces' CONFIG_I2C_ALGO_SGI $CONFIG_I2C fi - + + # Configuration for the 8245 I2C driver + dep_tristate 'I2C 8245 interface' CONFIG_I2C_ALGO_8245 $CONFIG_I2C + if [ "$CONFIG_I2C_ALGO_8245" != "n" ]; then + dep_tristate 'I2C MPC8245' CONFIG_I2C_MPC8245 $CONFIG_I2C_ALGO_8245 + fi + # This is needed for automatic patch generation: sensors code starts here # This is needed for automatic patch generation: sensors code ends here diff -Nur linux-2.4.36.2.org/drivers/i2c/Makefile linux-2.4.36.2/drivers/i2c/Makefile --- linux-2.4.36.2.org/drivers/i2c/Makefile 2008-02-25 05:38:03.000000000 +0900 +++ linux-2.4.36.2/drivers/i2c/Makefile 2008-04-19 22:47:01.000000000 +0900 @@ -6,7 +6,7 @@ export-objs := i2c-core.o i2c-algo-bit.o i2c-algo-pcf.o \ i2c-algo-ite.o i2c-algo-sibyte.o i2c-algo-sgi.o \ - i2c-proc.o + i2c-proc.o i2c-algo-8245.o i2c-mpc8245.o obj-$(CONFIG_I2C) += i2c-core.o obj-$(CONFIG_I2C_CHARDEV) += i2c-dev.o @@ -25,6 +25,8 @@ obj-$(CONFIG_I2C_ALGO_SIBYTE) += i2c-algo-sibyte.o i2c-sibyte.o obj-$(CONFIG_I2C_MAX1617) += i2c-max1617.o obj-$(CONFIG_I2C_ALGO_SGI) += i2c-algo-sgi.o +obj-$(CONFIG_I2C_ALGO_8245) += i2c-algo-8245.o +obj-$(CONFIG_I2C_MPC8245) += i2c-mpc8245.o # This is needed for automatic patch generation: sensors code starts here # This is needed for automatic patch generation: sensors code ends here diff -Nur linux-2.4.36.2.org/drivers/i2c/i2c-algo-8245.c linux-2.4.36.2/drivers/i2c/i2c-algo-8245.c --- linux-2.4.36.2.org/drivers/i2c/i2c-algo-8245.c 1970-01-01 09:00:00.000000000 +0900 +++ linux-2.4.36.2/drivers/i2c/i2c-algo-8245.c 2008-04-19 22:47:01.000000000 +0900 @@ -0,0 +1,523 @@ +/*********************************************************************** + * + * (C) Copyright 2005 + * DENX Software Engineering + * Wolfgang Denk, wd@denx.de + * All rights reserved. + ************************************************************************/ + +/* ------------------------------------------------------------------------- */ +/* i2c-algo-8245.c i2c driver algorithms for the MPC8245 I2C Interface */ +/* ------------------------------------------------------------------------- */ +/* + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +/* ------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + + +#define DEB(x) if (i2c_debug >= 1) x +#define DEB2(x) if (i2c_debug >= 2) x +#define DEB3(x) if (i2c_debug >= 3) x +#define DEBPROTO(x) if (i2c_debug >= 9) x + + +#define DEF_TIMEOUT 100 + + +static int i2c_debug = 0; +static int m8245_scan = 0; + +static wait_queue_head_t iic_wait; + +static int m8245_i2c_poll = 1; + + +static u_int m8245_iic_read(volatile u_int * addr) +{ + u_int val; + + val = in_le32(addr); + asm volatile ("sync"); + return val; +} + +static void m8245_iic_write(volatile u_int * addr, u_int val, u_int mask) +{ + u_int tmp; + + if (! mask) { + out_le32(addr, val); + } else { + tmp = m8245_iic_read(addr); + asm volatile ("sync"); + out_le32(addr, (tmp & ~mask) | (val & mask)); + } + asm volatile ("sync"); +} + +static void +m8245_iic_interrupt(int irq, void *dev_id, struct pt_regs * regs) +{ + volatile i2c_8245_t *i2c = (i2c_8245_t *)dev_id; + + if (i2c_debug > 1) { + printk(KERN_DEBUG "m8245_iic_interrupt(dev_id=%p)\n", dev_id); + } + + m8245_iic_write(&i2c->i2csr, ~M8245_I2CSR_MIF, M8245_I2CSR_MIF); + + wake_up_interruptible(&iic_wait); +} + +static void i2c_start(struct i2c_algo_8245_data *adap) +{ + volatile i2c_8245_t *i2c = (i2c_8245_t *)adap->i2c; + + DEBPROTO(printk("S ")); + m8245_iic_write(&i2c->i2ccr, M8245_I2CCR_MSTA, M8245_I2CCR_MSTA); +} + + +static void i2c_stop(struct i2c_algo_8245_data *adap) +{ + volatile i2c_8245_t *i2c = (i2c_8245_t *)adap->i2c; + + DEBPROTO(printk("P\n")); + m8245_iic_write(&i2c->i2ccr, 0, M8245_I2CCR_MSTA); +} + + +static int wait_for_bb(struct i2c_algo_8245_data *adap) +{ + volatile i2c_8245_t *i2c = (i2c_8245_t *)adap->i2c; + int timeout = DEF_TIMEOUT; + int status; + status = m8245_iic_read(&i2c->i2csr); +#ifndef STUB_I2C + while (timeout-- && (status & M8245_I2CSR_MBB)) { + udelay(1000); + status = m8245_iic_read(&i2c->i2csr); + } +#endif + if (timeout <= 0) { + printk(KERN_INFO "Timeout waiting for Bus Busy\n"); + } + + return (timeout <= 0); +} + + +static inline void m8245_sleep(unsigned long timeout) +{ + schedule_timeout( timeout * HZ); +} + + +static inline int wait_for_pin(struct i2c_algo_8245_data *adap, int *status) +{ + int timeout = DEF_TIMEOUT; + int res = -1; + volatile i2c_8245_t *i2c = (i2c_8245_t *)adap->i2c; + + if (! m8245_i2c_poll) { + interruptible_sleep_on(&iic_wait); + *status = m8245_iic_read(&i2c->i2csr); + res = 0; + goto Done; + } + + *status = m8245_iic_read(&i2c->i2csr); +#ifndef STUB_I2C + while (timeout-- && !(*status & M8245_I2CSR_MIF)) { + udelay(1000); + *status = m8245_iic_read(&i2c->i2csr); + } +#endif + + if (!(*status & M8245_I2CSR_MIF)) { + goto Done; + } + + m8245_iic_write(&i2c->i2csr, ~M8245_I2CSR_MIF, M8245_I2CSR_MIF); + + res = 0; + +Done: + return res; +} + + +static void +m8245_iic_init(struct i2c_algo_8245_data *adap) +{ + volatile i2c_8245_t *i2c = adap->i2c; + + if (i2c_debug) { + printk(KERN_DEBUG "m8245_iic_init() - I2C registers at %p\n", i2c); + } + + /* Select an arbitrary address. Just make sure it is unique. + */ + m8245_iic_write(&i2c->i2cadr, 0x34, M8245_I2CADR_ADDR_MASK); + + /* Make clock run maximum slow. + */ + m8245_iic_write(&i2c->i2cfdr, 0x3f, M8245_I2CFDR_FDR_MASK); + + /* Enable module and disable interrupts. + */ + m8245_iic_write(&i2c->i2ccr, M8245_I2CCR_MEN, M8245_I2CCR_INIT_MASK); + + m8245_iic_write(&i2c->i2csr, ~M8245_I2CSR_MIF, M8245_I2CSR_MIF); + + init_waitqueue_head(&iic_wait); + + /* Install interrupt handler. + */ + if (i2c_debug) { + printk (KERN_DEBUG "%s[%d] Install ISR for IRQ %d\n", + __func__,__LINE__, M8245_IRQ_I2C); + } + printk ("i2c-algo-8245: Using IRQ %d\n", + M8245_IRQ_I2C); + + if (request_irq(M8245_IRQ_I2C, m8245_iic_interrupt, 0, "I2C", (void *)i2c)) { + printk(KERN_WARNING "Failed to install an interrupt handler " + " for MPC8245 I2C controller IRQ%d\n", M8245_IRQ_I2C); + m8245_i2c_poll = 1; + } else { + m8245_iic_write(&i2c->i2ccr, M8245_I2CCR_MIEN, + M8245_I2CCR_MIEN); + } +} + + +static int try_address(struct i2c_algo_8245_data *adap, + unsigned char addr, int retries) +{ + volatile i2c_8245_t *i2c = adap->i2c; + int i, status, ret = -1; + + for (i = 0; i < retries; i++) { + i2c_start(adap); + m8245_iic_write(&i2c->i2ccr, M8245_I2CCR_MTX, M8245_I2CCR_MTX); + m8245_iic_write(&i2c->i2cdr, addr, 0); + + if (wait_for_pin(adap, &status) >= 0) { + if (!(status & M8245_I2CSR_RXAK)) { + printk("(0x%02x)", addr >> 1); + i2c_stop(adap); + ret = 0; + goto Done; + } else { + printk("."); + } + } + i2c_stop(adap); + udelay(500); + } +Done: + DEB2(if (i < retries) + printk(KERN_DEBUG "i2c-algo-8245.o: needed %d retries for %d\n",i, + addr)); + return ret; +} + + +static int m8245_sendbytes(struct i2c_adapter *i2c_adap, const char *buf, + int count) +{ + struct i2c_algo_8245_data *adap = i2c_adap->algo_data; + volatile i2c_8245_t *i2c = adap->i2c; + int status, timeout; + int i; + + m8245_iic_write(&i2c->i2ccr, M8245_I2CCR_MEN | M8245_I2CCR_MSTA | M8245_I2CCR_MTX, 0); + + for (i = 0; i < count; i++) { + m8245_iic_write(&i2c->i2cdr, buf[i], 0); + + timeout = wait_for_pin(adap, &status); + if (timeout) { + i2c_stop(adap); + printk(KERN_INFO "i2c-algo-8245.o: i2c_write: " + "i2c_inb timed out.\n"); + return -EREMOTEIO; + } + } + return i; +} + + +static int m8245_readbytes(struct i2c_adapter *i2c_adap, char *buf, int count) +{ + int rdcount = 0, status, timeout; + struct i2c_algo_8245_data *adap = i2c_adap->algo_data; + volatile i2c_8245_t *i2c = adap->i2c; + + m8245_iic_write(&i2c->i2ccr, M8245_I2CCR_MEN | M8245_I2CCR_MSTA | ((count == 1) ? M8245_I2CCR_TXAK : 0), 0); + + /* dummy read */ + m8245_iic_read(&i2c->i2cdr); + + for (rdcount = 0; rdcount < count; rdcount++) { + timeout = wait_for_pin(adap, &status); + if (timeout) { + i2c_stop(adap); + printk(KERN_INFO "i2c-algo-8245.o: i2c_read: " + "i2c_inb timed out.\n"); + return -EREMOTEIO; + } + + /* Generate ack on last next to last byte */ + if (rdcount == count - 2) + m8245_iic_write(&i2c->i2ccr, M8245_I2CCR_MEN | M8245_I2CCR_MSTA | M8245_I2CCR_TXAK, 0); + + /* Generate stop on last byte */ + if (rdcount == count - 1) + m8245_iic_write(&i2c->i2ccr, M8245_I2CCR_MEN | M8245_I2CCR_TXAK, 0); + + buf[rdcount] = m8245_iic_read(&i2c->i2cdr); + } + + return rdcount; +} + + +static inline void m8245_doAddress(struct i2c_algo_8245_data *adap, + struct i2c_msg *msg, int retries) +{ + volatile i2c_8245_t *i2c = (i2c_8245_t *)adap->i2c; + unsigned short flags = msg->flags; + unsigned char addr; + + addr = ( msg->addr << 1 ); + if (flags & I2C_M_RD ) { + addr |= 1; + } + if (flags & I2C_M_REV_DIR_ADDR ) { + addr ^= 1; + } + + m8245_iic_write(&i2c->i2ccr, M8245_I2CCR_MTX, M8245_I2CCR_MTX); + m8245_iic_write(&i2c->i2cdr, addr, 0); +} + +static int m8245_xfer(struct i2c_adapter *i2c_adap, + struct i2c_msg msgs[], + int num) +{ + struct i2c_algo_8245_data * adap = i2c_adap->algo_data; + struct i2c_msg * pmsg; + int i, ret; + int timeout, status; + + for (i = 0; i < num; i++) { + pmsg = &msgs[i]; + + DEB3(printk(KERN_DEBUG "i2c-algo-8245.o: Msg %d, addr=0x%x, flags=0x%x, " + "len=%d\n", + i, msgs[i].addr, msgs[i].flags, msgs[i].len);) + + /* Check for bus busy. + */ + timeout = wait_for_bb(adap); + if (timeout) { + DEB2(printk(KERN_DEBUG "i2c-algo-8245.o: " + "Timeout waiting for BB in m8245_xfer\n");) + ret = -EIO; + goto Done; + } + + i2c_start(adap); + + m8245_doAddress(adap, pmsg, i2c_adap->retries); + + timeout = wait_for_pin(adap, &status); + if (timeout) { + i2c_stop(adap); + DEB2(printk(KERN_DEBUG "i2c-algo-8245.o: Timeout waiting " + "for PIN(1) in m8245_xfer\n");) + ret = EREMOTEIO; + goto Done; + } + +#ifndef STUB_I2C + if (status & M8245_I2CSR_RXAK) { + i2c_stop(adap); + DEB2(printk(KERN_DEBUG "i2c-algo-8245.o: " + "No RXAK in m8245_xfer\n");) + ret = -EREMOTEIO; + goto Done; + } +#endif + + if (pmsg->flags & I2C_M_RD) { + ret = m8245_readbytes(i2c_adap, pmsg->buf, pmsg->len); + + if (ret != pmsg->len) { + DEB2(printk(KERN_DEBUG "i2c-algo-8245.o: fail: " + "only read %d bytes.\n", ret)); + ret = (ret < 0) ? ret : -EREMOTEIO; + goto Done; + } else { + DEB2(printk(KERN_DEBUG "i2c-algo-8245.o: read %d bytes.\n", + ret)); + } + } else { + ret = m8245_sendbytes(i2c_adap, pmsg->buf, pmsg->len); + + if (ret != pmsg->len) { + DEB2(printk(KERN_DEBUG "i2c-algo-8245.o: fail: " + "only wrote %d bytes.\n", ret)); + ret = (ret < 0) ? ret : -EREMOTEIO; + goto Done; + } else { + DEB2(printk(KERN_DEBUG "i2c-algo-8245.o: wrote %d " + "bytes.\n", ret)); + } + } + + i2c_stop(adap); + } + ret = num; +Done: + return ret; +} + +static int algo_control(struct i2c_adapter *adapter, + unsigned int cmd, unsigned long arg) +{ + return 0; +} + +static u32 m8245_func(struct i2c_adapter *adap) +{ + return I2C_FUNC_SMBUS_EMUL; +} + +#ifndef I2C_ALGO_MPC8245 +#define I2C_ALGO_MPC8245 0x0d0000 +#endif + + +/* -----exported algorithm data: ------------------------------------- */ + +static struct i2c_algorithm m8245_algo = { + "MPC8245 algorithm", + I2C_ALGO_MPC8245, + m8245_xfer, + NULL, + NULL, /* slave_xmit */ + NULL, /* slave_recv */ + algo_control, /* ioctl */ + m8245_func, /* functionality */ +}; + +/* + * registering functions to load algorithms at runtime + */ +int i2c_8245_add_bus(struct i2c_adapter *adap) +{ + int i; + struct i2c_algo_8245_data *m8245_adap = adap->algo_data; + + DEB2(printk(KERN_DEBUG "i2c-algo-8245.o: hw routines for %s registered.\n", + adap->name)); + + adap->id |= m8245_algo.id; + adap->algo = &m8245_algo; + + adap->timeout = 100; + adap->retries = 3; + +#ifdef MODULE + MOD_INC_USE_COUNT; +#endif + + i2c_add_adapter(adap); + m8245_iic_init(m8245_adap); + + if (m8245_scan) { + printk(KERN_INFO " i2c-algo-8245.o: scanning bus %s.\n", + adap->name); + for (i = 0x00; i < 0xff; i+=2) { + try_address(m8245_adap, i, 1); + udelay(500); + } + printk("\n"); + } + return 0; +} + + +int i2c_8245_del_bus(struct i2c_adapter *adap) +{ + int res; + if ((res = i2c_del_adapter(adap)) < 0) + return res; + DEB2(printk(KERN_DEBUG "i2c-algo-8245.o: adapter unregistered: %s\n",adap->name)); + +#ifdef MODULE + MOD_DEC_USE_COUNT; +#endif + return 0; +} + +int __init i2c_algo_8245_init (void) +{ + printk(KERN_INFO "i2c-algo-8245.o: i2c MPC8245 algorithm module\n"); + return 0; +} + + +EXPORT_SYMBOL(i2c_8245_add_bus); +EXPORT_SYMBOL(i2c_8245_del_bus); + +#ifdef MODULE +MODULE_AUTHOR("Wolfgang Denk "); +MODULE_DESCRIPTION("I2C-Bus MPC8245 algorithm"); + +MODULE_PARM(m8245_scan, "i"); +MODULE_PARM(i2c_debug,"i"); + +MODULE_PARM_DESC(m8245_scan, "Scan for active chips on the bus"); +MODULE_PARM_DESC(i2c_debug, + "debug level - 0 off; 1 normal; 2,3 more verbose; 9 m8245-protocol"); + + +int init_module(void) +{ + return i2c_algo_8245_init(); +} + +void cleanup_module(void) +{ +} +#endif diff -Nur linux-2.4.36.2.org/drivers/i2c/i2c-core.c linux-2.4.36.2/drivers/i2c/i2c-core.c --- linux-2.4.36.2.org/drivers/i2c/i2c-core.c 2008-02-25 05:38:03.000000000 +0900 +++ linux-2.4.36.2/drivers/i2c/i2c-core.c 2008-04-19 22:47:01.000000000 +0900 @@ -1243,6 +1243,9 @@ #ifdef CONFIG_I2C_ALGOBIT extern int i2c_algo_bit_init(void); #endif +#ifdef CONFIG_I2C_ALGO_8245 + extern int i2c_algo_8245_init(void); +#endif #ifdef CONFIG_I2C_PHILIPSPAR extern int i2c_bitlp_init(void); #endif @@ -1277,6 +1280,9 @@ #ifdef CONFIG_I2C_MAX1617 extern int i2c_max1617_init(void); #endif +#ifdef CONFIG_I2C_MPC8245 + extern int i2c_mpc8245_init(void); +#endif #ifdef CONFIG_I2C_PROC extern int sensors_init(void); @@ -1297,6 +1303,9 @@ #ifdef CONFIG_I2C_ALGOBIT i2c_algo_bit_init(); #endif +#ifdef CONFIG_I2C_ALGO_8245 + i2c_algo_8245_init(); +#endif #ifdef CONFIG_I2C_PHILIPSPAR i2c_bitlp_init(); #endif @@ -1331,6 +1340,9 @@ #ifdef CONFIG_I2C_MAX1617 i2c_max1617_init(); #endif +#ifdef CONFIG_I2C_MPC8245 + i2c_mpc8245_init(); +#endif /* -------------- proc interface ---- */ #ifdef CONFIG_I2C_PROC diff -Nur linux-2.4.36.2.org/drivers/i2c/i2c-mpc8245.c linux-2.4.36.2/drivers/i2c/i2c-mpc8245.c --- linux-2.4.36.2.org/drivers/i2c/i2c-mpc8245.c 1970-01-01 09:00:00.000000000 +0900 +++ linux-2.4.36.2/drivers/i2c/i2c-mpc8245.c 2008-04-19 22:47:01.000000000 +0900 @@ -0,0 +1,122 @@ +/*********************************************************************** + * + * (C) Copyright 2005 + * DENX Software Engineering + * Wolfgang Denk, wd@denx.de + * All rights reserved. + ***********************************************************************/ + +/* ------------------------------------------------------------------------- */ +/* i2c-mpc8245.c I2C Interface driver module for the mpc8245 board */ +/* ------------------------------------------------------------------------- */ +/* + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +/* ------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + + +static int mpc8245_i2c_reg(struct i2c_client *client) +{ + return 0; +} + + +static int mpc8245_i2c_unreg(struct i2c_client *client) +{ + return 0; +} + +static void mpc8245_i2c_inc_use(struct i2c_adapter *adap) +{ +#ifdef MODULE + MOD_INC_USE_COUNT; +#endif +} + +static void mpc8245_i2c_dec_use(struct i2c_adapter *adap) +{ +#ifdef MODULE + MOD_DEC_USE_COUNT; +#endif +} + + +static struct i2c_algo_8245_data mpc8245_i2c_data = { + NULL +}; + +#ifndef I2C_HW_MPC8245 +#define I2C_HW_MPC8245 0x00 +#endif + +static struct i2c_adapter mpc8245_i2c_ops = { + "mpc8245 I2C Interface", + I2C_HW_MPC8245, + NULL, + &mpc8245_i2c_data, + mpc8245_i2c_inc_use, + mpc8245_i2c_dec_use, + mpc8245_i2c_reg, + mpc8245_i2c_unreg, +}; + +int __init i2c_mpc8245_init(void) +{ + int res = -ENODEV; + + printk(KERN_INFO "i2c-mpc8245.o: i2c mpc8245 module\n"); + + mpc8245_i2c_data.i2c = ioremap(0x80000000 + M8245_I2C_OFFSET, M8245_I2C_SIZE); + if (i2c_8245_add_bus(&mpc8245_i2c_ops) < 0) { + goto Done; + } + + printk(KERN_INFO "i2c-mpc8245.o: found device at 0x%08x.\n", + (unsigned int)mpc8245_i2c_data.i2c); + + res = 0; +Done: + return res; +} + +EXPORT_NO_SYMBOLS; + +#ifdef MODULE +MODULE_AUTHOR("Wolfgang Denk "); +MODULE_DESCRIPTION("I2C-Bus driver routines for the mpc8245 board"); + +int init_module(void) +{ + return i2c_mpc8245_init(); +} + +void cleanup_module(void) +{ + i2c_8245_del_bus(&mpc8245_i2c_ops); +} + +#endif diff -Nur linux-2.4.36.2.org/drivers/ide/pci/siimage.c linux-2.4.36.2/drivers/ide/pci/siimage.c --- linux-2.4.36.2.org/drivers/ide/pci/siimage.c 2008-02-25 05:38:03.000000000 +0900 +++ linux-2.4.36.2/drivers/ide/pci/siimage.c 2008-04-19 22:47:01.000000000 +0900 @@ -904,11 +904,15 @@ pci_write_config_byte(dev, PCI_CACHE_LINE_SIZE, (class_rev) ? 1 : 255); pci_read_config_byte(dev, 0x8A, &BA5_EN); +#ifndef CONFIG_LINKSTATION if ((BA5_EN & 0x01) || (pci_resource_start(dev, 5))) { if (setup_mmio_siimage(dev, name)) { return 0; } } +#else + printk(KERN_WARNING "siimage: IDE controller MMIO ports not available.\n"); +#endif pci_write_config_byte(dev, 0x80, 0x00); pci_write_config_byte(dev, 0x84, 0x00); diff -Nur linux-2.4.36.2.org/drivers/mtd/maps/physmap.c linux-2.4.36.2/drivers/mtd/maps/physmap.c --- linux-2.4.36.2.org/drivers/mtd/maps/physmap.c 2008-02-25 05:38:03.000000000 +0900 +++ linux-2.4.36.2/drivers/mtd/maps/physmap.c 2008-04-19 22:47:01.000000000 +0900 @@ -86,24 +86,24 @@ #else static struct mtd_partition physmap_partitions[] = { /* Put your own partition definitions here */ -#if 0 +#if 01 { - name: "bootROM", - size: 0x80000, + name: "kernel_initrd", + size: 0x300000, offset: 0, - mask_flags: MTD_WRITEABLE, /* force read-only */ +// mask_flags: MTD_WRITEABLE, /* force read-only */ }, { - name: "zImage", - size: 0x100000, + name: "bootloader", + size: 0x70000, offset: MTDPART_OFS_APPEND, mask_flags: MTD_WRITEABLE, /* force read-only */ }, { - name: "ramdisk.gz", - size: 0x300000, + name: "bootflg", + size: 0x10000, offset: MTDPART_OFS_APPEND, - mask_flags: MTD_WRITEABLE, /* force read-only */ +// mask_flags: MTD_WRITEABLE, /* force read-only */ }, { - name: "User FS", + name: "config", size: MTDPART_SIZ_FULL, offset: MTDPART_OFS_APPEND, } @@ -136,7 +136,7 @@ if (mymtd) { mymtd->module = THIS_MODULE; - add_mtd_device(mymtd); +// add_mtd_device(mymtd); #ifdef CONFIG_MTD_PARTITIONS #ifdef CONFIG_MTD_CMDLINE_PARTS mtd_parts_nb = parse_cmdline_partitions(mymtd, &mtd_parts, diff -Nur linux-2.4.36.2.org/drivers/net/r8169.c linux-2.4.36.2/drivers/net/r8169.c --- linux-2.4.36.2.org/drivers/net/r8169.c 2008-02-25 05:38:03.000000000 +0900 +++ linux-2.4.36.2/drivers/net/r8169.c 2008-04-19 22:47:01.000000000 +0900 @@ -1,77 +1,107 @@ /* ========================================================================= - r8169.c: A RealTek RTL-8169 Gigabit Ethernet driver for Linux kernel 2.4.x. + r8169.c: A RealTek RTL8169s/8110s Gigabit Ethernet driver for Linux kernel 2.4.x. -------------------------------------------------------------------- History: Feb 4 2002 - created initially by ShuChen . May 20 2002 - Add link status force-mode and TBI mode support. ========================================================================= - 1. The media can be forced in 5 modes. - Command: 'insmod r8169 media = SET_MEDIA' - Ex: 'insmod r8169 media = 0x04' will force PHY to operate in 100Mpbs Half-duplex. - - SET_MEDIA can be: - _10_Half = 0x01 - _10_Full = 0x02 - _100_Half = 0x04 - _100_Full = 0x08 - _1000_Full = 0x10 - - 2. Support TBI mode. -========================================================================= -VERSION 1.1 <2002/10/4> + +RTL8169_VERSION "1.1" <2002/10/4> The bit4:0 of MII register 4 is called "selector field", and have to be 00001b to indicate support of IEEE std 802.3 during NWay process of - exchanging Link Code Word (FLP). - -VERSION 1.2 <2002/11/30> + exchanging Link Code Word (FLP). - - Large style cleanup - - Use ether_crc in stock kernel (linux/crc32.h) - - Copy mc_filter setup code from 8139cp - (includes an optimization, and avoids set_bit use) - - <2003/11/30> - - - Add new rtl8169_{suspend/resume}() support +RTL8169_VERSION "1.2" <2003/6/17> + Update driver module name. + Modify ISR. + Add chip mcfg. + +RTL8169_VERSION "1.3" <2003/6/20> + Add chip pcfg. + Add priv->phy_timer_t, rtl8169_phy_timer_t_handler() + Add rtl8169_hw_PHY_config() + Add rtl8169_hw_PHY_reset() + +RTL8169_VERSION "1.4" <2003/7/14> + Add tx_bytes, rx_bytes. + +RTL8169_VERSION "1.5" <2003/7/18> + Set 0x0000 to PHY at offset 0x0b. + Modify chip mcfg, pcfg + Force media for multiple card. +RTL8169_VERSION "1.6" <2003/8/25> + Modify receive data buffer. + +RTL8169_VERSION "1.7" <2003/9/18> + Add Jumbo Frame support. + +RTL8169_VERSION "1.8" <2003/10/21> + Performance and CPU Utilizaion Enhancement. + +RTL8169_VERSION "1.9" <2003/12/29> + Enable Tx/Rx flow control. + +RTL8169_VERSION "2.0" <2004/03/26> + Beta version. + Support for linux 2.6.x + +RTL8169_VERSION "2.1" <2004/07/05> + Modify parameters. + +RTL8169_VERSION "2.2" <2004/08/09> + Add.pci_dma_sync_single. + Add pci_alloc_consistent()/pci_free_consistent(). + Revise parameters. + Recognize our interrupt for linux 2.6.x. */ + #include #include #include #include #include -#include -#include -#include +#include -#include +#include +#include -#define DMA_64BIT_MASK 0xffffffffffffffffULL -#define DMA_32BIT_MASK 0x00000000ffffffffULL +#ifdef CONFIG_LINKSTATION +#include +#endif -#define RTL8169_VERSION "1.2" -#define MODULENAME "r8169" +#define RTL8169_VERSION "2.3" +#define MODULENAME "RTL8169s/8110s" #define RTL8169_DRIVER_NAME MODULENAME " Gigabit Ethernet driver " RTL8169_VERSION #define PFX MODULENAME ": " + +#undef RTL8169_DEBUG +#undef RTL8169_JUMBO_FRAME_SUPPORT +#undef RTL8169_HW_FLOW_CONTROL_SUPPORT + + +#undef RTL8169_IOCTL_SUPPORT +#undef RTL8169_DYNAMIC_CONTROL +#define RTL8169_USE_IO + + #ifdef RTL8169_DEBUG -#define assert(expr) \ - if(!(expr)) { \ - printk( "Assertion failed! %s,%s,%s,line=%d\n", \ - #expr,__FILE__,__FUNCTION__,__LINE__); \ - } -#define dprintk(fmt, args...) do { printk(PFX fmt, ## args) } while (0) + #define assert(expr) \ + if(!(expr)) { printk( "Assertion failed! %s,%s,%s,line=%d\n", #expr,__FILE__,__FUNCTION__,__LINE__); } + #define DBG_PRINT( fmt, args...) printk("r8169: " fmt, ## args); #else -#define assert(expr) do {} while (0) -#define dprintk(fmt, args...) do {} while (0) -#endif /* RTL8169_DEBUG */ + #define assert(expr) do {} while (0) + #define DBG_PRINT( fmt, args...) ; +#endif // end of #ifdef RTL8169_DEBUG + /* media options */ #define MAX_UNITS 8 -static int media[MAX_UNITS] = { -1, -1, -1, -1, -1, -1, -1, -1 }; +static int media[MAX_UNITS] = {-1, -1, -1, -1, -1, -1, -1, -1}; /* Maximum events (Rx packets, etc.) to handle at each interrupt. */ static int max_interrupt_work = 20; @@ -81,148 +111,158 @@ static int multicast_filter_limit = 32; /* MAC address length*/ -#define MAC_ADDR_LEN 6 +#define MAC_ADDR_LEN 6 -/* max supported gigabit ethernet frame size -- must be at least (dev->mtu+14+4).*/ -#define MAX_ETH_FRAME_SIZE 1536 +#define RX_FIFO_THRESH 7 /* 7 means NO threshold, Rx buffer level before first PCI xfer. */ +#define RX_DMA_BURST 7 /* Maximum PCI burst, '6' is 1024 */ +#define TX_DMA_BURST 7 /* Maximum PCI burst, '6' is 1024 */ +#define ETTh 0x3F /* 0x3F means NO threshold */ -#define TX_FIFO_THRESH 256 /* In bytes */ +#define ETH_HDR_LEN 14 +#define DEFAULT_MTU 1500 +#define DEFAULT_RX_BUF_LEN 1536 -#define RX_FIFO_THRESH 7 /* 7 means NO threshold, Rx buffer level before first PCI xfer. */ -#define RX_DMA_BURST 6 /* Maximum PCI burst, '6' is 1024 */ -#define TX_DMA_BURST 6 /* Maximum PCI burst, '6' is 1024 */ -#define EarlyTxThld 0x3F /* 0x3F means NO early transmit */ -#define RxPacketMaxSize 0x0800 /* Maximum size supported is 16K-1 */ -#define InterFrameGap 0x03 /* 3 means InterFrameGap = the shortest one */ - -#define NUM_TX_DESC 64 /* Number of Tx descriptor registers */ -#define NUM_RX_DESC 64 /* Number of Rx descriptor registers */ -#define RX_BUF_SIZE 1536 /* Rx Buffer size */ -#define R8169_TX_RING_BYTES (NUM_TX_DESC * sizeof(struct TxDesc)) -#define R8169_RX_RING_BYTES (NUM_RX_DESC * sizeof(struct RxDesc)) - -#define RTL_MIN_IO_SIZE 0x80 -#define RTL8169_TX_TIMEOUT (6*HZ) -#define RTL8169_PHY_TIMEOUT (HZ) +#ifdef RTL8169_JUMBO_FRAME_SUPPORT +#define MAX_JUMBO_FRAME_MTU ( 10000 ) +#define MAX_RX_SKBDATA_SIZE ( MAX_JUMBO_FRAME_MTU + ETH_HDR_LEN ) +#else +#define MAX_RX_SKBDATA_SIZE 1600 +#endif //end #ifdef RTL8169_JUMBO_FRAME_SUPPORT + + +#define InterFrameGap 0x03 /* 3 means InterFrameGap = the shortest one */ + +//#define NUM_TX_DESC 64 /* Number of Tx descriptor registers*/ +//#define NUM_RX_DESC 64 /* Number of Rx descriptor registers*/ +#define NUM_TX_DESC 1024 /* Number of Tx descriptor registers*/ +#define NUM_RX_DESC 1024 /* Number of Rx descriptor registers*/ + +#define RTL_MIN_IO_SIZE 0x80 +#define TX_TIMEOUT (6*HZ) +#define RTL8169_TIMER_EXPIRE_TIME 100 //100 + + +#ifdef RTL8169_USE_IO +#define RTL_W8(reg, val8) outb ((val8), ioaddr + (reg)) +#define RTL_W16(reg, val16) outw ((val16), ioaddr + (reg)) +#define RTL_W32(reg, val32) outl ((val32), ioaddr + (reg)) +#define RTL_R8(reg) inb (ioaddr + (reg)) +#define RTL_R16(reg) inw (ioaddr + (reg)) +#define RTL_R32(reg) ((unsigned long) inl (ioaddr + (reg))) +#else /* write/read MMIO register */ -#define RTL_W8(reg, val8) writeb ((val8), ioaddr + (reg)) -#define RTL_W16(reg, val16) writew ((val16), ioaddr + (reg)) -#define RTL_W32(reg, val32) writel ((val32), ioaddr + (reg)) -#define RTL_R8(reg) readb (ioaddr + (reg)) -#define RTL_R16(reg) readw (ioaddr + (reg)) -#define RTL_R32(reg) ((unsigned long) readl (ioaddr + (reg))) - -enum mac_version { - RTL_GIGA_MAC_VER_B = 0x00, - /* RTL_GIGA_MAC_VER_C = 0x03, */ - RTL_GIGA_MAC_VER_D = 0x01, - RTL_GIGA_MAC_VER_E = 0x02 -}; +#define RTL_W8(reg, val8) writeb ((val8), ioaddr + (reg)) +#define RTL_W16(reg, val16) writew ((val16), ioaddr + (reg)) +#define RTL_W32(reg, val32) writel ((val32), ioaddr + (reg)) +#define RTL_R8(reg) readb (ioaddr + (reg)) +#define RTL_R16(reg) readw (ioaddr + (reg)) +#define RTL_R32(reg) ((unsigned long) readl (ioaddr + (reg))) +#endif + +#define MCFG_METHOD_1 0x01 +#define MCFG_METHOD_2 0x02 +#define MCFG_METHOD_3 0x03 +#define MCFG_METHOD_4 0x04 + +#define PCFG_METHOD_1 0x01 //PHY Reg 0x03 bit0-3 == 0x0000 +#define PCFG_METHOD_2 0x02 //PHY Reg 0x03 bit0-3 == 0x0001 +#define PCFG_METHOD_3 0x03 //PHY Reg 0x03 bit0-3 == 0x0002 -enum phy_version { - RTL_GIGA_PHY_VER_C = 0x03, /* PHY Reg 0x03 bit0-3 == 0x0000 */ - RTL_GIGA_PHY_VER_D = 0x04, /* PHY Reg 0x03 bit0-3 == 0x0000 */ - RTL_GIGA_PHY_VER_E = 0x05, /* PHY Reg 0x03 bit0-3 == 0x0000 */ - RTL_GIGA_PHY_VER_F = 0x06, /* PHY Reg 0x03 bit0-3 == 0x0001 */ - RTL_GIGA_PHY_VER_G = 0x07, /* PHY Reg 0x03 bit0-3 == 0x0002 */ -}; +#ifdef RTL8169_DYNAMIC_CONTROL +#include "r8169_callback.h" +#endif //end #ifdef RTL8169_DYNAMIC_CONTROL -#define _R(NAME,MAC,MASK) \ - { .name = NAME, .mac_version = MAC, .RxConfigMask = MASK } const static struct { const char *name; - u8 mac_version; - u32 RxConfigMask; /* Clears the bits supported by this chip */ + u8 mcfg; /* depend on RTL8169 docs */ + u32 RxConfigMask; /* should clear the bits supported by this chip */ } rtl_chip_info[] = { - _R("RTL8169", RTL_GIGA_MAC_VER_B, 0xff7e1880), - _R("RTL8169s/8110s", RTL_GIGA_MAC_VER_D, 0xff7e1880), - _R("RTL8169s/8110s", RTL_GIGA_MAC_VER_E, 0xff7e1880) + { "RTL8169", MCFG_METHOD_1, 0xff7e1880 }, + { "RTL8169s/8110s", MCFG_METHOD_2, 0xff7e1880 }, + { "RTL8169s/8110s", MCFG_METHOD_3, 0xff7e1880 }, }; -#undef _R -static struct pci_device_id rtl8169_pci_tbl[] = { - {0x10ec, 0x8169, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, + +static struct pci_device_id rtl8169_pci_tbl[] __devinitdata = { + { 0x10ec, 0x8169, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, {0,}, }; -MODULE_DEVICE_TABLE(pci, rtl8169_pci_tbl); -static int rx_copybreak = 200; +MODULE_DEVICE_TABLE (pci, rtl8169_pci_tbl); + enum RTL8169_registers { - MAC0 = 0, /* Ethernet hardware address. */ - MAR0 = 8, /* Multicast filter. */ - TxDescStartAddrLow = 0x20, - TxDescStartAddrHigh = 0x24, - TxHDescStartAddrLow = 0x28, - TxHDescStartAddrHigh = 0x2c, - FLASH = 0x30, - ERSR = 0x36, - ChipCmd = 0x37, - TxPoll = 0x38, + MAC0 = 0x0, + MAR0 = 0x8, + TxDescStartAddr = 0x20, + TxHDescStartAddr= 0x28, + FLASH = 0x30, + ERSR = 0x36, + ChipCmd = 0x37, + TxPoll = 0x38, IntrMask = 0x3C, IntrStatus = 0x3E, TxConfig = 0x40, RxConfig = 0x44, RxMissed = 0x4C, Cfg9346 = 0x50, - Config0 = 0x51, - Config1 = 0x52, - Config2 = 0x53, - Config3 = 0x54, - Config4 = 0x55, - Config5 = 0x56, + Config0 = 0x51, + Config1 = 0x52, + Config2 = 0x53, + Config3 = 0x54, + Config4 = 0x55, + Config5 = 0x56, MultiIntr = 0x5C, - PHYAR = 0x60, - TBICSR = 0x64, + PHYAR = 0x60, + TBICSR = 0x64, TBI_ANAR = 0x68, TBI_LPAR = 0x6A, PHYstatus = 0x6C, RxMaxSize = 0xDA, CPlusCmd = 0xE0, - RxDescAddrLow = 0xE4, - RxDescAddrHigh = 0xE8, - EarlyTxThres = 0xEC, - FuncEvent = 0xF0, - FuncEventMask = 0xF4, - FuncPresetState = 0xF8, - FuncForceEvent = 0xFC, + RxDescStartAddr = 0xE4, + ETThReg = 0xEC, + FuncEvent = 0xF0, + FuncEventMask = 0xF4, + FuncPresetState = 0xF8, + FuncForceEvent = 0xFC, }; enum RTL8169_register_content { - /*InterruptStatusBits */ - SYSErr = 0x8000, - PCSTimeout = 0x4000, - SWInt = 0x0100, - TxDescUnavail = 0x80, - RxFIFOOver = 0x40, - RxUnderrun = 0x20, - RxOverflow = 0x10, - TxErr = 0x08, - TxOK = 0x04, - RxErr = 0x02, - RxOK = 0x01, + /*InterruptStatusBits*/ + SYSErr = 0x8000, + PCSTimeout = 0x4000, + SWInt = 0x0100, + TxDescUnavail = 0x80, + RxFIFOOver = 0x40, + LinkChg = 0x20, + RxOverflow = 0x10, + TxErr = 0x08, + TxOK = 0x04, + RxErr = 0x02, + RxOK = 0x01, - /*RxStatusDesc */ + /*RxStatusDesc*/ RxRES = 0x00200000, RxCRC = 0x00080000, - RxRUNT = 0x00100000, + RxRUNT= 0x00100000, RxRWT = 0x00400000, - /*ChipCmdBits */ + /*ChipCmdBits*/ CmdReset = 0x10, CmdRxEnb = 0x08, CmdTxEnb = 0x04, RxBufEmpty = 0x01, - /*Cfg9346Bits */ + /*Cfg9346Bits*/ Cfg9346_Lock = 0x00, Cfg9346_Unlock = 0xC0, - /*rx_mode_bits */ + /*rx_mode_bits*/ AcceptErr = 0x20, AcceptRunt = 0x10, AcceptBroadcast = 0x08, @@ -230,1487 +270,1745 @@ AcceptMyPhys = 0x02, AcceptAllPhys = 0x01, - /*RxConfigBits */ + /*RxConfigBits*/ RxCfgFIFOShift = 13, RxCfgDMAShift = 8, - /*TxConfigBits */ + /*TxConfigBits*/ TxInterFrameGapShift = 24, - TxDMAShift = 8, /* DMA burst value (0-7) is shift this many bits */ + TxDMAShift = 8, - /* CPlusCmd p.31 */ - RxVlan = (1 << 6), - RxChkSum = (1 << 5), - PCIDAC = (1 << 4), - PCIMulRW = (1 << 3), - - /*rtl8169_PHYstatus */ - TBI_Enable = 0x80, - TxFlowCtrl = 0x40, - RxFlowCtrl = 0x20, - _1000bpsF = 0x10, - _100bps = 0x08, - _10bps = 0x04, - LinkStatus = 0x02, - FullDup = 0x01, + /*rtl8169_PHYstatus*/ + TBI_Enable = 0x80, + TxFlowCtrl = 0x40, + RxFlowCtrl = 0x20, + _1000bpsF = 0x10, + _100bps = 0x08, + _10bps = 0x04, + LinkStatus = 0x02, + FullDup = 0x01, - /*GIGABIT_PHY_registers */ + /*GIGABIT_PHY_registers*/ PHY_CTRL_REG = 0, PHY_STAT_REG = 1, PHY_AUTO_NEGO_REG = 4, PHY_1000_CTRL_REG = 9, - /*GIGABIT_PHY_REG_BIT */ - PHY_Restart_Auto_Nego = 0x0200, - PHY_Enable_Auto_Nego = 0x1000, + /*GIGABIT_PHY_REG_BIT*/ + PHY_Restart_Auto_Nego = 0x0200, + PHY_Enable_Auto_Nego = 0x1000, //PHY_STAT_REG = 1; - PHY_Auto_Neco_Comp = 0x0020, + PHY_Auto_Neco_Comp = 0x0020, //PHY_AUTO_NEGO_REG = 4; - PHY_Cap_10_Half = 0x0020, - PHY_Cap_10_Full = 0x0040, - PHY_Cap_100_Half = 0x0080, - PHY_Cap_100_Full = 0x0100, + PHY_Cap_10_Half = 0x0020, + PHY_Cap_10_Full = 0x0040, + PHY_Cap_100_Half = 0x0080, + PHY_Cap_100_Full = 0x0100, //PHY_1000_CTRL_REG = 9; - PHY_Cap_1000_Full = 0x0200, + PHY_Cap_1000_Full = 0x0200, + PHY_Cap_1000_Half = 0x0100, + + PHY_Cap_PAUSE = 0x0400, + PHY_Cap_ASYM_PAUSE = 0x0800, - PHY_Cap_Null = 0x0, + PHY_Cap_Null = 0x0, /*_MediaType*/ - _10_Half = 0x01, - _10_Full = 0x02, - _100_Half = 0x04, - _100_Full = 0x08, - _1000_Full = 0x10, + _10_Half = 0x01, + _10_Full = 0x02, + _100_Half = 0x04, + _100_Full = 0x08, + _1000_Full = 0x10, /*_TBICSRBit*/ - TBILinkOK = 0x02000000, + TBILinkOK = 0x02000000, }; + + enum _DescStatusBit { - OWNbit = 0x80000000, - EORbit = 0x40000000, - FSbit = 0x20000000, - LSbit = 0x10000000, + OWNbit = 0x80000000, + EORbit = 0x40000000, + FSbit = 0x20000000, + LSbit = 0x10000000, }; -#define RsvdMask 0x3fffc000 struct TxDesc { - u32 status; - u32 vlan_tag; - u64 addr; + u32 status; + u32 vlan_tag; + u32 buf_addr; + u32 buf_Haddr; }; struct RxDesc { - u32 status; - u32 vlan_tag; - u64 addr; + u32 status; + u32 vlan_tag; + u32 buf_addr; + u32 buf_Haddr; }; + +typedef struct timer_list rt_timer_t; + + struct rtl8169_private { - void *mmio_addr; /* memory map physical address */ - struct pci_dev *pci_dev; /* Index of PCI device */ - struct net_device_stats stats; /* statistics of net device */ - spinlock_t lock; /* spin lock flag */ + unsigned long ioaddr; /* memory map physical address*/ + struct pci_dev *pci_dev; /* Index of PCI device */ + struct net_device_stats stats; /* statistics of net device */ + spinlock_t lock; /* spin lock flag */ int chipset; - int mac_version; - int phy_version; - u32 cur_rx; /* Index into the Rx descriptor buffer of next Rx pkt. */ - u32 cur_tx; /* Index into the Tx descriptor buffer of next Rx pkt. */ - u32 dirty_rx; - u32 dirty_tx; - struct TxDesc *TxDescArray; /* Index of 256-alignment Tx Descriptor buffer */ - struct RxDesc *RxDescArray; /* Index of 256-alignment Rx Descriptor buffer */ - dma_addr_t TxPhyAddr; - dma_addr_t RxPhyAddr; - struct sk_buff *Rx_skbuff[NUM_RX_DESC]; /* Rx data buffers */ - struct sk_buff *Tx_skbuff[NUM_TX_DESC]; /* Index of Transmit data buffer */ - struct timer_list timer; + int mcfg; + int pcfg; + rt_timer_t r8169_timer; + unsigned long expire_time; + unsigned long phy_link_down_cnt; - u16 cp_cmd; + unsigned long cur_rx; /* Index into the Rx descriptor buffer of next Rx pkt. */ + unsigned long cur_tx; /* Index into the Tx descriptor buffer of next Rx pkt. */ + unsigned long dirty_tx; + struct TxDesc *TxDescArray; /* Index of 256-alignment Tx Descriptor buffer */ + struct RxDesc *RxDescArray; /* Index of 256-alignment Rx Descriptor buffer */ + struct sk_buff *Tx_skbuff[NUM_TX_DESC];/* Index of Transmit data buffer */ + struct sk_buff *Rx_skbuff[NUM_RX_DESC];/* Receive data buffer */ + unsigned char drvinit_fail; + + dma_addr_t txdesc_array_dma_addr[NUM_TX_DESC]; + dma_addr_t rxdesc_array_dma_addr[NUM_RX_DESC]; + dma_addr_t rx_skbuff_dma_addr[NUM_RX_DESC]; + + void *txdesc_space; + dma_addr_t txdesc_phy_dma_addr; + int sizeof_txdesc