upgrade the ixp4xx ethernet driver to v0.3.1, split the Gateway 7001 support to two patches

SVN-Revision: 6489
This commit is contained in:
Imre Kaloz 2007-03-03 23:12:34 +00:00
parent 5acf90187b
commit b97c7c0af6
9 changed files with 2873 additions and 1149 deletions

View file

@ -18,7 +18,9 @@ CONFIG_ARCH_AVILA=y
# CONFIG_ARCH_INTEGRATOR is not set
# CONFIG_ARCH_IOP32X is not set
# CONFIG_ARCH_IOP33X is not set
# CONFIG_ARCH_IXDP425 is not set
CONFIG_MACH_PRONGHORN=y
CONFIG_MACH_PRONGHORNMETRO=y
CONFIG_ARCH_IXDP425=y
CONFIG_ARCH_IXDP4XX=y
# CONFIG_ARCH_IXP2000 is not set
# CONFIG_ARCH_IXP23XX is not set
@ -203,6 +205,7 @@ CONFIG_IXP4XX_NPE=y
CONFIG_IXP4XX_NPE_FW_LOAD=y
CONFIG_IXP4XX_NPE_FW_MTD=y
CONFIG_IXP4XX_QMGR=y
CONFIG_IXP4XX_CRYPTO=y
CONFIG_IXP4XX_WATCHDOG=y
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
CONFIG_JFFS2_FS_DEBUG=0

File diff suppressed because it is too large Load diff

View file

