diff options
Diffstat (limited to 'target/linux/brcm47xx/patches-2.6.23')
5 files changed, 180 insertions, 136 deletions
diff --git a/target/linux/brcm47xx/patches-2.6.23/120-b44_ssb_support.patch b/target/linux/brcm47xx/patches-2.6.23/120-b44_ssb_support.patch index 06865cf..29125c6 100644 --- a/target/linux/brcm47xx/patches-2.6.23/120-b44_ssb_support.patch +++ b/target/linux/brcm47xx/patches-2.6.23/120-b44_ssb_support.patch @@ -1,7 +1,7 @@ -Index: linux-2.6.23/drivers/net/b44.c +Index: linux-2.6.23.16/drivers/net/b44.c =================================================================== ---- linux-2.6.23.orig/drivers/net/b44.c 2007-10-13 10:58:27.872607266 +0200 -+++ linux-2.6.23/drivers/net/b44.c 2007-10-13 11:00:46.916530927 +0200 +--- linux-2.6.23.16.orig/drivers/net/b44.c 2008-02-19 01:35:58.000000000 +0100 ++++ linux-2.6.23.16/drivers/net/b44.c 2008-02-19 01:37:04.000000000 +0100 @@ -1,7 +1,9 @@ -/* b44.c: Broadcom 4400 device driver. +/* b44.c: Broadcom 4400/47xx device driver. @@ -39,7 +39,7 @@ Index: linux-2.6.23/drivers/net/b44.c MODULE_LICENSE("GPL"); MODULE_VERSION(DRV_MODULE_VERSION); -@@ -96,18 +100,11 @@ +@@ -96,18 +100,11 @@ static int b44_debug = -1; /* -1 == use module_param(b44_debug, int, 0); MODULE_PARM_DESC(b44_debug, "B44 bitmapped debugging message enable value"); @@ -61,7 +61,7 @@ Index: linux-2.6.23/drivers/net/b44.c static void b44_halt(struct b44 *); static void b44_init_rings(struct b44 *); -@@ -119,6 +116,7 @@ +@@ -119,6 +116,7 @@ static void b44_init_hw(struct b44 *, in static int dma_desc_align_mask; static int dma_desc_sync_size; @@ -69,7 +69,7 @@ Index: linux-2.6.23/drivers/net/b44.c static const char b44_gstrings[][ETH_GSTRING_LEN] = { #define _B44(x...) # x, -@@ -126,35 +124,24 @@ +@@ -126,35 +124,24 @@ B44_STAT_REG_DECLARE #undef _B44 }; @@ -123,7 +123,7 @@ Index: linux-2.6.23/drivers/net/b44.c } static int b44_wait_bit(struct b44 *bp, unsigned long reg, -@@ -182,117 +169,29 @@ +@@ -182,117 +169,29 @@ static int b44_wait_bit(struct b44 *bp, return 0; } @@ -254,7 +254,7 @@ Index: linux-2.6.23/drivers/net/b44.c { u32 val; -@@ -328,14 +227,14 @@ +@@ -328,14 +227,14 @@ static void b44_enable_ints(struct b44 * bw32(bp, B44_IMASK, bp->imask); } @@ -271,7 +271,7 @@ Index: linux-2.6.23/drivers/net/b44.c (reg << MDIO_DATA_RA_SHIFT) | (MDIO_TA_VALID << MDIO_DATA_TA_SHIFT))); err = b44_wait_bit(bp, B44_EMAC_ISTAT, EMAC_INT_MII, 100, 0); -@@ -344,18 +243,34 @@ +@@ -344,18 +243,34 @@ static int b44_readphy(struct b44 *bp, i return err; } @@ -308,7 +308,7 @@ Index: linux-2.6.23/drivers/net/b44.c /* miilib interface */ /* FIXME FIXME: phy_id is ignored, bp->phy_addr use is unconditional * due to code existing before miilib use was added to this driver. -@@ -384,6 +299,8 @@ +@@ -384,6 +299,8 @@ static int b44_phy_reset(struct b44 *bp) u32 val; int err; @@ -317,7 +317,7 @@ Index: linux-2.6.23/drivers/net/b44.c err = b44_writephy(bp, MII_BMCR, BMCR_RESET); if (err) return err; -@@ -442,11 +359,27 @@ +@@ -442,11 +359,27 @@ static void b44_set_flow_ctrl(struct b44 __b44_set_flow_ctrl(bp, pause_enab); } @@ -345,7 +345,7 @@ Index: linux-2.6.23/drivers/net/b44.c if ((err = b44_readphy(bp, B44_MII_ALEDCTRL, &val)) != 0) goto out; if ((err = b44_writephy(bp, B44_MII_ALEDCTRL, -@@ -542,6 +475,19 @@ +@@ -542,6 +475,19 @@ static void b44_check_phy(struct b44 *bp { u32 bmsr, aux; @@ -365,7 +365,7 @@ Index: linux-2.6.23/drivers/net/b44.c if (!b44_readphy(bp, MII_BMSR, &bmsr) && !b44_readphy(bp, B44_MII_AUXCTRL, &aux) && (bmsr != 0xffff)) { -@@ -617,10 +563,10 @@ +@@ -617,10 +563,10 @@ static void b44_tx(struct b44 *bp) BUG_ON(skb == NULL); @@ -378,7 +378,7 @@ Index: linux-2.6.23/drivers/net/b44.c rp->skb = NULL; dev_kfree_skb_irq(skb); } -@@ -657,9 +603,9 @@ +@@ -657,9 +603,9 @@ static int b44_alloc_rx_skb(struct b44 * if (skb == NULL) return -ENOMEM; @@ -390,7 +390,7 @@ Index: linux-2.6.23/drivers/net/b44.c /* Hardware bug work-around, the chip is unable to do PCI DMA to/from anything above 1GB :-( */ -@@ -667,18 +613,18 @@ +@@ -667,18 +613,18 @@ static int b44_alloc_rx_skb(struct b44 * mapping + RX_PKT_BUF_SZ > DMA_30BIT_MASK) { /* Sigh... */ if (!dma_mapping_error(mapping)) @@ -413,7 +413,7 @@ Index: linux-2.6.23/drivers/net/b44.c dev_kfree_skb_any(skb); return -ENOMEM; } -@@ -705,9 +651,9 @@ +@@ -705,9 +651,9 @@ static int b44_alloc_rx_skb(struct b44 * dp->addr = cpu_to_le32((u32) mapping + RX_PKT_OFFSET + bp->dma_offset); if (bp->flags & B44_FLAG_RX_RING_HACK) @@ -426,7 +426,7 @@ Index: linux-2.6.23/drivers/net/b44.c return RX_PKT_BUF_SZ; } -@@ -734,9 +680,9 @@ +@@ -734,9 +680,9 @@ static void b44_recycle_rx(struct b44 *b pci_unmap_addr(src_map, mapping)); if (bp->flags & B44_FLAG_RX_RING_HACK) @@ -439,7 +439,7 @@ Index: linux-2.6.23/drivers/net/b44.c ctrl = src_desc->ctrl; if (dest_idx == (B44_RX_RING_SIZE - 1)) -@@ -750,13 +696,13 @@ +@@ -750,13 +696,13 @@ static void b44_recycle_rx(struct b44 *b src_map->skb = NULL; if (bp->flags & B44_FLAG_RX_RING_HACK) @@ -458,7 +458,7 @@ Index: linux-2.6.23/drivers/net/b44.c } static int b44_rx(struct b44 *bp, int budget) -@@ -776,9 +722,9 @@ +@@ -776,9 +722,9 @@ static int b44_rx(struct b44 *bp, int bu struct rx_header *rh; u16 len; @@ -470,7 +470,7 @@ Index: linux-2.6.23/drivers/net/b44.c rh = (struct rx_header *) skb->data; len = le16_to_cpu(rh->len); if ((len > (RX_PKT_BUF_SZ - RX_PKT_OFFSET)) || -@@ -810,8 +756,8 @@ +@@ -810,8 +756,8 @@ static int b44_rx(struct b44 *bp, int bu skb_size = b44_alloc_rx_skb(bp, cons, bp->rx_prod); if (skb_size < 0) goto drop_it; @@ -481,7 +481,7 @@ Index: linux-2.6.23/drivers/net/b44.c /* Leave out rx_header */ skb_put(skb, len + RX_PKT_OFFSET); skb_pull(skb, RX_PKT_OFFSET); -@@ -982,24 +928,24 @@ +@@ -982,24 +928,24 @@ static int b44_start_xmit(struct sk_buff goto err_out; } @@ -512,7 +512,7 @@ Index: linux-2.6.23/drivers/net/b44.c dev_kfree_skb_any(bounce_skb); goto err_out; } -@@ -1022,9 +968,9 @@ +@@ -1022,9 +968,9 @@ static int b44_start_xmit(struct sk_buff bp->tx_ring[entry].addr = cpu_to_le32((u32) mapping+bp->dma_offset); if (bp->flags & B44_FLAG_TX_RING_HACK) @@ -525,7 +525,7 @@ Index: linux-2.6.23/drivers/net/b44.c entry = NEXT_TX(entry); -@@ -1097,10 +1043,10 @@ +@@ -1097,10 +1043,10 @@ static void b44_free_rings(struct b44 *b if (rp->skb == NULL) continue; @@ -538,7 +538,7 @@ Index: linux-2.6.23/drivers/net/b44.c dev_kfree_skb_any(rp->skb); rp->skb = NULL; } -@@ -1111,10 +1057,10 @@ +@@ -1111,10 +1057,10 @@ static void b44_free_rings(struct b44 *b if (rp->skb == NULL) continue; @@ -551,7 +551,7 @@ Index: linux-2.6.23/drivers/net/b44.c dev_kfree_skb_any(rp->skb); rp->skb = NULL; } -@@ -1136,14 +1082,14 @@ +@@ -1136,14 +1082,14 @@ static void b44_init_rings(struct b44 *b memset(bp->tx_ring, 0, B44_TX_RING_BYTES); if (bp->flags & B44_FLAG_RX_RING_HACK) @@ -572,7 +572,7 @@ Index: linux-2.6.23/drivers/net/b44.c for (i = 0; i < bp->rx_pending; i++) { if (b44_alloc_rx_skb(bp, -1, i) < 0) -@@ -1163,24 +1109,24 @@ +@@ -1163,24 +1109,24 @@ static void b44_free_consistent(struct b bp->tx_buffers = NULL; if (bp->rx_ring) { if (bp->flags & B44_FLAG_RX_RING_HACK) { @@ -605,7 +605,7 @@ Index: linux-2.6.23/drivers/net/b44.c bp->tx_ring, bp->tx_ring_dma); bp->tx_ring = NULL; bp->flags &= ~B44_FLAG_TX_RING_HACK; -@@ -1206,7 +1152,7 @@ +@@ -1206,7 +1152,7 @@ static int b44_alloc_consistent(struct b goto out_err; size = DMA_TABLE_BYTES; @@ -614,7 +614,7 @@ Index: linux-2.6.23/drivers/net/b44.c if (!bp->rx_ring) { /* Allocation may have failed due to pci_alloc_consistent insisting on use of GFP_DMA, which is more restrictive -@@ -1218,9 +1164,9 @@ +@@ -1218,9 +1164,9 @@ static int b44_alloc_consistent(struct b if (!rx_ring) goto out_err; @@ -627,7 +627,7 @@ Index: linux-2.6.23/drivers/net/b44.c if (dma_mapping_error(rx_ring_dma) || rx_ring_dma + size > DMA_30BIT_MASK) { -@@ -1233,9 +1179,9 @@ +@@ -1233,9 +1179,9 @@ static int b44_alloc_consistent(struct b bp->flags |= B44_FLAG_RX_RING_HACK; } @@ -639,7 +639,7 @@ Index: linux-2.6.23/drivers/net/b44.c insisting on use of GFP_DMA, which is more restrictive than necessary... */ struct dma_desc *tx_ring; -@@ -1245,9 +1191,9 @@ +@@ -1245,9 +1191,9 @@ static int b44_alloc_consistent(struct b if (!tx_ring) goto out_err; @@ -652,7 +652,7 @@ Index: linux-2.6.23/drivers/net/b44.c if (dma_mapping_error(tx_ring_dma) || tx_ring_dma + size > DMA_30BIT_MASK) { -@@ -1282,7 +1228,9 @@ +@@ -1282,7 +1228,9 @@ static void b44_clear_stats(struct b44 * /* bp->lock is held. */ static void b44_chip_reset(struct b44 *bp) { @@ -663,7 +663,7 @@ Index: linux-2.6.23/drivers/net/b44.c bw32(bp, B44_RCV_LAZY, 0); bw32(bp, B44_ENET_CTRL, ENET_CTRL_DISABLE); b44_wait_bit(bp, B44_ENET_CTRL, ENET_CTRL_DISABLE, 200, 1); -@@ -1294,19 +1242,23 @@ +@@ -1294,19 +1242,24 @@ static void b44_chip_reset(struct b44 *b } bw32(bp, B44_DMARX_CTRL, 0); bp->rx_prod = bp->rx_cons = 0; @@ -687,6 +687,7 @@ Index: linux-2.6.23/drivers/net/b44.c + & MDIO_CTRL_MAXF_MASK))); + break; + case SSB_BUSTYPE_PCI: ++ case SSB_BUSTYPE_PCMCIA: + bw32(bp, B44_MDIO_CTRL, (MDIO_CTRL_PREAMBLE | (0x0d & MDIO_CTRL_MAXF_MASK))); + break; @@ -695,7 +696,7 @@ Index: linux-2.6.23/drivers/net/b44.c br32(bp, B44_MDIO_CTRL); if (!(br32(bp, B44_DEVCTRL) & DEVCTRL_IPP)) { -@@ -1349,6 +1301,7 @@ +@@ -1349,6 +1302,7 @@ static int b44_set_mac_addr(struct net_d { struct b44 *bp = netdev_priv(dev); struct sockaddr *addr = p; @@ -703,7 +704,7 @@ Index: linux-2.6.23/drivers/net/b44.c if (netif_running(dev)) return -EBUSY; -@@ -1359,7 +1312,11 @@ +@@ -1359,7 +1313,11 @@ static int b44_set_mac_addr(struct net_d memcpy(dev->dev_addr, addr->sa_data, dev->addr_len); spin_lock_irq(&bp->lock); @@ -716,7 +717,7 @@ Index: linux-2.6.23/drivers/net/b44.c spin_unlock_irq(&bp->lock); return 0; -@@ -1445,18 +1402,6 @@ +@@ -1445,18 +1403,6 @@ out: return err; } @@ -735,7 +736,7 @@ Index: linux-2.6.23/drivers/net/b44.c #ifdef CONFIG_NET_POLL_CONTROLLER /* * Polling receive - used by netconsole and other diagnostic tools -@@ -1570,7 +1515,6 @@ +@@ -1570,7 +1516,6 @@ static void b44_setup_pseudo_magicp(stru static void b44_setup_wol(struct b44 *bp) { u32 val; @@ -743,7 +744,7 @@ Index: linux-2.6.23/drivers/net/b44.c bw32(bp, B44_RXCONFIG, RXCONFIG_ALLMULTI); -@@ -1594,13 +1538,6 @@ +@@ -1594,13 +1539,6 @@ static void b44_setup_wol(struct b44 *bp } else { b44_setup_pseudo_magicp(bp); } @@ -757,7 +758,7 @@ Index: linux-2.6.23/drivers/net/b44.c } static int b44_close(struct net_device *dev) -@@ -1700,7 +1637,7 @@ +@@ -1700,7 +1638,7 @@ static void __b44_set_rx_mode(struct net val = br32(bp, B44_RXCONFIG); val &= ~(RXCONFIG_PROMISC | RXCONFIG_ALLMULTI); @@ -766,7 +767,7 @@ Index: linux-2.6.23/drivers/net/b44.c val |= RXCONFIG_PROMISC; bw32(bp, B44_RXCONFIG, val); } else { -@@ -1747,12 +1684,8 @@ +@@ -1747,12 +1685,8 @@ static void b44_set_msglevel(struct net_ static void b44_get_drvinfo (struct net_device *dev, struct ethtool_drvinfo *info) { @@ -779,7 +780,7 @@ Index: linux-2.6.23/drivers/net/b44.c } static int b44_nway_reset(struct net_device *dev) -@@ -2035,6 +1968,245 @@ +@@ -2035,6 +1969,245 @@ static const struct ethtool_ops b44_etht .get_ethtool_stats = b44_get_ethtool_stats, }; @@ -1025,7 +1026,7 @@ Index: linux-2.6.23/drivers/net/b44.c static int b44_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) { struct mii_ioctl_data *data = if_mii(ifr); -@@ -2044,40 +2216,64 @@ +@@ -2044,40 +2217,64 @@ static int b44_ioctl(struct net_device * if (!netif_running(dev)) goto out; @@ -1102,12 +1103,12 @@ Index: linux-2.6.23/drivers/net/b44.c - bp->dev->dev_addr[5] = eeprom[82]; + switch (instance) { + case 1: -+ addr = sdev->bus->sprom.r1.et0mac; -+ bp->phy_addr = sdev->bus->sprom.r1.et0phyaddr; ++ addr = sdev->bus->sprom.et0mac; ++ bp->phy_addr = sdev->bus->sprom.et0phyaddr; + break; + default: -+ addr = sdev->bus->sprom.r1.et1mac; -+ bp->phy_addr = sdev->bus->sprom.r1.et1phyaddr; ++ addr = sdev->bus->sprom.et1mac; ++ bp->phy_addr = sdev->bus->sprom.et1phyaddr; + break; + } + @@ -1115,7 +1116,7 @@ Index: linux-2.6.23/drivers/net/b44.c if (!is_valid_ether_addr(&bp->dev->dev_addr[0])){ printk(KERN_ERR PFX "Invalid MAC address found in EEPROM\n"); -@@ -2086,103 +2282,52 @@ +@@ -2086,103 +2283,52 @@ static int __devinit b44_get_invariants( memcpy(bp->dev->perm_addr, bp->dev->dev_addr, bp->dev->addr_len); @@ -1228,7 +1229,7 @@ Index: linux-2.6.23/drivers/net/b44.c bp->rx_pending = B44_DEF_RX_RING_PENDING; bp->tx_pending = B44_DEF_TX_RING_PENDING; -@@ -2201,16 +2346,16 @@ +@@ -2201,16 +2347,16 @@ static int __devinit b44_init_one(struct dev->poll_controller = b44_poll_controller; #endif dev->change_mtu = b44_change_mtu; @@ -1248,7 +1249,7 @@ Index: linux-2.6.23/drivers/net/b44.c } bp->mii_if.dev = dev; -@@ -2229,61 +2374,52 @@ +@@ -2229,61 +2375,52 @@ static int __devinit b44_init_one(struct err = register_netdev(dev); if (err) { @@ -1326,7 +1327,7 @@ Index: linux-2.6.23/drivers/net/b44.c del_timer_sync(&bp->timer); -@@ -2301,33 +2437,22 @@ +@@ -2301,33 +2438,22 @@ static int b44_suspend(struct pci_dev *p b44_init_hw(bp, B44_PARTIAL_RESET); b44_setup_wol(bp); } @@ -1363,7 +1364,7 @@ Index: linux-2.6.23/drivers/net/b44.c return rc; } -@@ -2346,29 +2471,31 @@ +@@ -2346,29 +2472,31 @@ static int b44_resume(struct pci_dev *pd return 0; } @@ -1401,10 +1402,10 @@ Index: linux-2.6.23/drivers/net/b44.c } module_init(b44_init); -Index: linux-2.6.23/drivers/net/b44.h +Index: linux-2.6.23.16/drivers/net/b44.h =================================================================== ---- linux-2.6.23.orig/drivers/net/b44.h 2007-10-13 10:58:27.880607722 +0200 -+++ linux-2.6.23/drivers/net/b44.h 2007-10-13 11:00:46.904530245 +0200 +--- linux-2.6.23.16.orig/drivers/net/b44.h 2008-02-19 01:35:58.000000000 +0100 ++++ linux-2.6.23.16/drivers/net/b44.h 2008-02-19 01:36:00.000000000 +0100 @@ -129,6 +129,7 @@ #define RXCONFIG_FLOW 0x00000020 /* Flow Control Enable */ #define RXCONFIG_FLOW_ACCEPT 0x00000040 /* Accept Unicast Flow Control Frame */ @@ -1492,7 +1493,7 @@ Index: linux-2.6.23/drivers/net/b44.h /* 4400 PHY registers */ #define B44_MII_AUXCTRL 24 /* Auxiliary Control */ -@@ -346,10 +281,12 @@ +@@ -346,10 +281,12 @@ struct rx_header { struct ring_info { struct sk_buff *skb; @@ -1506,7 +1507,7 @@ Index: linux-2.6.23/drivers/net/b44.h #define B44_STAT_REG_DECLARE \ _B44(tx_good_octets) \ -@@ -425,9 +362,10 @@ +@@ -425,9 +362,10 @@ struct b44 { u32 dma_offset; u32 flags; @@ -1518,7 +1519,7 @@ Index: linux-2.6.23/drivers/net/b44.h #define B44_FLAG_PAUSE_AUTO 0x00008000 #define B44_FLAG_FULL_DUPLEX 0x00010000 #define B44_FLAG_100_BASE_T 0x00020000 -@@ -450,8 +388,7 @@ +@@ -450,8 +388,7 @@ struct b44 { struct net_device_stats stats; struct b44_hw_stats hw_stats; @@ -1528,11 +1529,11 @@ Index: linux-2.6.23/drivers/net/b44.h struct net_device *dev; dma_addr_t rx_ring_dma, tx_ring_dma; -Index: linux-2.6.23/drivers/net/Kconfig +Index: linux-2.6.23.16/drivers/net/Kconfig =================================================================== ---- linux-2.6.23.orig/drivers/net/Kconfig 2007-10-13 10:58:27.888608180 +0200 -+++ linux-2.6.23/drivers/net/Kconfig 2007-10-13 11:00:46.912530699 +0200 -@@ -1577,7 +1577,7 @@ +--- linux-2.6.23.16.orig/drivers/net/Kconfig 2008-02-19 01:35:58.000000000 +0100 ++++ linux-2.6.23.16/drivers/net/Kconfig 2008-02-19 01:36:00.000000000 +0100 +@@ -1577,7 +1577,7 @@ config APRICOT config B44 tristate "Broadcom 4400 ethernet support" diff --git a/target/linux/brcm47xx/patches-2.6.23/210-ssb_fixes.patch b/target/linux/brcm47xx/patches-2.6.23/210-ssb_fixes.patch index 3b87a8c..ce3a007 100644 --- a/target/linux/brcm47xx/patches-2.6.23/210-ssb_fixes.patch +++ b/target/linux/brcm47xx/patches-2.6.23/210-ssb_fixes.patch @@ -1,18 +1,18 @@ -Index: linux-2.6.23/drivers/ssb/driver_mipscore.c +Index: linux-2.6.23.16/drivers/ssb/driver_mipscore.c =================================================================== ---- linux-2.6.23.orig/drivers/ssb/driver_mipscore.c 2007-10-14 04:32:45.793470742 +0200 -+++ linux-2.6.23/drivers/ssb/driver_mipscore.c 2007-10-14 04:33:25.155713862 +0200 -@@ -222,3 +222,5 @@ +--- linux-2.6.23.16.orig/drivers/ssb/driver_mipscore.c 2008-02-19 01:35:53.000000000 +0100 ++++ linux-2.6.23.16/drivers/ssb/driver_mipscore.c 2008-02-19 02:01:16.000000000 +0100 +@@ -222,3 +222,5 @@ void ssb_mipscore_init(struct ssb_mipsco ssb_mips_serial_init(mcore); ssb_mips_flash_detect(mcore); } + +EXPORT_SYMBOL(ssb_mips_irq); -Index: linux-2.6.23/include/linux/ssb/ssb_driver_chipcommon.h +Index: linux-2.6.23.16/include/linux/ssb/ssb_driver_chipcommon.h =================================================================== ---- linux-2.6.23.orig/include/linux/ssb/ssb_driver_chipcommon.h 2007-10-14 04:32:45.817472111 +0200 -+++ linux-2.6.23/include/linux/ssb/ssb_driver_chipcommon.h 2007-10-14 04:33:25.159714091 +0200 -@@ -382,11 +382,45 @@ +--- linux-2.6.23.16.orig/include/linux/ssb/ssb_driver_chipcommon.h 2008-02-19 01:35:53.000000000 +0100 ++++ linux-2.6.23.16/include/linux/ssb/ssb_driver_chipcommon.h 2008-02-19 02:01:10.000000000 +0100 +@@ -382,11 +382,45 @@ extern void ssb_chipco_set_clockmode(str extern void ssb_chipco_watchdog_timer_set(struct ssb_chipcommon *cc, u32 ticks); @@ -61,10 +61,10 @@ Index: linux-2.6.23/include/linux/ssb/ssb_driver_chipcommon.h #ifdef CONFIG_SSB_SERIAL extern int ssb_chipco_serial_init(struct ssb_chipcommon *cc, -Index: linux-2.6.23/include/linux/ssb/ssb_driver_extif.h +Index: linux-2.6.23.16/include/linux/ssb/ssb_driver_extif.h =================================================================== ---- linux-2.6.23.orig/include/linux/ssb/ssb_driver_extif.h 2007-10-14 04:32:45.821472339 +0200 -+++ linux-2.6.23/include/linux/ssb/ssb_driver_extif.h 2007-10-14 04:33:25.167714544 +0200 +--- linux-2.6.23.16.orig/include/linux/ssb/ssb_driver_extif.h 2008-02-19 01:35:53.000000000 +0100 ++++ linux-2.6.23.16/include/linux/ssb/ssb_driver_extif.h 2008-02-19 01:39:40.000000000 +0100 @@ -153,7 +153,6 @@ #define SSB_EXTIF_WATCHDOG_CLK 48000000 /* Hz */ @@ -73,7 +73,7 @@ Index: linux-2.6.23/include/linux/ssb/ssb_driver_extif.h #ifdef CONFIG_SSB_DRIVER_EXTIF struct ssb_extif { -@@ -171,17 +170,42 @@ +@@ -171,17 +170,42 @@ extern void ssb_extif_get_clockcontrol(s extern void ssb_extif_timing_init(struct ssb_extif *extif, unsigned long ns); @@ -122,11 +122,11 @@ Index: linux-2.6.23/include/linux/ssb/ssb_driver_extif.h #else /* CONFIG_SSB_DRIVER_EXTIF */ /* extif disabled */ -Index: linux-2.6.23/include/linux/ssb/ssb.h +Index: linux-2.6.23.16/include/linux/ssb/ssb.h =================================================================== ---- linux-2.6.23.orig/include/linux/ssb/ssb.h 2007-10-14 04:32:45.833473010 +0200 -+++ linux-2.6.23/include/linux/ssb/ssb.h 2007-10-14 04:33:25.171714773 +0200 -@@ -255,6 +255,12 @@ +--- linux-2.6.23.16.orig/include/linux/ssb/ssb.h 2008-02-19 01:35:53.000000000 +0100 ++++ linux-2.6.23.16/include/linux/ssb/ssb.h 2008-02-19 01:39:40.000000000 +0100 +@@ -217,6 +217,12 @@ enum ssb_bustype { #define SSB_CHIPPACK_BCM4712M 2 /* Medium 225pin 4712 */ #define SSB_CHIPPACK_BCM4712L 0 /* Large 340pin 4712 */ @@ -139,7 +139,7 @@ Index: linux-2.6.23/include/linux/ssb/ssb.h #include <linux/ssb/ssb_driver_chipcommon.h> #include <linux/ssb/ssb_driver_mips.h> #include <linux/ssb/ssb_driver_extif.h> -@@ -385,6 +391,16 @@ +@@ -349,6 +355,16 @@ static inline void ssb_write32(struct ss dev->ops->write32(dev, offset, value); } @@ -156,11 +156,11 @@ Index: linux-2.6.23/include/linux/ssb/ssb.h /* Translation (routing) bits that need to be ORed to DMA * addresses before they are given to a device. */ -Index: linux-2.6.23/drivers/ssb/driver_chipcommon.c +Index: linux-2.6.23.16/drivers/ssb/driver_chipcommon.c =================================================================== ---- linux-2.6.23.orig/drivers/ssb/driver_chipcommon.c 2007-10-14 04:32:45.797470966 +0200 -+++ linux-2.6.23/drivers/ssb/driver_chipcommon.c 2007-10-14 04:33:25.175715001 +0200 -@@ -351,21 +351,6 @@ +--- linux-2.6.23.16.orig/drivers/ssb/driver_chipcommon.c 2008-02-19 01:35:53.000000000 +0100 ++++ linux-2.6.23.16/drivers/ssb/driver_chipcommon.c 2008-02-19 02:01:16.000000000 +0100 +@@ -351,21 +351,6 @@ void ssb_chipco_watchdog_timer_set(struc chipco_write32(cc, SSB_CHIPCO_WATCHDOG, ticks); } @@ -182,11 +182,11 @@ Index: linux-2.6.23/drivers/ssb/driver_chipcommon.c #ifdef CONFIG_SSB_SERIAL int ssb_chipco_serial_init(struct ssb_chipcommon *cc, struct ssb_serial_port *ports) -Index: linux-2.6.23/drivers/ssb/driver_extif.c +Index: linux-2.6.23.16/drivers/ssb/driver_extif.c =================================================================== ---- linux-2.6.23.orig/drivers/ssb/driver_extif.c 2007-10-14 04:32:45.809471640 +0200 -+++ linux-2.6.23/drivers/ssb/driver_extif.c 2007-10-14 04:33:25.179715231 +0200 -@@ -110,20 +110,4 @@ +--- linux-2.6.23.16.orig/drivers/ssb/driver_extif.c 2008-02-19 01:35:53.000000000 +0100 ++++ linux-2.6.23.16/drivers/ssb/driver_extif.c 2008-02-19 01:39:40.000000000 +0100 +@@ -110,20 +110,4 @@ void ssb_extif_get_clockcontrol(struct s *m = extif_read32(extif, SSB_EXTIF_CLOCK_SB); } @@ -207,11 +207,11 @@ Index: linux-2.6.23/drivers/ssb/driver_extif.c - mask, value); -} -Index: linux-2.6.23/include/linux/mod_devicetable.h +Index: linux-2.6.23.16/include/linux/mod_devicetable.h =================================================================== ---- linux-2.6.23.orig/include/linux/mod_devicetable.h 2007-10-14 04:35:22.102378272 +0200 -+++ linux-2.6.23/include/linux/mod_devicetable.h 2007-10-14 04:34:41.172045787 +0200 -@@ -340,4 +340,19 @@ +--- linux-2.6.23.16.orig/include/linux/mod_devicetable.h 2008-02-19 01:35:53.000000000 +0100 ++++ linux-2.6.23.16/include/linux/mod_devicetable.h 2008-02-19 01:39:40.000000000 +0100 +@@ -340,4 +340,19 @@ struct parisc_device_id { #define PA_HVERSION_ANY_ID 0xffff #define PA_SVERSION_ANY_ID 0xffffffff @@ -231,3 +231,62 @@ Index: linux-2.6.23/include/linux/mod_devicetable.h +#define SSB_ANY_REV 0xFF + #endif /* LINUX_MOD_DEVICETABLE_H */ +Index: linux-2.6.23.16/drivers/ssb/main.c +=================================================================== +--- linux-2.6.23.16.orig/drivers/ssb/main.c 2008-02-19 01:45:24.000000000 +0100 ++++ linux-2.6.23.16/drivers/ssb/main.c 2008-02-19 02:01:16.000000000 +0100 +@@ -321,14 +321,16 @@ static int ssb_bus_match(struct device * + return 0; + } + +-static int ssb_device_uevent(struct device *dev, struct kobj_uevent_env *env) ++static int ssb_device_uevent(struct device *dev, char **envp, ++ int num_envp, char *buffer, int buffer_size) + { + struct ssb_device *ssb_dev = dev_to_ssb_dev(dev); ++ int i = 0, len = 0; + + if (!dev) + return -ENODEV; + +- return add_uevent_var(env, ++ return add_uevent_var(envp, num_envp, &i, buffer, buffer_size, &len, + "MODALIAS=ssb:v%04Xid%04Xrev%02X", + ssb_dev->id.vendor, ssb_dev->id.coreid, + ssb_dev->id.revision); +Index: linux-2.6.23.16/drivers/ssb/scan.c +=================================================================== +--- linux-2.6.23.16.orig/drivers/ssb/scan.c 2008-02-16 19:08:13.000000000 +0100 ++++ linux-2.6.23.16/drivers/ssb/scan.c 2008-02-19 01:56:02.000000000 +0100 +@@ -391,12 +391,14 @@ int ssb_bus_scan(struct ssb_bus *bus, + if (bus->bustype == SSB_BUSTYPE_PCI) { + /* Ignore PCI cores on PCI-E cards. + * Ignore PCI-E cores on PCI cards. */ ++ //FIXME kernel 2.6.23 doesn't have is_pcie. Add this check back when updating to 2.6.24 or later. + if (dev->id.coreid == SSB_DEV_PCI) { +- if (bus->host_pci->is_pcie) +- continue; ++//FIXME if (bus->host_pci->is_pcie) ++//FIXME continue; + } else { +- if (!bus->host_pci->is_pcie) +- continue; ++ continue; //FIXME ++//FIXME if (!bus->host_pci->is_pcie) ++//FIXME continue; + } + } + if (bus->pcicore.dev) { +Index: linux-2.6.23.16/drivers/ssb/driver_pcicore.c +=================================================================== +--- linux-2.6.23.16.orig/drivers/ssb/driver_pcicore.c 2008-02-19 02:01:11.000000000 +0100 ++++ linux-2.6.23.16/drivers/ssb/driver_pcicore.c 2008-02-19 02:01:32.000000000 +0100 +@@ -362,7 +362,7 @@ static int pcicore_is_in_hostmode(struct + chipid_top != 0x5300) + return 0; + +- if (bus->sprom.r1.boardflags_lo & SSB_PCICORE_BFL_NOPCI) ++ if (bus->sprom.boardflags_lo & SSB_PCICORE_BFL_NOPCI) + return 0; + + /* The 200-pin BCM4712 package does not bond out PCI. Even when diff --git a/target/linux/brcm47xx/patches-2.6.23/220-bcm5354.patch b/target/linux/brcm47xx/patches-2.6.23/220-bcm5354.patch index c524c8f..e3afcbc 100644 --- a/target/linux/brcm47xx/patches-2.6.23/220-bcm5354.patch +++ b/target/linux/brcm47xx/patches-2.6.23/220-bcm5354.patch @@ -1,6 +1,8 @@ ---- files/drivers/ssb/driver_chipcommon.c 2007-10-24 16:57:38.000000000 -0700 -+++ linux-2.6.23.1/drivers/ssb/driver_chipcommon.c 2007-10-27 13:27:06.000000000 -0700 -@@ -268,6 +268,8 @@ +Index: linux-2.6.23.16/drivers/ssb/driver_chipcommon.c +=================================================================== +--- linux-2.6.23.16.orig/drivers/ssb/driver_chipcommon.c 2008-02-19 00:42:42.000000000 +0100 ++++ linux-2.6.23.16/drivers/ssb/driver_chipcommon.c 2008-02-19 00:43:34.000000000 +0100 +@@ -268,6 +268,8 @@ void ssb_chipco_resume(struct ssb_chipco void ssb_chipco_get_clockcpu(struct ssb_chipcommon *cc, u32 *plltype, u32 *n, u32 *m) { @@ -9,7 +11,7 @@ *n = chipco_read32(cc, SSB_CHIPCO_CLOCK_N); *plltype = (cc->capabilities & SSB_CHIPCO_CAP_PLLT); switch (*plltype) { -@@ -291,6 +293,8 @@ +@@ -291,6 +293,8 @@ void ssb_chipco_get_clockcpu(struct ssb_ void ssb_chipco_get_clockcontrol(struct ssb_chipcommon *cc, u32 *plltype, u32 *n, u32 *m) { @@ -18,9 +20,11 @@ *n = chipco_read32(cc, SSB_CHIPCO_CLOCK_N); *plltype = (cc->capabilities & SSB_CHIPCO_CAP_PLLT); switch (*plltype) { ---- files/drivers/ssb/driver_mipscore.c 2007-10-24 16:57:38.000000000 -0700 -+++ linux-2.6.23.1/drivers/ssb/driver_mipscore.c 2007-10-27 13:29:36.000000000 -0700 -@@ -160,6 +160,8 @@ +Index: linux-2.6.23.16/drivers/ssb/driver_mipscore.c +=================================================================== +--- linux-2.6.23.16.orig/drivers/ssb/driver_mipscore.c 2008-02-19 00:42:42.000000000 +0100 ++++ linux-2.6.23.16/drivers/ssb/driver_mipscore.c 2008-02-19 00:43:34.000000000 +0100 +@@ -160,6 +160,8 @@ u32 ssb_cpu_clock(struct ssb_mipscore *m if ((pll_type == SSB_PLLTYPE_5) || (bus->chip_id == 0x5365)) { rate = 200000000; @@ -29,9 +33,11 @@ } else { rate = ssb_calc_clock_rate(pll_type, n, m); } ---- files/drivers/ssb/main.c 2007-10-24 16:57:38.000000000 -0700 -+++ linux-2.6.23.1/drivers/ssb/main.c 2007-10-27 13:30:59.000000000 -0700 -@@ -864,6 +864,8 @@ +Index: linux-2.6.23.16/drivers/ssb/main.c +=================================================================== +--- linux-2.6.23.16.orig/drivers/ssb/main.c 2008-02-19 00:42:15.000000000 +0100 ++++ linux-2.6.23.16/drivers/ssb/main.c 2008-02-19 00:43:34.000000000 +0100 +@@ -860,6 +860,8 @@ u32 ssb_clockspeed(struct ssb_bus *bus) if (bus->chip_id == 0x5365) { rate = 100000000; diff --git a/target/linux/brcm47xx/patches-2.6.23/225-bcm5354_ssbrev.patch b/target/linux/brcm47xx/patches-2.6.23/225-bcm5354_ssbrev.patch deleted file mode 100644 index 55209b3..0000000 --- a/target/linux/brcm47xx/patches-2.6.23/225-bcm5354_ssbrev.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- a/drivers/ssb/main.c 2007-11-05 05:59:43.000000000 -0800 -+++ b/drivers/ssb/main.c 2007-11-05 08:59:13.000000000 -0800 -@@ -882,6 +884,7 @@ - case SSB_IDLOW_SSBREV_22: - return SSB_TMSLOW_REJECT_22; - case SSB_IDLOW_SSBREV_23: -+ case SSB_IDLOW_SSBREV_5354: - return SSB_TMSLOW_REJECT_23; - default: - WARN_ON(1); ---- a/include/linux/ssb/ssb_regs.h 2007-11-05 05:59:42.000000000 -0800 -+++ b/include/linux/ssb/ssb_regs.h 2007-11-05 09:00:45.000000000 -0800 -@@ -147,6 +147,7 @@ - #define SSB_IDLOW_SSBREV 0xF0000000 /* Sonics Backplane Revision code */ - #define SSB_IDLOW_SSBREV_22 0x00000000 /* <= 2.2 */ - #define SSB_IDLOW_SSBREV_23 0x10000000 /* 2.3 */ -+#define SSB_IDLOW_SSBREV_5354 0x60000000 /* 5354 */ - #define SSB_IDHIGH 0x0FFC /* SB Identification High */ - #define SSB_IDHIGH_RCLO 0x0000000F /* Revision Code (low part) */ - #define SSB_IDHIGH_CC 0x00008FF0 /* Core Code */ diff --git a/target/linux/brcm47xx/patches-2.6.23/230-ohci-ssb.patch b/target/linux/brcm47xx/patches-2.6.23/230-ohci-ssb.patch index 1db627f..5be1a66 100644 --- a/target/linux/brcm47xx/patches-2.6.23/230-ohci-ssb.patch +++ b/target/linux/brcm47xx/patches-2.6.23/230-ohci-ssb.patch @@ -13,10 +13,10 @@ Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> --- -diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig -index 565d6ef..c978d62 100644 ---- a/drivers/usb/host/Kconfig -+++ b/drivers/usb/host/Kconfig +Index: linux-2.6.23.16/drivers/usb/host/Kconfig +=================================================================== +--- linux-2.6.23.16.orig/drivers/usb/host/Kconfig 2008-02-19 00:47:29.000000000 +0100 ++++ linux-2.6.23.16/drivers/usb/host/Kconfig 2008-02-19 00:47:51.000000000 +0100 @@ -154,6 +154,19 @@ config USB_OHCI_HCD_PCI Enables support for PCI-bus plug-in USB controller cards. If unsure, say Y. @@ -37,11 +37,11 @@ index 565d6ef..c978d62 100644 config USB_OHCI_BIG_ENDIAN_DESC bool depends on USB_OHCI_HCD -diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c -index f7c6ced..240c7f5 100644 ---- a/drivers/usb/host/ohci-hcd.c -+++ b/drivers/usb/host/ohci-hcd.c -@@ -1033,11 +1033,17 @@ MODULE_LICENSE ("GPL"); +Index: linux-2.6.23.16/drivers/usb/host/ohci-hcd.c +=================================================================== +--- linux-2.6.23.16.orig/drivers/usb/host/ohci-hcd.c 2008-02-19 00:47:29.000000000 +0100 ++++ linux-2.6.23.16/drivers/usb/host/ohci-hcd.c 2008-02-19 00:47:51.000000000 +0100 +@@ -926,11 +926,17 @@ MODULE_LICENSE ("GPL"); #define PS3_SYSTEM_BUS_DRIVER ps3_ohci_driver #endif @@ -60,7 +60,7 @@ index f7c6ced..240c7f5 100644 #error "missing bus glue for ohci-hcd" #endif -@@ -1082,10 +1088,20 @@ static int __init ohci_hcd_mod_init(void) +@@ -975,10 +981,20 @@ static int __init ohci_hcd_mod_init(void goto error_pci; #endif @@ -81,7 +81,7 @@ index f7c6ced..240c7f5 100644 error_pci: #endif #ifdef SA1111_DRIVER -@@ -1110,6 +1126,9 @@ module_init(ohci_hcd_mod_init); +@@ -1003,6 +1019,9 @@ module_init(ohci_hcd_mod_init); static void __exit ohci_hcd_mod_exit(void) { @@ -91,11 +91,10 @@ index f7c6ced..240c7f5 100644 #ifdef PCI_DRIVER pci_unregister_driver(&PCI_DRIVER); #endif -diff --git a/drivers/usb/host/ohci-ssb.c b/drivers/usb/host/ohci-ssb.c -new file mode 100644 -index 0000000..bc3e785 ---- /dev/null -+++ b/drivers/usb/host/ohci-ssb.c +Index: linux-2.6.23.16/drivers/usb/host/ohci-ssb.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.23.16/drivers/usb/host/ohci-ssb.c 2008-02-19 00:47:51.000000000 +0100 @@ -0,0 +1,247 @@ +/* + * Sonics Silicon Backplane @@ -344,4 +343,3 @@ index 0000000..bc3e785 + .suspend = ssb_ohci_suspend, + .resume = ssb_ohci_resume, +}; - |