diff options
Diffstat (limited to 'packages')
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++)< |