@ -1,36 +0,0 @@
---
drivers/net/ixp4xx/ixp4xx_qmgr.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
--- linux-ixp4xx.orig/drivers/net/ixp4xx/ixp4xx_qmgr.c 2006-10-15 18:52:35.000000000 +0200
+++ linux-ixp4xx/drivers/net/ixp4xx/ixp4xx_qmgr.c 2006-10-15 18:54:32.000000000 +0200
@@ -107,7 +107,7 @@ static int get_free_qspace(struct qm_qmg
return -1;
}
-static inline int log2(int x)
+static inline int _log2(int x)
{
int r=0;
while(x>>=1)
@@ -127,7 +127,7 @@ static inline int log2(int x)
*/
static int conf_q_regs(struct qm_queue *queue)
{
- int bsize = log2(queue->len/16);
+ int bsize = _log2(queue->len/16);
int baddr = queue->addr + IX_QMGR_QCFG_SIZE;
/* +2, because baddr is in words and not in bytes */
@@ -141,8 +141,8 @@ void queue_set_watermarks(struct qm_queu
u32 val;
/* calculate the register values
* 0->0, 1->1, 2->2, 4->3, 8->4 16->5...*/
- ne = log2(ne<<1) & 0x7;
- nf = log2(nf<<1) & 0x7;
+ ne = _log2(ne<<1) & 0x7;
+ nf = _log2(nf<<1) & 0x7;
/* Mask out old watermarks */
val = queue_read_cfg_reg(queue) & ~0xfc000000;

View file

@ -1,31 +1,10 @@
Index: linux-2.6.19/include/asm-arm/arch-ixp4xx/platform.h
===================================================================
--- linux-2.6.19.orig/include/asm-arm/arch-ixp4xx/platform.h
+++ linux-2.6.19/include/asm-arm/arch-ixp4xx/platform.h
@@ -100,6 +100,7 @@ struct mac_plat_info {
int phy_id; /* ID of the connected PHY (PCB/platform dependent) */
int rxq_id; /* Queue ID of the RX-free q*/
int txq_id; /* Where to push the outgoing packets */
+ unsigned char hwaddr[6]; /* Desired hardware address */
};
diff -Naupr a/drivers/net/ixp4xx/mac_driver.c b/drivers/net/ixp4xx/mac_driver.c
--- a/drivers/net/ixp4xx/mac_driver.c 2007-01-12 21:54:40.000000000 -0700
+++ b/drivers/net/ixp4xx/mac_driver.c 2007-01-12 22:27:18.000000000 -0700
@@ -350,6 +350,16 @@ static int ixmac_open (struct net_device
mac->npe_stat_num = i<NPE_STAT_NUM ? NPE_STAT_NUM_BASE : NPE_STAT_NUM;
mac->npe_stat_num += NPE_Q_STAT_NUM;
Index: linux-2.6.19/drivers/net/ixp4xx/mac_driver.c
===================================================================
--- linux-2.6.19.orig/drivers/net/ixp4xx/mac_driver.c
+++ linux-2.6.19/drivers/net/ixp4xx/mac_driver.c
@@ -189,6 +189,24 @@ static int ixmac_open (struct net_device
}
mac->rxq_pkt += RX_QUEUE_PREFILL;
+ /* printk(KERN_INFO "...Platform MAC=0x%02x%02x%02x%02x%02x%02x\n",
+ mac->plat->hwaddr[0],
+ mac->plat->hwaddr[1],
+ mac->plat->hwaddr[2],
+ mac->plat->hwaddr[3],
+ mac->plat->hwaddr[4],
+ mac->plat->hwaddr[5]
+ ); */
+ /* Only use platform or random if there's currently no device hw addr */
+ if (is_zero_ether_addr(dev->dev_addr)) {
+ if (is_zero_ether_addr(mac->plat->hwaddr)) {
@ -36,25 +15,27 @@ Index: linux-2.6.19/drivers/net/ixp4xx/mac_driver.c
+ memcpy(dev->dev_addr, mac->plat->hwaddr, 6);
+ }
+
mac_init(mac);
npe_mh_set_rxqid(npe, mac->plat, RX_DONE_QID);
mac_set_uniaddr(dev);
@@ -434,9 +452,15 @@ static int mac_probe(struct platform_dev
* following commands:
* "ip link set address 02:03:04:04:04:01 dev eth0"
* "ifconfig eth0 hw ether 02:03:04:04:04:07"
- */
- random_ether_addr(dev->dev_addr);
- dev->dev_addr[5] = plat->phy_id;
+ */
+/* Note: moved to ixmac_open to allow notifiers to run for compiled in modules
+ if (is_zero_ether_addr(plat->hwaddr)) {
+ random_ether_addr(dev->dev_addr);
+ dev->dev_addr[5] = plat->phy_id;
+ }
+ else
+ memcpy(dev->dev_addr, plat->hwaddr, 6);
+*/
media_check(dev, 1);
ixmac_set_rx_mode(dev);
@@ -691,20 +701,6 @@ static int mac_probe(struct platform_dev
INIT_WORK(&mac->mdio_thread, mac_mdio_thread, dev);
- /* The place of the MAC address is very system dependent.
- * Here we use a random one to be replaced by one of the
- * following commands:
- * "ip link set address 02:03:04:04:04:01 dev eth0"
- * "ifconfig eth0 hw ether 02:03:04:04:04:07"
- */
-
- if (is_zero_ether_addr(plat->hwaddr)) {
- random_ether_addr(dev->dev_addr);
- dev->dev_addr[5] = plat->phy_id;
- }
- else
- memcpy(dev->dev_addr, plat->hwaddr, 6);
-
printk(KERN_INFO IXMAC_NAME " driver " IXMAC_VERSION
": %s on %s with PHY[%d] initialized\n",
dev->name, npe->plat->name, plat->phy_id);

View file

@ -1,7 +1,6 @@
Index: linux-2.6.19/drivers/net/ixp4xx/Kconfig
===================================================================
--- linux-2.6.19.orig/drivers/net/ixp4xx/Kconfig
+++ linux-2.6.19/drivers/net/ixp4xx/Kconfig
diff -Naupr a/drivers/net/ixp4xx/Kconfig b/drivers/net/ixp4xx/Kconfig
--- a/drivers/net/ixp4xx/Kconfig 2007-01-12 21:54:40.000000000 -0700
+++ b/drivers/net/ixp4xx/Kconfig 2007-01-12 23:28:50.000000000 -0700
@@ -11,6 +11,7 @@ config IXP4XX_NPE
tristate "IXP4xx NPE support"
depends on ARCH_IXP4XX
@ -33,22 +32,19 @@ Index: linux-2.6.19/drivers/net/ixp4xx/Kconfig
config IXP4XX_MAC
tristate "IXP4xx MAC support"
depends on IXP4XX_NPE
Index: linux-2.6.19/drivers/net/ixp4xx/Makefile
===================================================================
--- linux-2.6.19.orig/drivers/net/ixp4xx/Makefile
+++ linux-2.6.19/drivers/net/ixp4xx/Makefile
@@ -1,6 +1,7 @@
diff -Naupr a/drivers/net/ixp4xx/Makefile b/drivers/net/ixp4xx/Makefile
--- a/drivers/net/ixp4xx/Makefile 2007-01-12 21:54:40.000000000 -0700
+++ b/drivers/net/ixp4xx/Makefile 2007-01-12 23:28:50.000000000 -0700
@@ -1,5 +1,6 @@
obj-$(CONFIG_IXP4XX_QMGR) += ixp4xx_qmgr.o
obj-$(CONFIG_IXP4XX_NPE) += ixp4xx_npe.o
obj-$(CONFIG_IXP4XX_MAC) += ixp4xx_mac.o
+obj-$(CONFIG_IXP4XX_NPE_FW_MTD) += npe_ucode.o
obj-$(CONFIG_IXP4XX_MAC) += ixp4xx_mac.o
obj-$(CONFIG_IXP4XX_CRYPTO) += ixp4xx_crypto.o
ixp4xx_npe-objs := ucode_dl.o npe_mh.o
ixp4xx_mac-objs := mac_driver.o qmgr_eth.o phy.o
Index: linux-2.6.19/drivers/net/ixp4xx/npe_ucode.c
===================================================================
--- /dev/null
+++ linux-2.6.19/drivers/net/ixp4xx/npe_ucode.c
diff -Naupr a/drivers/net/ixp4xx/npe_ucode.c b/drivers/net/ixp4xx/npe_ucode.c
--- a/drivers/net/ixp4xx/npe_ucode.c 1969-12-31 17:00:00.000000000 -0700
+++ b/drivers/net/ixp4xx/npe_ucode.c 2007-01-12 23:28:50.000000000 -0700
@@ -0,0 +1,185 @@
+/*
+ * Provide an NPE platform device for microcode handling
@ -235,10 +231,9 @@ Index: linux-2.6.19/drivers/net/ixp4xx/npe_ucode.c
+
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>");
Index: linux-2.6.19/drivers/net/ixp4xx/ucode_dl.c
===================================================================
--- linux-2.6.19.orig/drivers/net/ixp4xx/ucode_dl.c
+++ linux-2.6.19/drivers/net/ixp4xx/ucode_dl.c
diff -Naupr a/drivers/net/ixp4xx/ucode_dl.c b/drivers/net/ixp4xx/ucode_dl.c
--- a/drivers/net/ixp4xx/ucode_dl.c 2007-01-12 21:54:40.000000000 -0700
+++ b/drivers/net/ixp4xx/ucode_dl.c 2007-01-12 23:28:50.000000000 -0700
@@ -16,6 +16,7 @@
#include <linux/firmware.h>
#include <linux/dma-mapping.h>
@ -247,9 +242,9 @@ Index: linux-2.6.19/drivers/net/ixp4xx/ucode_dl.c
#include <asm/uaccess.h>
#include <asm/io.h>
@@ -30,6 +31,12 @@
#define IMG_SIZE(image) (((image)->size * sizeof(u32)) + \
sizeof(struct dl_image))
@@ -26,6 +27,12 @@
#define DL_MAGIC 0xfeedf00d
#define DL_MAGIC_SWAP 0x0df0edfe
+#define IMG_REV_MAJOR(id) (((id) >> 8) & 0x0f)
+#define IMG_REV_MINOR(id) ((id) & 0x0f)
@ -257,9 +252,9 @@ Index: linux-2.6.19/drivers/net/ixp4xx/ucode_dl.c
+#define IMG_NPE(id) (((id) >> 24) & 0x0f)
+#define IMG_IXP(id) (((id) >> 28) & 0x0f)
+
#define BT_INSTR 0
#define BT_DATA 1
#define EOF_BLOCK 0xf
#define IMG_SIZE(image) (((image)->size * sizeof(u32)) + \
sizeof(struct dl_image))
@@ -38,21 +45,6 @@ enum blk_type {
data,
};
@ -282,8 +277,8 @@ Index: linux-2.6.19/drivers/net/ixp4xx/ucode_dl.c
struct dl_codeblock {
u32 npe_addr;
u32 size;
@@ -134,23 +126,41 @@ struct device *get_npe_by_id(int id)
&id, match_by_npeid);
@@ -127,20 +119,33 @@ download_block(struct npe_info *npe, str
return 0;
}
-static int store_npe_image(struct dl_image *image, struct device *dev)
@ -292,21 +287,14 @@ Index: linux-2.6.19/drivers/net/ixp4xx/ucode_dl.c
struct dl_block *blk;
struct dl_codeblock *cb;
struct npe_info *npe;
- int ret=0;
+ int ret = 0;
int ret=0;
+ u16 crc;
if (!dev) {
- dev = get_npe_by_id( (image->id >> 24) & 0xf);
- put_device(dev);
+ dev = get_npe_by_id(IMG_NPE(image->id));
+ if (dev)
+ put_device(dev);
+ // XXX shouldn't this put_device be outside if(!dev) ?
+ else
+ printk(KERN_ERR "npe: cannot find npe for image %x\n", IMG_NPE(image->id));
return_npe_dev(dev);
}
+
if (!dev)
return -ENODEV;
@ -323,25 +311,9 @@ Index: linux-2.6.19/drivers/net/ixp4xx/ucode_dl.c
+ crc = crc16(0, (u8 *) image, IMG_SIZE(image));
+
npe = dev_get_drvdata(dev);
- if ( npe_status(npe) & IX_NPEDL_EXCTL_STATUS_RUN) {
+ if (npe_status(npe) & IX_NPEDL_EXCTL_STATUS_RUN) {
if (npe->loaded && (npe->usage > 0)) {
printk(KERN_INFO "Cowardly refusing to reload an Image "
"into the running %s\n", npe->plat->name);
return 0; /* indicate success anyway... */
@@ -173,9 +183,9 @@ static int store_npe_image(struct dl_ima
*(u32*)npe->img_info = cpu_to_be32(image->id);
npe_start(npe);
- printk(KERN_INFO "Image loaded to %s Func:%x, Rel: %x:%x, Status: %x\n",
+ printk(KERN_INFO "npe: firmware loaded to %s, func: %02x, rev: %x.%x, status: %x, crc: %x\n",
npe->plat->name, npe->img_info[1], npe->img_info[2],
- npe->img_info[3], npe_status(npe));
+ npe->img_info[3], npe_status(npe), crc);
return 0;
}
@@ -265,8 +275,7 @@ static ssize_t ucode_write(struct file *
@@ -267,8 +272,7 @@ static ssize_t ucode_write(struct file *
static void npe_firmware_probe(struct device *dev)
{
@ -351,27 +323,17 @@ Index: linux-2.6.19/drivers/net/ixp4xx/ucode_dl.c
const struct firmware *fw_entry;
struct npe_info *npe = dev_get_drvdata(dev);
struct dl_image *image;
@@ -388,7 +397,7 @@ static int npe_probe(struct platform_dev
npe->plat = plat;
disable_npe_irq(npe);
- if (! (npe_status(npe) & IX_NPEDL_EXCTL_STATUS_RUN))
+ if (!(npe_status(npe) & IX_NPEDL_EXCTL_STATUS_RUN))
npe_firmware_probe(&pdev->dev);
return 0;
@@ -464,3 +473,4 @@ MODULE_LICENSE("GPL");
MODULE_AUTHOR("Christian Hohnstaedt <chohnstaedt@innominate.com>");
@@ -477,3 +481,4 @@ MODULE_AUTHOR("Christian Hohnstaedt <cho
EXPORT_SYMBOL(get_npe_by_id);
EXPORT_SYMBOL(return_npe_dev);
+EXPORT_SYMBOL(store_npe_image);
Index: linux-2.6.19/include/asm-arm/arch-ixp4xx/platform.h
===================================================================
--- linux-2.6.19.orig/include/asm-arm/arch-ixp4xx/platform.h
+++ linux-2.6.19/include/asm-arm/arch-ixp4xx/platform.h
@@ -86,6 +86,20 @@ struct ixp4xx_i2c_pins {
unsigned long scl_pin;
};
diff -Naupr a/include/asm-arm/arch-ixp4xx/platform.h b/include/asm-arm/arch-ixp4xx/platform.h
--- a/include/asm-arm/arch-ixp4xx/platform.h 2007-01-12 21:54:40.000000000 -0700
+++ b/include/asm-arm/arch-ixp4xx/platform.h 2007-01-12 23:28:50.000000000 -0700
@@ -89,6 +89,21 @@ struct ixp4xx_i2c_pins {
struct sys_timer;
+struct dl_block {
+ u32 type;
@ -387,27 +349,28 @@ Index: linux-2.6.19/include/asm-arm/arch-ixp4xx/platform.h
+ struct dl_block block[0];
+ } u;
+};
+
struct npe_plat_data {
const char *name;
int data_size;
@@ -103,6 +117,9 @@ struct mac_plat_info {
unsigned char hwaddr[6]; /* Desired hardware address */
@@ -108,6 +123,10 @@ struct mac_plat_info {
};
+struct npe_ucode_platform_data {
+ unsigned char *mtd_partition;
+};
struct sys_timer;
Index: linux-2.6.19/include/linux/ixp_npe.h
===================================================================
--- linux-2.6.19.orig/include/linux/ixp_npe.h
+++ linux-2.6.19/include/linux/ixp_npe.h
@@ -71,6 +71,7 @@ static inline u32 npe_read_ecs_reg(struc
}
+
/*
* Frequency of clock used for primary clocksource
*/
diff -Naupr a/include/linux/ixp_npe.h b/include/linux/ixp_npe.h
--- a/include/linux/ixp_npe.h 2007-01-12 21:54:40.000000000 -0700
+++ b/include/linux/ixp_npe.h 2007-01-12 23:28:50.000000000 -0700
@@ -99,6 +99,7 @@ extern void npe_reset(struct npe_info *n
extern struct device *get_npe_by_id(int id);
extern void return_npe_dev(struct device *dev);
+extern int store_npe_image(struct dl_image *image, struct device *dev);
/* NPE Messages */

View file

@ -2,7 +2,7 @@ Index: linux-2.6.19/arch/arm/mach-ixp4xx/nslu2-setup.c
===================================================================
--- linux-2.6.19.orig/arch/arm/mach-ixp4xx/nslu2-setup.c
+++ linux-2.6.19/arch/arm/mach-ixp4xx/nslu2-setup.c
@@ -137,6 +137,28 @@ static struct platform_device nslu2_uart
@@ -137,6 +137,29 @@ static struct platform_device nslu2_uart
.resource = nslu2_uart_resources,
};
@ -18,6 +18,7 @@ Index: linux-2.6.19/arch/arm/mach-ixp4xx/nslu2-setup.c
+ .eth_id = 0,
+ .rxq_id = 27,
+ .txq_id = 24,
+ .rxdoneq_id = 4,
+};
+
+static struct platform_device mac0 = {

View file

@ -2,7 +2,7 @@ Index: linux-2.6.19/arch/arm/mach-ixp4xx/nas100d-setup.c
===================================================================
--- linux-2.6.19.orig/arch/arm/mach-ixp4xx/nas100d-setup.c
+++ linux-2.6.19/arch/arm/mach-ixp4xx/nas100d-setup.c
@@ -123,12 +123,35 @@ static struct platform_device nas100d_ua
@@ -123,12 +123,36 @@ static struct platform_device nas100d_ua
.resource = nas100d_uart_resources,
};
@ -18,6 +18,7 @@ Index: linux-2.6.19/arch/arm/mach-ixp4xx/nas100d-setup.c
+ .eth_id = 0,
+ .rxq_id = 27,
+ .txq_id = 24,
+ .rxdoneq_id = 4,
+};
+
+static struct platform_device mac0 = {

View file

@ -1,6 +1,6 @@
diff -Nur linux-2.6.19/arch/arm/boot/compressed/head-xscale.S linux-2.6.19-owrt/arch/arm/boot/compressed/head-xscale.S
--- linux-2.6.19/arch/arm/boot/compressed/head-xscale.S 2006-11-29 22:57:37.000000000 +0100
+++ linux-2.6.19-owrt/arch/arm/boot/compressed/head-xscale.S 2006-12-19 13:17:38.000000000 +0100
diff -Nur linux-2.6.19.2/arch/arm/boot/compressed/head-xscale.S linux-2.6.19.2-owrt/arch/arm/boot/compressed/head-xscale.S
--- linux-2.6.19.2/arch/arm/boot/compressed/head-xscale.S 2007-01-10 20:10:37.000000000 +0100
+++ linux-2.6.19.2-owrt/arch/arm/boot/compressed/head-xscale.S 2007-03-03 22:42:42.000000000 +0100
@@ -46,6 +46,11 @@
orr r7, r7, #(MACH_TYPE_GTWX5715 & 0xff00)
#endif
@ -13,9 +13,9 @@ diff -Nur linux-2.6.19/arch/arm/boot/compressed/head-xscale.S linux-2.6.19-owrt/
#ifdef CONFIG_ARCH_IXP2000
mov r1, #-1
mov r0, #0xd6000000
diff -Nur linux-2.6.19/arch/arm/mach-ixp4xx/coyote-setup.c linux-2.6.19-owrt/arch/arm/mach-ixp4xx/coyote-setup.c
--- linux-2.6.19/arch/arm/mach-ixp4xx/coyote-setup.c 2006-11-29 22:57:37.000000000 +0100
+++ linux-2.6.19-owrt/arch/arm/mach-ixp4xx/coyote-setup.c 2006-12-19 13:17:38.000000000 +0100
diff -Nur linux-2.6.19.2/arch/arm/mach-ixp4xx/coyote-setup.c linux-2.6.19.2-owrt/arch/arm/mach-ixp4xx/coyote-setup.c
--- linux-2.6.19.2/arch/arm/mach-ixp4xx/coyote-setup.c 2007-01-10 20:10:37.000000000 +0100
+++ linux-2.6.19.2-owrt/arch/arm/mach-ixp4xx/coyote-setup.c 2007-03-03 23:33:35.000000000 +0100
@@ -1,9 +1,10 @@
/*
* arch/arm/mach-ixp4xx/coyote-setup.c
@ -28,71 +28,12 @@ diff -Nur linux-2.6.19/arch/arm/mach-ixp4xx/coyote-setup.c linux-2.6.19-owrt/arc
*
* Author: Deepak Saxena <dsaxena@plexity.net>
*/
@@ -73,9 +74,57 @@
.resource = &coyote_uart_resource,
};
+/* MACs */
+static struct resource res_mac0 = {
+ .start = IXP4XX_EthB_BASE_PHYS,
+ .end = IXP4XX_EthB_BASE_PHYS + 0x1ff,
+ .flags = IORESOURCE_MEM,
+};
+
+static struct resource res_mac1 = {
+ .start = IXP4XX_EthC_BASE_PHYS,
+ .end = IXP4XX_EthC_BASE_PHYS + 0x1ff,
+ .flags = IORESOURCE_MEM,
+};
+
+static struct mac_plat_info plat_mac0 = {
+ .npe_id = 1,
+ .phy_id = 0,
+ .eth_id = 0,
+ .rxq_id = 27,
+ .txq_id = 24,
+};
+
+static struct mac_plat_info plat_mac1 = {
+ .npe_id = 2,
+ .phy_id = 1,
+ .eth_id = 1,
+ .rxq_id = 28,
+ .txq_id = 25,
+};
+
+static struct platform_device mac0 = {
+ .name = "ixp4xx_mac",
+ .id = 0,
+ .dev.platform_data = &plat_mac0,
+ .num_resources = 1,
+ .resource = &res_mac0,
+};
+
+static struct platform_device mac1 = {
+ .name = "ixp4xx_mac",
+ .id = 1,
+ .dev.platform_data = &plat_mac1,
+ .num_resources = 1,
+ .resource = &res_mac1,
+};
+
+
static struct platform_device *coyote_devices[] __initdata = {
&coyote_flash,
- &coyote_uart
+ &coyote_uart,
+ &mac0,
+ &mac1
};
static void __init coyote_init(void)
@@ -111,6 +160,19 @@
@@ -111,6 +112,19 @@
MACHINE_END
#endif
+#ifdef CONFIG_MACH_GATEWAY7001
+MACHINE_START(GATEWAY7001, "Gateway 7001")
+MACHINE_START(GATEWAY7001, "Gateway 7001 AP")
+ /* Maintainer: Imre Kaloz <kaloz@openwrt.org> */
+ .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS,
+ .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc,
@ -107,9 +48,9 @@ diff -Nur linux-2.6.19/arch/arm/mach-ixp4xx/coyote-setup.c linux-2.6.19-owrt/arc
/*
* IXDPG425 is identical to Coyote except for which serial port
* is connected.
diff -Nur linux-2.6.19/arch/arm/mach-ixp4xx/gateway7001-pci.c linux-2.6.19-owrt/arch/arm/mach-ixp4xx/gateway7001-pci.c
--- linux-2.6.19/arch/arm/mach-ixp4xx/gateway7001-pci.c 1970-01-01 01:00:00.000000000 +0100
+++ linux-2.6.19-owrt/arch/arm/mach-ixp4xx/gateway7001-pci.c 2006-12-19 13:18:18.000000000 +0100
diff -Nur linux-2.6.19.2/arch/arm/mach-ixp4xx/gateway7001-pci.c linux-2.6.19.2-owrt/arch/arm/mach-ixp4xx/gateway7001-pci.c
--- linux-2.6.19.2/arch/arm/mach-ixp4xx/gateway7001-pci.c 1970-01-01 01:00:00.000000000 +0100
+++ linux-2.6.19.2-owrt/arch/arm/mach-ixp4xx/gateway7001-pci.c 2007-03-03 22:42:42.000000000 +0100
@@ -0,0 +1,68 @@
+/*
+ * arch/arch/mach-ixp4xx/gateway7001-pci.c
@ -179,9 +120,9 @@ diff -Nur linux-2.6.19/arch/arm/mach-ixp4xx/gateway7001-pci.c linux-2.6.19-owrt/
+}
+
+subsys_initcall(gateway7001_pci_init);
diff -Nur linux-2.6.19/arch/arm/mach-ixp4xx/Kconfig linux-2.6.19-owrt/arch/arm/mach-ixp4xx/Kconfig
--- linux-2.6.19/arch/arm/mach-ixp4xx/Kconfig 2006-11-29 22:57:37.000000000 +0100
+++ linux-2.6.19-owrt/arch/arm/mach-ixp4xx/Kconfig 2006-12-19 13:17:38.000000000 +0100
diff -Nur linux-2.6.19.2/arch/arm/mach-ixp4xx/Kconfig linux-2.6.19.2-owrt/arch/arm/mach-ixp4xx/Kconfig
--- linux-2.6.19.2/arch/arm/mach-ixp4xx/Kconfig 2007-01-10 20:10:37.000000000 +0100
+++ linux-2.6.19.2-owrt/arch/arm/mach-ixp4xx/Kconfig 2007-03-03 22:42:42.000000000 +0100
@@ -33,6 +33,14 @@
Engineering Coyote Gateway Reference Platform. For more
information on this platform, see <file:Documentation/arm/IXP4xx>.
@ -197,9 +138,9 @@ diff -Nur linux-2.6.19/arch/arm/mach-ixp4xx/Kconfig linux-2.6.19-owrt/arch/arm/m
config ARCH_IXDP425
bool "IXDP425"
help
diff -Nur linux-2.6.19/arch/arm/mach-ixp4xx/Makefile linux-2.6.19-owrt/arch/arm/mach-ixp4xx/Makefile
--- linux-2.6.19/arch/arm/mach-ixp4xx/Makefile 2006-11-29 22:57:37.000000000 +0100
+++ linux-2.6.19-owrt/arch/arm/mach-ixp4xx/Makefile 2006-12-19 13:17:38.000000000 +0100
diff -Nur linux-2.6.19.2/arch/arm/mach-ixp4xx/Makefile linux-2.6.19.2-owrt/arch/arm/mach-ixp4xx/Makefile
--- linux-2.6.19.2/arch/arm/mach-ixp4xx/Makefile 2007-01-10 20:10:37.000000000 +0100
+++ linux-2.6.19.2-owrt/arch/arm/mach-ixp4xx/Makefile 2007-03-03 22:42:42.000000000 +0100
@@ -20,5 +20,6 @@
obj-$(CONFIG_MACH_GTWX5715) += gtwx5715-setup.o
obj-$(CONFIG_MACH_NSLU2) += nslu2-setup.o nslu2-power.o
@ -207,9 +148,9 @@ diff -Nur linux-2.6.19/arch/arm/mach-ixp4xx/Makefile linux-2.6.19-owrt/arch/arm/
+obj-$(CONFIG_MACH_GATEWAY7001) += gateway7001-pci.o coyote-setup.o
obj-$(CONFIG_PCI) += $(obj-pci-$(CONFIG_PCI)) common-pci.o
diff -Nur linux-2.6.19/include/asm-arm/arch-ixp4xx/uncompress.h linux-2.6.19-owrt/include/asm-arm/arch-ixp4xx/uncompress.h
--- linux-2.6.19/include/asm-arm/arch-ixp4xx/uncompress.h 2006-11-29 22:57:37.000000000 +0100
+++ linux-2.6.19-owrt/include/asm-arm/arch-ixp4xx/uncompress.h 2006-12-19 13:17:38.000000000 +0100
diff -Nur linux-2.6.19.2/include/asm-arm/arch-ixp4xx/uncompress.h linux-2.6.19.2-owrt/include/asm-arm/arch-ixp4xx/uncompress.h
--- linux-2.6.19.2/include/asm-arm/arch-ixp4xx/uncompress.h 2007-01-10 20:10:37.000000000 +0100
+++ linux-2.6.19.2-owrt/include/asm-arm/arch-ixp4xx/uncompress.h 2007-03-03 22:42:42.000000000 +0100
@@ -38,9 +38,9 @@
static __inline__ void __arch_decomp_setup(unsigned long arch_id)
{

View file

@ -0,0 +1,62 @@
diff -Nur linux-2.6.19.2/arch/arm/mach-ixp4xx/coyote-setup.c linux-2.6.19.2-owrt/arch/arm/mach-ixp4xx/coyote-setup.c
--- linux-2.6.19.2/arch/arm/mach-ixp4xx/coyote-setup.c 2007-03-03 23:34:46.000000000 +0100
+++ linux-2.6.19.2-owrt/arch/arm/mach-ixp4xx/coyote-setup.c 2007-03-03 23:42:47.000000000 +0100
@@ -74,9 +74,57 @@
.resource = &coyote_uart_resource,
};
+static struct resource res_mac0 = {
+ .start = IXP4XX_EthB_BASE_PHYS,
+ .end = IXP4XX_EthB_BASE_PHYS + 0x1ff,
+ .flags = IORESOURCE_MEM,
+};
+
+static struct resource res_mac1 = {
+ .start = IXP4XX_EthC_BASE_PHYS,
+ .end = IXP4XX_EthC_BASE_PHYS + 0x1ff,
+ .flags = IORESOURCE_MEM,
+};
+
+static struct mac_plat_info plat_mac0 = {
+ .npe_id = 1,
+ .phy_id = 1,
+ .eth_id = 0,
+ .rxq_id = 27,
+ .txq_id = 24,
+ .rxdoneq_id = 4,
+};
+
+static struct mac_plat_info plat_mac1 = {
+ .npe_id = 2,
+ .phy_id = 2,
+ .eth_id = 1,
+ .rxq_id = 28,
+ .txq_id = 25,
+ .rxdoneq_id = 5,
+};
+
+static struct platform_device mac0 = {
+ .name = "ixp4xx_mac",
+ .id = 0,
+ .dev.platform_data = &plat_mac0,
+ .num_resources = 1,
+ .resource = &res_mac0,
+};
+
+static struct platform_device mac1 = {
+ .name = "ixp4xx_mac",
+ .id = 1,
+ .dev.platform_data = &plat_mac1,
+ .num_resources = 1,
+ .resource = &res_mac1,
+};
+
static struct platform_device *coyote_devices[] __initdata = {
&coyote_flash,
- &coyote_uart
+ &coyote_uart,
+ &mac0,
+ &mac1,
};
static void __init coyote_init(void)