linux-2.6.27: update patches for boc01
authorJeremy Lainé <jeremy.laine@m4x.org>
Fri, 16 Jan 2009 18:17:51 +0000 (19:17 +0100)
committerJeremy Lainé <jeremy.laine@m4x.org>
Fri, 16 Jan 2009 18:17:51 +0000 (19:17 +0100)
12 files changed:
packages/linux/linux-2.6.27/boc01/001-090114-sqn11x0-usb-hack.patch [moved from packages/linux/linux-2.6.27/boc01/014-090114-sqn11x0-usb-hack.patch with 100% similarity]
packages/linux/linux-2.6.27/boc01/002-081105-headers.patch [deleted file]
packages/linux/linux-2.6.27/boc01/005-090112-isl12024.patch [moved from packages/linux/linux-2.6.27/boc01/005-081217-isl12024.patch with 98% similarity]
packages/linux/linux-2.6.27/boc01/009-081218-devicetree.patch [deleted file]
packages/linux/linux-2.6.27/boc01/010-090112-mii.patch [moved from packages/linux/linux-2.6.27/boc01/010-081208-mii.patch with 53% similarity]
packages/linux/linux-2.6.27/boc01/011-090115-gpio.patch [moved from packages/linux/linux-2.6.27/boc01/011-081218-gpio.patch with 70% similarity]
packages/linux/linux-2.6.27/boc01/012-090115-cy3218-btns.patch [moved from packages/linux/linux-2.6.27/boc01/012-081223-cy3218-btns.patch with 83% similarity]
packages/linux/linux-2.6.27/boc01/013-090116-lcd.patch [moved from packages/linux/linux-2.6.27/boc01/013-090114-lcd.patch with 86% similarity]
packages/linux/linux-2.6.27/boc01/014-090115-pm-wakeup.patch [new file with mode: 0644]
packages/linux/linux-2.6.27/boc01/boc01.dts
packages/linux/linux-2.6.27/boc01/defconfig
packages/linux/linux_2.6.27.bb

diff --git a/packages/linux/linux-2.6.27/boc01/002-081105-headers.patch b/packages/linux/linux-2.6.27/boc01/002-081105-headers.patch
deleted file mode 100644 (file)
index b82dcbc..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-diff -Nru /opt/Bollore/dev/oe/build/tmp/work/mpc8313e-rdb-angstrom-linux/linux-2.6.26-r1.1/linux-2.6.26/include/linux/i2c/isl12024.h ../linux-2.6.26.modified/include/linux/i2c/isl12024.h
---- /opt/Bollore/dev/oe/build/tmp/work/mpc8313e-rdb-angstrom-linux/linux-2.6.26-r1.1/linux-2.6.26/include/linux/i2c/isl12024.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.26.modified/include/linux/i2c/isl12024.h 2008-10-21 10:36:19.000000000 +0200
-@@ -0,0 +1,93 @@
-+#ifndef ISL12024_H_
-+#define ISL12024_H_
-+
-+
-+
-+#define ISL12024_REG_SR               0x3F    /* status register */
-+#define ISL12024_REG_Y2K              0x37
-+#define ISL12024_REG_DW               0x36
-+#define ISL12024_REG_YR               0x35
-+#define ISL12024_REG_MO               0x34
-+#define ISL12024_REG_DT               0x33
-+#define ISL12024_REG_HR               0x32
-+#define ISL12024_REG_MN               0x31
-+#define ISL12024_REG_SC               0x30
-+#define ISL12024_REG_DTR              0x13
-+#define ISL12024_REG_ATR              0x12
-+#define ISL12024_REG_INT              0x11
-+#define ISL12024_REG_0                0x10
-+#define ISL12024_REG_Y2K1             0x0F
-+#define ISL12024_REG_DWA1             0x0E
-+#define ISL12024_REG_YRA1             0x0D
-+#define ISL12024_REG_MOA1             0x0C
-+#define ISL12024_REG_DTA1             0x0B
-+#define ISL12024_REG_HRA1             0x0A
-+#define ISL12024_REG_MNA1             0x09
-+#define ISL12024_REG_SCA1             0x08
-+#define ISL12024_REG_Y2K0             0x07
-+#define ISL12024_REG_DWA0             0x06
-+#define ISL12024_REG_YRA0             0x05
-+#define ISL12024_REG_MOA0             0x04
-+#define ISL12024_REG_DTA0             0x03
-+#define ISL12024_REG_HRA0             0x02
-+#define ISL12024_REG_MNA0             0x01
-+#define ISL12024_REG_SCA0             0x00
-+
-+#define ISL12024_CCR_BASE             0x30    /* Base address of CCR */
-+#define ISL12024_ALM0_BASE            0x00    /* Base address of ALARM0 */
-+
-+#define ISL12024_SR_RTCF              0x01    /* Clock failure */
-+#define ISL12024_SR_WEL               0x02    /* Write Enable Latch */
-+#define ISL12024_SR_RWEL              0x04    /* Register Write Enable */
-+#define ISL12024_SR_AL0               0x20    /* Alarm 0 match */
-+
-+#define ISL12024_DTR_DTR0             0x01
-+#define ISL12024_DTR_DTR1             0x02
-+#define ISL12024_DTR_DTR2             0x04
-+
-+#define ISL12024_HR_MIL               0x80    /* Set in ccr.hour for 24 hr mode */
-+
-+#define ISL12024_INT_AL0E             0x20    /* Alarm 0 enable */
-+/* I2C ADDRESS */
-+#define ISL12024_I2C_ADDR 0xDE
-+#define ISL12024_I2C_EEPROM_ADDR 0x57
-+/* device id section */
-+#define ISL12024_REG_ID 0x20
-+/* Register map */
-+/* rtc section */
-+//#define ISL12024_REG_MSB 0x00
-+//#define ISL12024_REG_SC  0x30 /* Seconds */
-+//#define ISL12024_REG_MN  0x31 /* Minutes */
-+//#define ISL12024_REG_HR  0x32 /* Hours */
-+#define ISL12024_REG_HR_MIL     (1<<7) /* 24h/12h mode */
-+#define ISL12024_REG_HR_PM      (1<<5) /* PM/AM bit in 12h mode */
-+//#define ISL12024_REG_DT  0x33  /* Date */
-+//#define ISL12024_REG_MO  0x34  /* Month */
-+//#define ISL12024_REG_YR  0x35  /* Year */
-+//#define ISL12024_REG_DW  0x36
-+//#define ISL12024_REG_Y2K 0x37
-+#define ISL12024_RTC_SECTION_LEN 8
-+
-+
-+
-+/* control/status section */
-+//#define ISL12024_REG_SR  0x3F
-+//#define ISL12024_REG_SR_BAT    (1<<7) /* battery */
-+//#define ISL12024_REG_SR_AL1    (1<<6) /* alarm 0 */
-+//#define ISL12024_REG_SR_AL0    (1<<5) /* alarm 1 */
-+//#define ISL12024_REG_SR_OSCF   (1<<4) /* oscillator fail */
-+//#define ISL12024_REG_SR_RWEL   (1<<2) /* register write enable latch */
-+//#define ISL12024_REG_SR_WEL    (1<<1) /* write enable latch */
-+//#define ISL12024_REG_SR_RTCF    (1<<0) /* rtc fail */
-+//#define ISL12024_REG_INT 0x11
-+
-+#define CCR_SEC                       0
-+#define CCR_MIN                       1
-+#define CCR_HOUR              2
-+#define CCR_MDAY              3
-+#define CCR_MONTH             4
-+#define CCR_YEAR              5
-+#define CCR_WDAY              6
-+#define CCR_Y2K                       7
-+
-+#endif /*ISL12024_H_*/
-diff -Nru /opt/Bollore/dev/oe/build/tmp/work/mpc8313e-rdb-angstrom-linux/linux-2.6.26-r1.1/linux-2.6.26/include/linux/phy.h ../linux-2.6.26.modified/include/linux/phy.h
---- /opt/Bollore/dev/oe/build/tmp/work/mpc8313e-rdb-angstrom-linux/linux-2.6.26-r1.1/linux-2.6.26/include/linux/phy.h  2008-07-13 23:51:29.000000000 +0200
-+++ linux-2.6.26.modified/include/linux/phy.h  2008-10-14 15:12:02.000000000 +0200
-@@ -339,6 +339,11 @@
-       u32 features;
-       u32 flags;
-+       /* Called during discovery to test if the
-+        * device can attach to the bus, even if
-+        phy id and mask do not match */
-+      bool (*detect)(struct mii_bus *bus, int addr);
-+
-       /*
-        * Called to initialize the PHY,
-        * including after a reset
@@ -840,16 +840,26 @@ Index: linux-2.6.27/drivers/rtc/rtc-isl12024.c
 +
 +module_init(isl12024_init);
 +module_exit(isl12024_exit);
-Index: linux-2.6.27/include/i2c/isl12024.h
+Index: linux-2.6.27/include/linux/i2c/isl12024.h
 ===================================================================
 --- /dev/null
-+++ linux-2.6.27/include/i2c/isl12024.h
-@@ -0,0 +1,93 @@
++++ linux-2.6.27/include/linux/i2c/isl12024.h
+@@ -0,0 +1,103 @@
++/*
++ * Intersil ISL12024 chip registers definitions
++ *
++ *
++ * Copyright (C) 2008, CenoSYS (www.cenosys.com).
++ * Guillaume Ligneul
++ * Guillaume.ligneul@gmail.com
++ *
++ * This software program is licensed subject to the GNU General Public License
++ * (GPL).Version 2,June 1991, available at http://www.fsf.org/copyleft/gpl.html
++ */
++
 +#ifndef ISL12024_H_
 +#define ISL12024_H_
 +
-+
-+
 +#define ISL12024_REG_SR               0x3F    /* status register */
 +#define ISL12024_REG_Y2K              0x37
 +#define ISL12024_REG_DW               0x36
