28 files changed:
-Index: linux-2.6.23.17/drivers/ssb/driver_chipcommon.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/ssb/driver_chipcommon.c
-+++ linux-2.6.23.17/drivers/ssb/driver_chipcommon.c
-@@ -39,12 +39,14 @@ static inline void chipco_write32(struct
+--- a/drivers/ssb/driver_chipcommon.c
++++ b/drivers/ssb/driver_chipcommon.c
+@@ -39,12 +39,14 @@
ssb_write32(cc->dev, offset, value);
}
ssb_write32(cc->dev, offset, value);
}
}
void ssb_chipco_set_clockmode(struct ssb_chipcommon *cc,
}
void ssb_chipco_set_clockmode(struct ssb_chipcommon *cc,
-@@ -355,16 +357,37 @@ u32 ssb_chipco_gpio_in(struct ssb_chipco
{
return chipco_read32(cc, SSB_CHIPCO_GPIOIN) & mask;
}
{
return chipco_read32(cc, SSB_CHIPCO_GPIOIN) & mask;
}
#ifdef CONFIG_SSB_SERIAL
int ssb_chipco_serial_init(struct ssb_chipcommon *cc,
#ifdef CONFIG_SSB_SERIAL
int ssb_chipco_serial_init(struct ssb_chipcommon *cc,
-Index: linux-2.6.23.17/drivers/ssb/driver_extif.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/ssb/driver_extif.c
-+++ linux-2.6.23.17/drivers/ssb/driver_extif.c
-@@ -27,12 +27,14 @@ static inline void extif_write32(struct
+--- a/drivers/ssb/driver_extif.c
++++ b/drivers/ssb/driver_extif.c
+@@ -27,12 +27,14 @@
ssb_write32(extif->dev, offset, value);
}
ssb_write32(extif->dev, offset, value);
}
}
#ifdef CONFIG_SSB_SERIAL
}
#ifdef CONFIG_SSB_SERIAL
-@@ -114,16 +116,30 @@ u32 ssb_extif_gpio_in(struct ssb_extif *
{
return extif_read32(extif, SSB_EXTIF_GPIO_IN) & mask;
}
{
return extif_read32(extif, SSB_EXTIF_GPIO_IN) & mask;
}
+ return extif_write32_masked(extif, SSB_EXTIF_GPIO_INTMASK, mask, value);
+}
+EXPORT_SYMBOL(ssb_extif_gpio_intmask);
+ return extif_write32_masked(extif, SSB_EXTIF_GPIO_INTMASK, mask, value);
+}
+EXPORT_SYMBOL(ssb_extif_gpio_intmask);
-Index: linux-2.6.23.17/include/linux/ssb/ssb_driver_chipcommon.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/ssb/ssb_driver_chipcommon.h
-+++ linux-2.6.23.17/include/linux/ssb/ssb_driver_chipcommon.h
-@@ -382,11 +382,13 @@ extern void ssb_chipco_set_clockmode(str
+--- a/include/linux/ssb/ssb_driver_chipcommon.h
++++ b/include/linux/ssb/ssb_driver_chipcommon.h
+@@ -382,11 +382,13 @@
extern void ssb_chipco_watchdog_timer_set(struct ssb_chipcommon *cc,
u32 ticks);
extern void ssb_chipco_watchdog_timer_set(struct ssb_chipcommon *cc,
u32 ticks);
#ifdef CONFIG_SSB_SERIAL
extern int ssb_chipco_serial_init(struct ssb_chipcommon *cc,
#ifdef CONFIG_SSB_SERIAL
extern int ssb_chipco_serial_init(struct ssb_chipcommon *cc,
-Index: linux-2.6.23.17/include/linux/ssb/ssb_driver_extif.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/ssb/ssb_driver_extif.h
-+++ linux-2.6.23.17/include/linux/ssb/ssb_driver_extif.h
-@@ -171,11 +171,12 @@ extern void ssb_extif_get_clockcontrol(s
+--- a/include/linux/ssb/ssb_driver_extif.h
++++ b/include/linux/ssb/ssb_driver_extif.h
+@@ -171,11 +171,12 @@
extern void ssb_extif_timing_init(struct ssb_extif *extif,
unsigned long ns);
extern void ssb_extif_timing_init(struct ssb_extif *extif,
unsigned long ns);
-Index: linux-2.6.23.17/arch/mips/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/arch/mips/Kconfig
-+++ linux-2.6.23.17/arch/mips/Kconfig
-@@ -4,6 +4,10 @@ config MIPS
+--- a/arch/mips/Kconfig
++++ b/arch/mips/Kconfig
+@@ -4,6 +4,10 @@
# Horrible source of confusion. Die, die, die ...
select EMBEDDED
# Horrible source of confusion. Die, die, die ...
select EMBEDDED
mainmenu "Linux/MIPS Kernel Configuration"
menu "Machine selection"
mainmenu "Linux/MIPS Kernel Configuration"
menu "Machine selection"
-@@ -44,6 +48,23 @@ config BASLER_EXCITE_PROTOTYPE
note that a kernel built with this option selected will not be
able to run on normal units.
note that a kernel built with this option selected will not be
able to run on normal units.
config MIPS_COBALT
bool "Cobalt Server"
select DMA_NONCOHERENT
config MIPS_COBALT
bool "Cobalt Server"
select DMA_NONCOHERENT
-Index: linux-2.6.23.17/arch/mips/kernel/cpu-probe.c
-===================================================================
---- linux-2.6.23.17.orig/arch/mips/kernel/cpu-probe.c
-+++ linux-2.6.23.17/arch/mips/kernel/cpu-probe.c
-@@ -793,6 +793,28 @@ static inline void cpu_probe_philips(str
+--- a/arch/mips/kernel/cpu-probe.c
++++ b/arch/mips/kernel/cpu-probe.c
+@@ -793,6 +793,28 @@
__init void cpu_probe(void)
{
struct cpuinfo_mips *c = ¤t_cpu_data;
__init void cpu_probe(void)
{
struct cpuinfo_mips *c = ¤t_cpu_data;
-@@ -815,6 +837,9 @@ __init void cpu_probe(void)
case PRID_COMP_SIBYTE:
cpu_probe_sibyte(c);
break;
case PRID_COMP_SIBYTE:
cpu_probe_sibyte(c);
break;
case PRID_COMP_SANDCRAFT:
cpu_probe_sandcraft(c);
break;
case PRID_COMP_SANDCRAFT:
cpu_probe_sandcraft(c);
break;
-Index: linux-2.6.23.17/arch/mips/kernel/proc.c
-===================================================================
---- linux-2.6.23.17.orig/arch/mips/kernel/proc.c
-+++ linux-2.6.23.17/arch/mips/kernel/proc.c
-@@ -82,6 +82,8 @@ static const char *cpu_name[] = {
+--- a/arch/mips/kernel/proc.c
++++ b/arch/mips/kernel/proc.c
+@@ -82,6 +82,8 @@
[CPU_VR4181] = "NEC VR4181",
[CPU_VR4181A] = "NEC VR4181A",
[CPU_SR71000] = "Sandcraft SR71000",
[CPU_VR4181] = "NEC VR4181",
[CPU_VR4181A] = "NEC VR4181A",
[CPU_SR71000] = "Sandcraft SR71000",
[CPU_PR4450] = "Philips PR4450",
[CPU_LOONGSON2] = "ICT Loongson-2",
};
[CPU_PR4450] = "Philips PR4450",
[CPU_LOONGSON2] = "ICT Loongson-2",
};
-Index: linux-2.6.23.17/arch/mips/Makefile
-===================================================================
---- linux-2.6.23.17.orig/arch/mips/Makefile
-+++ linux-2.6.23.17/arch/mips/Makefile
-@@ -533,6 +533,18 @@ libs-$(CONFIG_SIBYTE_BIGSUR) += arch/mip
+--- a/arch/mips/Makefile
++++ b/arch/mips/Makefile
+@@ -533,6 +533,18 @@
load-$(CONFIG_SIBYTE_BIGSUR) := 0xffffffff80100000
#
load-$(CONFIG_SIBYTE_BIGSUR) := 0xffffffff80100000
#
# SNI RM
#
core-$(CONFIG_SNI_RM) += arch/mips/sni/
# SNI RM
#
core-$(CONFIG_SNI_RM) += arch/mips/sni/
-Index: linux-2.6.23.17/arch/mips/mm/tlbex.c
-===================================================================
---- linux-2.6.23.17.orig/arch/mips/mm/tlbex.c
-+++ linux-2.6.23.17/arch/mips/mm/tlbex.c
-@@ -895,6 +895,8 @@ static __init void build_tlb_write_entry
+--- a/arch/mips/mm/tlbex.c
++++ b/arch/mips/mm/tlbex.c
+@@ -895,6 +895,8 @@
case CPU_AU1550:
case CPU_AU1200:
case CPU_PR4450:
case CPU_AU1550:
case CPU_AU1200:
case CPU_PR4450:
i_nop(p);
tlbw(p);
break;
i_nop(p);
tlbw(p);
break;
-Index: linux-2.6.23.17/drivers/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/drivers/Kconfig
-+++ linux-2.6.23.17/drivers/Kconfig
-@@ -60,6 +60,8 @@ source "drivers/power/Kconfig"
+--- a/drivers/Kconfig
++++ b/drivers/Kconfig
+@@ -60,6 +60,8 @@
source "drivers/hwmon/Kconfig"
source "drivers/hwmon/Kconfig"
source "drivers/mfd/Kconfig"
source "drivers/media/Kconfig"
source "drivers/mfd/Kconfig"
source "drivers/media/Kconfig"
-Index: linux-2.6.23.17/include/asm-mips/bootinfo.h
-===================================================================
---- linux-2.6.23.17.orig/include/asm-mips/bootinfo.h
-+++ linux-2.6.23.17/include/asm-mips/bootinfo.h
+--- a/include/asm-mips/bootinfo.h
++++ b/include/asm-mips/bootinfo.h
@@ -208,6 +208,12 @@
#define MACH_GROUP_WINDRIVER 28 /* Windriver boards */
#define MACH_WRPPMC 1
@@ -208,6 +208,12 @@
#define MACH_GROUP_WINDRIVER 28 /* Windriver boards */
#define MACH_WRPPMC 1
#define CL_SIZE COMMAND_LINE_SIZE
const char *get_system_type(void);
#define CL_SIZE COMMAND_LINE_SIZE
const char *get_system_type(void);
-Index: linux-2.6.23.17/include/asm-mips/cpu.h
-===================================================================
---- linux-2.6.23.17.orig/include/asm-mips/cpu.h
-+++ linux-2.6.23.17/include/asm-mips/cpu.h
+--- a/include/asm-mips/cpu.h
++++ b/include/asm-mips/cpu.h
@@ -106,6 +106,13 @@
#define PRID_IMP_SR71000 0x0400
@@ -106,6 +106,13 @@
#define PRID_IMP_SR71000 0x0400
-Index: linux-2.6.23.17/drivers/Makefile
-===================================================================
---- linux-2.6.23.17.orig/drivers/Makefile
-+++ linux-2.6.23.17/drivers/Makefile
-@@ -90,3 +90,4 @@ obj-$(CONFIG_HID) += hid/
+--- a/drivers/Makefile
++++ b/drivers/Makefile
+@@ -89,3 +89,5 @@
+ obj-$(CONFIG_HID) += hid/
obj-$(CONFIG_PPC_PS3) += ps3/
obj-$(CONFIG_OF) += of/
obj-$(CONFIG_PPC_PS3) += ps3/
obj-$(CONFIG_OF) += of/
- obj-$(CONFIG_GPIO_DEVICE) += gpio/
+obj-$(CONFIG_SSB) += ssb/
+obj-$(CONFIG_SSB) += ssb/
-Index: linux-2.6.23.17/include/linux/pci_ids.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/pci_ids.h
-+++ linux-2.6.23.17/include/linux/pci_ids.h
++
+--- a/include/linux/pci_ids.h
++++ b/include/linux/pci_ids.h
@@ -1980,6 +1980,7 @@
#define PCI_DEVICE_ID_TIGON3_5906M 0x1713
#define PCI_DEVICE_ID_BCM4401 0x4401
@@ -1980,6 +1980,7 @@
#define PCI_DEVICE_ID_TIGON3_5906M 0x1713
#define PCI_DEVICE_ID_BCM4401 0x4401
-Index: linux-2.6.23.17/drivers/mtd/maps/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/drivers/mtd/maps/Kconfig
-+++ linux-2.6.23.17/drivers/mtd/maps/Kconfig
-@@ -352,6 +352,12 @@ config MTD_CFI_FLAGADM
+--- a/drivers/mtd/maps/Kconfig
++++ b/drivers/mtd/maps/Kconfig
+@@ -352,6 +352,12 @@
Mapping for the Flaga digital module. If you don't have one, ignore
this setting.
Mapping for the Flaga digital module. If you don't have one, ignore
this setting.
config MTD_WALNUT
tristate "Flash device mapped on IBM 405GP Walnut"
depends on MTD_JEDECPROBE && WALNUT
config MTD_WALNUT
tristate "Flash device mapped on IBM 405GP Walnut"
depends on MTD_JEDECPROBE && WALNUT
-Index: linux-2.6.23.17/drivers/mtd/maps/Makefile
-===================================================================
---- linux-2.6.23.17.orig/drivers/mtd/maps/Makefile
-+++ linux-2.6.23.17/drivers/mtd/maps/Makefile
-@@ -33,6 +33,7 @@ obj-$(CONFIG_MTD_PNC2000) += pnc2000.o
+--- a/drivers/mtd/maps/Makefile
++++ b/drivers/mtd/maps/Makefile
+@@ -33,6 +33,7 @@
obj-$(CONFIG_MTD_PCMCIA) += pcmciamtd.o
obj-$(CONFIG_MTD_RPXLITE) += rpxlite.o
obj-$(CONFIG_MTD_TQM8XXL) += tqm8xxl.o
obj-$(CONFIG_MTD_PCMCIA) += pcmciamtd.o
obj-$(CONFIG_MTD_RPXLITE) += rpxlite.o
obj-$(CONFIG_MTD_TQM8XXL) += tqm8xxl.o
-Index: linux-2.6.23.17/drivers/net/b44.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/net/b44.c
-+++ linux-2.6.23.17/drivers/net/b44.c
+--- a/drivers/net/b44.c
++++ b/drivers/net/b44.c
@@ -1,7 +1,9 @@
-/* b44.c: Broadcom 4400 device driver.
+/* b44.c: Broadcom 4400/47xx device driver.
@@ -1,7 +1,9 @@
-/* b44.c: Broadcom 4400 device driver.
+/* b44.c: Broadcom 4400/47xx device driver.
MODULE_LICENSE("GPL");
MODULE_VERSION(DRV_MODULE_VERSION);
MODULE_LICENSE("GPL");
MODULE_VERSION(DRV_MODULE_VERSION);
-@@ -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");
module_param(b44_debug, int, 0);
MODULE_PARM_DESC(b44_debug, "B44 bitmapped debugging message enable value");
static void b44_halt(struct b44 *);
static void b44_init_rings(struct b44 *);
static void b44_halt(struct b44 *);
static void b44_init_rings(struct b44 *);
-@@ -119,6 +116,7 @@ static void b44_init_hw(struct b44 *, in
static int dma_desc_align_mask;
static int dma_desc_sync_size;
static int dma_desc_align_mask;
static int dma_desc_sync_size;
static const char b44_gstrings[][ETH_GSTRING_LEN] = {
#define _B44(x...) # x,
static const char b44_gstrings[][ETH_GSTRING_LEN] = {
#define _B44(x...) # x,
-@@ -126,35 +124,24 @@ B44_STAT_REG_DECLARE
}
static int b44_wait_bit(struct b44 *bp, unsigned long reg,
}
static int b44_wait_bit(struct b44 *bp, unsigned long reg,
-@@ -182,117 +169,29 @@ static int b44_wait_bit(struct b44 *bp,
-@@ -328,14 +227,14 @@ static void b44_enable_ints(struct b44 *
bw32(bp, B44_IMASK, bp->imask);
}
bw32(bp, B44_IMASK, bp->imask);
}
(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);
(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 @@ static int b44_readphy(struct b44 *bp, i
/* 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.
/* 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 @@ static int b44_phy_reset(struct b44 *bp)
err = b44_writephy(bp, MII_BMCR, BMCR_RESET);
if (err)
return err;
err = b44_writephy(bp, MII_BMCR, BMCR_RESET);
if (err)
return err;
-@@ -442,11 +359,27 @@ static void b44_set_flow_ctrl(struct b44
__b44_set_flow_ctrl(bp, pause_enab);
}
__b44_set_flow_ctrl(bp, pause_enab);
}
if ((err = b44_readphy(bp, B44_MII_ALEDCTRL, &val)) != 0)
goto out;
if ((err = b44_writephy(bp, B44_MII_ALEDCTRL,
if ((err = b44_readphy(bp, B44_MII_ALEDCTRL, &val)) != 0)
goto out;
if ((err = b44_writephy(bp, B44_MII_ALEDCTRL,
-@@ -542,6 +475,19 @@ static void b44_check_phy(struct b44 *bp
if (!b44_readphy(bp, MII_BMSR, &bmsr) &&
!b44_readphy(bp, B44_MII_AUXCTRL, &aux) &&
(bmsr != 0xffff)) {
if (!b44_readphy(bp, MII_BMSR, &bmsr) &&
!b44_readphy(bp, B44_MII_AUXCTRL, &aux) &&
(bmsr != 0xffff)) {
-@@ -617,10 +563,10 @@ static void b44_tx(struct b44 *bp)
rp->skb = NULL;
dev_kfree_skb_irq(skb);
}
rp->skb = NULL;
dev_kfree_skb_irq(skb);
}
-@@ -657,9 +603,9 @@ static int b44_alloc_rx_skb(struct b44 *
if (skb == NULL)
return -ENOMEM;
if (skb == NULL)
return -ENOMEM;
/* Hardware bug work-around, the chip is unable to do PCI DMA
to/from anything above 1GB :-( */
/* Hardware bug work-around, the chip is unable to do PCI DMA
to/from anything above 1GB :-( */
-@@ -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))
mapping + RX_PKT_BUF_SZ > DMA_30BIT_MASK) {
/* Sigh... */
if (!dma_mapping_error(mapping))
dev_kfree_skb_any(skb);
return -ENOMEM;
}
dev_kfree_skb_any(skb);
return -ENOMEM;
}
-@@ -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)
dp->addr = cpu_to_le32((u32) mapping + RX_PKT_OFFSET + bp->dma_offset);
if (bp->flags & B44_FLAG_RX_RING_HACK)
-@@ -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)
pci_unmap_addr(src_map, mapping));
if (bp->flags & B44_FLAG_RX_RING_HACK)
ctrl = src_desc->ctrl;
if (dest_idx == (B44_RX_RING_SIZE - 1))
ctrl = src_desc->ctrl;
if (dest_idx == (B44_RX_RING_SIZE - 1))
-@@ -750,13 +696,13 @@ static void b44_recycle_rx(struct b44 *b
src_map->skb = NULL;
if (bp->flags & B44_FLAG_RX_RING_HACK)
src_map->skb = NULL;
if (bp->flags & B44_FLAG_RX_RING_HACK)
}
static int b44_rx(struct b44 *bp, int budget)
}
static int b44_rx(struct b44 *bp, int budget)
-@@ -776,9 +722,9 @@ static int b44_rx(struct b44 *bp, int bu
struct rx_header *rh;
u16 len;
struct rx_header *rh;
u16 len;
rh = (struct rx_header *) skb->data;
len = le16_to_cpu(rh->len);
if ((len > (RX_PKT_BUF_SZ - RX_PKT_OFFSET)) ||
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 @@ 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;
skb_size = b44_alloc_rx_skb(bp, cons, bp->rx_prod);
if (skb_size < 0)
goto drop_it;
/* Leave out rx_header */
skb_put(skb, len + RX_PKT_OFFSET);
skb_pull(skb, RX_PKT_OFFSET);
/* Leave out rx_header */
skb_put(skb, len + RX_PKT_OFFSET);
skb_pull(skb, RX_PKT_OFFSET);
-@@ -982,24 +928,24 @@ static int b44_start_xmit(struct sk_buff
dev_kfree_skb_any(bounce_skb);
goto err_out;
}
dev_kfree_skb_any(bounce_skb);
goto err_out;
}
-@@ -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)
bp->tx_ring[entry].addr = cpu_to_le32((u32) mapping+bp->dma_offset);
if (bp->flags & B44_FLAG_TX_RING_HACK)
-@@ -1097,10 +1043,10 @@ static void b44_free_rings(struct b44 *b
if (rp->skb == NULL)
continue;
if (rp->skb == NULL)
continue;
dev_kfree_skb_any(rp->skb);
rp->skb = NULL;
}
dev_kfree_skb_any(rp->skb);
rp->skb = NULL;
}
-@@ -1111,10 +1057,10 @@ static void b44_free_rings(struct b44 *b
if (rp->skb == NULL)
continue;
if (rp->skb == NULL)
continue;
dev_kfree_skb_any(rp->skb);
rp->skb = NULL;
}
dev_kfree_skb_any(rp->skb);
rp->skb = NULL;
}
-@@ -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)
memset(bp->tx_ring, 0, B44_TX_RING_BYTES);
if (bp->flags & B44_FLAG_RX_RING_HACK)
for (i = 0; i < bp->rx_pending; i++) {
if (b44_alloc_rx_skb(bp, -1, i) < 0)
for (i = 0; i < bp->rx_pending; i++) {
if (b44_alloc_rx_skb(bp, -1, i) < 0)
-@@ -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) {
bp->tx_buffers = NULL;
if (bp->rx_ring) {
if (bp->flags & B44_FLAG_RX_RING_HACK) {
bp->tx_ring, bp->tx_ring_dma);
bp->tx_ring = NULL;
bp->flags &= ~B44_FLAG_TX_RING_HACK;
bp->tx_ring, bp->tx_ring_dma);
bp->tx_ring = NULL;
bp->flags &= ~B44_FLAG_TX_RING_HACK;
-@@ -1206,7 +1152,7 @@ static int b44_alloc_consistent(struct b
goto out_err;
size = DMA_TABLE_BYTES;
goto out_err;
size = DMA_TABLE_BYTES;
if (!bp->rx_ring) {
/* Allocation may have failed due to pci_alloc_consistent
insisting on use of GFP_DMA, which is more restrictive
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 @@ static int b44_alloc_consistent(struct b
if (!rx_ring)
goto out_err;
if (!rx_ring)
goto out_err;
if (dma_mapping_error(rx_ring_dma) ||
rx_ring_dma + size > DMA_30BIT_MASK) {
if (dma_mapping_error(rx_ring_dma) ||
rx_ring_dma + size > DMA_30BIT_MASK) {
-@@ -1233,9 +1179,9 @@ static int b44_alloc_consistent(struct b
bp->flags |= B44_FLAG_RX_RING_HACK;
}
bp->flags |= B44_FLAG_RX_RING_HACK;
}
insisting on use of GFP_DMA, which is more restrictive
than necessary... */
struct dma_desc *tx_ring;
insisting on use of GFP_DMA, which is more restrictive
than necessary... */
struct dma_desc *tx_ring;
-@@ -1245,9 +1191,9 @@ static int b44_alloc_consistent(struct b
if (!tx_ring)
goto out_err;
if (!tx_ring)
goto out_err;
if (dma_mapping_error(tx_ring_dma) ||
tx_ring_dma + size > DMA_30BIT_MASK) {
if (dma_mapping_error(tx_ring_dma) ||
tx_ring_dma + size > DMA_30BIT_MASK) {
-@@ -1282,7 +1228,9 @@ static void b44_clear_stats(struct b44 *
/* bp->lock is held. */
static void b44_chip_reset(struct b44 *bp)
{
/* bp->lock is held. */
static void b44_chip_reset(struct b44 *bp)
{
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);
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,24 @@ static void b44_chip_reset(struct b44 *b
}
bw32(bp, B44_DMARX_CTRL, 0);
bp->rx_prod = bp->rx_cons = 0;
}
bw32(bp, B44_DMARX_CTRL, 0);
bp->rx_prod = bp->rx_cons = 0;
br32(bp, B44_MDIO_CTRL);
if (!(br32(bp, B44_DEVCTRL) & DEVCTRL_IPP)) {
br32(bp, B44_MDIO_CTRL);
if (!(br32(bp, B44_DEVCTRL) & DEVCTRL_IPP)) {
-@@ -1349,6 +1302,7 @@ static int b44_set_mac_addr(struct net_d
{
struct b44 *bp = netdev_priv(dev);
struct sockaddr *addr = p;
{
struct b44 *bp = netdev_priv(dev);
struct sockaddr *addr = p;
if (netif_running(dev))
return -EBUSY;
if (netif_running(dev))
return -EBUSY;
-@@ -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);
memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
spin_lock_irq(&bp->lock);
spin_unlock_irq(&bp->lock);
return 0;
spin_unlock_irq(&bp->lock);
return 0;
-@@ -1445,18 +1403,6 @@ out:
#ifdef CONFIG_NET_POLL_CONTROLLER
/*
* Polling receive - used by netconsole and other diagnostic tools
#ifdef CONFIG_NET_POLL_CONTROLLER
/*
* Polling receive - used by netconsole and other diagnostic tools
-@@ -1570,7 +1516,6 @@ static void b44_setup_pseudo_magicp(stru
static void b44_setup_wol(struct b44 *bp)
{
u32 val;
static void b44_setup_wol(struct b44 *bp)
{
u32 val;
bw32(bp, B44_RXCONFIG, RXCONFIG_ALLMULTI);
bw32(bp, B44_RXCONFIG, RXCONFIG_ALLMULTI);
-@@ -1594,13 +1539,6 @@ static void b44_setup_wol(struct b44 *bp
} else {
b44_setup_pseudo_magicp(bp);
}
} else {
b44_setup_pseudo_magicp(bp);
}
}
static int b44_close(struct net_device *dev)
}
static int b44_close(struct net_device *dev)
-@@ -1700,7 +1638,7 @@ static void __b44_set_rx_mode(struct net
val = br32(bp, B44_RXCONFIG);
val &= ~(RXCONFIG_PROMISC | RXCONFIG_ALLMULTI);
val = br32(bp, B44_RXCONFIG);
val &= ~(RXCONFIG_PROMISC | RXCONFIG_ALLMULTI);
val |= RXCONFIG_PROMISC;
bw32(bp, B44_RXCONFIG, val);
} else {
val |= RXCONFIG_PROMISC;
bw32(bp, B44_RXCONFIG, val);
} else {
-@@ -1747,12 +1685,8 @@ static void b44_set_msglevel(struct net_
static void b44_get_drvinfo (struct net_device *dev, struct ethtool_drvinfo *info)
{
static void b44_get_drvinfo (struct net_device *dev, struct ethtool_drvinfo *info)
{
}
static int b44_nway_reset(struct net_device *dev)
}
static int b44_nway_reset(struct net_device *dev)
-@@ -2035,6 +1969,245 @@ static const struct ethtool_ops b44_etht
.get_ethtool_stats = b44_get_ethtool_stats,
};
.get_ethtool_stats = b44_get_ethtool_stats,
};
static int b44_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
{
struct mii_ioctl_data *data = if_mii(ifr);
static int b44_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
{
struct mii_ioctl_data *data = if_mii(ifr);
-@@ -2044,40 +2217,64 @@ static int b44_ioctl(struct net_device *
if (!netif_running(dev))
goto out;
if (!netif_running(dev))
goto out;
if (!is_valid_ether_addr(&bp->dev->dev_addr[0])){
printk(KERN_ERR PFX "Invalid MAC address found in EEPROM\n");
if (!is_valid_ether_addr(&bp->dev->dev_addr[0])){
printk(KERN_ERR PFX "Invalid MAC address found in EEPROM\n");
-@@ -2086,103 +2283,52 @@ static int __devinit b44_get_invariants(
+@@ -2086,103 +2283,52 @@
memcpy(bp->dev->perm_addr, bp->dev->dev_addr, bp->dev->addr_len);
memcpy(bp->dev->perm_addr, bp->dev->dev_addr, bp->dev->addr_len);
bp->rx_pending = B44_DEF_RX_RING_PENDING;
bp->tx_pending = B44_DEF_TX_RING_PENDING;
bp->rx_pending = B44_DEF_RX_RING_PENDING;
bp->tx_pending = B44_DEF_TX_RING_PENDING;
-@@ -2201,16 +2347,16 @@ static int __devinit b44_init_one(struct
dev->poll_controller = b44_poll_controller;
#endif
dev->change_mtu = b44_change_mtu;
dev->poll_controller = b44_poll_controller;
#endif
dev->change_mtu = b44_change_mtu;
-@@ -2229,61 +2375,52 @@ static int __devinit b44_init_one(struct
err = register_netdev(dev);
if (err) {
err = register_netdev(dev);
if (err) {
del_timer_sync(&bp->timer);
del_timer_sync(&bp->timer);
-@@ -2301,33 +2438,22 @@ static int b44_suspend(struct pci_dev *p
b44_init_hw(bp, B44_PARTIAL_RESET);
b44_setup_wol(bp);
}
b44_init_hw(bp, B44_PARTIAL_RESET);
b44_setup_wol(bp);
}
-@@ -2346,29 +2472,31 @@ static int b44_resume(struct pci_dev *pd
-Index: linux-2.6.23.17/drivers/net/b44.h
-===================================================================
---- linux-2.6.23.17.orig/drivers/net/b44.h
-+++ linux-2.6.23.17/drivers/net/b44.h
+--- a/drivers/net/b44.h
++++ b/drivers/net/b44.h
@@ -129,6 +129,7 @@
#define RXCONFIG_FLOW 0x00000020 /* Flow Control Enable */
#define RXCONFIG_FLOW_ACCEPT 0x00000040 /* Accept Unicast Flow Control Frame */
@@ -129,6 +129,7 @@
#define RXCONFIG_FLOW 0x00000020 /* Flow Control Enable */
#define RXCONFIG_FLOW_ACCEPT 0x00000040 /* Accept Unicast Flow Control Frame */
/* 4400 PHY registers */
#define B44_MII_AUXCTRL 24 /* Auxiliary Control */
/* 4400 PHY registers */
#define B44_MII_AUXCTRL 24 /* Auxiliary Control */
-@@ -346,10 +281,12 @@ struct rx_header {
struct ring_info {
struct sk_buff *skb;
struct ring_info {
struct sk_buff *skb;
#define B44_STAT_REG_DECLARE \
_B44(tx_good_octets) \
#define B44_STAT_REG_DECLARE \
_B44(tx_good_octets) \
-@@ -425,9 +362,10 @@ struct b44 {
u32 dma_offset;
u32 flags;
u32 dma_offset;
u32 flags;
#define B44_FLAG_PAUSE_AUTO 0x00008000
#define B44_FLAG_FULL_DUPLEX 0x00010000
#define B44_FLAG_100_BASE_T 0x00020000
#define B44_FLAG_PAUSE_AUTO 0x00008000
#define B44_FLAG_FULL_DUPLEX 0x00010000
#define B44_FLAG_100_BASE_T 0x00020000
-@@ -450,8 +388,7 @@ struct b44 {
struct net_device_stats stats;
struct b44_hw_stats hw_stats;
struct net_device_stats stats;
struct b44_hw_stats hw_stats;
struct net_device *dev;
dma_addr_t rx_ring_dma, tx_ring_dma;
struct net_device *dev;
dma_addr_t rx_ring_dma, tx_ring_dma;
-Index: linux-2.6.23.17/drivers/net/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/drivers/net/Kconfig
-+++ linux-2.6.23.17/drivers/net/Kconfig
-@@ -1577,7 +1577,7 @@ config APRICOT
+--- a/drivers/net/Kconfig
++++ b/drivers/net/Kconfig
+@@ -1577,7 +1577,7 @@
config B44
tristate "Broadcom 4400 ethernet support"
config B44
tristate "Broadcom 4400 ethernet support"
-Index: linux-2.6.23.17/drivers/net/b44.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/net/b44.c
-+++ linux-2.6.23.17/drivers/net/b44.c
-@@ -2273,6 +2273,10 @@ static int __devinit b44_get_invariants(
+--- a/drivers/net/b44.c
++++ b/drivers/net/b44.c
+@@ -2273,6 +2273,10 @@
bp->phy_addr = sdev->bus->sprom.et1phyaddr;
break;
}
bp->phy_addr = sdev->bus->sprom.et1phyaddr;
break;
}
-Index: linux-2.6.23.17/arch/mips/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/arch/mips/Kconfig
-+++ linux-2.6.23.17/arch/mips/Kconfig
-@@ -192,7 +192,6 @@ config MIPS_MALTA
+--- a/arch/mips/Kconfig
++++ b/arch/mips/Kconfig
+@@ -192,7 +192,6 @@
select I8259
select MIPS_BOARDS_GEN
select MIPS_BONITO64
select I8259
select MIPS_BOARDS_GEN
select MIPS_BONITO64
select PCI_GT64XXX_PCI0
select MIPS_MSC
select SWAP_IO_SPACE
select PCI_GT64XXX_PCI0
select MIPS_MSC
select SWAP_IO_SPACE
-@@ -1281,13 +1280,6 @@ config IP22_CPU_SCACHE
config R5000_CPU_SCACHE
bool
select BOARD_SCACHE
config R5000_CPU_SCACHE
bool
select BOARD_SCACHE
-Index: linux-2.6.23.17/arch/mips/kernel/cpu-probe.c
-===================================================================
---- linux-2.6.23.17.orig/arch/mips/kernel/cpu-probe.c
-+++ linux-2.6.23.17/arch/mips/kernel/cpu-probe.c
-@@ -701,6 +701,8 @@ static inline void cpu_probe_mips(struct
+--- a/arch/mips/kernel/cpu-probe.c
++++ b/arch/mips/kernel/cpu-probe.c
+@@ -701,6 +701,8 @@
break;
case PRID_IMP_25KF:
c->cputype = CPU_25KF;
break;
case PRID_IMP_25KF:
c->cputype = CPU_25KF;
break;
case PRID_IMP_34K:
c->cputype = CPU_34K;
break;
case PRID_IMP_34K:
c->cputype = CPU_34K;
-Index: linux-2.6.23.17/arch/mips/mm/c-r4k.c
-===================================================================
---- linux-2.6.23.17.orig/arch/mips/mm/c-r4k.c
-+++ linux-2.6.23.17/arch/mips/mm/c-r4k.c
-@@ -1101,7 +1101,6 @@ static void __init loongson2_sc_init(voi
+--- a/arch/mips/mm/c-r4k.c
++++ b/arch/mips/mm/c-r4k.c
+@@ -1101,7 +1101,6 @@
extern int r5k_sc_init(void);
extern int rm7k_sc_init(void);
extern int r5k_sc_init(void);
extern int rm7k_sc_init(void);
static void __init setup_scache(void)
{
static void __init setup_scache(void)
{
-@@ -1155,29 +1154,17 @@ static void __init setup_scache(void)
/* compute a couple of other cache variables */
c->scache.waysize = scache_size / c->scache.ways;
/* compute a couple of other cache variables */
c->scache.waysize = scache_size / c->scache.ways;
-Index: linux-2.6.23.17/arch/mips/mm/Makefile
-===================================================================
---- linux-2.6.23.17.orig/arch/mips/mm/Makefile
-+++ linux-2.6.23.17/arch/mips/mm/Makefile
-@@ -31,6 +31,5 @@ obj-$(CONFIG_CPU_VR41XX) += c-r4k.o cex-
+--- a/arch/mips/mm/Makefile
++++ b/arch/mips/mm/Makefile
+@@ -31,6 +31,5 @@
obj-$(CONFIG_IP22_CPU_SCACHE) += sc-ip22.o
obj-$(CONFIG_R5000_CPU_SCACHE) += sc-r5k.o
obj-$(CONFIG_RM7000_CPU_SCACHE) += sc-rm7k.o
obj-$(CONFIG_IP22_CPU_SCACHE) += sc-ip22.o
obj-$(CONFIG_R5000_CPU_SCACHE) += sc-r5k.o
obj-$(CONFIG_RM7000_CPU_SCACHE) += sc-rm7k.o
-Index: linux-2.6.23.17/arch/mips/kernel/genex.S
-===================================================================
---- linux-2.6.23.17.orig/arch/mips/kernel/genex.S
-+++ linux-2.6.23.17/arch/mips/kernel/genex.S
-@@ -51,6 +51,10 @@ NESTED(except_vec1_generic, 0, sp)
+--- a/arch/mips/kernel/genex.S
++++ b/arch/mips/kernel/genex.S
+@@ -51,6 +51,10 @@
NESTED(except_vec3_generic, 0, sp)
.set push
.set noat
NESTED(except_vec3_generic, 0, sp)
.set push
.set noat
#if R5432_CP0_INTERRUPT_WAR
mfc0 k0, CP0_INDEX
#endif
#if R5432_CP0_INTERRUPT_WAR
mfc0 k0, CP0_INDEX
#endif
-Index: linux-2.6.23.17/arch/mips/mm/c-r4k.c
-===================================================================
---- linux-2.6.23.17.orig/arch/mips/mm/c-r4k.c
-+++ linux-2.6.23.17/arch/mips/mm/c-r4k.c
+--- a/arch/mips/mm/c-r4k.c
++++ b/arch/mips/mm/c-r4k.c
@@ -30,6 +30,9 @@
#include <asm/cacheflush.h> /* for run_uncached() */
@@ -30,6 +30,9 @@
#include <asm/cacheflush.h> /* for run_uncached() */
/*
* Special Variant of smp_call_function for use by cache functions:
*
/*
* Special Variant of smp_call_function for use by cache functions:
*
-@@ -94,6 +97,9 @@ static void __init r4k_blast_dcache_page
{
unsigned long dc_lsize = cpu_dcache_line_size();
{
unsigned long dc_lsize = cpu_dcache_line_size();
if (dc_lsize == 0)
r4k_blast_dcache_page = (void *)cache_noop;
else if (dc_lsize == 16)
if (dc_lsize == 0)
r4k_blast_dcache_page = (void *)cache_noop;
else if (dc_lsize == 16)
-@@ -108,6 +114,9 @@ static void __init r4k_blast_dcache_page
{
unsigned long dc_lsize = cpu_dcache_line_size();
{
unsigned long dc_lsize = cpu_dcache_line_size();
if (dc_lsize == 0)
r4k_blast_dcache_page_indexed = (void *)cache_noop;
else if (dc_lsize == 16)
if (dc_lsize == 0)
r4k_blast_dcache_page_indexed = (void *)cache_noop;
else if (dc_lsize == 16)
-@@ -122,6 +131,9 @@ static void __init r4k_blast_dcache_setu
{
unsigned long dc_lsize = cpu_dcache_line_size();
{
unsigned long dc_lsize = cpu_dcache_line_size();
if (dc_lsize == 0)
r4k_blast_dcache = (void *)cache_noop;
else if (dc_lsize == 16)
if (dc_lsize == 0)
r4k_blast_dcache = (void *)cache_noop;
else if (dc_lsize == 16)
-@@ -638,6 +650,8 @@ static void local_r4k_flush_cache_sigtra
unsigned long addr = (unsigned long) arg;
R4600_HIT_CACHEOP_WAR_IMPL;
unsigned long addr = (unsigned long) arg;
R4600_HIT_CACHEOP_WAR_IMPL;
if (dc_lsize)
protected_writeback_dcache_line(addr & ~(dc_lsize - 1));
if (!cpu_icache_snoops_remote_store && scache_size)
if (dc_lsize)
protected_writeback_dcache_line(addr & ~(dc_lsize - 1));
if (!cpu_icache_snoops_remote_store && scache_size)
-@@ -1213,6 +1227,17 @@ static void __init coherency_setup(void)
* silly idea of putting something else there ...
*/
switch (current_cpu_data.cputype) {
* silly idea of putting something else there ...
*/
switch (current_cpu_data.cputype) {
case CPU_R4000PC:
case CPU_R4000SC:
case CPU_R4000MC:
case CPU_R4000PC:
case CPU_R4000SC:
case CPU_R4000MC:
-@@ -1243,6 +1268,15 @@ void __init r4k_cache_init(void)
/* Default cache error handler for R4000 and R5000 family */
set_uncached_handler (0x100, &except_vec2_generic, 0x80);
/* Default cache error handler for R4000 and R5000 family */
set_uncached_handler (0x100, &except_vec2_generic, 0x80);
probe_pcache();
setup_scache();
probe_pcache();
setup_scache();
-@@ -1288,5 +1322,13 @@ void __init r4k_cache_init(void)
build_clear_page();
build_copy_page();
local_r4k___flush_cache_all(NULL);
build_clear_page();
build_copy_page();
local_r4k___flush_cache_all(NULL);
coherency_setup();
+#endif
}
coherency_setup();
+#endif
}
-Index: linux-2.6.23.17/arch/mips/mm/tlbex.c
-===================================================================
---- linux-2.6.23.17.orig/arch/mips/mm/tlbex.c
-+++ linux-2.6.23.17/arch/mips/mm/tlbex.c
-@@ -1273,6 +1273,9 @@ static void __init build_r4000_tlb_refil
+--- a/arch/mips/mm/tlbex.c
++++ b/arch/mips/mm/tlbex.c
+@@ -1273,6 +1273,9 @@
/* No need for i_nop */
}
/* No need for i_nop */
}
#ifdef CONFIG_64BIT
build_get_pmde64(&p, &l, &r, K0, K1); /* get pmd in K1 */
#else
#ifdef CONFIG_64BIT
build_get_pmde64(&p, &l, &r, K0, K1); /* get pmd in K1 */
#else
-@@ -1708,6 +1711,9 @@ build_r4000_tlbchange_handler_head(u32 *
struct reloc **r, unsigned int pte,
unsigned int ptr)
{
struct reloc **r, unsigned int pte,
unsigned int ptr)
{
#ifdef CONFIG_64BIT
build_get_pmde64(p, l, r, pte, ptr); /* get pmd in ptr */
#else
#ifdef CONFIG_64BIT
build_get_pmde64(p, l, r, pte, ptr); /* get pmd in ptr */
#else
-Index: linux-2.6.23.17/include/asm-mips/r4kcache.h
-===================================================================
---- linux-2.6.23.17.orig/include/asm-mips/r4kcache.h
-+++ linux-2.6.23.17/include/asm-mips/r4kcache.h
+--- a/include/asm-mips/r4kcache.h
++++ b/include/asm-mips/r4kcache.h
@@ -17,6 +17,20 @@
#include <asm/cpu-features.h>
#include <asm/mipsmtregs.h>
@@ -17,6 +17,20 @@
#include <asm/cpu-features.h>
#include <asm/mipsmtregs.h>
/*
* This macro return a properly sign-extended address suitable as base address
* for indexed cache operations. Two issues here:
/*
* This macro return a properly sign-extended address suitable as base address
* for indexed cache operations. Two issues here:
-@@ -150,6 +164,7 @@ static inline void flush_icache_line_ind
static inline void flush_dcache_line_indexed(unsigned long addr)
{
__dflush_prologue
static inline void flush_dcache_line_indexed(unsigned long addr)
{
__dflush_prologue
cache_op(Index_Writeback_Inv_D, addr);
__dflush_epilogue
}
cache_op(Index_Writeback_Inv_D, addr);
__dflush_epilogue
}
-@@ -169,6 +184,7 @@ static inline void flush_icache_line(uns
static inline void flush_dcache_line(unsigned long addr)
{
__dflush_prologue
static inline void flush_dcache_line(unsigned long addr)
{
__dflush_prologue
cache_op(Hit_Writeback_Inv_D, addr);
__dflush_epilogue
}
cache_op(Hit_Writeback_Inv_D, addr);
__dflush_epilogue
}
-@@ -176,6 +192,7 @@ static inline void flush_dcache_line(uns
static inline void invalidate_dcache_line(unsigned long addr)
{
__dflush_prologue
static inline void invalidate_dcache_line(unsigned long addr)
{
__dflush_prologue
cache_op(Hit_Invalidate_D, addr);
__dflush_epilogue
}
cache_op(Hit_Invalidate_D, addr);
__dflush_epilogue
}
-@@ -208,6 +225,7 @@ static inline void flush_scache_line(uns
*/
static inline void protected_flush_icache_line(unsigned long addr)
{
*/
static inline void protected_flush_icache_line(unsigned long addr)
{
protected_cache_op(Hit_Invalidate_I, addr);
}
protected_cache_op(Hit_Invalidate_I, addr);
}
-@@ -219,6 +237,7 @@ static inline void protected_flush_icach
*/
static inline void protected_writeback_dcache_line(unsigned long addr)
{
*/
static inline void protected_writeback_dcache_line(unsigned long addr)
{
protected_cache_op(Hit_Writeback_Inv_D, addr);
}
protected_cache_op(Hit_Writeback_Inv_D, addr);
}
-@@ -339,8 +358,52 @@ static inline void invalidate_tcache_pag
: "r" (base), \
"i" (op));
: "r" (base), \
"i" (op));
static inline void blast_##pfx##cache##lsize(void) \
{ \
unsigned long start = INDEX_BASE; \
static inline void blast_##pfx##cache##lsize(void) \
{ \
unsigned long start = INDEX_BASE; \
-@@ -352,6 +415,7 @@ static inline void blast_##pfx##cache##l
\
__##pfx##flush_prologue \
\
\
__##pfx##flush_prologue \
\
for (ws = 0; ws < ws_end; ws += ws_inc) \
for (addr = start; addr < end; addr += lsize * 32) \
cache##lsize##_unroll32(addr|ws,indexop); \
for (ws = 0; ws < ws_end; ws += ws_inc) \
for (addr = start; addr < end; addr += lsize * 32) \
cache##lsize##_unroll32(addr|ws,indexop); \
-@@ -366,6 +430,7 @@ static inline void blast_##pfx##cache##l
\
__##pfx##flush_prologue \
\
\
__##pfx##flush_prologue \
\
do { \
cache##lsize##_unroll32(start,hitop); \
start += lsize * 32; \
do { \
cache##lsize##_unroll32(start,hitop); \
start += lsize * 32; \
-@@ -384,6 +449,8 @@ static inline void blast_##pfx##cache##l
current_cpu_data.desc.waybit; \
unsigned long ws, addr; \
\
current_cpu_data.desc.waybit; \
unsigned long ws, addr; \
\
__##pfx##flush_prologue \
\
for (ws = 0; ws < ws_end; ws += ws_inc) \
__##pfx##flush_prologue \
\
for (ws = 0; ws < ws_end; ws += ws_inc) \
-@@ -393,28 +460,30 @@ static inline void blast_##pfx##cache##l
__##pfx##flush_epilogue \
}
__##pfx##flush_epilogue \
}
prot##cache_op(hitop, addr); \
if (addr == aend) \
break; \
prot##cache_op(hitop, addr); \
if (addr == aend) \
break; \
-@@ -424,13 +493,13 @@ static inline void prot##blast_##pfx##ca
__##pfx##flush_epilogue \
}
__##pfx##flush_epilogue \
}
+__BUILD_BLAST_CACHE_RANGE(inv_s, scache, Hit_Invalidate_SD,,, )
#endif /* _ASM_R4KCACHE_H */
+__BUILD_BLAST_CACHE_RANGE(inv_s, scache, Hit_Invalidate_SD,,, )
#endif /* _ASM_R4KCACHE_H */
-Index: linux-2.6.23.17/include/asm-mips/stackframe.h
-===================================================================
---- linux-2.6.23.17.orig/include/asm-mips/stackframe.h
-+++ linux-2.6.23.17/include/asm-mips/stackframe.h
+--- a/include/asm-mips/stackframe.h
++++ b/include/asm-mips/stackframe.h
@@ -350,6 +350,10 @@
.macro RESTORE_SP_AND_RET
LONG_L sp, PT_R29(sp)
@@ -350,6 +350,10 @@
.macro RESTORE_SP_AND_RET
LONG_L sp, PT_R29(sp)
-Index: linux-2.6.23.17/arch/mips/mm/init.c
-===================================================================
---- linux-2.6.23.17.orig/arch/mips/mm/init.c
-+++ linux-2.6.23.17/arch/mips/mm/init.c
-@@ -211,7 +211,7 @@ void copy_user_highpage(struct page *to,
+--- a/arch/mips/mm/init.c
++++ b/arch/mips/mm/init.c
+@@ -211,7 +211,7 @@
void *vfrom, *vto;
vto = kmap_atomic(to, KM_USER1);
void *vfrom, *vto;
vto = kmap_atomic(to, KM_USER1);
vfrom = kmap_coherent(from, vaddr);
copy_page(vto, vfrom);
kunmap_coherent();
vfrom = kmap_coherent(from, vaddr);
copy_page(vto, vfrom);
kunmap_coherent();
-@@ -234,7 +234,7 @@ void copy_to_user_page(struct vm_area_st
struct page *page, unsigned long vaddr, void *dst, const void *src,
unsigned long len)
{
struct page *page, unsigned long vaddr, void *dst, const void *src,
unsigned long len)
{
void *vto = kmap_coherent(page, vaddr) + (vaddr & ~PAGE_MASK);
memcpy(vto, src, len);
kunmap_coherent();
void *vto = kmap_coherent(page, vaddr) + (vaddr & ~PAGE_MASK);
memcpy(vto, src, len);
kunmap_coherent();
-@@ -250,7 +250,7 @@ void copy_from_user_page(struct vm_area_
struct page *page, unsigned long vaddr, void *dst, const void *src,
unsigned long len)
{
struct page *page, unsigned long vaddr, void *dst, const void *src,
unsigned long len)
{
void *vfrom =
kmap_coherent(page, vaddr) + (vaddr & ~PAGE_MASK);
memcpy(dst, vfrom, len);
void *vfrom =
kmap_coherent(page, vaddr) + (vaddr & ~PAGE_MASK);
memcpy(dst, vfrom, len);
-Index: linux-2.6.23.17/include/asm-mips/mach-bcm947xx/cpu-feature-overrides.h
-===================================================================
-+++ linux-2.6.23.17/include/asm-mips/mach-bcm947xx/cpu-feature-overrides.h
++++ b/include/asm-mips/mach-bcm947xx/cpu-feature-overrides.h
@@ -0,0 +1,13 @@
+/*
+ * This file is subject to the terms and conditions of the GNU General Public
@@ -0,0 +1,13 @@
+/*
+ * This file is subject to the terms and conditions of the GNU General Public
+#define cpu_use_kmap_coherent 0
+
+#endif /* __ASM_MACH_BCM947XX_CPU_FEATURE_OVERRIDES_H */
+#define cpu_use_kmap_coherent 0
+
+#endif /* __ASM_MACH_BCM947XX_CPU_FEATURE_OVERRIDES_H */
-Index: linux-2.6.23.17/include/asm-mips/cpu-features.h
-===================================================================
---- linux-2.6.23.17.orig/include/asm-mips/cpu-features.h
-+++ linux-2.6.23.17/include/asm-mips/cpu-features.h
+--- a/include/asm-mips/cpu-features.h
++++ b/include/asm-mips/cpu-features.h
@@ -101,6 +101,9 @@
#ifndef cpu_has_pindexed_dcache
#define cpu_has_pindexed_dcache (cpu_data[0].dcache.flags & MIPS_CACHE_PINDEX)
@@ -101,6 +101,9 @@
#ifndef cpu_has_pindexed_dcache
#define cpu_has_pindexed_dcache (cpu_data[0].dcache.flags & MIPS_CACHE_PINDEX)
-Index: linux-2.6.23.17/arch/mips/kernel/cpu-probe.c
-===================================================================
---- linux-2.6.23.17.orig/arch/mips/kernel/cpu-probe.c
-+++ linux-2.6.23.17/arch/mips/kernel/cpu-probe.c
-@@ -159,6 +159,7 @@ static inline void check_wait(void)
+--- a/arch/mips/kernel/cpu-probe.c
++++ b/arch/mips/kernel/cpu-probe.c
+@@ -159,6 +159,7 @@
case CPU_5KC:
case CPU_25KF:
case CPU_PR4450:
case CPU_5KC:
case CPU_25KF:
case CPU_PR4450:
-Index: linux-2.6.23.17/drivers/ssb/driver_chipcommon.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/ssb/driver_chipcommon.c
-+++ linux-2.6.23.17/drivers/ssb/driver_chipcommon.c
-@@ -270,6 +270,8 @@ void ssb_chipco_resume(struct ssb_chipco
+--- a/drivers/ssb/driver_chipcommon.c
++++ b/drivers/ssb/driver_chipcommon.c
+@@ -270,6 +270,8 @@
void ssb_chipco_get_clockcpu(struct ssb_chipcommon *cc,
u32 *plltype, u32 *n, u32 *m)
{
void ssb_chipco_get_clockcpu(struct ssb_chipcommon *cc,
u32 *plltype, u32 *n, u32 *m)
{
*n = chipco_read32(cc, SSB_CHIPCO_CLOCK_N);
*plltype = (cc->capabilities & SSB_CHIPCO_CAP_PLLT);
switch (*plltype) {
*n = chipco_read32(cc, SSB_CHIPCO_CLOCK_N);
*plltype = (cc->capabilities & SSB_CHIPCO_CAP_PLLT);
switch (*plltype) {
-@@ -293,6 +295,8 @@ void ssb_chipco_get_clockcpu(struct ssb_
void ssb_chipco_get_clockcontrol(struct ssb_chipcommon *cc,
u32 *plltype, u32 *n, u32 *m)
{
void ssb_chipco_get_clockcontrol(struct ssb_chipcommon *cc,
u32 *plltype, u32 *n, u32 *m)
{
*n = chipco_read32(cc, SSB_CHIPCO_CLOCK_N);
*plltype = (cc->capabilities & SSB_CHIPCO_CAP_PLLT);
switch (*plltype) {
*n = chipco_read32(cc, SSB_CHIPCO_CLOCK_N);
*plltype = (cc->capabilities & SSB_CHIPCO_CAP_PLLT);
switch (*plltype) {
-Index: linux-2.6.23.17/drivers/ssb/driver_mipscore.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/ssb/driver_mipscore.c
-+++ linux-2.6.23.17/drivers/ssb/driver_mipscore.c
-@@ -161,6 +161,8 @@ u32 ssb_cpu_clock(struct ssb_mipscore *m
+--- a/drivers/ssb/driver_mipscore.c
++++ b/drivers/ssb/driver_mipscore.c
+@@ -161,6 +161,8 @@
if ((pll_type == SSB_PLLTYPE_5) || (bus->chip_id == 0x5365)) {
rate = 200000000;
if ((pll_type == SSB_PLLTYPE_5) || (bus->chip_id == 0x5365)) {
rate = 200000000;
} else {
rate = ssb_calc_clock_rate(pll_type, n, m);
}
} else {
rate = ssb_calc_clock_rate(pll_type, n, m);
}
-Index: linux-2.6.23.17/drivers/ssb/main.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/ssb/main.c
-+++ linux-2.6.23.17/drivers/ssb/main.c
-@@ -862,6 +862,8 @@ u32 ssb_clockspeed(struct ssb_bus *bus)
+--- a/drivers/ssb/main.c
++++ b/drivers/ssb/main.c
+@@ -862,6 +862,8 @@
if (bus->chip_id == 0x5365) {
rate = 100000000;
if (bus->chip_id == 0x5365) {
rate = 100000000;
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
-Index: linux-2.6.23.17/drivers/usb/host/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/drivers/usb/host/Kconfig
-+++ linux-2.6.23.17/drivers/usb/host/Kconfig
-@@ -154,6 +154,19 @@ config USB_OHCI_HCD_PCI
+--- a/drivers/usb/host/Kconfig
++++ b/drivers/usb/host/Kconfig
+@@ -154,6 +154,19 @@
Enables support for PCI-bus plug-in USB controller cards.
If unsure, say Y.
Enables support for PCI-bus plug-in USB controller cards.
If unsure, say Y.
config USB_OHCI_BIG_ENDIAN_DESC
bool
depends on USB_OHCI_HCD
config USB_OHCI_BIG_ENDIAN_DESC
bool
depends on USB_OHCI_HCD
-Index: linux-2.6.23.17/drivers/usb/host/ohci-hcd.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/usb/host/ohci-hcd.c
-+++ linux-2.6.23.17/drivers/usb/host/ohci-hcd.c
-@@ -926,11 +926,17 @@ MODULE_LICENSE ("GPL");
+--- a/drivers/usb/host/ohci-hcd.c
++++ b/drivers/usb/host/ohci-hcd.c
+@@ -926,11 +926,17 @@
#define PS3_SYSTEM_BUS_DRIVER ps3_ohci_driver
#endif
#define PS3_SYSTEM_BUS_DRIVER ps3_ohci_driver
#endif
#error "missing bus glue for ohci-hcd"
#endif
#error "missing bus glue for ohci-hcd"
#endif
-@@ -975,10 +981,20 @@ static int __init ohci_hcd_mod_init(void
error_pci:
#endif
#ifdef SA1111_DRIVER
error_pci:
#endif
#ifdef SA1111_DRIVER
-@@ -1003,6 +1019,9 @@ module_init(ohci_hcd_mod_init);
static void __exit ohci_hcd_mod_exit(void)
{
static void __exit ohci_hcd_mod_exit(void)
{
#ifdef PCI_DRIVER
pci_unregister_driver(&PCI_DRIVER);
#endif
#ifdef PCI_DRIVER
pci_unregister_driver(&PCI_DRIVER);
#endif
-Index: linux-2.6.23.17/drivers/usb/host/ohci-ssb.c
-===================================================================
-+++ linux-2.6.23.17/drivers/usb/host/ohci-ssb.c
++++ b/drivers/usb/host/ohci-ssb.c
@@ -0,0 +1,247 @@
+/*
+ * Sonics Silicon Backplane
@@ -0,0 +1,247 @@
+/*
+ * Sonics Silicon Backplane
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
---
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
---
-Index: linux-2.6.23.17/drivers/usb/host/ohci-ssb.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/usb/host/ohci-ssb.c
-+++ linux-2.6.23.17/drivers/usb/host/ohci-ssb.c
-@@ -117,8 +117,10 @@ static const struct hc_driver ssb_ohci_h
+--- a/drivers/usb/host/ohci-ssb.c
++++ b/drivers/usb/host/ohci-ssb.c
+@@ -117,8 +117,10 @@
.hub_status_data = ohci_hub_status_data,
.hub_control = ohci_hub_control,
.hub_irq_enable = ohci_rhsc_enable,
.hub_status_data = ohci_hub_status_data,
.hub_control = ohci_hub_control,
.hub_irq_enable = ohci_rhsc_enable,
-Index: linux-2.6.23.17/drivers/usb/host/ohci-ssb.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/usb/host/ohci-ssb.c
-+++ linux-2.6.23.17/drivers/usb/host/ohci-ssb.c
-@@ -142,10 +142,59 @@ static int ssb_ohci_attach(struct ssb_de
+--- a/drivers/usb/host/ohci-ssb.c
++++ b/drivers/usb/host/ohci-ssb.c
+@@ -142,10 +142,59 @@
int err = -ENOMEM;
u32 tmp, flags = 0;
int err = -ENOMEM;
u32 tmp, flags = 0;
hcd = usb_create_hcd(&ssb_ohci_hc_driver, dev->dev,
dev->dev->bus_id);
hcd = usb_create_hcd(&ssb_ohci_hc_driver, dev->dev,
dev->dev->bus_id);
-@@ -235,6 +284,7 @@ static int ssb_ohci_resume(struct ssb_de
static const struct ssb_device_id ssb_ohci_table[] = {
SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_USB11_HOSTDEV, SSB_ANY_REV),
SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_USB11_HOST, SSB_ANY_REV),
static const struct ssb_device_id ssb_ohci_table[] = {
SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_USB11_HOSTDEV, SSB_ANY_REV),
SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_USB11_HOST, SSB_ANY_REV),
-Index: linux-2.6.23.17/drivers/usb/host/ohci-ssb.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/usb/host/ohci-ssb.c
-+++ linux-2.6.23.17/drivers/usb/host/ohci-ssb.c
-@@ -195,6 +195,11 @@ static int ssb_ohci_attach(struct ssb_de
+--- a/drivers/usb/host/ohci-ssb.c
++++ b/drivers/usb/host/ohci-ssb.c
+@@ -195,6 +195,11 @@
else
ssb_device_enable(dev, 0);
else
ssb_device_enable(dev, 0);
-Index: linux-2.6.23.17/include/asm-mips/cacheflush.h
-===================================================================
---- linux-2.6.23.17.orig/include/asm-mips/cacheflush.h
-+++ linux-2.6.23.17/include/asm-mips/cacheflush.h
+--- a/include/asm-mips/cacheflush.h
++++ b/include/asm-mips/cacheflush.h
@@ -32,7 +32,7 @@
extern void (*flush_cache_all)(void);
extern void (*__flush_cache_all)(void);
@@ -32,7 +32,7 @@
extern void (*flush_cache_all)(void);
extern void (*__flush_cache_all)(void);
-Index: linux-2.6.23.17/arch/mips/mm/init.c
-===================================================================
---- linux-2.6.23.17.orig/arch/mips/mm/init.c
-+++ linux-2.6.23.17/arch/mips/mm/init.c
-@@ -205,31 +205,6 @@ void kunmap_coherent(void)
+--- a/arch/mips/mm/init.c
++++ b/arch/mips/mm/init.c
+@@ -205,31 +205,6 @@
preempt_check_resched();
}
preempt_check_resched();
}
void copy_to_user_page(struct vm_area_struct *vma,
struct page *page, unsigned long vaddr, void *dst, const void *src,
unsigned long len)
void copy_to_user_page(struct vm_area_struct *vma,
struct page *page, unsigned long vaddr, void *dst, const void *src,
unsigned long len)
-Index: linux-2.6.23.17/include/asm-mips/page.h
-===================================================================
---- linux-2.6.23.17.orig/include/asm-mips/page.h
-+++ linux-2.6.23.17/include/asm-mips/page.h
+--- a/include/asm-mips/page.h
++++ b/include/asm-mips/page.h
@@ -35,6 +35,7 @@
#ifndef __ASSEMBLY__
@@ -35,6 +35,7 @@
#ifndef __ASSEMBLY__
-@@ -67,13 +68,16 @@ static inline void clear_user_page(void
flush_data_cache_page((unsigned long)addr);
}
flush_data_cache_page((unsigned long)addr);
}
-Index: linux-2.6.23.17/drivers/ide/pci/aec62xx.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/ide/pci/aec62xx.c
-+++ linux-2.6.23.17/drivers/ide/pci/aec62xx.c
-@@ -248,7 +248,14 @@ static int __devinit init_setup_aec62xx(
+--- a/drivers/ide/pci/aec62xx.c
++++ b/drivers/ide/pci/aec62xx.c
+@@ -248,7 +248,14 @@
static int __devinit init_setup_aec6x80(struct pci_dev *dev, ide_pci_device_t *d)
{
static int __devinit init_setup_aec6x80(struct pci_dev *dev, ide_pci_device_t *d)
{
if (inb(dma_base + 2) & 0x10) {
d->name = (dev->device == PCI_DEVICE_ID_ARTOP_ATP865R) ?
if (inb(dma_base + 2) & 0x10) {
d->name = (dev->device == PCI_DEVICE_ID_ARTOP_ATP865R) ?
-@@ -256,7 +263,11 @@ static int __devinit init_setup_aec6x80(
d->udma_mask = 0x7f; /* udma0-6 */
}
d->udma_mask = 0x7f; /* udma0-6 */
}
-Index: linux-2.6.23.17/scripts/gen_initramfs_list.sh
-===================================================================
---- linux-2.6.23.17.orig/scripts/gen_initramfs_list.sh
-+++ linux-2.6.23.17/scripts/gen_initramfs_list.sh
-@@ -287,7 +287,7 @@ if [ ! -z ${output_file} ]; then
+--- a/scripts/gen_initramfs_list.sh
++++ b/scripts/gen_initramfs_list.sh
+@@ -287,7 +287,7 @@
if [ "${is_cpio_compressed}" = "compressed" ]; then
cat ${cpio_tfile} > ${output_file}
else
if [ "${is_cpio_compressed}" = "compressed" ]; then
cat ${cpio_tfile} > ${output_file}
else
fi
[ -z ${cpio_file} ] && rm ${cpio_tfile}
fi
fi
[ -z ${cpio_file} ] && rm ${cpio_tfile}
fi
-Index: linux-2.6.23.17/init/initramfs.c
-===================================================================
---- linux-2.6.23.17.orig/init/initramfs.c
-+++ linux-2.6.23.17/init/initramfs.c
-@@ -441,6 +441,69 @@ static void __init flush_window(void)
+--- a/init/initramfs.c
++++ b/init/initramfs.c
+@@ -441,6 +441,69 @@
static char * __init unpack_to_rootfs(char *buf, unsigned len, int check_only)
{
int written;
static char * __init unpack_to_rootfs(char *buf, unsigned len, int check_only)
{
int written;
-@@ -475,12 +538,28 @@ static char * __init unpack_to_rootfs(ch
inptr = 0;
outcnt = 0; /* bytes in output buffer */
bytes_out = 0;
inptr = 0;
outcnt = 0; /* bytes in output buffer */
bytes_out = 0;
-Index: linux-2.6.23.17/drivers/ssb/driver_pcicore.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/ssb/driver_pcicore.c
-+++ linux-2.6.23.17/drivers/ssb/driver_pcicore.c
-@@ -66,6 +66,7 @@ int pcibios_plat_dev_init(struct pci_dev
+--- a/drivers/ssb/driver_pcicore.c
++++ b/drivers/ssb/driver_pcicore.c
+@@ -66,6 +66,7 @@
base = &ssb_pcicore_pcibus_iobase;
else
base = &ssb_pcicore_pcibus_membase;
base = &ssb_pcicore_pcibus_iobase;
else
base = &ssb_pcicore_pcibus_membase;
if (res->end) {
size = res->end - res->start + 1;
if (*base & (size - 1))
if (res->end) {
size = res->end - res->start + 1;
if (*base & (size - 1))
-@@ -88,10 +89,12 @@ int pcibios_plat_dev_init(struct pci_dev
static void __init ssb_fixup_pcibridge(struct pci_dev *dev)
{
static void __init ssb_fixup_pcibridge(struct pci_dev *dev)
{
/* Enable PCI bridge bus mastering and memory space */
pci_set_master(dev);
/* Enable PCI bridge bus mastering and memory space */
pci_set_master(dev);
-@@ -101,7 +104,10 @@ static void __init ssb_fixup_pcibridge(s
pci_write_config_dword(dev, SSB_BAR1_CONTROL, 3);
/* Make sure our latency is high enough to handle the devices behind us */
pci_write_config_dword(dev, SSB_BAR1_CONTROL, 3);
/* Make sure our latency is high enough to handle the devices behind us */
}
DECLARE_PCI_FIXUP_EARLY(PCI_ANY_ID, PCI_ANY_ID, ssb_fixup_pcibridge);
}
DECLARE_PCI_FIXUP_EARLY(PCI_ANY_ID, PCI_ANY_ID, ssb_fixup_pcibridge);
-@@ -279,14 +285,14 @@ static struct resource ssb_pcicore_mem_r
.name = "SSB PCIcore external memory",
.start = SSB_PCI_DMA,
.end = SSB_PCI_DMA + SSB_PCI_DMA_SZ - 1,
.name = "SSB PCIcore external memory",
.start = SSB_PCI_DMA,
.end = SSB_PCI_DMA + SSB_PCI_DMA_SZ - 1,
};
static struct pci_controller ssb_pcicore_controller = {
};
static struct pci_controller ssb_pcicore_controller = {
-@@ -344,7 +350,8 @@ static void ssb_pcicore_init_hostmode(st
/* Ok, ready to run, register it to the system.
* The following needs change, if we want to port hostmode
* to non-MIPS platform. */
/* Ok, ready to run, register it to the system.
* The following needs change, if we want to port hostmode
* to non-MIPS platform. */
However, the pcicore PCI-fixup routine fixes these collisions afterwards.
Remove this sanity check for now until we find a better solution.
--mb
However, the pcicore PCI-fixup routine fixes these collisions afterwards.
Remove this sanity check for now until we find a better solution.
--mb
-Index: linux-2.6.23.17/arch/mips/pci/pci.c
-===================================================================
---- linux-2.6.23.17.orig/arch/mips/pci/pci.c
-+++ linux-2.6.23.17/arch/mips/pci/pci.c
-@@ -177,10 +177,8 @@ static int pcibios_enable_resources(stru
+--- a/arch/mips/pci/pci.c
++++ b/arch/mips/pci/pci.c
+@@ -177,10 +177,8 @@
continue;
r = &dev->resource[idx];
continue;
r = &dev->resource[idx];
-Index: linux-2.6.23.17/drivers/ssb/driver_chipcommon.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/ssb/driver_chipcommon.c
-+++ linux-2.6.23.17/drivers/ssb/driver_chipcommon.c
-@@ -403,6 +403,7 @@ int ssb_chipco_serial_init(struct ssb_ch
+--- a/drivers/ssb/driver_chipcommon.c
++++ b/drivers/ssb/driver_chipcommon.c
+@@ -403,6 +403,7 @@
unsigned int irq;
u32 baud_base, div;
u32 i, n;
unsigned int irq;
u32 baud_base, div;
u32 i, n;
plltype = (cc->capabilities & SSB_CHIPCO_CAP_PLLT);
irq = ssb_mips_irq(cc->dev);
plltype = (cc->capabilities & SSB_CHIPCO_CAP_PLLT);
irq = ssb_mips_irq(cc->dev);
-@@ -414,14 +415,39 @@ int ssb_chipco_serial_init(struct ssb_ch
chipco_read32(cc, SSB_CHIPCO_CLOCK_M2));
div = 1;
} else {
chipco_read32(cc, SSB_CHIPCO_CLOCK_M2));
div = 1;
} else {
/* Internal backplane clock */
baud_base = ssb_clockspeed(bus);
div = chipco_read32(cc, SSB_CHIPCO_CLKDIV)
/* Internal backplane clock */
baud_base = ssb_clockspeed(bus);
div = chipco_read32(cc, SSB_CHIPCO_CLKDIV)
-@@ -433,7 +459,7 @@ int ssb_chipco_serial_init(struct ssb_ch
}
/* Clock source depends on strapping if UartClkOverride is unset */
}
/* Clock source depends on strapping if UartClkOverride is unset */
!(chipco_read32(cc, SSB_CHIPCO_CORECTL) & SSB_CHIPCO_CORECTL_UARTCLK0)) {
if ((cc->capabilities & SSB_CHIPCO_CAP_UARTCLK) ==
SSB_CHIPCO_CAP_UARTCLK_INT) {
!(chipco_read32(cc, SSB_CHIPCO_CORECTL) & SSB_CHIPCO_CORECTL_UARTCLK0)) {
if ((cc->capabilities & SSB_CHIPCO_CAP_UARTCLK) ==
SSB_CHIPCO_CAP_UARTCLK_INT) {
-@@ -455,7 +481,7 @@ int ssb_chipco_serial_init(struct ssb_ch
cc_mmio = cc->dev->bus->mmio + (cc->dev->core_index * SSB_CORE_SIZE);
uart_regs = cc_mmio + SSB_CHIPCO_UART0_DATA;
/* Offset changed at after rev 0 */
cc_mmio = cc->dev->bus->mmio + (cc->dev->core_index * SSB_CORE_SIZE);
uart_regs = cc_mmio + SSB_CHIPCO_UART0_DATA;
/* Offset changed at after rev 0 */
uart_regs += (i * 8);
else
uart_regs += (i * 256);
uart_regs += (i * 8);
else
uart_regs += (i * 256);
-Index: linux-2.6.23.17/include/linux/ssb/ssb_driver_chipcommon.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/ssb/ssb_driver_chipcommon.h
-+++ linux-2.6.23.17/include/linux/ssb/ssb_driver_chipcommon.h
+--- a/include/linux/ssb/ssb_driver_chipcommon.h
++++ b/include/linux/ssb/ssb_driver_chipcommon.h
@@ -51,9 +51,12 @@
#define SSB_CHIPCO_CAP_JTAGM 0x00400000 /* JTAG master present */
#define SSB_CHIPCO_CAP_BROM 0x00800000 /* Internal boot ROM active */
@@ -51,9 +51,12 @@
#define SSB_CHIPCO_CAP_JTAGM 0x00400000 /* JTAG master present */
#define SSB_CHIPCO_CAP_BROM 0x00800000 /* Internal boot ROM active */
-Index: linux-2.6.23.17/drivers/ssb/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/drivers/ssb/Kconfig
-+++ linux-2.6.23.17/drivers/ssb/Kconfig
-@@ -105,6 +105,12 @@ config SSB_DRIVER_MIPS
+--- a/drivers/ssb/Kconfig
++++ b/drivers/ssb/Kconfig
+@@ -105,6 +105,12 @@
config SSB_DRIVER_EXTIF
bool "SSB Broadcom EXTIF core driver (EXPERIMENTAL)"
depends on SSB_DRIVER_MIPS && EXPERIMENTAL
config SSB_DRIVER_EXTIF
bool "SSB Broadcom EXTIF core driver (EXPERIMENTAL)"
depends on SSB_DRIVER_MIPS && EXPERIMENTAL
-Index: linux-2.6.23.17/drivers/ssb/Makefile
-===================================================================
---- linux-2.6.23.17.orig/drivers/ssb/Makefile
-+++ linux-2.6.23.17/drivers/ssb/Makefile
+--- a/drivers/ssb/Makefile
++++ b/drivers/ssb/Makefile
@@ -1,5 +1,6 @@
# core
ssb-y += main.o scan.o
@@ -1,5 +1,6 @@
# core
ssb-y += main.o scan.o
# host support
ssb-$(CONFIG_SSB_PCIHOST) += pci.o pcihost_wrapper.o
# host support
ssb-$(CONFIG_SSB_PCIHOST) += pci.o pcihost_wrapper.o
-Index: linux-2.6.23.17/drivers/ssb/driver_extif.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/ssb/driver_extif.c
-+++ linux-2.6.23.17/drivers/ssb/driver_extif.c
-@@ -37,6 +37,12 @@ static inline u32 extif_write32_masked(s
+--- a/drivers/ssb/driver_extif.c
++++ b/drivers/ssb/driver_extif.c
+@@ -37,6 +37,12 @@
#ifdef CONFIG_SSB_SERIAL
static bool serial_exists(u8 *regs)
{
#ifdef CONFIG_SSB_SERIAL
static bool serial_exists(u8 *regs)
{
-Index: linux-2.6.23.17/drivers/ssb/embedded.c
-===================================================================
-+++ linux-2.6.23.17/drivers/ssb/embedded.c
++++ b/drivers/ssb/embedded.c
@@ -0,0 +1,26 @@
+/*
+ * Sonics Silicon Backplane
@@ -0,0 +1,26 @@
+/*
+ * Sonics Silicon Backplane
-Index: linux-2.6.23.17/include/linux/ssb/ssb_driver_chipcommon.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/ssb/ssb_driver_chipcommon.h
-+++ linux-2.6.23.17/include/linux/ssb/ssb_driver_chipcommon.h
-@@ -360,6 +360,11 @@ struct ssb_chipcommon {
+--- a/include/linux/ssb/ssb_driver_chipcommon.h
++++ b/include/linux/ssb/ssb_driver_chipcommon.h
+@@ -360,6 +360,11 @@
extern void ssb_chipcommon_init(struct ssb_chipcommon *cc);
#include <linux/pm.h>
extern void ssb_chipcommon_init(struct ssb_chipcommon *cc);
#include <linux/pm.h>
-Index: linux-2.6.23.17/include/linux/ssb/ssb_driver_extif.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/ssb/ssb_driver_extif.h
-+++ linux-2.6.23.17/include/linux/ssb/ssb_driver_extif.h
-@@ -178,6 +178,9 @@ u32 ssb_extif_gpio_outen(struct ssb_exti
+--- a/include/linux/ssb/ssb_driver_extif.h
++++ b/include/linux/ssb/ssb_driver_extif.h
+@@ -178,6 +178,9 @@
u32 ssb_extif_gpio_polarity(struct ssb_extif *extif, u32 mask, u32 value);
u32 ssb_extif_gpio_intmask(struct ssb_extif *extif, u32 mask, u32 value);
u32 ssb_extif_gpio_polarity(struct ssb_extif *extif, u32 mask, u32 value);
u32 ssb_extif_gpio_intmask(struct ssb_extif *extif, u32 mask, u32 value);
#ifdef CONFIG_SSB_SERIAL
extern int ssb_extif_serial_init(struct ssb_extif *extif,
struct ssb_serial_port *ports);
#ifdef CONFIG_SSB_SERIAL
extern int ssb_extif_serial_init(struct ssb_extif *extif,
struct ssb_serial_port *ports);
-@@ -201,5 +204,11 @@ void ssb_extif_get_clockcontrol(struct s
+
#endif /* CONFIG_SSB_DRIVER_EXTIF */
#endif /* LINUX_SSB_EXTIFCORE_H_ */
+
#endif /* CONFIG_SSB_DRIVER_EXTIF */
#endif /* LINUX_SSB_EXTIFCORE_H_ */
-Index: linux-2.6.23.17/include/linux/ssb/ssb_embedded.h
-===================================================================
-+++ linux-2.6.23.17/include/linux/ssb/ssb_embedded.h
++++ b/include/linux/ssb/ssb_embedded.h
@@ -0,0 +1,10 @@
+#ifndef LINUX_SSB_EMBEDDED_H_
+#define LINUX_SSB_EMBEDDED_H_
@@ -0,0 +1,10 @@
+#ifndef LINUX_SSB_EMBEDDED_H_
+#define LINUX_SSB_EMBEDDED_H_
-Index: linux-2.6.23.17/drivers/ssb/main.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/ssb/main.c
-+++ linux-2.6.23.17/drivers/ssb/main.c
-@@ -1163,7 +1163,9 @@ static int __init ssb_modinit(void)
+--- a/drivers/ssb/main.c
++++ b/drivers/ssb/main.c
+@@ -1163,7 +1163,9 @@
/* ssb must be initialized after PCI but before the ssb drivers.
* That means we must use some initcall between subsys_initcall
* and device_initcall. */
/* ssb must be initialized after PCI but before the ssb drivers.
* That means we must use some initcall between subsys_initcall
* and device_initcall. */
-Index: linux-2.6.23.17/drivers/ssb/driver_chipcommon.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/ssb/driver_chipcommon.c
-+++ linux-2.6.23.17/drivers/ssb/driver_chipcommon.c
-@@ -361,37 +361,31 @@ u32 ssb_chipco_gpio_in(struct ssb_chipco
+--- a/drivers/ssb/driver_chipcommon.c
++++ b/drivers/ssb/driver_chipcommon.c
+@@ -361,37 +361,31 @@
{
return chipco_read32(cc, SSB_CHIPCO_GPIOIN) & mask;
}
{
return chipco_read32(cc, SSB_CHIPCO_GPIOIN) & mask;
}
#ifdef CONFIG_SSB_SERIAL
int ssb_chipco_serial_init(struct ssb_chipcommon *cc,
#ifdef CONFIG_SSB_SERIAL
int ssb_chipco_serial_init(struct ssb_chipcommon *cc,
-Index: linux-2.6.23.17/drivers/ssb/driver_extif.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/ssb/driver_extif.c
-+++ linux-2.6.23.17/drivers/ssb/driver_extif.c
-@@ -122,30 +122,25 @@ u32 ssb_extif_gpio_in(struct ssb_extif *
+--- a/drivers/ssb/driver_extif.c
++++ b/drivers/ssb/driver_extif.c
+@@ -122,30 +122,25 @@
{
return extif_read32(extif, SSB_EXTIF_GPIO_IN) & mask;
}
{
return extif_read32(extif, SSB_EXTIF_GPIO_IN) & mask;
}
return extif_write32_masked(extif, SSB_EXTIF_GPIO_INTMASK, mask, value);
}
-EXPORT_SYMBOL(ssb_extif_gpio_intmask);
return extif_write32_masked(extif, SSB_EXTIF_GPIO_INTMASK, mask, value);
}
-EXPORT_SYMBOL(ssb_extif_gpio_intmask);
-Index: linux-2.6.23.17/drivers/ssb/embedded.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/ssb/embedded.c
-+++ linux-2.6.23.17/drivers/ssb/embedded.c
+--- a/drivers/ssb/embedded.c
++++ b/drivers/ssb/embedded.c
@@ -11,6 +11,8 @@
#include <linux/ssb/ssb.h>
#include <linux/ssb/ssb_embedded.h>
@@ -11,6 +11,8 @@
#include <linux/ssb/ssb.h>
#include <linux/ssb/ssb_embedded.h>
int ssb_watchdog_timer_set(struct ssb_bus *bus, u32 ticks)
{
int ssb_watchdog_timer_set(struct ssb_bus *bus, u32 ticks)
{
-@@ -24,3 +26,107 @@ int ssb_watchdog_timer_set(struct ssb_bu
+ return res;
+}
+EXPORT_SYMBOL(ssb_gpio_polarity);
+ return res;
+}
+EXPORT_SYMBOL(ssb_gpio_polarity);
-Index: linux-2.6.23.17/include/linux/ssb/ssb.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/ssb/ssb.h
-+++ linux-2.6.23.17/include/linux/ssb/ssb.h
-@@ -283,6 +283,11 @@ struct ssb_bus {
+--- a/include/linux/ssb/ssb.h
++++ b/include/linux/ssb/ssb.h
+@@ -283,6 +283,11 @@
/* Contents of the SPROM. */
struct ssb_sprom sprom;
/* Contents of the SPROM. */
struct ssb_sprom sprom;
/* Internal-only stuff follows. Do not touch. */
struct list_head list;
#ifdef CONFIG_SSB_DEBUG
/* Internal-only stuff follows. Do not touch. */
struct list_head list;
#ifdef CONFIG_SSB_DEBUG
-Index: linux-2.6.23.17/include/linux/ssb/ssb_embedded.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/ssb/ssb_embedded.h
-+++ linux-2.6.23.17/include/linux/ssb/ssb_embedded.h
+--- a/include/linux/ssb/ssb_embedded.h
++++ b/include/linux/ssb/ssb_embedded.h
@@ -7,4 +7,12 @@
extern int ssb_watchdog_timer_set(struct ssb_bus *bus, u32 ticks);
@@ -7,4 +7,12 @@
extern int ssb_watchdog_timer_set(struct ssb_bus *bus, u32 ticks);
+u32 ssb_gpio_polarity(struct ssb_bus *bus, u32 mask, u32 value);
+
#endif /* LINUX_SSB_EMBEDDED_H_ */
+u32 ssb_gpio_polarity(struct ssb_bus *bus, u32 mask, u32 value);
+
#endif /* LINUX_SSB_EMBEDDED_H_ */
-Index: linux-2.6.23.17/drivers/ssb/main.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/ssb/main.c
-+++ linux-2.6.23.17/drivers/ssb/main.c
-@@ -571,6 +571,9 @@ static int ssb_bus_register(struct ssb_b
+--- a/drivers/ssb/main.c
++++ b/drivers/ssb/main.c
+@@ -571,6 +571,9 @@
spin_lock_init(&bus->bar_lock);
INIT_LIST_HEAD(&bus->list);
spin_lock_init(&bus->bar_lock);
INIT_LIST_HEAD(&bus->list);
-Index: linux-2.6.23.17/drivers/ssb/driver_pcicore.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/ssb/driver_pcicore.c
-+++ linux-2.6.23.17/drivers/ssb/driver_pcicore.c
+--- a/drivers/ssb/driver_pcicore.c
++++ b/drivers/ssb/driver_pcicore.c
@@ -11,6 +11,7 @@
#include <linux/ssb/ssb.h>
#include <linux/pci.h>
@@ -11,6 +11,7 @@
#include <linux/ssb/ssb.h>
#include <linux/pci.h>
-@@ -27,6 +28,18 @@ void pcicore_write32(struct ssb_pcicore
ssb_write32(pc->dev, offset, value);
}
ssb_write32(pc->dev, offset, value);
}
/**************************************************
* Code for hostmode operation.
**************************************************/
/**************************************************
* Code for hostmode operation.
**************************************************/
-@@ -123,8 +136,10 @@ static u32 get_cfgspace_addr(struct ssb_
if (bus == 0) {
/* Type 0 transaction */
if (unlikely(dev >= SSB_PCI_SLOT_MAX))
if (bus == 0) {
/* Type 0 transaction */
if (unlikely(dev >= SSB_PCI_SLOT_MAX))
-@@ -324,7 +339,16 @@ static void ssb_pcicore_init_hostmode(st
pcicore_write32(pc, SSB_PCICORE_ARBCTL, val);
udelay(1); /* Assertion time demanded by the PCI standard */
pcicore_write32(pc, SSB_PCICORE_ARBCTL, val);
udelay(1); /* Assertion time demanded by the PCI standard */
/* 64MB I/O window */
pcicore_write32(pc, SSB_PCICORE_SBTOPCI0,
/* 64MB I/O window */
pcicore_write32(pc, SSB_PCICORE_SBTOPCI0,
-Index: linux-2.6.23.17/drivers/ssb/main.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/ssb/main.c
-+++ linux-2.6.23.17/drivers/ssb/main.c
-@@ -559,6 +559,7 @@ static int ssb_fetch_invariants(struct s
+--- a/drivers/ssb/main.c
++++ b/drivers/ssb/main.c
+@@ -559,6 +559,7 @@
goto out;
memcpy(&bus->boardinfo, &iv.boardinfo, sizeof(iv.boardinfo));
memcpy(&bus->sprom, &iv.sprom, sizeof(iv.sprom));
goto out;
memcpy(&bus->boardinfo, &iv.boardinfo, sizeof(iv.boardinfo));
memcpy(&bus->sprom, &iv.sprom, sizeof(iv.sprom));
-Index: linux-2.6.23.17/include/linux/ssb/ssb.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/ssb/ssb.h
-+++ linux-2.6.23.17/include/linux/ssb/ssb.h
-@@ -282,6 +282,8 @@ struct ssb_bus {
+--- a/include/linux/ssb/ssb.h
++++ b/include/linux/ssb/ssb.h
+@@ -282,6 +282,8 @@
struct ssb_boardinfo boardinfo;
/* Contents of the SPROM. */
struct ssb_sprom sprom;
struct ssb_boardinfo boardinfo;
/* Contents of the SPROM. */
struct ssb_sprom sprom;
#ifdef CONFIG_SSB_EMBEDDED
/* Lock for GPIO register access. */
#ifdef CONFIG_SSB_EMBEDDED
/* Lock for GPIO register access. */
-@@ -299,8 +301,13 @@ struct ssb_bus {
/* The initialization-invariants. */
struct ssb_init_invariants {
/* The initialization-invariants. */
struct ssb_init_invariants {
};
/* Type of function to fetch the invariants. */
typedef int (*ssb_invariants_func_t)(struct ssb_bus *bus,
};
/* Type of function to fetch the invariants. */
typedef int (*ssb_invariants_func_t)(struct ssb_bus *bus,
-Index: linux-2.6.23.17/include/linux/ssb/ssb_driver_pci.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/ssb/ssb_driver_pci.h
-+++ linux-2.6.23.17/include/linux/ssb/ssb_driver_pci.h
+--- a/include/linux/ssb/ssb_driver_pci.h
++++ b/include/linux/ssb/ssb_driver_pci.h
@@ -51,6 +51,11 @@
#define SSB_PCICORE_SBTOPCI1_MASK 0xFC000000
#define SSB_PCICORE_SBTOPCI2 0x0108 /* Backplane to PCI translation 2 (sbtopci2) */
@@ -51,6 +51,11 @@
#define SSB_PCICORE_SBTOPCI1_MASK 0xFC000000
#define SSB_PCICORE_SBTOPCI2 0x0108 /* Backplane to PCI translation 2 (sbtopci2) */
Add support for 8bit reads/writes to SSB.
Add support for 8bit reads/writes to SSB.
-Index: linux-2.6.23.17/drivers/ssb/main.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/ssb/main.c
-+++ linux-2.6.23.17/drivers/ssb/main.c
-@@ -507,6 +507,14 @@ error:
+--- a/drivers/ssb/main.c
++++ b/drivers/ssb/main.c
+@@ -507,6 +507,14 @@
static u16 ssb_ssb_read16(struct ssb_device *dev, u16 offset)
{
struct ssb_bus *bus = dev->bus;
static u16 ssb_ssb_read16(struct ssb_device *dev, u16 offset)
{
struct ssb_bus *bus = dev->bus;
-@@ -523,6 +531,14 @@ static u32 ssb_ssb_read32(struct ssb_dev
return readl(bus->mmio + offset);
}
return readl(bus->mmio + offset);
}
static void ssb_ssb_write16(struct ssb_device *dev, u16 offset, u16 value)
{
struct ssb_bus *bus = dev->bus;
static void ssb_ssb_write16(struct ssb_device *dev, u16 offset, u16 value)
{
struct ssb_bus *bus = dev->bus;
-@@ -541,8 +557,10 @@ static void ssb_ssb_write32(struct ssb_d
/* Ops for the plain SSB bus without a host-device (no PCI or PCMCIA). */
static const struct ssb_bus_ops ssb_ssb_ops = {
/* Ops for the plain SSB bus without a host-device (no PCI or PCMCIA). */
static const struct ssb_bus_ops ssb_ssb_ops = {
.write16 = ssb_ssb_write16,
.write32 = ssb_ssb_write32,
};
.write16 = ssb_ssb_write16,
.write32 = ssb_ssb_write32,
};
-Index: linux-2.6.23.17/drivers/ssb/pci.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/ssb/pci.c
-+++ linux-2.6.23.17/drivers/ssb/pci.c
-@@ -572,6 +572,19 @@ static inline int ssb_pci_assert_buspowe
+--- a/drivers/ssb/pci.c
++++ b/drivers/ssb/pci.c
+@@ -572,6 +572,19 @@
static u16 ssb_pci_read16(struct ssb_device *dev, u16 offset)
{
struct ssb_bus *bus = dev->bus;
static u16 ssb_pci_read16(struct ssb_device *dev, u16 offset)
{
struct ssb_bus *bus = dev->bus;
-@@ -598,6 +611,19 @@ static u32 ssb_pci_read32(struct ssb_dev
return ioread32(bus->mmio + offset);
}
return ioread32(bus->mmio + offset);
}
static void ssb_pci_write16(struct ssb_device *dev, u16 offset, u16 value)
{
struct ssb_bus *bus = dev->bus;
static void ssb_pci_write16(struct ssb_device *dev, u16 offset, u16 value)
{
struct ssb_bus *bus = dev->bus;
-@@ -626,8 +652,10 @@ static void ssb_pci_write32(struct ssb_d
/* Not "static", as it's used in main.c */
const struct ssb_bus_ops ssb_pci_ops = {
/* Not "static", as it's used in main.c */
const struct ssb_bus_ops ssb_pci_ops = {
.write16 = ssb_pci_write16,
.write32 = ssb_pci_write32,
};
.write16 = ssb_pci_write16,
.write32 = ssb_pci_write32,
};
-Index: linux-2.6.23.17/drivers/ssb/pcmcia.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/ssb/pcmcia.c
-+++ linux-2.6.23.17/drivers/ssb/pcmcia.c
-@@ -172,6 +172,22 @@ static int select_core_and_segment(struc
+--- a/drivers/ssb/pcmcia.c
++++ b/drivers/ssb/pcmcia.c
+@@ -172,6 +172,22 @@
static u16 ssb_pcmcia_read16(struct ssb_device *dev, u16 offset)
{
struct ssb_bus *bus = dev->bus;
static u16 ssb_pcmcia_read16(struct ssb_device *dev, u16 offset)
{
struct ssb_bus *bus = dev->bus;
-@@ -206,6 +222,20 @@ static u32 ssb_pcmcia_read32(struct ssb_
return (lo | (hi << 16));
}
return (lo | (hi << 16));
}
static void ssb_pcmcia_write16(struct ssb_device *dev, u16 offset, u16 value)
{
struct ssb_bus *bus = dev->bus;
static void ssb_pcmcia_write16(struct ssb_device *dev, u16 offset, u16 value)
{
struct ssb_bus *bus = dev->bus;
-@@ -238,8 +268,10 @@ static void ssb_pcmcia_write32(struct ss
/* Not "static", as it's used in main.c */
const struct ssb_bus_ops ssb_pcmcia_ops = {
/* Not "static", as it's used in main.c */
const struct ssb_bus_ops ssb_pcmcia_ops = {
.write16 = ssb_pcmcia_write16,
.write32 = ssb_pcmcia_write32,
};
.write16 = ssb_pcmcia_write16,
.write32 = ssb_pcmcia_write32,
};
-Index: linux-2.6.23.17/include/linux/ssb/ssb.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/ssb/ssb.h
-+++ linux-2.6.23.17/include/linux/ssb/ssb.h
-@@ -72,8 +72,10 @@ struct ssb_device;
+--- a/include/linux/ssb/ssb.h
++++ b/include/linux/ssb/ssb.h
+@@ -72,8 +72,10 @@
/* Lowlevel read/write operations on the device MMIO.
* Internal, don't use that outside of ssb. */
struct ssb_bus_ops {
/* Lowlevel read/write operations on the device MMIO.
* Internal, don't use that outside of ssb. */
struct ssb_bus_ops {
void (*write16)(struct ssb_device *dev, u16 offset, u16 value);
void (*write32)(struct ssb_device *dev, u16 offset, u32 value);
};
void (*write16)(struct ssb_device *dev, u16 offset, u16 value);
void (*write32)(struct ssb_device *dev, u16 offset, u32 value);
};
-@@ -344,6 +346,10 @@ void ssb_device_disable(struct ssb_devic
/* Device MMIO register read/write functions. */
/* Device MMIO register read/write functions. */
static inline u16 ssb_read16(struct ssb_device *dev, u16 offset)
{
return dev->ops->read16(dev, offset);
static inline u16 ssb_read16(struct ssb_device *dev, u16 offset)
{
return dev->ops->read16(dev, offset);
-@@ -352,6 +358,10 @@ static inline u32 ssb_read32(struct ssb_
{
return dev->ops->read32(dev, offset);
}
{
return dev->ops->read32(dev, offset);
}
Allow registering PCI devices after early boot.
This is an ugly hack and needs to be rewritten before going upstream.
Allow registering PCI devices after early boot.
This is an ugly hack and needs to be rewritten before going upstream.
-Index: linux-2.6.23.17/arch/mips/pci/pci.c
-===================================================================
---- linux-2.6.23.17.orig/arch/mips/pci/pci.c
-+++ linux-2.6.23.17/arch/mips/pci/pci.c
+--- a/arch/mips/pci/pci.c
++++ b/arch/mips/pci/pci.c
@@ -21,6 +21,17 @@
*/
int pci_probe_only;
@@ -21,6 +21,17 @@
*/
int pci_probe_only;
#define PCI_ASSIGN_ALL_BUSSES 1
unsigned int pci_probe = PCI_ASSIGN_ALL_BUSSES;
#define PCI_ASSIGN_ALL_BUSSES 1
unsigned int pci_probe = PCI_ASSIGN_ALL_BUSSES;
-@@ -75,8 +86,32 @@ pcibios_align_resource(void *data, struc
if (request_resource(&iomem_resource, hose->mem_resource) < 0)
goto out;
if (request_resource(&ioport_resource, hose->io_resource) < 0) {
if (request_resource(&iomem_resource, hose->mem_resource) < 0)
goto out;
if (request_resource(&ioport_resource, hose->io_resource) < 0) {
-@@ -84,9 +119,6 @@ void __devinit register_pci_controller(s
/*
* Do not panic here but later - this might hapen before console init.
*/
/*
* Do not panic here but later - this might hapen before console init.
*/
-@@ -94,41 +126,47 @@ void __devinit register_pci_controller(s
printk(KERN_WARNING
"registering PCI controller with io_map_base unset\n");
}
printk(KERN_WARNING
"registering PCI controller with io_map_base unset\n");
}
/* Scan all of the recorded PCI controllers. */
for (next_busno = 0, hose = hose_head; hose; hose = hose->next) {
/* Scan all of the recorded PCI controllers. */
for (next_busno = 0, hose = hose_head; hose; hose = hose->next) {
-@@ -157,6 +195,7 @@ static int __init pcibios_init(void)
if (!pci_probe_only)
pci_assign_unassigned_resources();
pci_fixup_irqs(common_swizzle, pcibios_map_irq);
if (!pci_probe_only)
pci_assign_unassigned_resources();
pci_fixup_irqs(common_swizzle, pcibios_map_irq);
-Index: linux-2.6.23.17/drivers/ssb/main.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/ssb/main.c
-+++ linux-2.6.23.17/drivers/ssb/main.c
-@@ -1185,9 +1185,7 @@ static int __init ssb_modinit(void)
+--- a/drivers/ssb/main.c
++++ b/drivers/ssb/main.c
+@@ -1185,9 +1185,7 @@
/* ssb must be initialized after PCI but before the ssb drivers.
* That means we must use some initcall between subsys_initcall
* and device_initcall. */
/* ssb must be initialized after PCI but before the ssb drivers.
* That means we must use some initcall between subsys_initcall
* and device_initcall. */
-Index: linux-2.6.23.17/drivers/ssb/Kconfig
-===================================================================
---- linux-2.6.23.17.orig/drivers/ssb/Kconfig
-+++ linux-2.6.23.17/drivers/ssb/Kconfig
-@@ -120,4 +120,13 @@ config SSB_DRIVER_EXTIF
+--- a/drivers/ssb/Kconfig
++++ b/drivers/ssb/Kconfig
+@@ -120,4 +120,13 @@
+ If unsure, say N
+
endmenu
+ If unsure, say N
+
endmenu
-Index: linux-2.6.23.17/drivers/ssb/Makefile
-===================================================================
---- linux-2.6.23.17.orig/drivers/ssb/Makefile
-+++ linux-2.6.23.17/drivers/ssb/Makefile
-@@ -11,6 +11,7 @@ ssb-y += driver_chipcommon.o
+--- a/drivers/ssb/Makefile
++++ b/drivers/ssb/Makefile
+@@ -11,6 +11,7 @@
ssb-$(CONFIG_SSB_DRIVER_MIPS) += driver_mipscore.o
ssb-$(CONFIG_SSB_DRIVER_EXTIF) += driver_extif.o
ssb-$(CONFIG_SSB_DRIVER_PCICORE) += driver_pcicore.o
ssb-$(CONFIG_SSB_DRIVER_MIPS) += driver_mipscore.o
ssb-$(CONFIG_SSB_DRIVER_EXTIF) += driver_extif.o
ssb-$(CONFIG_SSB_DRIVER_PCICORE) += driver_pcicore.o
# b43 pci-ssb-bridge driver
# Not strictly a part of SSB, but kept here for convenience
# b43 pci-ssb-bridge driver
# Not strictly a part of SSB, but kept here for convenience
-Index: linux-2.6.23.17/drivers/ssb/driver_gige.c
-===================================================================
-+++ linux-2.6.23.17/drivers/ssb/driver_gige.c
++++ b/drivers/ssb/driver_gige.c
@@ -0,0 +1,294 @@
+/*
+ * Sonics Silicon Backplane
@@ -0,0 +1,294 @@
+/*
+ * Sonics Silicon Backplane
+{
+ return ssb_driver_register(&ssb_gige_driver);
+}
+{
+ return ssb_driver_register(&ssb_gige_driver);
+}
-Index: linux-2.6.23.17/include/linux/ssb/ssb_driver_gige.h
-===================================================================
-+++ linux-2.6.23.17/include/linux/ssb/ssb_driver_gige.h
++++ b/include/linux/ssb/ssb_driver_gige.h
@@ -0,0 +1,174 @@
+#ifndef LINUX_SSB_DRIVER_GIGE_H_
+#define LINUX_SSB_DRIVER_GIGE_H_
@@ -0,0 +1,174 @@
+#ifndef LINUX_SSB_DRIVER_GIGE_H_
+#define LINUX_SSB_DRIVER_GIGE_H_
+
+#endif /* CONFIG_SSB_DRIVER_GIGE */
+#endif /* LINUX_SSB_DRIVER_GIGE_H_ */
+
+#endif /* CONFIG_SSB_DRIVER_GIGE */
+#endif /* LINUX_SSB_DRIVER_GIGE_H_ */
-Index: linux-2.6.23.17/drivers/ssb/driver_pcicore.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/ssb/driver_pcicore.c
-+++ linux-2.6.23.17/drivers/ssb/driver_pcicore.c
-@@ -60,74 +60,6 @@ static DEFINE_SPINLOCK(cfgspace_lock);
+--- a/drivers/ssb/driver_pcicore.c
++++ b/drivers/ssb/driver_pcicore.c
+@@ -60,74 +60,6 @@
/* Core to access the external PCI config space. Can only have one. */
static struct ssb_pcicore *extpci_core;
/* Core to access the external PCI config space. Can only have one. */
static struct ssb_pcicore *extpci_core;
static u32 get_cfgspace_addr(struct ssb_pcicore *pc,
unsigned int bus, unsigned int dev,
static u32 get_cfgspace_addr(struct ssb_pcicore *pc,
unsigned int bus, unsigned int dev,
-@@ -317,6 +249,92 @@ static struct pci_controller ssb_pcicore
.mem_offset = 0x24000000,
};
.mem_offset = 0x24000000,
};
static void ssb_pcicore_init_hostmode(struct ssb_pcicore *pc)
{
u32 val;
static void ssb_pcicore_init_hostmode(struct ssb_pcicore *pc)
{
u32 val;
-Index: linux-2.6.23.17/drivers/ssb/embedded.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/ssb/embedded.c
-+++ linux-2.6.23.17/drivers/ssb/embedded.c
+--- a/drivers/ssb/embedded.c
++++ b/drivers/ssb/embedded.c
@@ -10,6 +10,9 @@
#include <linux/ssb/ssb.h>
@@ -10,6 +10,9 @@
#include <linux/ssb/ssb.h>
-@@ -130,3 +133,90 @@ u32 ssb_gpio_polarity(struct ssb_bus *bu
return res;
}
EXPORT_SYMBOL(ssb_gpio_polarity);
return res;
}
EXPORT_SYMBOL(ssb_gpio_polarity);
-Index: linux-2.6.23.17/include/linux/ssb/ssb.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/ssb/ssb.h
-+++ linux-2.6.23.17/include/linux/ssb/ssb.h
-@@ -422,5 +422,12 @@ extern int ssb_bus_powerup(struct ssb_bu
+--- a/include/linux/ssb/ssb.h
++++ b/include/linux/ssb/ssb.h
+@@ -422,5 +422,12 @@
extern u32 ssb_admatch_base(u32 adm);
extern u32 ssb_admatch_size(u32 adm);
extern u32 ssb_admatch_base(u32 adm);
extern u32 ssb_admatch_size(u32 adm);
+#endif /* CONFIG_SSB_EMBEDDED */
#endif /* LINUX_SSB_H_ */
+#endif /* CONFIG_SSB_EMBEDDED */
#endif /* LINUX_SSB_H_ */
-Index: linux-2.6.23.17/include/linux/ssb/ssb_driver_pci.h
-===================================================================
---- linux-2.6.23.17.orig/include/linux/ssb/ssb_driver_pci.h
-+++ linux-2.6.23.17/include/linux/ssb/ssb_driver_pci.h
+--- a/include/linux/ssb/ssb_driver_pci.h
++++ b/include/linux/ssb/ssb_driver_pci.h
@@ -1,6 +1,11 @@
#ifndef LINUX_SSB_PCICORE_H_
#define LINUX_SSB_PCICORE_H_
@@ -1,6 +1,11 @@
#ifndef LINUX_SSB_PCICORE_H_
#define LINUX_SSB_PCICORE_H_
#ifdef CONFIG_SSB_DRIVER_PCICORE
/* PCI core registers. */
#ifdef CONFIG_SSB_DRIVER_PCICORE
/* PCI core registers. */
-@@ -88,6 +93,9 @@ extern void ssb_pcicore_init(struct ssb_
extern int ssb_pcicore_dev_irqvecs_enable(struct ssb_pcicore *pc,
struct ssb_device *dev);
extern int ssb_pcicore_dev_irqvecs_enable(struct ssb_pcicore *pc,
struct ssb_device *dev);
#else /* CONFIG_SSB_DRIVER_PCICORE */
#else /* CONFIG_SSB_DRIVER_PCICORE */
-@@ -107,5 +115,16 @@ int ssb_pcicore_dev_irqvecs_enable(struc
+
#endif /* CONFIG_SSB_DRIVER_PCICORE */
#endif /* LINUX_SSB_PCICORE_H_ */
+
#endif /* CONFIG_SSB_DRIVER_PCICORE */
#endif /* LINUX_SSB_PCICORE_H_ */
-Index: linux-2.6.23.17/drivers/ssb/main.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/ssb/main.c
-+++ linux-2.6.23.17/drivers/ssb/main.c
+--- a/drivers/ssb/main.c
++++ b/drivers/ssb/main.c
@@ -14,6 +14,7 @@
#include <linux/io.h>
#include <linux/ssb/ssb.h>
@@ -14,6 +14,7 @@
#include <linux/io.h>
#include <linux/ssb/ssb.h>
#include <linux/dma-mapping.h>
#include <linux/pci.h>
#include <linux/dma-mapping.h>
#include <linux/pci.h>
-@@ -68,6 +69,25 @@ found:
}
#endif /* CONFIG_SSB_PCIHOST */
}
#endif /* CONFIG_SSB_PCIHOST */
static struct ssb_device *ssb_device_get(struct ssb_device *dev)
{
if (dev)
static struct ssb_device *ssb_device_get(struct ssb_device *dev)
{
if (dev)
-@@ -1175,7 +1195,14 @@ static int __init ssb_modinit(void)
err = b43_pci_ssb_bridge_init();
if (err) {
ssb_printk(KERN_ERR "Broadcom 43xx PCI-SSB-bridge "
err = b43_pci_ssb_bridge_init();
if (err) {
ssb_printk(KERN_ERR "Broadcom 43xx PCI-SSB-bridge "
/* don't fail SSB init because of this */
err = 0;
}
/* don't fail SSB init because of this */
err = 0;
}
-@@ -1189,6 +1216,7 @@ fs_initcall(ssb_modinit);
static void __exit ssb_modexit(void)
{
static void __exit ssb_modexit(void)
{
b43_pci_ssb_bridge_exit();
bus_unregister(&ssb_bustype);
}
b43_pci_ssb_bridge_exit();
bus_unregister(&ssb_bustype);
}
-Index: linux-2.6.23.17/drivers/ssb/ssb_private.h
-===================================================================
---- linux-2.6.23.17.orig/drivers/ssb/ssb_private.h
-+++ linux-2.6.23.17/drivers/ssb/ssb_private.h
-@@ -118,6 +118,8 @@ extern u32 ssb_calc_clock_rate(u32 pllty
+--- a/drivers/ssb/ssb_private.h
++++ b/drivers/ssb/ssb_private.h
+@@ -118,6 +118,8 @@
extern int ssb_devices_freeze(struct ssb_bus *bus);
extern int ssb_devices_thaw(struct ssb_bus *bus);
extern struct ssb_bus *ssb_pci_dev_to_bus(struct pci_dev *pdev);
extern int ssb_devices_freeze(struct ssb_bus *bus);
extern int ssb_devices_thaw(struct ssb_bus *bus);
extern struct ssb_bus *ssb_pci_dev_to_bus(struct pci_dev *pdev);
/* b43_pci_bridge.c */
#ifdef CONFIG_SSB_PCIHOST
/* b43_pci_bridge.c */
#ifdef CONFIG_SSB_PCIHOST
-Index: linux-2.6.23.17/drivers/net/tg3.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/net/tg3.c
-+++ linux-2.6.23.17/drivers/net/tg3.c
+--- a/drivers/net/tg3.c
++++ b/drivers/net/tg3.c
@@ -38,6 +38,7 @@
#include <linux/workqueue.h>
#include <linux/prefetch.h>
@@ -38,6 +38,7 @@
#include <linux/workqueue.h>
#include <linux/prefetch.h>
#include <net/checksum.h>
#include <net/ip.h>
#include <net/checksum.h>
#include <net/ip.h>
-@@ -410,8 +411,9 @@ static void _tw32_flush(struct tg3 *tp,
static inline void tw32_mailbox_flush(struct tg3 *tp, u32 off, u32 val)
{
tp->write32_mbox(tp, off, val);
static inline void tw32_mailbox_flush(struct tg3 *tp, u32 off, u32 val)
{
tp->write32_mbox(tp, off, val);
tp->read32_mbox(tp, off);
}
tp->read32_mbox(tp, off);
}
-@@ -623,7 +625,7 @@ static void tg3_switch_clocks(struct tg3
#define PHY_BUSY_LOOPS 5000
#define PHY_BUSY_LOOPS 5000
{
u32 frame_val;
unsigned int loops;
{
u32 frame_val;
unsigned int loops;
-@@ -637,7 +639,7 @@ static int tg3_readphy(struct tg3 *tp, i
MI_COM_PHY_ADDR_MASK);
frame_val |= ((reg << MI_COM_REG_ADDR_SHIFT) &
MI_COM_REG_ADDR_MASK);
MI_COM_PHY_ADDR_MASK);
frame_val |= ((reg << MI_COM_REG_ADDR_SHIFT) &
MI_COM_REG_ADDR_MASK);
-@@ -672,7 +674,12 @@ static int tg3_readphy(struct tg3 *tp, i
{
u32 frame_val;
unsigned int loops;
{
u32 frame_val;
unsigned int loops;
-@@ -688,7 +695,7 @@ static int tg3_writephy(struct tg3 *tp,
MI_COM_PHY_ADDR_MASK);
frame_val |= ((reg << MI_COM_REG_ADDR_SHIFT) &
MI_COM_REG_ADDR_MASK);
MI_COM_PHY_ADDR_MASK);
frame_val |= ((reg << MI_COM_REG_ADDR_SHIFT) &
MI_COM_REG_ADDR_MASK);
-@@ -721,6 +728,11 @@ static int tg3_writephy(struct tg3 *tp,
static void tg3_phy_toggle_automdix(struct tg3 *tp, int enable)
{
u32 phy;
static void tg3_phy_toggle_automdix(struct tg3 *tp, int enable)
{
u32 phy;
-@@ -1988,6 +2000,14 @@ static int tg3_setup_copper_phy(struct t
tp->link_config.active_duplex = current_duplex;
}
tp->link_config.active_duplex = current_duplex;
}
if (current_link_up == 1 &&
(tp->link_config.active_duplex == DUPLEX_FULL) &&
(tp->link_config.autoneg == AUTONEG_ENABLE)) {
if (current_link_up == 1 &&
(tp->link_config.active_duplex == DUPLEX_FULL) &&
(tp->link_config.autoneg == AUTONEG_ENABLE)) {
-@@ -4813,6 +4833,11 @@ static int tg3_poll_fw(struct tg3 *tp)
if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5906) {
/* Wait up to 20ms for init done. */
for (i = 0; i < 200; i++) {
if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5906) {
/* Wait up to 20ms for init done. */
for (i = 0; i < 200; i++) {
-@@ -5040,6 +5065,14 @@ static int tg3_chip_reset(struct tg3 *tp
tw32(GRC_MODE, tp->grc_mode);
if (tp->pci_chip_rev_id == CHIPREV_ID_5705_A0) {
tw32(GRC_MODE, tp->grc_mode);
if (tp->pci_chip_rev_id == CHIPREV_ID_5705_A0) {
-@@ -5308,9 +5341,12 @@ static int tg3_halt_cpu(struct tg3 *tp,
-@@ -5391,6 +5427,11 @@ static int tg3_load_5701_a0_firmware_fix
struct fw_info info;
int err, i;
struct fw_info info;
int err, i;
info.text_base = TG3_FW_TEXT_ADDR;
info.text_len = TG3_FW_TEXT_LEN;
info.text_data = &tg3FwText[0];
info.text_base = TG3_FW_TEXT_ADDR;
info.text_len = TG3_FW_TEXT_LEN;
info.text_data = &tg3FwText[0];
-@@ -5949,6 +5990,11 @@ static int tg3_load_tso_firmware(struct
unsigned long cpu_base, cpu_scratch_base, cpu_scratch_size;
int err, i;
unsigned long cpu_base, cpu_scratch_base, cpu_scratch_size;
int err, i;
if (tp->tg3_flags2 & TG3_FLG2_HW_TSO)
return 0;
if (tp->tg3_flags2 & TG3_FLG2_HW_TSO)
return 0;
-@@ -6850,6 +6896,11 @@ static void tg3_timer(unsigned long __op
if (!(tp->tg3_flags & TG3_FLAG_TAGGED_STATUS)) {
/* All of this garbage is because when using non-tagged
* IRQ status the mailbox/status_block protocol the chip
if (!(tp->tg3_flags & TG3_FLAG_TAGGED_STATUS)) {
/* All of this garbage is because when using non-tagged
* IRQ status the mailbox/status_block protocol the chip
-@@ -8432,6 +8483,11 @@ static int tg3_test_nvram(struct tg3 *tp
u32 *buf, csum, magic;
int i, j, err = 0, size;
u32 *buf, csum, magic;
int i, j, err = 0, size;
if (tg3_nvram_read_swab(tp, 0, &magic) != 0)
return -EIO;
if (tg3_nvram_read_swab(tp, 0, &magic) != 0)
return -EIO;
-@@ -9154,7 +9210,7 @@ static int tg3_ioctl(struct net_device *
return -EAGAIN;
spin_lock_bh(&tp->lock);
return -EAGAIN;
spin_lock_bh(&tp->lock);
spin_unlock_bh(&tp->lock);
data->val_out = mii_regval;
spin_unlock_bh(&tp->lock);
data->val_out = mii_regval;
-@@ -9173,7 +9229,7 @@ static int tg3_ioctl(struct net_device *
return -EAGAIN;
spin_lock_bh(&tp->lock);
return -EAGAIN;
spin_lock_bh(&tp->lock);
spin_unlock_bh(&tp->lock);
return err;
spin_unlock_bh(&tp->lock);
return err;
-@@ -9571,6 +9627,12 @@ static void __devinit tg3_get_5906_nvram
/* Chips other than 5700/5701 use the NVRAM for fetching info. */
static void __devinit tg3_nvram_init(struct tg3 *tp)
{
/* Chips other than 5700/5701 use the NVRAM for fetching info. */
static void __devinit tg3_nvram_init(struct tg3 *tp)
{
tw32_f(GRC_EEPROM_ADDR,
(EEPROM_ADDR_FSM_RESET |
(EEPROM_DEFAULT_CLOCK_PERIOD <<
tw32_f(GRC_EEPROM_ADDR,
(EEPROM_ADDR_FSM_RESET |
(EEPROM_DEFAULT_CLOCK_PERIOD <<
-@@ -9706,6 +9768,9 @@ static int tg3_nvram_read(struct tg3 *tp
if (!(tp->tg3_flags & TG3_FLAG_NVRAM))
return tg3_nvram_read_using_eeprom(tp, offset, val);
if (!(tp->tg3_flags & TG3_FLAG_NVRAM))
return tg3_nvram_read_using_eeprom(tp, offset, val);
-@@ -9938,6 +10003,9 @@ static int tg3_nvram_write_block(struct
if (tp->tg3_flags & TG3_FLAG_EEPROM_WRITE_PROT) {
tw32_f(GRC_LOCAL_CTRL, tp->grc_local_ctrl &
~GRC_LCLCTRL_GPIO_OUTPUT1);
if (tp->tg3_flags & TG3_FLAG_EEPROM_WRITE_PROT) {
tw32_f(GRC_LOCAL_CTRL, tp->grc_local_ctrl &
~GRC_LCLCTRL_GPIO_OUTPUT1);
-@@ -10804,7 +10872,6 @@ static int __devinit tg3_get_invariants(
tp->write32 = tg3_write_flush_reg32;
}
tp->write32 = tg3_write_flush_reg32;
}
if ((tp->tg3_flags & TG3_FLAG_TXD_MBOX_HWBUG) ||
(tp->tg3_flags & TG3_FLAG_MBOX_WRITE_REORDER)) {
tp->write32_tx_mbox = tg3_write32_tx_mbox;
if ((tp->tg3_flags & TG3_FLAG_TXD_MBOX_HWBUG) ||
(tp->tg3_flags & TG3_FLAG_MBOX_WRITE_REORDER)) {
tp->write32_tx_mbox = tg3_write32_tx_mbox;
-@@ -10840,6 +10907,11 @@ static int __devinit tg3_get_invariants(
+@@ -10840,6 +10907,11 @@
GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5701)))
tp->tg3_flags |= TG3_FLAG_SRAM_USE_CONFIG;
GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5701)))
tp->tg3_flags |= TG3_FLAG_SRAM_USE_CONFIG;
/* Get eeprom hw config before calling tg3_set_power_state().
* In particular, the TG3_FLG2_IS_NIC flag must be
* determined before calling tg3_set_power_state() so that
/* Get eeprom hw config before calling tg3_set_power_state().
* In particular, the TG3_FLG2_IS_NIC flag must be
* determined before calling tg3_set_power_state() so that
-@@ -11184,6 +11256,10 @@ static int __devinit tg3_get_device_addr
+@@ -11184,6 +11256,10 @@
}
if (!is_valid_ether_addr(&dev->dev_addr[0])) {
}
if (!is_valid_ether_addr(&dev->dev_addr[0])) {
#ifdef CONFIG_SPARC64
if (!tg3_get_default_macaddr_sparc(tp))
return 0;
#ifdef CONFIG_SPARC64
if (!tg3_get_default_macaddr_sparc(tp))
return 0;
-@@ -11675,6 +11751,7 @@ static char * __devinit tg3_phy_string(s
case PHY_ID_BCM5704: return "5704";
case PHY_ID_BCM5705: return "5705";
case PHY_ID_BCM5750: return "5750";
case PHY_ID_BCM5704: return "5704";
case PHY_ID_BCM5705: return "5705";
case PHY_ID_BCM5750: return "5750";
case PHY_ID_BCM5752: return "5752";
case PHY_ID_BCM5714: return "5714";
case PHY_ID_BCM5780: return "5780";
case PHY_ID_BCM5752: return "5752";
case PHY_ID_BCM5714: return "5714";
case PHY_ID_BCM5780: return "5780";
-@@ -11859,6 +11936,13 @@ static int __devinit tg3_init_one(struct
+@@ -11859,6 +11936,13 @@
tp->msg_enable = tg3_debug;
else
tp->msg_enable = TG3_DEF_MSG_ENABLE;
tp->msg_enable = tg3_debug;
else
tp->msg_enable = TG3_DEF_MSG_ENABLE;
/* The word/byte swap controls here control register access byte
* swapping. DMA data byte swapping is controlled in the GRC_MODE
/* The word/byte swap controls here control register access byte
* swapping. DMA data byte swapping is controlled in the GRC_MODE
-Index: linux-2.6.23.17/drivers/net/tg3.h
-===================================================================
---- linux-2.6.23.17.orig/drivers/net/tg3.h
-+++ linux-2.6.23.17/drivers/net/tg3.h
-@@ -2279,6 +2279,10 @@ struct tg3 {
+--- a/drivers/net/tg3.h
++++ b/drivers/net/tg3.h
+@@ -2279,6 +2279,10 @@
#define TG3_FLG2_PHY_JITTER_BUG 0x20000000
#define TG3_FLG2_NO_FWARE_REPORTED 0x40000000
#define TG3_FLG2_PHY_ADJUST_TRIM 0x80000000
#define TG3_FLG2_PHY_JITTER_BUG 0x20000000
#define TG3_FLG2_NO_FWARE_REPORTED 0x40000000
#define TG3_FLG2_PHY_ADJUST_TRIM 0x80000000
struct timer_list timer;
u16 timer_counter;
struct timer_list timer;
u16 timer_counter;
-@@ -2333,6 +2337,7 @@ struct tg3 {
#define PHY_ID_BCM5714 0x60008340
#define PHY_ID_BCM5780 0x60008350
#define PHY_ID_BCM5755 0xbc050cc0
#define PHY_ID_BCM5714 0x60008340
#define PHY_ID_BCM5780 0x60008350
#define PHY_ID_BCM5755 0xbc050cc0
#define PHY_ID_BCM5787 0xbc050ce0
#define PHY_ID_BCM5756 0xbc050ed0
#define PHY_ID_BCM5906 0xdc00ac40
#define PHY_ID_BCM5787 0xbc050ce0
#define PHY_ID_BCM5756 0xbc050ed0
#define PHY_ID_BCM5906 0xdc00ac40
-@@ -2364,7 +2369,8 @@ struct tg3 {
(X) == PHY_ID_BCM5752 || (X) == PHY_ID_BCM5714 || \
(X) == PHY_ID_BCM5780 || (X) == PHY_ID_BCM5787 || \
(X) == PHY_ID_BCM5755 || (X) == PHY_ID_BCM5756 || \
(X) == PHY_ID_BCM5752 || (X) == PHY_ID_BCM5714 || \
(X) == PHY_ID_BCM5780 || (X) == PHY_ID_BCM5787 || \
(X) == PHY_ID_BCM5755 || (X) == PHY_ID_BCM5756 || \
struct tg3_hw_stats *hw_stats;
dma_addr_t stats_mapping;
struct tg3_hw_stats *hw_stats;
dma_addr_t stats_mapping;
-Index: linux-2.6.23.17/drivers/ssb/driver_mipscore.c
-===================================================================
---- linux-2.6.23.17.orig/drivers/ssb/driver_mipscore.c
-+++ linux-2.6.23.17/drivers/ssb/driver_mipscore.c
-@@ -212,6 +212,7 @@ void ssb_mipscore_init(struct ssb_mipsco
+--- a/drivers/ssb/driver_mipscore.c
++++ b/drivers/ssb/driver_mipscore.c
+@@ -212,6 +212,7 @@
/* fallthrough */
case SSB_DEV_PCI:
case SSB_DEV_ETHERNET:
/* fallthrough */
case SSB_DEV_PCI:
case SSB_DEV_ETHERNET: