nas100d-kernel: more updates to i2c and ide and defconfig from azummo
authorRod Whitby <rod@whitby.id.au>
Sat, 12 Nov 2005 07:55:34 +0000 (07:55 +0000)
committerOpenEmbedded Project <openembedded-devel@lists.openembedded.org>
Sat, 12 Nov 2005 07:55:34 +0000 (07:55 +0000)
packages/linux/nas100d-kernel/2.6.14/60-nas100d-i2c.patch [new file with mode: 0644]
packages/linux/nas100d-kernel/2.6.14/60-nas100d-ide.patch
packages/linux/nas100d-kernel/2.6.14/defconfig
packages/linux/nas100d-kernel/2.6.14/nas100d.h
packages/linux/nas100d-kernel_2.6.14.bb

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 (file)
index 0000000..5f3e132
--- /dev/null
@@ -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);
index 7928266..9f5d164 100644 (file)
@@ -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, &reg4ah);
-+      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;
        }
        {
                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
        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
 +
        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,
                .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:
  
index 12f9e03..7ad2bc6 100644 (file)
@@ -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
index 4981741..1623712 100644 (file)
@@ -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
index d1a67a0..5d4a1ed 100644 (file)
@@ -26,11 +26,11 @@ N1K_PATCHES = "\
        file://28-spinlock-up.patch;patch=1 \
        file://29-ipv4-route-c-spinlock.patch;patch=1 \
        file://50-nas100d-arch.patch;patch=1 \
+       file://60-nas100d-ide.patch;patch=1 \
+       file://60-nas100d-i2c.patch;patch=1 \
        file://90-ixp4xx-pci-le.patch;patch=1 \
 "
 
-#      file://60-nas100d-ide.patch;patch=1 \
-
 include nas100d-kernel.inc
 
 # These options get added to the kernel command line, only put things