summaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
Diffstat (limited to 'packages')
-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++)<