diff --git a/packages/linux/linux-2.6.27/boc01/009-081218-devicetree.patch b/packages/linux/linux-2.6.27/boc01/009-081218-devicetree.patch
deleted file mode 100644 (file)
index cf5af26..0000000
+++ /dev/null
@@ -1,209 +0,0 @@
-Index: linux-2.6.27/arch/powerpc/boot/dts/mpc8313erdb.dts
-===================================================================
---- linux-2.6.27.orig/arch/powerpc/boot/dts/mpc8313erdb.dts    2008-12-19 09:40:44.000000000 +0100
-+++ linux-2.6.27/arch/powerpc/boot/dts/mpc8313erdb.dts 2008-12-19 09:42:47.000000000 +0100
-@@ -18,10 +18,8 @@
-       #size-cells = <1>;
-       aliases {
--              ethernet0 = &enet0;
-               ethernet1 = &enet1;
-               serial0 = &serial0;
--              serial1 = &serial1;
-               pci0 = &pci0;
-       };
-@@ -79,18 +77,18 @@
-                                    "fsl,elbc-fcm-nand";
-                       reg = <0x1 0x0 0x2000>;
--                      u-boot@0 {
--                              reg = <0x0 0x100000>;
-+                      kernel@0 {
-+                              reg = <0x0 0x400000>;
-                               read-only;
-                       };
--                      kernel@100000 {
--                              reg = <0x100000 0x300000>;
--                      };
--
-                       fs@400000 {
--                              reg = <0x400000 0x1c00000>;
-+                              reg = <0x400000 0x4000000>;
-                       };
-+
-+                      appli@4400000 {
-+                              reg = <0x4400000 0x3c00000>;
-+                      };
-               };
-       };
-@@ -125,9 +123,13 @@
-                               interrupts = <14 0x8>;
-                               interrupt-parent = <&ipic>;
-                               dfsrr;
--                              rtc@68 {
--                                      compatible = "dallas,ds1339";
--                                      reg = <0x68>;
-+                              rtc@6f {
-+                                      compatible = "isl12024";
-+                                      reg = <0x6f>;
-+                              };
-+                              at24@50 {
-+                                      compatible = "at24,24c32";
-+                                      reg = <0x50>;
-                               };
-                       };
-@@ -164,40 +166,6 @@
-                       mode = "cpu";
-               };
--              dma@82a8 {
--                      #address-cells = <1>;
--                      #size-cells = <1>;
--                      compatible = "fsl,mpc8313-dma", "fsl,elo-dma";
--                      reg = <0x82a8 4>;
--                      ranges = <0 0x8100 0x1a8>;
--                      interrupt-parent = <&ipic>;
--                      interrupts = <71 8>;
--                      cell-index = <0>;
--                      dma-channel@0 {
--                              compatible = "fsl,mpc8313-dma-channel", "fsl,elo-dma-channel";
--                              reg = <0 0x80>;
--                              interrupt-parent = <&ipic>;
--                              interrupts = <71 8>;
--                      };
--                      dma-channel@80 {
--                              compatible = "fsl,mpc8313-dma-channel", "fsl,elo-dma-channel";
--                              reg = <0x80 0x80>;
--                              interrupt-parent = <&ipic>;
--                              interrupts = <71 8>;
--                      };
--                      dma-channel@100 {
--                              compatible = "fsl,mpc8313-dma-channel", "fsl,elo-dma-channel";
--                              reg = <0x100 0x80>;
--                              interrupt-parent = <&ipic>;
--                              interrupts = <71 8>;
--                      };
--                      dma-channel@180 {
--                              compatible = "fsl,mpc8313-dma-channel", "fsl,elo-dma-channel";
--                              reg = <0x180 0x28>;
--                              interrupt-parent = <&ipic>;
--                              interrupts = <71 8>;
--                      };
--              };
-               /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
-               usb@23000 {
-@@ -211,42 +179,21 @@
-                       sleep = <&pmc 0x00300000>;
-               };
--              enet0: ethernet@24000 {
--                      #address-cells = <1>;
--                      #size-cells = <1>;
--                      sleep = <&pmc 0x20000000>;
--                      ranges;
--
--                      cell-index = <0>;
--                      device_type = "network";
--                      model = "eTSEC";
--                      compatible = "gianfar", "simple-bus";
--                      reg = <0x24000 0x1000>;
--                      local-mac-address = [ 00 00 00 00 00 00 ];
--                      interrupts = <37 0x8 36 0x8 35 0x8>;
--                      interrupt-parent = <&ipic>;
--                      phy-handle = < &phy1 >;
--                      fsl,magic-packet;
-+              
--                      mdio@24520 {
--                              #address-cells = <1>;
--                              #size-cells = <0>;
--                              compatible = "fsl,gianfar-mdio";
--                              reg = <0x24520 0x20>;
--                              phy1: ethernet-phy@1 {
--                                      interrupt-parent = <&ipic>;
--                                      interrupts = <19 0x8>;
--                                      reg = <0x1>;
--                                      device_type = "ethernet-phy";
--                              };
--                              phy4: ethernet-phy@4 {
--                                      interrupt-parent = <&ipic>;
--                                      interrupts = <20 0x8>;
--                                      reg = <0x4>;
--                                      device_type = "ethernet-phy";
--                              };
-+              mdio@24520 {
-+                      #address-cells = <1>;
-+                      #size-cells = <0>;
-+                      compatible = "fsl,gianfar-mdio";
-+                      reg = <0x24520 0x20>;                           
-+                      phy4: ethernet-phy@4 {
-+                              interrupt-parent = <&ipic>;
-+                              interrupts = <20 0x8>;
-+                              reg = <0x4>;
-+                              device_type = "ethernet-phy";
-                       };
-               };
-+              
-               enet1: ethernet@25000 {
-                       cell-index = <1>;
-@@ -262,20 +209,10 @@
-                       fsl,magic-packet;
-               };
--              serial0: serial@4500 {
-+              serial0: serial@4600 {
-                       cell-index = <0>;
-                       device_type = "serial";
-                       compatible = "ns16550";
--                      reg = <0x4500 0x100>;
--                      clock-frequency = <0>;
--                      interrupts = <9 0x8>;
--                      interrupt-parent = <&ipic>;
--              };
--
--              serial1: serial@4600 {
--                      cell-index = <1>;
--                      device_type = "serial";
--                      compatible = "ns16550";
-                       reg = <0x4600 0x100>;
-                       clock-frequency = <0>;
-                       interrupts = <10 0x8>;
-@@ -309,7 +246,7 @@
-                        * manual, or if you are adapting this device tree
-                        * to a different board.
-                        */
--                      status = "fail";
-+                      status = "okay";
-               };
-               gtm1: timer@500 {
-@@ -337,18 +274,12 @@
-               pci0: pci@e0008500 {
-                       cell-index = <1>;
-                       interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
--                      interrupt-map = <
--                                      /* IDSEL 0x0E -mini PCI */
--                                       0x7000 0x0 0x0 0x1 &ipic 18 0x8
--                                       0x7000 0x0 0x0 0x2 &ipic 18 0x8
--                                       0x7000 0x0 0x0 0x3 &ipic 18 0x8
--                                       0x7000 0x0 0x0 0x4 &ipic 18 0x8
--
-+                      interrupt-map = <                               
-                                       /* IDSEL 0x0F - PCI slot */
--                                       0x7800 0x0 0x0 0x1 &ipic 17 0x8
--                                       0x7800 0x0 0x0 0x2 &ipic 18 0x8
--                                       0x7800 0x0 0x0 0x3 &ipic 17 0x8
--                                       0x7800 0x0 0x0 0x4 &ipic 18 0x8>;
-+                                       0x7800 0x0 0x0 0x1 &ipic 48 0x8
-+                                       0x7800 0x0 0x0 0x2 &ipic 48 0x8
-+                                       0x7800 0x0 0x0 0x3 &ipic 48 0x8
-+                                       0x7800 0x0 0x0 0x4 &ipic 48 0x8>;
-                       interrupt-parent = <&ipic>;
-                       interrupts = <66 0x8>;
-                       bus-range = <0x0 0x0>;
@@ -1,6 +1,8 @@
---- linux-2.6.27.orig/drivers/net/gianfar_ethtool.c    2008-10-10 00:13:53.000000000 +0200
-+++ linux-2.6.27.modif/drivers/net/gianfar_ethtool.c   2008-12-08 15:13:23.000000000 +0100
-@@ -182,13 +182,7 @@
+Index: linux-2.6.27/drivers/net/gianfar_ethtool.c
+===================================================================
+--- linux-2.6.27.orig/drivers/net/gianfar_ethtool.c
++++ linux-2.6.27/drivers/net/gianfar_ethtool.c
+@@ -182,13 +182,7 @@ static void gfar_gdrvinfo(struct net_dev
  
  static int gfar_ssettings(struct net_device *dev, struct ethtool_cmd *cmd)
  {
@@ -15,7 +17,7 @@
  }
  
  
-@@ -196,15 +190,11 @@
+@@ -196,15 +190,11 @@ static int gfar_ssettings(struct net_dev
  static int gfar_gsettings(struct net_device *dev, struct ethtool_cmd *cmd)
  {
        struct gfar_private *priv = netdev_priv(dev);
@@ -32,7 +34,7 @@
  }
  
  /* Return the length of the register structure */
-@@ -232,18 +222,7 @@
+@@ -232,18 +222,7 @@ static unsigned int gfar_usecs2ticks(str
        unsigned int count;
  
        /* The timer is different, depending on the interface speed */
@@ -52,7 +54,7 @@
  
        /* Make sure we return a number greater than 0
         * if usecs > 0 */
-@@ -256,18 +235,7 @@
+@@ -256,18 +235,7 @@ static unsigned int gfar_ticks2usecs(str
        unsigned int count;
  
        /* The timer is different, depending on the interface speed */
@@ -72,7 +74,7 @@
  
        /* Make sure we return a number greater than 0 */
        /* if ticks is > 0 */
-@@ -283,9 +251,6 @@
+@@ -283,9 +251,6 @@ static int gfar_gcoalesce(struct net_dev
        if (!(priv->einfo->device_flags & FSL_GIANFAR_DEV_HAS_COALESCE))
                return -EOPNOTSUPP;
  
@@ -82,7 +84,7 @@
        cvals->rx_coalesce_usecs = gfar_ticks2usecs(priv, priv->rxtime);
        cvals->rx_max_coalesced_frames = priv->rxcount;
  
-@@ -342,9 +307,6 @@
+@@ -342,9 +307,6 @@ static int gfar_scoalesce(struct net_dev
        else
                priv->rxcoalescing = 1;
  
        /* Check the bounds of the values */
        if (cvals->rx_coalesce_usecs > GFAR_MAX_COAL_USECS) {
                pr_info("Coalescing is limited to %d microseconds\n",
---- linux-2.6.27.orig/drivers/net/gianfar.c    2008-10-10 00:13:53.000000000 +0200
-+++ linux-2.6.27.modif/drivers/net/gianfar.c   2008-12-08 15:22:51.000000000 +0100
-@@ -424,8 +424,6 @@
+Index: linux-2.6.27/drivers/net/gianfar.c
+===================================================================
+--- linux-2.6.27.orig/drivers/net/gianfar.c
++++ linux-2.6.27/drivers/net/gianfar.c
+@@ -116,7 +116,6 @@ static int gfar_change_mtu(struct net_de
+ static irqreturn_t gfar_error(int irq, void *dev_id);
+ static irqreturn_t gfar_transmit(int irq, void *dev_id);
+ static irqreturn_t gfar_interrupt(int irq, void *dev_id);
+-static void adjust_link(struct net_device *dev);
+ static void init_registers(struct net_device *dev);
+ static int init_phy(struct net_device *dev);
+ static int gfar_probe(struct platform_device *pdev);
+@@ -124,7 +123,6 @@ static int gfar_remove(struct platform_d
+ static void free_skb_resources(struct gfar_private *priv);
+ static void gfar_set_multi(struct net_device *dev);
+ static void gfar_set_hash_for_addr(struct net_device *dev, u8 *addr);
+-static void gfar_configure_serdes(struct net_device *dev);
+ static int gfar_poll(struct napi_struct *napi, int budget);
+ #ifdef CONFIG_NET_POLL_CONTROLLER
+ static void gfar_netpoll(struct net_device *dev);
+@@ -424,8 +422,6 @@ static int gfar_suspend(struct platform_
                        tempval = gfar_read(&priv->regs->maccfg2);
                        tempval |= MACCFG2_MPEN;
                        gfar_write(&priv->regs->maccfg2, tempval);
                }
        }
  
-@@ -446,8 +444,8 @@
+@@ -438,17 +434,12 @@ static int gfar_resume(struct platform_d
+       struct gfar_private *priv = netdev_priv(dev);
+       unsigned long flags;
+       u32 tempval;
+-      int magic_packet = priv->wol_en &&
+-              (priv->einfo->device_flags & FSL_GIANFAR_DEV_HAS_MAGIC_PACKET);
+       if (!netif_running(dev)) {
+               netif_device_attach(dev);
                return 0;
        }
  
 -      if (!magic_packet && priv->phydev)
 -              phy_start(priv->phydev);
-+      //if (!magic_packet && priv->phydev)
-+      //      phy_start(priv->phydev);
+-
        /* Disable Magic Packet mode, in case something
         * else woke us up.
-@@ -524,10 +522,6 @@
+        */
+@@ -476,47 +467,6 @@ static int gfar_resume(struct platform_d
+ #define gfar_resume NULL
+ #endif
+-/* Reads the controller's registers to determine what interface
+- * connects it to the PHY.
+- */
+-static phy_interface_t gfar_get_interface(struct net_device *dev)
+-{
+-      struct gfar_private *priv = netdev_priv(dev);
+-      u32 ecntrl = gfar_read(&priv->regs->ecntrl);
+-
+-      if (ecntrl & ECNTRL_SGMII_MODE)
+-              return PHY_INTERFACE_MODE_SGMII;
+-
+-      if (ecntrl & ECNTRL_TBI_MODE) {
+-              if (ecntrl & ECNTRL_REDUCED_MODE)
+-                      return PHY_INTERFACE_MODE_RTBI;
+-              else
+-                      return PHY_INTERFACE_MODE_TBI;
+-      }
+-
+-      if (ecntrl & ECNTRL_REDUCED_MODE) {
+-              if (ecntrl & ECNTRL_REDUCED_MII_MODE)
+-                      return PHY_INTERFACE_MODE_RMII;
+-              else {
+-                      phy_interface_t interface = priv->einfo->interface;
+-
+-                      /*
+-                       * This isn't autodetected right now, so it must
+-                       * be set by the device tree or platform code.
+-                       */
+-                      if (interface == PHY_INTERFACE_MODE_RGMII_ID)
+-                              return PHY_INTERFACE_MODE_RGMII_ID;
+-
+-                      return PHY_INTERFACE_MODE_RGMII;
+-              }
+-      }
+-
+-      if (priv->einfo->device_flags & FSL_GIANFAR_DEV_HAS_GIGABIT)
+-              return PHY_INTERFACE_MODE_GMII;
+-
+-      return PHY_INTERFACE_MODE_MII;
+-}
+-
+ /* Initializes driver's PHY state, and attaches to the PHY.
+  * Returns 0 on success.
+@@ -524,10 +474,6 @@ static phy_interface_t gfar_get_interfac
  static int init_phy(struct net_device *dev)
  {
        struct gfar_private *priv = netdev_priv(dev);
        char phy_id[BUS_ID_SIZE];
        phy_interface_t interface;
  
-@@ -537,23 +531,7 @@
+@@ -537,54 +483,11 @@ static int init_phy(struct net_device *d
  
        snprintf(phy_id, BUS_ID_SIZE, PHY_ID_FMT, priv->einfo->bus_id, priv->einfo->phy_id);
  
  
        return 0;
  }
-@@ -678,8 +656,6 @@
+-/*
+- * Initialize TBI PHY interface for communicating with the
+- * SERDES lynx PHY on the chip.  We communicate with this PHY
+- * through the MDIO bus on each controller, treating it as a
+- * "normal" PHY at the address found in the TBIPA register.  We assume
+- * that the TBIPA register is valid.  Either the MDIO bus code will set
+- * it to a value that doesn't conflict with other PHYs on the bus, or the
+- * value doesn't matter, as there are no other PHYs on the bus.
+- */
+-static void gfar_configure_serdes(struct net_device *dev)
+-{
+-      struct gfar_private *priv = netdev_priv(dev);
+-      struct gfar_mii __iomem *regs =
+-                      (void __iomem *)&priv->regs->gfar_mii_regs;
+-      int tbipa = gfar_read(&priv->regs->tbipa);
+-
+-      /* Single clk mode, mii mode off(for serdes communication) */
+-      gfar_local_mdio_write(regs, tbipa, MII_TBICON, TBICON_CLK_SELECT);
+-
+-      gfar_local_mdio_write(regs, tbipa, MII_ADVERTISE,
+-                      ADVERTISE_1000XFULL | ADVERTISE_1000XPAUSE |
+-                      ADVERTISE_1000XPSE_ASYM);
+-
+-      gfar_local_mdio_write(regs, tbipa, MII_BMCR, BMCR_ANENABLE |
+-                      BMCR_ANRESTART | BMCR_FULLDPLX | BMCR_SPEED1000);
+-}
+-
+ static void init_registers(struct net_device *dev)
+ {
+       struct gfar_private *priv = netdev_priv(dev);
+@@ -678,8 +581,6 @@ void stop_gfar(struct net_device *dev)
        struct gfar __iomem *regs = priv->regs;
        unsigned long flags;
  
        /* Lock it down */
        spin_lock_irqsave(&priv->txlock, flags);
        spin_lock(&priv->rxlock);
-@@ -949,7 +925,6 @@
+@@ -949,7 +850,6 @@ int startup_gfar(struct net_device *dev)
                }
        }
  
  
        /* Configure the coalescing support */
        if (priv->txcoalescing)
-@@ -1217,9 +1192,6 @@
+@@ -1217,9 +1117,6 @@ static int gfar_close(struct net_device 
        cancel_work_sync(&priv->reset_task);
        stop_gfar(dev);
  
  
        netif_stop_queue(dev);
  
-@@ -1777,86 +1749,6 @@
+@@ -1777,86 +1674,6 @@ static irqreturn_t gfar_interrupt(int ir
        return IRQ_HANDLED;
  }
  
  
  /* Update the hash table based on the current list of multicast
   * addresses we subscribe to.  Also, change the promiscuity of
---- linux-2.6.27.orig/drivers/net/gianfar.h    2008-10-10 00:13:53.000000000 +0200
-+++ linux-2.6.27.modif/drivers/net/gianfar.h   2008-12-08 15:14:41.000000000 +0100
-@@ -150,7 +150,7 @@
+Index: linux-2.6.27/drivers/net/gianfar.h
+===================================================================
+--- linux-2.6.27.orig/drivers/net/gianfar.h
++++ linux-2.6.27/drivers/net/gianfar.h
+@@ -150,7 +150,7 @@ extern const char gfar_driver_version[];
  #define MACCFG1_SYNCD_TX_EN   0x00000002
  #define MACCFG1_TX_EN         0x00000001
  
  #define MACCFG2_FULL_DUPLEX   0x00000001
  #define MACCFG2_IF              0x00000300
  #define MACCFG2_MII             0x00000100
-@@ -748,7 +748,6 @@
+@@ -748,7 +748,6 @@ struct gfar_private {
        struct gianfar_platform_data *einfo;
  
        /* PHY stuff */
        struct mii_bus *mii_bus;
        int oldspeed;
        int oldduplex;
---- linux-2.6.27.orig/drivers/net/gianfar_mii.c        2008-10-10 00:13:53.000000000 +0200
-+++ linux-2.6.27.modif/drivers/net/gianfar_mii.c       2008-12-08 15:16:19.000000000 +0100
-@@ -217,22 +217,6 @@
+Index: linux-2.6.27/drivers/net/gianfar_mii.c
+===================================================================
+--- linux-2.6.27.orig/drivers/net/gianfar_mii.c
++++ linux-2.6.27/drivers/net/gianfar_mii.c
+@@ -217,28 +217,10 @@ static int gfar_mdio_probe(struct device
                if (r)
                        return r;
  
        }
  
        return 0;
---- linux-2.6.27.orig/drivers/net/gianfar_mii.h        2008-10-10 00:13:53.000000000 +0200
-+++ linux-2.6.27.modif/drivers/net/gianfar_mii.h       2008-12-08 15:16:59.000000000 +0100
+-bus_register_fail:
+-      iounmap(regs);
+ reg_map_fail:
+       kfree(new_bus);
+Index: linux-2.6.27/drivers/net/gianfar_mii.h
+===================================================================
+--- linux-2.6.27.orig/drivers/net/gianfar_mii.h
++++ linux-2.6.27/drivers/net/gianfar_mii.h
 @@ -27,7 +27,6 @@
                | SUPPORTED_10baseT_Full \
                | SUPPORTED_100baseT_Half \
                | SUPPORTED_MII)
  
  struct gfar_mii {
---- linux-2.6.27.orig/drivers/net/phy/phy_device.c     2008-10-10 00:13:53.000000000 +0200
-+++ linux-2.6.27.modif/drivers/net/phy/phy_device.c    2008-12-08 15:21:22.000000000 +0100
-@@ -281,7 +281,7 @@
+Index: linux-2.6.27/drivers/net/phy/phy_device.c
+===================================================================
+--- linux-2.6.27.orig/drivers/net/phy/phy_device.c
++++ linux-2.6.27/drivers/net/phy/phy_device.c
+@@ -281,7 +281,7 @@ struct phy_device * phy_connect(struct n
        if (IS_ERR(phydev))
                return phydev;
  
  
        phy_start_machine(phydev, NULL);
  
-@@ -302,7 +302,7 @@
+@@ -302,7 +302,7 @@ void phy_disconnect(struct phy_device *p
                phy_stop_interrupts(phydev);
  
        phy_stop_machine(phydev);
        phydev->adjust_link = NULL;
  
        phy_detach(phydev);
-@@ -438,7 +438,7 @@
+@@ -438,7 +438,7 @@ int genphy_config_advert(struct phy_devi
        if (adv < 0)
                return adv;
  
                 ADVERTISE_PAUSE_ASYM);
        if (advertise & ADVERTISED_10baseT_Half)
                adv |= ADVERTISE_10HALF;
-@@ -503,7 +503,7 @@
+@@ -503,7 +503,7 @@ int genphy_setup_forced(struct phy_devic
  
        if (DUPLEX_FULL == phydev->duplex)
                ctl |= BMCR_FULLDPLX;
        err = phy_write(phydev, MII_BMCR, ctl);
  
        if (err < 0)
-@@ -671,7 +671,7 @@
+@@ -671,7 +671,7 @@ int genphy_read_status(struct phy_device
                                phydev->duplex = DUPLEX_FULL;
                } else if (lpa & (LPA_100FULL | LPA_100HALF)) {
                        phydev->speed = SPEED_100;
                        if (lpa & LPA_100FULL)
                                phydev->duplex = DUPLEX_FULL;
                } else
-
+Index: linux-2.6.27/include/linux/phy.h
+===================================================================
+--- linux-2.6.27.orig/include/linux/phy.h
++++ linux-2.6.27/include/linux/phy.h
+@@ -339,6 +339,11 @@ struct phy_driver {
+       u32 features;
+       u32 flags;
++       /* Called during discovery to test if the
++        * device can attach to the bus, even if
++        phy id and mask do not match */
++      bool (*detect)(struct mii_bus *bus, int addr);
++
+       /*
+        * Called to initialize the PHY,
+        * including after a reset
@@ -1,8 +1,8 @@
-Index: Goobie-2.6-27/drivers/char/Kconfig
+Index: linux-2.6.27/drivers/char/Kconfig
 ===================================================================
---- Goobie-2.6-27.orig/drivers/char/Kconfig    2008-12-12 11:39:46.000000000 +0100
-+++ Goobie-2.6-27/drivers/char/Kconfig 2008-12-12 11:39:48.000000000 +0100
-@@ -1014,6 +1014,23 @@
+--- linux-2.6.27.orig/drivers/char/Kconfig
++++ linux-2.6.27/drivers/char/Kconfig
+@@ -1014,6 +1014,24 @@ config GPIO_VR41XX
        tristate "NEC VR4100 series General-purpose I/O Unit support"
        depends on CPU_VR41XX
  
@@ -18,6 +18,7 @@ Index: Goobie-2.6-27/drivers/char/Kconfig
 +      tristate "mpc8313e exio"
 +      depends on PPC_MPC831x
 +      select INPUT
++      select LEDS_CLASS
 +      default y
 +      help
 +        Give userspace access to the Extenrder IO pins on the CPE board.
@@ -26,11 +27,11 @@ Index: Goobie-2.6-27/drivers/char/Kconfig
  config RAW_DRIVER
        tristate "RAW driver (/dev/raw/rawN)"
        depends on BLOCK
-Index: Goobie-2.6-27/drivers/char/Makefile
+Index: linux-2.6.27/drivers/char/Makefile
 ===================================================================
---- Goobie-2.6-27.orig/drivers/char/Makefile   2008-12-12 11:39:46.000000000 +0100
-+++ Goobie-2.6-27/drivers/char/Makefile        2008-12-12 11:39:48.000000000 +0100
-@@ -109,6 +109,8 @@
+--- linux-2.6.27.orig/drivers/char/Makefile
++++ linux-2.6.27/drivers/char/Makefile
+@@ -109,6 +109,8 @@ obj-$(CONFIG_TCG_TPM)              += tpm/
  obj-$(CONFIG_PS3_FLASH)               += ps3flash.o
  
  obj-$(CONFIG_JS_RTC)          += js-rtc.o
@@ -39,18 +40,18 @@ Index: Goobie-2.6-27/drivers/char/Makefile
  js-rtc-y = rtc.o
  
  # Files generated that shall be removed upon make clean
-Index: Goobie-2.6-27/drivers/char/mpc8313e_exio.c
+Index: linux-2.6.27/drivers/char/mpc8313e_exio.c
 ===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ Goobie-2.6-27/drivers/char/mpc8313e_exio.c 2008-12-12 11:41:21.000000000 +0100
-@@ -0,0 +1,170 @@
+--- /dev/null
++++ linux-2.6.27/drivers/char/mpc8313e_exio.c
+@@ -0,0 +1,240 @@
 +/*
 +* CPE Extender io driver
 +*
-+*
 +* Copyright (C) 2007, CenoSYS (www.cenosys.com).
-+* Alexandre Coffignal
-+* alexandre.coffignal@cenosys.com
++*
++* Alexandre Coffignal <alexandre.coffignal@cenosys.com>
++* Sylvain Giroudon <sylvain.giroudon@goobie.fr>
 +*
 +* This software program is licensed subject to the GNU General Public License
 +* (GPL).Version 2,June 1991, available at http://www.fsf.org/copyleft/gpl.html
@@ -69,6 +70,7 @@ Index: Goobie-2.6-27/drivers/char/mpc8313e_exio.c
 +#include <linux/of_platform.h>
 +#include <sysdev/fsl_soc.h>
 +#include <linux/cdev.h>
++#include <linux/leds.h>
 +
 +static char module_name[] = "exio";
 +
@@ -77,13 +79,61 @@ Index: Goobie-2.6-27/drivers/char/mpc8313e_exio.c
 +#define DEFAULT_STATE 0x58
 +#define EXIO_BASE 0xfa000000
 +#define EXIO_SIZE 0x2
++#define EXIO_LED_MASK 0x01
 +
 +static int major = 0;
 +static u8 exio_state = DEFAULT_STATE;
 +static void *exio_io = NULL;
 +static struct resource *exio_mem = NULL;
++static struct class * exio_class = NULL;
++
++
++static void
++exio_led_set(struct led_classdev *led_cdev,
++           enum led_brightness value)
++{
++      if ( value )
++              exio_state &= ~EXIO_LED_MASK;
++      else
++              exio_state |= EXIO_LED_MASK;
++
++      iowrite8(exio_state, exio_io);
++}
++
++static struct led_classdev exio_led = {
++      .name = "boc:blue:status",
++      .brightness_set = exio_led_set,
++};
++
++static inline int
++exio_led_init(void)
++{
++      return led_classdev_register(NULL, &exio_led);
++}
++
++
++static inline void
++exio_led_exit(void)
++{
++      led_classdev_unregister(&exio_led);
++}
++
++
++static inline void
++exio_led_suspend(void)
++{
++      led_classdev_suspend(&exio_led);
++}
++
++
++static inline void
++exio_led_resume(void)
++{
++      led_classdev_resume(&exio_led);
++}
 +
-+static ssize_t mpc8313e_exio_write(struct file *file, const char __user *data, size_t len, loff_t *ppos)
++
++static ssize_t exio_write(struct file *file, const char __user *data, size_t len, loff_t *ppos)
 +{
 +      unsigned m = iminor(file->f_path.dentry->d_inode);
 +      size_t i;
@@ -94,7 +144,6 @@ Index: Goobie-2.6-27/drivers/char/mpc8313e_exio.c
 +              char c;
 +              if (get_user(c, data + i))
 +                      return -EFAULT;
-+              //TODO write
 +
 +              mask=(1<<(7-m));
 +              switch (c) {
@@ -121,7 +170,7 @@ Index: Goobie-2.6-27/drivers/char/mpc8313e_exio.c
 +}
 +
 +
-+static ssize_t mpc8313e_exio_read(struct file *file, char __user * buf,
++static ssize_t exio_read(struct file *file, char __user * buf,
 +              size_t len, loff_t * ppos)
 +{
 +      unsigned m = iminor(file->f_path.dentry->d_inode);
@@ -137,87 +186,109 @@ Index: Goobie-2.6-27/drivers/char/mpc8313e_exio.c
 +
 +}
 +
-+static int mpc8313e_exio_open(struct inode *inode, struct file *file)
++static int exio_open(struct inode *inode, struct file *file)
 +{
 +    return 0;
 +}
 +
-+static int mpc8313e_exio_close(struct inode *inode, struct file *file)
++static int exio_close(struct inode *inode, struct file *file)
 +{
 +    printk(KERN_DEBUG "close()\n");
 +    return 0;
 +}
 +
-+struct file_operations mpc8313e_exio_fops =
++struct file_operations exio_fops =
 +{
-+      .owner =        THIS_MODULE,
-+    .read = mpc8313e_exio_read,
-+    .write = mpc8313e_exio_write,
-+    .open = mpc8313e_exio_open,
-+    .release = mpc8313e_exio_close  /* correspond a close */
++      .owner   = THIS_MODULE,
++      .read    = exio_read,
++      .write   = exio_write,
++      .open    = exio_open,
++      .release = exio_close  /* correspond a close */
 +};
 +
-+static struct class * exio_class;
 +
-+static int __init mpc8313e_exio_init(void)
++static void exio_cleanup(void)
 +{
-+      int rc,i;
++      if ( exio_mem )
++              release_mem_region(EXIO_BASE, EXIO_SIZE);
++      exio_mem = NULL;
++      exio_io = NULL;
 +
-+      rc = register_chrdev(major, module_name, &mpc8313e_exio_fops);
-+      if (rc < 0) {
++      if ( exio_class )
++              class_destroy(exio_class);
++      exio_class = NULL;
++
++      unregister_chrdev(major, module_name);
++}
++
++
++static int __init exio_init(void)
++{
++      int rc, i;
++
++      rc = register_chrdev(major, module_name, &exio_fops);
++      if ( rc < 0 )
 +              return rc;
-+      }
 +
-+      if (major == 0) {
++      if ( major == 0 ) {
 +              major = rc;  /* accept dynamic major number */
 +              printk(KERN_INFO "%s: successfully loaded with major %d\n",module_name, major);
 +      }
 +
 +      exio_class = class_create(THIS_MODULE, "exio");
++      if ( exio_class == NULL )
++              goto out_cleanup;
 +
-+      for (i = 0; i < NB_EXIO; i++)
-+      {
++      for (i = 0; i < NB_EXIO; i++) {
 +              device_create(exio_class, NULL, MKDEV(major, i) ,NULL, "exio%i", i);
-+
 +      }
 +
 +      /* System I/O Configuration Register Low */
-+      if (!(exio_mem = request_mem_region(EXIO_BASE, EXIO_SIZE, "mpc8313-exio")))
-+              return -ENOMEM;
++      exio_mem = request_mem_region(EXIO_BASE, EXIO_SIZE, "exio");
++      if ( exio_mem == NULL )
++              goto out_cleanup;
 +
-+      if (!(exio_io = ioremap(EXIO_BASE, EXIO_SIZE)))
-+      {
-+              release_mem_region(EXIO_BASE, EXIO_SIZE);
-+              exio_mem = NULL;
-+              return -ENOMEM;
-+      }
++      exio_io = ioremap(EXIO_BASE, EXIO_SIZE);
++      if ( exio_io == NULL )
++              goto out_cleanup;
++
++      /* Output default exio state */
 +      iowrite8(exio_state, exio_io);
 +
++      /* Register led class entry for driving the Status led */
++      exio_led_init();
++
 +      return 0;
++
++out_cleanup:
++      exio_cleanup();
++      return -ENOMEM;
 +}
 +
-+static void __exit mpc8313e_exio_cleanup(void)
++static void __exit exio_exit(void)
 +{
-+      if (exio_mem) release_mem_region(EXIO_BASE, EXIO_SIZE);
-+      exio_mem = NULL;
++      /* Unregister Status led */
++      exio_led_exit();
 +
-+    unregister_chrdev(major, module_name);
++      /* Cleanup all other gears */
++      exio_cleanup();
 +}
 +
++
 +module_param(major, int, 0644);
 +MODULE_PARM_DESC(major, "Static major number (none = dynamic)");
 +MODULE_AUTHOR("Alexandre Coffignal <alexandre.coffignal@cenosys.com>");
-+MODULE_DESCRIPTION("mpc8313e exio");
++MODULE_DESCRIPTION("boc01 exio management");
 +MODULE_LICENSE("GPL");
 +
-+module_init(mpc8313e_exio_init);
-+module_exit(mpc8313e_exio_cleanup);
++module_init(exio_init);
++module_exit(exio_exit);
 +
 +
-Index: Goobie-2.6-27/drivers/char/mpc8313e_gpio.c
+Index: linux-2.6.27/drivers/char/mpc8313e_gpio.c
 ===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ Goobie-2.6-27/drivers/char/mpc8313e_gpio.c 2008-12-12 11:40:52.000000000 +0100
+--- /dev/null
++++ linux-2.6.27/drivers/char/mpc8313e_gpio.c
 @@ -0,0 +1,148 @@
 +/*
 +* mpc8313e gpio driver
@@ -2,7 +2,7 @@ Index: linux-2.6.27/drivers/input/misc/cy3218-btns.c
 ===================================================================
 --- /dev/null
 +++ linux-2.6.27/drivers/input/misc/cy3218-btns.c
-@@ -0,0 +1,301 @@
+@@ -0,0 +1,373 @@
 +/*
 + * CAPSENSE Interface driver
 + *
@@ -26,6 +26,10 @@ Index: linux-2.6.27/drivers/input/misc/cy3218-btns.c
 +
 +static int capsense_attach_adapter(struct i2c_adapter *adapter);
 +static int capsense_detach_client(struct i2c_client *client);
++#ifdef CONFIG_PM
++static int capsense_suspend(struct i2c_client *client, pm_message_t mesg);
++static int capsense_resume(struct i2c_client *client);
++#endif
 +
 +#define CAPSENSE_NAME "Capsense"
 +
@@ -63,13 +67,17 @@ Index: linux-2.6.27/drivers/input/misc/cy3218-btns.c
 +      .id             = I2C_DRIVERID_CAPSENSE,
 +      .attach_adapter = &capsense_attach_adapter,
 +      .detach_client  = &capsense_detach_client,
++#ifdef CONFIG_PM
++      .suspend        = &capsense_suspend,
++      .resume         = &capsense_resume,
++#endif
 +};
 +
 +struct cy3218_led {
 +      struct led_classdev cdev;
 +      struct cy3218 *capsense;
 +      int port;
-+      unsigned char mask;
++      int bit;
 +};
 +
 +struct cy3218 {
@@ -143,17 +151,28 @@ Index: linux-2.6.27/drivers/input/misc/cy3218-btns.c
 +      struct cy3218_led *led = (struct cy3218_led *) led_cdev;
 +      struct cy3218 *capsense = led->capsense;
 +      int port = led->port;
++      unsigned char mask = (1 << led->bit);
 +
 +      if ( value )
-+              capsense->led_state[port] |= led->mask;
++              capsense->led_state[port] |= mask;
 +      else
-+              capsense->led_state[port] &= ~led->mask;
++              capsense->led_state[port] &= ~mask;
 +
 +      mutex_lock(&capsense->mutex);
 +      i2c_smbus_write_byte_data(&capsense->client, CAP_OUTPUT_PORT(port), capsense->led_state[port]);
 +      mutex_unlock(&capsense->mutex);
 +}
 +
++static void
++capsense_led_enable(struct cy3218_led *led, int state)
++{
++      struct cy3218 *capsense = led->capsense;
++
++      mutex_lock(&capsense->mutex);
++      i2c_smbus_write_byte_data(&capsense->client, CAP_OP_SEL(led->port, led->bit), state ? 0x00 : 0x80);
++      mutex_unlock(&capsense->mutex);
++}
++
 +static int
 +capsense_led_init(struct cy3218 *capsense)
 +{
@@ -167,22 +186,26 @@ Index: linux-2.6.27/drivers/input/misc/cy3218-btns.c
 +              led->cdev.brightness_set = capsense_led_set;
 +              led->capsense = capsense;
 +              led->port = ledmap[i].port;
-+              led->mask = (1 << ledmap[i].bit);
++              led->bit = ledmap[i].bit;
 +
 +              ret = led_classdev_register(&capsense->ipdev->input->dev, &led->cdev);
 +              if ( ret < 0 )
 +                      return -1;
 +
-+              i2c_smbus_write_byte_data(&capsense->client, CAP_OP_SEL(led->port, ledmap[i].bit), 0x00);
++              capsense_led_enable(led, 1);
 +      }
 +
 +      /* Switch all leds off */
++      mutex_lock(&capsense->mutex);
++
 +      capsense->led_state[0] = 0x00;
 +      i2c_smbus_write_byte_data(&capsense->client, CAP_OUTPUT_PORT(0), 0x00);
 +
 +      capsense->led_state[1] = 0x00;
 +      i2c_smbus_write_byte_data(&capsense->client, CAP_OUTPUT_PORT(1), 0x00);
 +
++      mutex_unlock(&capsense->mutex);
++
 +      return 0;
 +}
 +
@@ -198,6 +221,34 @@ Index: linux-2.6.27/drivers/input/misc/cy3218-btns.c
 +}
 +
 +
++static inline void
++capsense_led_suspend(struct cy3218 *capsense)
++{
++      int i;
++
++      for (i = 0; i < CAP_NLEDS; i++) {
++              struct cy3218_led *led = &(capsense->leds[i]);
++
++              led_classdev_suspend(&led->cdev);
++              capsense_led_enable(led, 0);
++      }
++}
++
++
++static inline void
++capsense_led_resume(struct cy3218 *capsense)
++{
++      int i;
++
++      for (i = 0; i < CAP_NLEDS; i++) {
++              struct cy3218_led *led = &(capsense->leds[i]);
++
++              capsense_led_enable(led, 1);
++              led_classdev_resume(&led->cdev);
++      }
++}
++
++
 +static int
 +capsense_probe(struct i2c_adapter *adapter, int addr, int kind)
 +{
@@ -289,6 +340,27 @@ Index: linux-2.6.27/drivers/input/misc/cy3218-btns.c
 +      return 0;
 +}
 +
++#ifdef CONFIG_PM
++static int capsense_suspend(struct i2c_client *client, pm_message_t mesg)
++{
++      struct cy3218 *capsense = i2c_get_clientdata(client);
++
++      capsense_led_suspend(capsense);
++
++      return 0;
++}
++
++static int capsense_resume(struct i2c_client *client)
++{
++      struct cy3218 *capsense = i2c_get_clientdata(client);
++
++      capsense_led_resume(capsense);
++
++      return 0;
++}
++#endif
++
++
 +static int __init capsense_buttons_init(void)
 +{
 +      return i2c_add_driver(&capsense_driver);
@@ -1,12 +1,13 @@
-diff -urN linux-2.6.27.orig/drivers/video/Kconfig linux-2.6.27/drivers/video/Kconfig
---- linux-2.6.27.orig/drivers/video/Kconfig    2008-10-10 00:13:53.000000000 +0200
-+++ linux-2.6.27/drivers/video/Kconfig 2009-01-14 12:50:33.000000000 +0100
-@@ -480,6 +480,19 @@
+Index: linux-2.6.27/drivers/video/Kconfig
+===================================================================
+--- linux-2.6.27.orig/drivers/video/Kconfig
++++ linux-2.6.27/drivers/video/Kconfig
+@@ -480,6 +480,28 @@ config FB_ARC
          this driver, say Y or M; otherwise say N. You must specify the
          GPIO IO address to be used for setting control and data.
  
 +config FB_NT7506
-+      tristate "Novatek 7506 Monochrome LCD board support"
++      tristate "Novatek 7506 LCD board support"
 +      depends on FB
 +      select FB_SYS_FILLRECT
 +      select FB_SYS_COPYAREA
@@ -15,16 +16,26 @@ diff -urN linux-2.6.27.orig/drivers/video/Kconfig linux-2.6.27/drivers/video/Kco
 +      select FB_BACKLIGHT
 +      select LCD_CLASS_DEVICE
 +      help
-+        This enables support for the Novatek 7506 Monochrome LCD board.
++        This is the frame buffer device driver for the Novatek 7506 Monochrome/Grayscale LCD board.
 +        The board is based on the NT7506 LCD controller.
++
++config FB_NT7506_GRAYSCALE
++      bool "Novatek 7506 Grayscale mode"
++      depends on FB_NT7506
++      default y
++      help
++        This option switches the Monochrome/Grayscale mode for the Novatek 7506 LCD board.
++        Say Y to enable 4-levels Grayscale mode (2 bpp).
++        Say N to enable Monochrome mode (1 bpp).
 +
  config FB_ATARI
        bool "Atari native chipset support"
        depends on (FB = y) && ATARI
-diff -urN linux-2.6.27.orig/drivers/video/Makefile linux-2.6.27/drivers/video/Makefile
---- linux-2.6.27.orig/drivers/video/Makefile   2008-10-10 00:13:53.000000000 +0200
-+++ linux-2.6.27/drivers/video/Makefile        2009-01-14 12:50:27.000000000 +0100
-@@ -31,6 +31,7 @@
+Index: linux-2.6.27/drivers/video/Makefile
+===================================================================
+--- linux-2.6.27.orig/drivers/video/Makefile
++++ linux-2.6.27/drivers/video/Makefile
+@@ -31,6 +31,7 @@ obj-$(CONFIG_FB_DEFERRED_IO)   += fb_def
  obj-$(CONFIG_FB_AMIGA)            += amifb.o c2p.o
  obj-$(CONFIG_FB_AM200EPD)         += am200epd.o
  obj-$(CONFIG_FB_ARC)              += arcfb.o
@@ -32,10 +43,11 @@ diff -urN linux-2.6.27.orig/drivers/video/Makefile linux-2.6.27/drivers/video/Ma
  obj-$(CONFIG_FB_CLPS711X)         += clps711xfb.o
  obj-$(CONFIG_FB_CYBER2000)        += cyber2000fb.o
  obj-$(CONFIG_FB_PM2)              += pm2fb.o
-diff -urN linux-2.6.27.orig/drivers/video/nt7506fb.c linux-2.6.27/drivers/video/nt7506fb.c
---- linux-2.6.27.orig/drivers/video/nt7506fb.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.27/drivers/video/nt7506fb.c      2009-01-14 12:51:02.000000000 +0100
-@@ -0,0 +1,794 @@
+Index: linux-2.6.27/drivers/video/nt7506fb.c
+===================================================================
+--- /dev/null
++++ linux-2.6.27/drivers/video/nt7506fb.c
+@@ -0,0 +1,847 @@
 +/*
 + * linux/drivers/video/nt7506fb.c -- FB driver for NT7506 monochrome LCD board
 + *
@@ -67,10 +79,9 @@ diff -urN linux-2.6.27.orig/drivers/video/nt7506fb.c linux-2.6.27/drivers/video/
 +#include <linux/errno.h>
 +#include <linux/string.h>
 +#include <linux/mm.h>
-+#include <linux/slab.h>
 +#include <linux/vmalloc.h>
 +#include <linux/delay.h>
-+#include <linux/interrupt.h>
++#include <linux/timer.h>
 +#include <linux/fb.h>
 +#include <linux/init.h>
 +#include <linux/platform_device.h>
@@ -122,7 +133,9 @@ diff -urN linux-2.6.27.orig/drivers/video/nt7506fb.c linux-2.6.27/drivers/video/
 +#define       NT_ADC_REV      0xA1
 +#define       NT_SHL_NOR      0xC0
 +#define       NT_SHL_REV      0xC8
++#define NT_SET_PWRSAVE  0xA8
 +#define       NT_OSC          0xAB
++#define NT_RLS_PWRSAVE  0xE1
 +#define NT_RESET      0xE2
 +#define NT_DATA_DIR   0xe8
 +#define NT_FRC_PWM    0x90
@@ -146,8 +159,6 @@ diff -urN linux-2.6.27.orig/drivers/video/nt7506fb.c linux-2.6.27/drivers/video/
 +#define LCD_HEIGHT    128
 +#define LCD_NPAGES    (LCD_HEIGHT/8)    /* LCD pages of 8 vertical pixels */
 +
-+#define LCD_GRAYSCALE
-+
 +#define DEFAULT_CONTRAST      20
 +#define DEFAULT_FPS   5
 +
@@ -156,7 +167,6 @@ diff -urN linux-2.6.27.orig/drivers/video/nt7506fb.c linux-2.6.27/drivers/video/
 +static unsigned long tuhold;
 +struct fb_info *info;
 +static struct timer_list fb_timer;
-+static char _refresh = 0;
 +static char _fps = DEFAULT_FPS;
 +static char _backlight = 1;
 +
@@ -165,13 +175,14 @@ diff -urN linux-2.6.27.orig/drivers/video/nt7506fb.c linux-2.6.27/drivers/video/
 +      struct fb_info *info;
 +      spinlock_t lock;
 +      struct lcd_device *lcd_dev;
++      int power;
 +      int contrast;
 +};
 +
 +static struct fb_fix_screeninfo nt7506fb_fix __initdata = {
 +      .id =           DRIVER_NAME,
 +      .type =         FB_TYPE_PACKED_PIXELS,
-+#ifdef LCD_GRAYSCALE
++#ifdef CONFIG_FB_NT7506_GRAYSCALE
 +      .visual =       FB_VISUAL_STATIC_PSEUDOCOLOR,
 +      .line_length =  LCD_WIDTH / 4,
 +#else
@@ -190,7 +201,7 @@ diff -urN linux-2.6.27.orig/drivers/video/nt7506fb.c linux-2.6.27/drivers/video/
 +      .xres_virtual   = LCD_WIDTH,
 +      .yres_virtual   = LCD_HEIGHT,
 +      .nonstd         = 1,
-+#ifdef LCD_GRAYSCALE
++#ifdef CONFIG_FB_NT7506_GRAYSCALE
 +      .bits_per_pixel = 2,
 +      .grayscale      = 1,
 +      .red            = { 0, 2, 0 },
@@ -315,19 +326,39 @@ diff -urN linux-2.6.27.orig/drivers/video/nt7506fb.c linux-2.6.27/drivers/video/
 +/*
 + * Backlight device management
 + */
++static void nt7506fb_start_timer(void);
 +
 +static int
 +nt7506fb_bl_update_status(struct backlight_device *bd)
 +{
-+      _refresh = 0;
++      struct nt7506fb_par *par = bl_get_data(bd);
++      int power_on = (bd->props.power != FB_BLANK_POWERDOWN);
++
++      _backlight = bd->props.brightness & power_on;
++
++      printk(KERN_INFO DRIVER_NAME ": backlight=%d power_on=%d\n", _backlight, power_on);
 +
-+      if (bd->props.power != FB_BLANK_UNBLANK ||
-+          bd->props.fb_blank != FB_BLANK_UNBLANK)
-+              _backlight = 0;
-+      else
-+              _backlight = bd->props.brightness;
++      if ( bd->props.power != par->power ) {
++              par->power = bd->props.power;
 +
-+      _refresh = 1;
++              if ( power_on ) {
++                      /* Power LCD device on */
++                      NT7506_writeb_ctl(NT_SET_PWRSAVE|OFF);
++                      NT7506_writeb_ctl(NT_RLS_PWRSAVE);
++
++                      /* Restart refresh timer */
++                      if ( ! timer_pending(&fb_timer) )
++                              nt7506fb_start_timer();
++              }
++              else {
++                      /* Throttle refresh timer */
++                      del_timer(&fb_timer);
++
++                      /* Put LCD device in power save mode */
++                      NT7506_writeb_ctl(NT_SET_PWRSAVE|ON);
++                      NT7506_writeb_ctl(NT_RLS_PWRSAVE);
++              }
++      }
 +
 +      //printk(KERN_INFO DRIVER_NAME": backlight = %d\n", _backlight);
 +      return 0;
@@ -362,6 +393,8 @@ diff -urN linux-2.6.27.orig/drivers/video/nt7506fb.c linux-2.6.27/drivers/video/
 +      bd->props.max_brightness = 1;
 +      bd->props.power = FB_BLANK_UNBLANK;
 +      bd->props.brightness = 1;
++      par->power = bd->props.power;
++
 +      nt7506fb_bl_update_status(bd);
 +
 +      printk(KERN_INFO DRIVER_NAME ": Backlight control initialized\n");
@@ -587,17 +620,19 @@ diff -urN linux-2.6.27.orig/drivers/video/nt7506fb.c linux-2.6.27/drivers/video/
 +
 +
 +static void
-+nt7506fb_refresh(unsigned long ignore_me)
++nt7506fb_start_timer(void)
 +{
-+      struct nt7506fb_par *par = info->par;
-+      if ( _refresh ) {
-+              nt7506fb_lcd_update(par);
-+      }
-+
 +      fb_timer.expires = jiffies + (HZ/_fps);
 +      add_timer(&fb_timer);
 +}
 +
++static void
++nt7506fb_refresh(unsigned long data)
++{
++      nt7506fb_lcd_update(info->par);
++      nt7506fb_start_timer();
++}
++
 +static int __init
 +nt7506fb_probe(struct platform_device *dev)
 +{
@@ -634,7 +669,7 @@ diff -urN linux-2.6.27.orig/drivers/video/nt7506fb.c linux-2.6.27/drivers/video/
 +      spin_lock_init(&par->lock);
 +      platform_set_drvdata(dev, info);
 +
-+#ifdef LCD_GRAYSCALE
++#ifdef CONFIG_FB_NT7506_GRAYSCALE
 +      /* Allocate cmap */
 +      retval = fb_alloc_cmap(&info->cmap, 4, 0);
 +      if (retval < 0) {
@@ -654,10 +689,7 @@ diff -urN linux-2.6.27.orig/drivers/video/nt7506fb.c linux-2.6.27/drivers/video/
 +      if (retval < 0)
 +              goto out_register;
 +
-+      init_timer(&fb_timer);
-+      fb_timer.function = nt7506fb_refresh;
-+      fb_timer.expires = jiffies + (HZ / _fps);
-+      add_timer(&fb_timer);
++      setup_timer(&fb_timer, nt7506fb_refresh, (unsigned long) par);
 +
 +      printk(KERN_INFO
 +             "fb%d: nt7506 frame buffer device, using %dK of video memory\n",
@@ -667,6 +699,8 @@ diff -urN linux-2.6.27.orig/drivers/video/nt7506fb.c linux-2.6.27/drivers/video/
 +      nt7506fb_bl_init(par);
 +      nt7506fb_lcd_init(par);
 +
++      nt7506fb_start_timer();
++
 +      return 0;
 +
 +out_register:
@@ -681,6 +715,8 @@ diff -urN linux-2.6.27.orig/drivers/video/nt7506fb.c linux-2.6.27/drivers/video/
 +{
 +      struct fb_info *info = platform_get_drvdata(dev);
 +
++      del_timer(&fb_timer);
++
 +      if (info) {
 +              nt7506fb_lcd_exit(info->par);
 +              nt7506fb_bl_exit(info);
@@ -691,9 +727,39 @@ diff -urN linux-2.6.27.orig/drivers/video/nt7506fb.c linux-2.6.27/drivers/video/
 +      return 0;
 +}
 +
++#ifdef CONFIG_PM
++static int nt7506fb_suspend(struct platform_device *dev, pm_message_t state)
++{
++      struct fb_info *info = platform_get_drvdata(dev);
++
++      printk(KERN_INFO DRIVER_NAME ": Switching to Power Save mode\n");
++
++      info->bl_dev->props.power = FB_BLANK_POWERDOWN;
++      nt7506fb_bl_update_status(info->bl_dev);
++
++      return 0;
++}
++
++static int nt7506fb_resume(struct platform_device *dev)
++{
++      struct fb_info *info = platform_get_drvdata(dev);
++
++      info->bl_dev->props.power = FB_BLANK_UNBLANK;
++      nt7506fb_bl_update_status(info->bl_dev);
++
++      return 0;
++}
++#else
++#define nt7506fb_suspend NULL
++#define nt7506fb_resume  NULL
++#endif
++
++
 +static struct platform_driver nt7506fb_driver = {
 +      .probe  = nt7506fb_probe,
 +      .remove = nt7506fb_remove,
++      .suspend = nt7506fb_suspend,
++      .resume  = nt7506fb_resume,
 +      .driver = {
 +              .name   = DRIVER_NAME,
 +      },
@@ -775,7 +841,7 @@ diff -urN linux-2.6.27.orig/drivers/video/nt7506fb.c linux-2.6.27/drivers/video/
 +      NT7506_writeb_ctl(NT_DATA_DIR); NT7506_writeb_ctl(0);
 +      NT7506_writeb_ctl(NT_FRC_PWM|PWM15);
 +
-+#ifdef LCD_GRAYSCALE
++#ifdef CONFIG_FB_NT7506_GRAYSCALE
 +      /* Feed grayscale palette */
 +      NT7506_writeb_ctl(NT_GRAY_SCALE | GRAY_WHITE_AB);
 +      NT7506_writeb_ctl(0x00);
@@ -808,7 +874,6 @@ diff -urN linux-2.6.27.orig/drivers/video/nt7506fb.c linux-2.6.27/drivers/video/
 +      NT7506_writeb_ctl(NT_DISP|ON);
 +      /* Set Initial Start Line Address */
 +      NT7506_writeb_ctl(NT_START_LINE);       NT7506_writeb_ctl(0x00);
-+      _refresh=1;
 +}
 +
 +static void __exit nt7506fb_exit(void)
@@ -830,9 +895,10 @@ diff -urN linux-2.6.27.orig/drivers/video/nt7506fb.c linux-2.6.27/drivers/video/
 +MODULE_AUTHOR("Alexandre Coffignal");
 +MODULE_LICENSE("GPL");
 +
-diff -urN linux-2.6.27.orig/include/linux/nt7506fb.h linux-2.6.27/include/linux/nt7506fb.h
---- linux-2.6.27.orig/include/linux/nt7506fb.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.27/include/linux/nt7506fb.h      2009-01-14 12:51:12.000000000 +0100
+Index: linux-2.6.27/include/linux/nt7506fb.h
+===================================================================
+--- /dev/null
++++ linux-2.6.27/include/linux/nt7506fb.h
 @@ -0,0 +1,31 @@
 +
 +/*
diff --git a/packages/linux/linux-2.6.27/boc01/014-090115-pm-wakeup.patch b/packages/linux/linux-2.6.27/boc01/014-090115-pm-wakeup.patch
new file mode 100644 (file)
index 0000000..536a788
--- /dev/null
@@ -0,0 +1,195 @@
+Index: linux-2.6.27/arch/powerpc/platforms/83xx/Kconfig
+===================================================================
+--- linux-2.6.27.orig/arch/powerpc/platforms/83xx/Kconfig
++++ linux-2.6.27/arch/powerpc/platforms/83xx/Kconfig
+@@ -104,6 +104,13 @@ config ASP834x
+ endif
++
++config WAKEUP_IT
++      tristate "83xx interrupt for PM wakeup"
++      help
++        This enables a driver to be used as a wakeup source .
++
++
+ # used for usb
+ config PPC_MPC831x
+       bool
+Index: linux-2.6.27/arch/powerpc/platforms/83xx/Makefile
+===================================================================
+--- linux-2.6.27.orig/arch/powerpc/platforms/83xx/Makefile
++++ linux-2.6.27/arch/powerpc/platforms/83xx/Makefile
+@@ -14,3 +14,4 @@ obj-$(CONFIG_MPC837x_MDS)    += mpc837x_mds
+ obj-$(CONFIG_SBC834x)         += sbc834x.o
+ obj-$(CONFIG_MPC837x_RDB)     += mpc837x_rdb.o
+ obj-$(CONFIG_ASP834x)         += asp834x.o
++obj-$(CONFIG_WAKEUP_IT)               += wakeup-it.o
+Index: linux-2.6.27/arch/powerpc/platforms/83xx/wakeup-it.c
+===================================================================
+--- /dev/null
++++ linux-2.6.27/arch/powerpc/platforms/83xx/wakeup-it.c
+@@ -0,0 +1,163 @@
++/*
++ * This support a driver to be used as a wakeup source on the MPC8313.
++ *
++ * Copyright (c) 2008 Cenosys
++ *
++ * Alexandre Coffignal <alexandre.coffignal@censoys.com>
++ * Sylvain Giroudon <sylvain.giroudon@goobie.fr>
++ *
++ * 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.
++ */
++
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/module.h>
++#include <linux/interrupt.h>
++#include <linux/of_platform.h>
++#include <linux/reboot.h>
++#include <linux/irq.h>
++
++#include <sysdev/fsl_soc.h>
++
++#define DRIVER_NAME "wakeup-it"
++
++char suspend = 0;
++
++static char *wakeup_irq_ids[] = {
++      "capsense",
++      "rfid",
++};
++
++struct wakeup_priv {
++      int nirq;
++      int irq[ARRAY_SIZE(wakeup_irq_ids)];
++      spinlock_t lock;
++};
++
++struct wakeup_irq_desc {
++      char *name;
++      int index;
++};
++
++static irqreturn_t wakeup(int irq, void *dev_id)
++{
++      //printk(KERN_INFO "===== WAKEUP INTERRUPT %d !!\n", irq);
++
++      if ( suspend )
++              kernel_restart(NULL);
++      return IRQ_HANDLED ;
++}
++
++
++static void wakeup_free(struct wakeup_priv *priv)
++{
++      int i;
++
++      for (i = 0; i < priv->nirq; i++) {
++              free_irq(priv->irq[i], priv);
++      }
++
++      kfree(priv);
++}
++
++
++static int __devinit wakeup_probe(struct of_device *dev, const struct of_device_id *match)
++{
++      struct device_node *np = dev->node;
++      struct resource res;
++      int ret = 0;
++      struct wakeup_priv *priv;
++      int i;
++
++      priv = kmalloc(sizeof(struct wakeup_priv), GFP_KERNEL);
++      if (!priv)
++              return -ENOMEM;
++
++      priv->nirq = 0;
++      spin_lock_init(&priv->lock);
++      dev_set_drvdata(&dev->dev, priv);
++
++      ret = of_address_to_resource(np, 0, &res);
++      if (ret)
++              goto out;
++
++      for (i = 0; i < ARRAY_SIZE(wakeup_irq_ids); i++) {
++              char *id = wakeup_irq_ids[i];
++              char it_name[32];
++              int it_num;
++
++              it_num = irq_of_parse_and_map(np, i);
++              if ( it_num == NO_IRQ ) {
++                      dev_err(&dev->dev, DRIVER_NAME ": interrupt #%d (%s) does not exist in device tree.\n", i, id);
++                      ret = -ENODEV;
++                      goto out;
++              }
++
++              set_irq_type(it_num, IRQ_TYPE_EDGE_FALLING);
++
++              snprintf(it_name, sizeof(it_name), DRIVER_NAME ":%s", id);
++
++              ret = request_irq(it_num, wakeup, 0, it_name, priv);
++              if ( ret ) {
++                      printk(KERN_WARNING DRIVER_NAME ": cannot request interrupt %d (%s)\n", it_num, id);
++                      goto out;
++              }
++
++              printk(KERN_INFO DRIVER_NAME ": accepting wakeup event from %s (%d)\n", id, it_num);
++
++              priv->irq[priv->nirq++] = it_num;
++      }
++
++      return 0;
++
++out:
++      wakeup_free(priv);
++      return ret;
++}
++
++static int __devexit wakeup_remove(struct of_device *dev)
++{
++      struct wakeup_priv *priv = dev_get_drvdata(&dev->dev);
++      wakeup_free(priv);
++      return 0;
++}
++
++static struct of_device_id wakeup_match[] = {
++      {
++              .compatible = "fsl,wakeup-it",
++      },
++      {},
++};
++
++static int wakeup_suspend(struct of_device * dev, pm_message_t state)
++{
++      int ret = 0;
++      printk(KERN_INFO DRIVER_NAME ": suspend\n");
++      suspend=1;
++      return ret;
++}
++
++
++static struct of_platform_driver wakeup_driver = {
++      .name = DRIVER_NAME,
++      .match_table = wakeup_match,
++      .probe = wakeup_probe,
++      .suspend = wakeup_suspend,
++      .remove = __devexit_p(wakeup_remove)
++
++};
++
++static int __init wakeup_init(void)
++{
++      return of_register_platform_driver(&wakeup_driver);
++}
++
++static void __exit wakeup_exit(void)
++{
++      of_unregister_platform_driver(&wakeup_driver);
++}
++
++module_init(wakeup_init);
++module_exit(wakeup_exit);
index 5064581..fec7c85 100644 (file)
                        sleep = <&pmc 0x00300000>;
                };
 
-               
 
                mdio@24520 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        compatible = "fsl,gianfar-mdio";
-                       reg = <0x24520 0x20>;                           
+                       reg = <0x24520 0x20>;
                        phy4: ethernet-phy@4 {
                                interrupt-parent = <&ipic>;
                                interrupts = <20 0x8>;
                                device_type = "ethernet-phy";
                        };
                };
-               
+
 
                enet1: ethernet@25000 {
                        cell-index = <1>;
                        interrupts = <91 8 79 8 85 8 73 8>;
                        interrupt-parent = <&ipic>;
                };
+
+               wakeup@27000 {
+                       compatible = "fsl,wakeup-it", "fsl,gtm";
+                       reg = <0x27000 0x100>;
+                       interrupts = <17 8 19 8>;
+                       interrupt-parent = <&ipic>;
+               };
+
        };
 
        sleep-nexus {
                pci0: pci@e0008500 {
                        cell-index = <1>;
                        interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
-                       interrupt-map = <                               
+                       interrupt-map = <
                                        /* IDSEL 0x0F - PCI slot */
                                         0x7800 0x0 0x0 0x1 &ipic 48 0x8
                                         0x7800 0x0 0x0 0x2 &ipic 48 0x8
index bb67f51..f302f07 100644 (file)
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
 # Linux kernel version: 2.6.27
-# Wed Jan 14 17:43:17 2009
+# Fri Jan 16 19:05:52 2009
 #
 # CONFIG_PPC64 is not set
 
@@ -182,6 +182,7 @@ CONFIG_MPC831x_RDB=y
 # CONFIG_MPC837x_RDB is not set
 # CONFIG_SBC834x is not set
 # CONFIG_ASP834x is not set
+CONFIG_WAKEUP_IT=y
 CONFIG_PPC_MPC831x=y
 # CONFIG_PPC_86xx is not set
 # CONFIG_EMBEDDED6xx is not set
@@ -762,11 +763,11 @@ CONFIG_BLK_DEV_RAM_COUNT=16
 CONFIG_BLK_DEV_RAM_SIZE=32768
 # CONFIG_BLK_DEV_XIP is not set
 # CONFIG_CDROM_PKTCDVD is not set
-CONFIG_ATA_OVER_ETH=m
+# CONFIG_ATA_OVER_ETH is not set
 # CONFIG_BLK_DEV_HD is not set
 CONFIG_MISC_DEVICES=y
 # CONFIG_PHANTOM is not set
-CONFIG_EEPROM_93CX6=m
+# CONFIG_EEPROM_93CX6 is not set
 # CONFIG_SGI_IOC4 is not set
 # CONFIG_TIFM_CORE is not set
 # CONFIG_ENCLOSURE_SERVICES is not set
@@ -1064,7 +1065,6 @@ CONFIG_I2C=y
 CONFIG_I2C_BOARDINFO=y
 CONFIG_I2C_CHARDEV=y
 CONFIG_I2C_HELPER_AUTO=y
-CONFIG_I2C_ALGOBIT=y
 
 #
 # I2C Hardware Bus support
@@ -1091,7 +1091,7 @@ CONFIG_I2C_ALGOBIT=y
 #
 # I2C system bus drivers (mostly embedded / system-on-chip)
 #
-CONFIG_I2C_GPIO=y
+# CONFIG_I2C_GPIO is not set
 CONFIG_I2C_MPC=y
 # CONFIG_I2C_OCORES is not set
 # CONFIG_I2C_SIMTEC is not set
@@ -1118,7 +1118,7 @@ CONFIG_I2C_MPC=y
 # Miscellaneous I2C Chip support
 #
 # CONFIG_DS1682 is not set
-# CONFIG_AT24 is not set
+CONFIG_AT24=y
 CONFIG_ISL12024EEPROM=y
 # CONFIG_SENSORS_EEPROM is not set
 # CONFIG_SENSORS_PCF8574 is not set
@@ -1169,7 +1169,10 @@ CONFIG_GPIO_SYSFS=y
 # CONFIG_GPIO_MAX7301 is not set
 # CONFIG_GPIO_MCP23S08 is not set
 # CONFIG_W1 is not set
-# CONFIG_POWER_SUPPLY is not set
+CONFIG_POWER_SUPPLY=y
+CONFIG_POWER_SUPPLY_DEBUG=y
+# CONFIG_PDA_POWER is not set
+# CONFIG_BATTERY_DS2760 is not set
 CONFIG_HWMON=y
 # CONFIG_HWMON_VID is not set
 # CONFIG_SENSORS_AD7414 is not set
@@ -1279,8 +1282,7 @@ CONFIG_SSB_POSSIBLE=y
 #
 # Multimedia drivers
 #
-CONFIG_DAB=y
-# CONFIG_USB_DABUSB is not set
+# CONFIG_DAB is not set
 
 #
 # Graphics support
@@ -1314,6 +1316,7 @@ CONFIG_FB_BACKLIGHT=y
 # CONFIG_FB_PM2 is not set
 # CONFIG_FB_CYBER2000 is not set
 CONFIG_FB_NT7506=y
+CONFIG_FB_NT7506_GRAYSCALE=y
 # CONFIG_FB_OF is not set
 # CONFIG_FB_CT65550 is not set
 # CONFIG_FB_ASILIANT is not set
@@ -1525,7 +1528,7 @@ CONFIG_LEDS_CLASS=y
 # LED drivers
 #
 # CONFIG_LEDS_PCA9532 is not set
-CONFIG_LEDS_GPIO=y
+# CONFIG_LEDS_GPIO is not set
 # CONFIG_LEDS_PCA955X is not set
 
 #
index 265f5e3..7da406a 100644 (file)
@@ -1,6 +1,6 @@
 require linux.inc
 
-PR = "r2"
+PR = "r3"
 
 # Mark archs/machines that this kernel supports
 DEFAULT_PREFERENCE = "-1"
@@ -13,16 +13,16 @@ SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
 
 SRC_URI_append_boc01 = "\
        file://boc01.dts \
-       file://002-081105-headers.patch;patch=1 \
+       file://001-090114-sqn11x0-usb-hack.patch;patch=1 \
        file://004-081205-usb.patch;patch=1 \
-       file://005-081217-isl12024.patch;patch=1 \
+       file://005-090112-isl12024.patch;patch=1 \
        file://007-081217-lm73.patch;patch=1 \
        file://008-081208-spi.patch;patch=1 \
-       file://010-081208-mii.patch;patch=1 \
-       file://011-081218-gpio.patch;patch=1 \
-       file://012-081223-cy3218-btns.patch;patch=1 \
-       file://013-090114-lcd.patch;patch=1 \
-       file://014-090114-sqn11x0-usb-hack.patch;patch=1 \
+       file://010-090112-mii.patch;patch=1 \
+       file://011-090115-gpio.patch;patch=1 \
+       file://012-090115-cy3218-btns.patch;patch=1 \
+       file://013-090116-lcd.patch;patch=1 \
+       file://014-090115-pm-wakeup.patch;patch=1 \
        "
 
 SRC_URI_append_progear = "file://progear-bl.patch;patch=1\