diff options
author | Jeremy Lainé <jeremy.laine@m4x.org> | 2009-01-16 19:17:51 +0100 |
---|---|---|
committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2009-01-16 19:17:51 +0100 |
commit | 98af7a4161a184a831395688dcebc4b1597eb39d (patch) | |
tree | 5a304ceca3952c7821e3e8026d474b829bc8f238 /packages/linux/linux-2.6.27 | |
parent | 932012553f0b17f14c06e53f04793bd4757dedba (diff) |
linux-2.6.27: update patches for boc01
Diffstat (limited to 'packages/linux/linux-2.6.27')
11 files changed, 720 insertions, 482 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 # |