From 281243b4f1edc7bf5eafa1ccc375b72ac617b944 Mon Sep 17 00:00:00 2001 From: Rod Whitby Date: Sat, 12 Nov 2005 07:55:34 +0000 Subject: nas100d-kernel: more updates to i2c and ide and defconfig from azummo --- .../nas100d-kernel/2.6.14/60-nas100d-i2c.patch | 61 ++++++++++++ .../nas100d-kernel/2.6.14/60-nas100d-ide.patch | 108 +++++++++++++-------- packages/linux/nas100d-kernel/2.6.14/defconfig | 25 ++--- packages/linux/nas100d-kernel/2.6.14/nas100d.h | 4 +- 4 files changed, 143 insertions(+), 55 deletions(-) create mode 100644 packages/linux/nas100d-kernel/2.6.14/60-nas100d-i2c.patch (limited to 'packages/linux/nas100d-kernel') diff --git a/packages/linux/nas100d-kernel/2.6.14/60-nas100d-i2c.patch b/packages/linux/nas100d-kernel/2.6.14/60-nas100d-i2c.patch new file mode 100644 index 0000000000..5f3e1327a4 --- /dev/null +++ b/packages/linux/nas100d-kernel/2.6.14/60-nas100d-i2c.patch @@ -0,0 +1,61 @@ + drivers/i2c/busses/i2c-ixp4xx.c | 23 +++++++++++++++++++++-- + 1 file changed, 21 insertions(+), 2 deletions(-) + +--- linux-nas100d.orig/drivers/i2c/busses/i2c-ixp4xx.c 2005-11-11 22:22:43.000000000 +0100 ++++ linux-nas100d/drivers/i2c/busses/i2c-ixp4xx.c 2005-11-13 13:53:41.000000000 +0100 +@@ -47,16 +47,26 @@ static inline int ixp4xx_sda_pin(void *d + + static void ixp4xx_bit_setscl(void *data, int val) + { ++#ifndef CONFIG_MACH_NAS100D + gpio_line_set(ixp4xx_scl_pin(data), 0); + gpio_line_config(ixp4xx_scl_pin(data), + val ? IXP4XX_GPIO_IN : IXP4XX_GPIO_OUT ); ++#else ++ gpio_line_config(ixp4xx_scl_pin(data), IXP4XX_GPIO_OUT); ++ gpio_line_set(ixp4xx_scl_pin(data), val ? 1 : 0); ++#endif + } + + static void ixp4xx_bit_setsda(void *data, int val) + { ++#ifndef CONFIG_MACH_NAS100D + gpio_line_set(ixp4xx_sda_pin(data), 0); + gpio_line_config(ixp4xx_sda_pin(data), + val ? IXP4XX_GPIO_IN : IXP4XX_GPIO_OUT ); ++#else ++ gpio_line_config(ixp4xx_sda_pin(data), IXP4XX_GPIO_OUT); ++ gpio_line_set(ixp4xx_sda_pin(data), val ? 1 : 0); ++#endif + } + + static int ixp4xx_bit_getscl(void *data) +@@ -127,17 +137,26 @@ static int ixp4xx_i2c_probe(struct devic + drv_data->algo_data.udelay = 10; + drv_data->algo_data.mdelay = 10; + drv_data->algo_data.timeout = 100; +- ++#ifdef CONFIG_MACH_NAS100D ++ drv_data->algo_data.udelay = 100; ++ drv_data->algo_data.mdelay = 100; ++#endif + drv_data->adapter.id = I2C_HW_B_IXP4XX; + drv_data->adapter.algo_data = &drv_data->algo_data; + + drv_data->adapter.dev.parent = &plat_dev->dev; + ++#ifdef CONFIG_MACH_NAS100D ++ gpio_line_config(gpio->scl_pin, IXP4XX_GPIO_OUT); ++ gpio_line_config(gpio->sda_pin, IXP4XX_GPIO_OUT); ++ gpio_line_set(gpio->scl_pin, IXP4XX_GPIO_HIGH); ++ gpio_line_set(gpio->sda_pin, IXP4XX_GPIO_HIGH); ++#else + gpio_line_config(gpio->scl_pin, IXP4XX_GPIO_IN); + gpio_line_config(gpio->sda_pin, IXP4XX_GPIO_IN); + gpio_line_set(gpio->scl_pin, 0); + gpio_line_set(gpio->sda_pin, 0); +- ++#endif + if ((err = i2c_bit_add_bus(&drv_data->adapter) != 0)) { + printk(KERN_ERR "ERROR: Could not install %s\n", dev->bus_id); + diff --git a/packages/linux/nas100d-kernel/2.6.14/60-nas100d-ide.patch b/packages/linux/nas100d-kernel/2.6.14/60-nas100d-ide.patch index 7928266b32..9f5d164356 100644 --- a/packages/linux/nas100d-kernel/2.6.14/60-nas100d-ide.patch +++ b/packages/linux/nas100d-kernel/2.6.14/60-nas100d-ide.patch @@ -1,25 +1,26 @@ - drivers/ide/pci/aec62xx.c | 36 +++++++++++++++++++++++++++++++++--- - drivers/ide/setup-pci.c | 9 ++++++++- - 2 files changed, 41 insertions(+), 4 deletions(-) + drivers/ide/pci/aec62xx.c | 51 +++++++++++++++++++++++++++++++++++++++++++--- + drivers/ide/setup-pci.c | 12 +++++++++- + 2 files changed, 59 insertions(+), 4 deletions(-) ---- linux-2.6.14.orig/drivers/ide/pci/aec62xx.c 2005-11-12 15:31:31.000000000 +0100 -+++ linux-2.6.14/drivers/ide/pci/aec62xx.c 2005-11-12 15:32:57.000000000 +0100 -@@ -143,7 +143,13 @@ static int aec6210_tune_chipset (ide_dri - u8 ultra = 0, ultra_conf = 0; - u8 tmp0 = 0, tmp1 = 0, tmp2 = 0; +--- linux-nas100d.orig/drivers/ide/pci/aec62xx.c 2005-11-12 15:38:03.000000000 +0100 ++++ linux-nas100d/drivers/ide/pci/aec62xx.c 2005-11-13 01:45:26.000000000 +0100 +@@ -145,6 +145,15 @@ static int aec6210_tune_chipset (ide_dri unsigned long flags; -- + + local_irq_save(flags); ++ +#ifdef CONFIG_MACH_NAS100D -+ byte reg4ah; ++ printk(KERN_INFO "aec62xx: nas100d tuning\n"); + pci_write_config_byte(hwif->pci_dev, PCI_LATENCY_TIMER, 0x90); + /* Enable burst mode & force 2 ports enable */ -+ pci_read_config_byte(hwif->pci_dev, 0x4a, ®4ah); -+ pci_write_config_byte(hwif->pci_dev, 0x4a, reg4ah | 0x80); ++ pci_read_config_byte(hwif->pci_dev, 0x4a, &tmp0); ++ pci_write_config_byte(hwif->pci_dev, 0x4a, tmp0 | 0x80); +#endif - local_irq_save(flags); ++ /* 0x40|(2*drive->dn): Active, 0x41|(2*drive->dn): Recovery */ pci_read_config_word(dev, 0x40|(2*drive->dn), &d_conf); -@@ -263,7 +269,7 @@ static int aec62xx_irq_timeout (ide_driv + tmp0 = pci_bus_clock_list(speed, BUSCLOCK(dev)); +@@ -263,7 +272,7 @@ static int aec62xx_irq_timeout (ide_driv case PCI_DEVICE_ID_ARTOP_ATP865: case PCI_DEVICE_ID_ARTOP_ATP865R: printk(" AEC62XX time out "); @@ -28,7 +29,7 @@ { int i = 0; u8 reg49h = 0; -@@ -277,7 +283,7 @@ static int aec62xx_irq_timeout (ide_driv +@@ -277,7 +286,7 @@ static int aec62xx_irq_timeout (ide_driv default: break; } @@ -37,13 +38,14 @@ { ide_hwif_t *hwif = HWIF(drive); struct pci_dev *dev = hwif->pci_dev; -@@ -299,6 +305,13 @@ static unsigned int __devinit init_chips +@@ -299,6 +308,14 @@ static unsigned int __devinit init_chips { int bus_speed = system_bus_clock(); +#ifdef CONFIG_MACH_NAS100D + /* enable both ports */ + byte tmp; ++ printk(KERN_INFO "%s: nas100d ports enable\n", name); + pci_read_config_byte(dev, 0x4a, &tmp); + pci_write_config_byte(dev, 0x4a, tmp | 0x06); +#endif @@ -51,14 +53,24 @@ if (dev->resource[PCI_ROM_RESOURCE].start) { pci_write_config_dword(dev, PCI_ROM_ADDRESS, dev->resource[PCI_ROM_RESOURCE].start | PCI_ROM_ADDRESS_ENABLE); printk(KERN_INFO "%s: ROM enabled at 0x%08lx\n", name, dev->resource[PCI_ROM_RESOURCE].start); -@@ -312,11 +325,22 @@ static unsigned int __devinit init_chips +@@ -312,12 +329,35 @@ static unsigned int __devinit init_chips return dev->irq; } +#ifdef CONFIG_MACH_NAS100D -+void nas100d_outw(u16 addr, unsigned long port) ++static void nas100d_insw (unsigned long port, u16 *addr, u32 count) ++{ ++ while (count--) ++ *addr++ = __cpu_to_le16(inw(port)); ++} ++ ++static void nas100d_outw (u16 val, unsigned long port) +{ -+ outsw(port, &addr, 1); ++ u32 n, byte_enables, data; ++ n = port % 4; ++ byte_enables = (0xf & ~(BIT(n) | BIT(n+1))) << IXP4XX_PCI_NP_CBE_BESL; ++ data = val << (8*n); ++ ixp4xx_pci_write(port, byte_enables | NP_CMD_IOWRITE, __le16_to_cpu(data)); +} +#endif + @@ -67,24 +79,26 @@ hwif->autodma = 0; hwif->tuneproc = &aec62xx_tune_drive; hwif->speedproc = &aec62xx_tune_chipset; + +#ifdef CONFIG_MACH_NAS100D -+ printk(KERN_INFO "aec62xx: nas100d workaround\n"); ++ printk(KERN_INFO "aec62xx: enabling nas100d iops\n"); + hwif->OUTW = nas100d_outw; ++ hwif->INSW = nas100d_insw; +#endif - ++ if (hwif->pci_dev->device == PCI_DEVICE_ID_ARTOP_ATP850UF) { hwif->serialized = hwif->channel; -@@ -408,6 +432,9 @@ static ide_pci_device_t aec62xx_chipsets - .init_dma = init_dma_aec62xx, - .channels = 2, - .autodma = NOAUTODMA, -+#ifdef CONFIG_MACH_NAS100D -+ .enablebits = {{0x4a,0x02,0x02}, {0x4a,0x04,0x04}}, -+#endif - .bootable = OFF_BOARD, - },{ /* 2 */ - .name = "AEC6260R", -@@ -427,6 +454,9 @@ static ide_pci_device_t aec62xx_chipsets + hwif->no_dsc = 1; +@@ -360,7 +400,7 @@ static void __devinit init_dma_aec62xx(i + } else { + u8 ata66 = 0; + pci_read_config_byte(hwif->pci_dev, 0x49, &ata66); +- if (!(hwif->udma_four)) ++ if (!(hwif->udma_four)) + hwif->udma_four = (ata66&(hwif->channel?0x02:0x01))?0:1; + } + +@@ -427,6 +467,9 @@ static ide_pci_device_t aec62xx_chipsets .init_dma = init_dma_aec62xx, .channels = 2, .autodma = AUTODMA, @@ -94,23 +108,35 @@ .bootable = OFF_BOARD, },{ /* 4 */ .name = "AEC6X80R", ---- linux-2.6.14.orig/drivers/ide/setup-pci.c 2005-11-12 14:33:27.000000000 +0100 -+++ linux-2.6.14/drivers/ide/setup-pci.c 2005-11-12 15:32:57.000000000 +0100 -@@ -602,10 +602,17 @@ void ide_pci_setup_ports(struct pci_dev +@@ -454,6 +497,8 @@ static int __devinit aec62xx_init_one(st + { + ide_pci_device_t *d = &aec62xx_chipsets[id->driver_data]; + ++ printk(KERN_INFO "aec62xx: using config %lx\n", id->driver_data); ++ + return d->init_setup(dev, d); + } + +--- linux-nas100d.orig/drivers/ide/setup-pci.c 2005-11-12 15:38:03.000000000 +0100 ++++ linux-nas100d/drivers/ide/setup-pci.c 2005-11-13 01:36:30.000000000 +0100 +@@ -602,10 +602,20 @@ void ide_pci_setup_ports(struct pci_dev if ((d->flags & IDEPCI_FLAG_FORCE_PDC) && (secondpdc++==1) && (port==1)) goto controller_ok; - + -+#ifdef CONFIG_MACH_NAS100D -+// XXX ???? -+ pci_read_config_byte(dev, e->reg, &tmp); -+ pci_write_config_byte(dev, e->reg, tmp & ~0x01); -+#endif if (e->reg && (pci_read_config_byte(dev, e->reg, &tmp) || (tmp & e->mask) != e->val)) ++#ifdef CONFIG_MACH_NAS100D ++ { ++ pci_write_config_byte(dev, e->reg, tmp & ~0x01); ++#endif continue; /* port not enabled */ -+ ++#ifdef CONFIG_MACH_NAS100D ++ } ++ else ++ pci_write_config_byte(dev, e->reg, tmp & ~0x01); ++#endif + controller_ok: diff --git a/packages/linux/nas100d-kernel/2.6.14/defconfig b/packages/linux/nas100d-kernel/2.6.14/defconfig index 12f9e03f40..7ad2bc67db 100644 --- a/packages/linux/nas100d-kernel/2.6.14/defconfig +++ b/packages/linux/nas100d-kernel/2.6.14/defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.14 -# Sat Nov 12 02:43:20 2005 +# Sun Nov 13 02:06:49 2005 # CONFIG_ARM=y CONFIG_MMU=y @@ -105,7 +105,7 @@ CONFIG_MACH_NAS100D=y # # IXP4xx Options # -# CONFIG_IXP4XX_INDIRECT_PCI is not set +CONFIG_IXP4XX_INDIRECT_PCI=y # # Processor Type @@ -130,7 +130,7 @@ CONFIG_DMABOUNCE=y # CONFIG_ISA_DMA_API=y CONFIG_PCI=y -# CONFIG_PCI_LEGACY_PROC is not set +CONFIG_PCI_LEGACY_PROC=y # # PCCARD (PCMCIA/CardBus) support @@ -157,7 +157,7 @@ CONFIG_ALIGNMENT_TRAP=y # CONFIG_ZBOOT_ROM_TEXT=0x0 CONFIG_ZBOOT_ROM_BSS=0x0 -CONFIG_CMDLINE="root=/dev/mtdblock4 rw rootfstype=jffs2 mem=32M@0x00000000 init=/linuxrc noirqdebug console=ttyS0,115200n8" +CONFIG_CMDLINE="root=/dev/mtdblock3 rw rootfstype=jffs2 mem=64M@0x00000000 init=/linuxrc noirqdebug console=ttyS0,115200n8" # CONFIG_XIP_KERNEL is not set # @@ -530,14 +530,15 @@ CONFIG_BLK_DEV_IDEDISK=y # CONFIG_IDE_GENERIC=y CONFIG_BLK_DEV_IDEPCI=y -CONFIG_IDEPCI_SHARE_IRQ=y -CONFIG_BLK_DEV_OFFBOARD=y +# CONFIG_IDEPCI_SHARE_IRQ is not set +# CONFIG_BLK_DEV_OFFBOARD is not set CONFIG_BLK_DEV_GENERIC=y # CONFIG_BLK_DEV_OPTI621 is not set # CONFIG_BLK_DEV_SL82C105 is not set CONFIG_BLK_DEV_IDEDMA_PCI=y # CONFIG_BLK_DEV_IDEDMA_FORCED is not set -# CONFIG_IDEDMA_PCI_AUTO is not set +CONFIG_IDEDMA_PCI_AUTO=y +# CONFIG_IDEDMA_ONLYDISK is not set CONFIG_BLK_DEV_AEC62XX=m # CONFIG_BLK_DEV_ALI15X3 is not set # CONFIG_BLK_DEV_AMD74XX is not set @@ -562,7 +563,7 @@ CONFIG_BLK_DEV_AEC62XX=m # CONFIG_IDE_ARM is not set CONFIG_BLK_DEV_IDEDMA=y # CONFIG_IDEDMA_IVB is not set -# CONFIG_IDEDMA_AUTO is not set +CONFIG_IDEDMA_AUTO=y # CONFIG_BLK_DEV_HD is not set # @@ -1188,7 +1189,7 @@ CONFIG_USB_EHCI_SPLIT_ISO=y CONFIG_USB_OHCI_HCD=y # CONFIG_USB_OHCI_BIG_ENDIAN is not set CONFIG_USB_OHCI_LITTLE_ENDIAN=y -# CONFIG_USB_UHCI_HCD is not set +CONFIG_USB_UHCI_HCD=y # CONFIG_USB_SL811_HCD is not set # @@ -1363,13 +1364,13 @@ CONFIG_EXT2_FS_XATTR=y CONFIG_EXT2_FS_POSIX_ACL=y CONFIG_EXT2_FS_SECURITY=y # CONFIG_EXT2_FS_XIP is not set -CONFIG_EXT3_FS=m +CONFIG_EXT3_FS=y CONFIG_EXT3_FS_XATTR=y CONFIG_EXT3_FS_POSIX_ACL=y CONFIG_EXT3_FS_SECURITY=y -CONFIG_JBD=m +CONFIG_JBD=y # CONFIG_JBD_DEBUG is not set -CONFIG_FS_MBCACHE=m +CONFIG_FS_MBCACHE=y CONFIG_REISERFS_FS=m # CONFIG_REISERFS_CHECK is not set # CONFIG_REISERFS_PROC_INFO is not set diff --git a/packages/linux/nas100d-kernel/2.6.14/nas100d.h b/packages/linux/nas100d-kernel/2.6.14/nas100d.h index 498174128c..1623712b78 100644 --- a/packages/linux/nas100d-kernel/2.6.14/nas100d.h +++ b/packages/linux/nas100d-kernel/2.6.14/nas100d.h @@ -22,8 +22,8 @@ #define NAS100D_FLASH_BASE IXP4XX_EXP_BUS_CS0_BASE_PHYS #define NAS100D_FLASH_SIZE IXP4XX_EXP_BUS_CSX_REGION_SIZE -#define NAS100D_SDA_PIN 6 -#define NAS100D_SCL_PIN 5 +#define NAS100D_SDA_PIN 5 +#define NAS100D_SCL_PIN 6 /* * NAS100D PCI IRQs -- cgit v1.2.3