summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2009-01-16 19:17:51 +0100
committerJeremy Lainé <jeremy.laine@m4x.org>2009-01-16 19:17:51 +0100
commit98af7a4161a184a831395688dcebc4b1597eb39d (patch)
tree5a304ceca3952c7821e3e8026d474b829bc8f238
parent932012553f0b17f14c06e53f04793bd4757dedba (diff)
linux-2.6.27: update patches for boc01
-rw-r--r--packages/linux/linux-2.6.27/boc01/001-090114-sqn11x0-usb-hack.patch (renamed from packages/linux/linux-2.6.27/boc01/014-090114-sqn11x0-usb-hack.patch)0
-rw-r--r--packages/linux/linux-2.6.27/boc01/002-081105-headers.patch112
-rw-r--r--packages/linux/linux-2.6.27/boc01/005-090112-isl12024.patch (renamed from packages/linux/linux-2.6.27/boc01/005-081217-isl12024.patch)20
-rw-r--r--packages/linux/linux-2.6.27/boc01/009-081218-devicetree.patch209
-rw-r--r--packages/linux/linux-2.6.27/boc01/010-090112-mii.patch (renamed from packages/linux/linux-2.6.27/boc01/010-081208-mii.patch)211
-rw-r--r--packages/linux/linux-2.6.27/boc01/011-090115-gpio.patch (renamed from packages/linux/linux-2.6.27/boc01/011-081218-gpio.patch)179
-rw-r--r--packages/linux/linux-2.6.27/boc01/012-090115-cy3218-btns.patch (renamed from packages/linux/linux-2.6.27/boc01/012-081223-cy3218-btns.patch)84
-rw-r--r--packages/linux/linux-2.6.27/boc01/013-090116-lcd.patch (renamed from packages/linux/linux-2.6.27/boc01/013-090114-lcd.patch)154
-rw-r--r--packages/linux/linux-2.6.27/boc01/014-090115-pm-wakeup.patch195
-rw-r--r--packages/linux/linux-2.6.27/boc01/boc01.dts15
-rw-r--r--packages/linux/linux-2.6.27/boc01/defconfig23
-rw-r--r--packages/linux/linux_2.6.27.bb16
12 files changed, 728 insertions, 490 deletions
diff --git a/packages/linux/linux-2.6.27/boc01/014-090114-sqn11x0-usb-hack.patch b/packages/linux/linux-2.6.27/boc01/001-090114-sqn11x0-usb-hack.patch
index 4bd44e25db..4bd44e25db 100644
--- a/packages/linux/linux-2.6.27/boc01/014-090114-sqn11x0-usb-hack.patch
+++ b/packages/linux/linux-2.6.27/boc01/001-090114-sqn11x0-usb-hack.patch
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
index b82dcbce4a..0000000000
--- a/packages/linux/linux-2.6.27/boc01/002-081105-headers.patch
+++ /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
diff --git a/packages/linux/linux-2.6.27/boc01/005-081217-isl12024.patch b/packages/linux/linux-2.6.27/boc01/005-090112-isl12024.patch
index 62361080b9..32bde9dfc8 100644
--- a/packages/linux/linux-2.6.27/boc01/005-081217-isl12024.patch
+++ b/packages/linux/linux-2.6.27/boc01/005-090112-isl12024.patch
@@ -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
index cf5af2610c..0000000000
--- a/packages/linux/linux-2.6.27/boc01/009-081218-devicetree.patch
+++ /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>;
diff --git a/packages/linux/linux-2.6.27/boc01/010-081208-mii.patch b/packages/linux/linux-2.6.27/boc01/010-090112-mii.patch
index 0f7d90d0db..33c6cb7498 100644
--- a/packages/linux/linux-2.6.27/boc01/010-081208-mii.patch
+++ b/packages/linux/linux-2.6.27/boc01/010-090112-mii.patch
@@ -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;
@@ -92,9 +94,27 @@
/* 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);
@@ -103,18 +123,73 @@
}
}
-@@ -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);
@@ -125,7 +200,7 @@
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);
@@ -150,7 +225,38 @@
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;
@@ -159,7 +265,7 @@
/* 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)
}
}
@@ -167,7 +273,7 @@
/* 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);
@@ -177,7 +283,7 @@
netif_stop_queue(dev);
-@@ -1777,86 +1749,6 @@
+@@ -1777,86 +1674,6 @@ static irqreturn_t gfar_interrupt(int ir
return IRQ_HANDLED;
}
@@ -264,9 +370,11 @@
/* 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
@@ -275,7 +383,7 @@
#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 */
@@ -283,9 +391,11 @@
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;
@@ -308,8 +418,16 @@
}
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 \
@@ -318,9 +436,11 @@
| 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;
@@ -329,7 +449,7 @@
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);
@@ -338,7 +458,7 @@
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;
@@ -347,7 +467,7 @@
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;
@@ -356,7 +476,7 @@
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;
@@ -365,4 +485,19 @@
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
diff --git a/packages/linux/linux-2.6.27/boc01/011-081218-gpio.patch b/packages/linux/linux-2.6.27/boc01/011-090115-gpio.patch
index 2381140ab2..0ff389ffe7 100644
--- a/packages/linux/linux-2.6.27/boc01/011-081218-gpio.patch
+++ b/packages/linux/linux-2.6.27/boc01/011-090115-gpio.patch
@@ -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
diff --git a/packages/linux/linux-2.6.27/boc01/012-081223-cy3218-btns.patch b/packages/linux/linux-2.6.27/boc01/012-090115-cy3218-btns.patch
index 4ad9feb762..2529be5274 100644
--- a/packages/linux/linux-2.6.27/boc01/012-081223-cy3218-btns.patch
+++ b/packages/linux/linux-2.6.27/boc01/012-090115-cy3218-btns.patch
@@ -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);
diff --git a/packages/linux/linux-2.6.27/boc01/013-090114-lcd.patch b/packages/linux/linux-2.6.27/boc01/013-090116-lcd.patch
index 1ab2468ce0..46a7534d2f 100644
--- a/packages/linux/linux-2.6.27/boc01/013-090114-lcd.patch
+++ b/packages/linux/linux-2.6.27/boc01/013-090116-lcd.patch
@@ -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
index 0000000000..536a788ffc
--- /dev/null
+++ b/packages/linux/linux-2.6.27/boc01/014-090115-pm-wakeup.patch
@@ -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);
diff --git a/packages/linux/linux-2.6.27/boc01/boc01.dts b/packages/linux/linux-2.6.27/boc01/boc01.dts
index 506458178c..fec7c85673 100644
--- a/packages/linux/linux-2.6.27/boc01/boc01.dts
+++ b/packages/linux/linux-2.6.27/boc01/boc01.dts
@@ -180,13 +180,12 @@
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>;
@@ -194,7 +193,7 @@
device_type = "ethernet-phy";
};
};
-
+
enet1: ethernet@25000 {
cell-index = <1>;
@@ -263,6 +262,14 @@
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 {
@@ -275,7 +282,7 @@
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
diff --git a/packages/linux/linux-2.6.27/boc01/defconfig b/packages/linux/linux-2.6.27/boc01/defconfig
index bb67f5135b..f302f0747d 100644
--- a/packages/linux/linux-2.6.27/boc01/defconfig
+++ b/packages/linux/linux-2.6.27/boc01/defconfig
@@ -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
#
diff --git a/packages/linux/linux_2.6.27.bb b/packages/linux/linux_2.6.27.bb
index 265f5e33bc..7da406a0d3 100644
--- a/packages/linux/linux_2.6.27.bb
+++ b/packages/linux/linux_2.6.27.bb
@@ -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\