Changeset 10170


Ignore:
Timestamp:
2008-01-11T08:35:43+01:00 (9 years ago)
Author:
rwhitby
Message:

Updated ixp4xx ethernet driver to latest upstream patch for 2.6.23 from upstream's git repository

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/ixp4xx/patches-2.6.23/200-npe_driver.patch

    r10016 r10170  
    1 diff -Nur -x .git -x .gitignore linux-2.6.23/arch/arm/kernel/setup.c ixp4xx-nep.git/arch/arm/kernel/setup.c 
    2 --- linux-2.6.23/arch/arm/kernel/setup.c        2007-10-09 22:31:38.000000000 +0200 
    3 +++ ixp4xx-nep.git/arch/arm/kernel/setup.c      2007-10-22 19:19:41.000000000 +0200 
    4 @@ -61,6 +61,7 @@ 
     1diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c 
     2index 4de432e..c4c810b 100644 
     3--- a/arch/arm/kernel/setup.c 
     4+++ b/arch/arm/kernel/setup.c 
     5@@ -61,6 +61,7 @@ extern int root_mountflags; 
    56 extern void _stext, _text, _etext, __data_start, _edata, _end; 
    67  
     
    1011 EXPORT_SYMBOL(__machine_arch_type); 
    1112  
    12 diff -Nur -x .git -x .gitignore linux-2.6.23/arch/arm/mach-ixp4xx/Kconfig ixp4xx-nep.git/arch/arm/mach-ixp4xx/Kconfig 
    13 --- linux-2.6.23/arch/arm/mach-ixp4xx/Kconfig   2007-10-09 22:31:38.000000000 +0200 
    14 +++ ixp4xx-nep.git/arch/arm/mach-ixp4xx/Kconfig 2007-10-22 19:19:41.000000000 +0200 
    15 @@ -189,6 +189,20 @@ 
     13diff --git a/arch/arm/mach-ixp4xx/Kconfig b/arch/arm/mach-ixp4xx/Kconfig 
     14index 61b2dfc..e774447 100644 
     15--- a/arch/arm/mach-ixp4xx/Kconfig 
     16+++ b/arch/arm/mach-ixp4xx/Kconfig 
     17@@ -189,6 +189,20 @@ config IXP4XX_INDIRECT_PCI 
    1618          need to use the indirect method instead. If you don't know 
    1719          what you need, leave this option unselected. 
     
    3436  
    3537 endif 
    36 diff -Nur -x .git -x .gitignore linux-2.6.23/arch/arm/mach-ixp4xx/Makefile ixp4xx-nep.git/arch/arm/mach-ixp4xx/Makefile 
    37 --- linux-2.6.23/arch/arm/mach-ixp4xx/Makefile  2007-10-09 22:31:38.000000000 +0200 
    38 +++ ixp4xx-nep.git/arch/arm/mach-ixp4xx/Makefile        2007-10-22 19:19:41.000000000 +0200 
    39 @@ -30,3 +30,5 @@ 
     38diff --git a/arch/arm/mach-ixp4xx/Makefile b/arch/arm/mach-ixp4xx/Makefile 
     39index 77e00ad..4bb97e1 100644 
     40--- a/arch/arm/mach-ixp4xx/Makefile 
     41+++ b/arch/arm/mach-ixp4xx/Makefile 
     42@@ -30,3 +30,5 @@ obj-$(CONFIG_MACH_GATEWAY7001)        += gateway7001-setup.o 
    4043 obj-$(CONFIG_MACH_WG302V2)     += wg302v2-setup.o 
    4144  
     
    4346+obj-$(CONFIG_IXP4XX_QMGR)      += ixp4xx_qmgr.o 
    4447+obj-$(CONFIG_IXP4XX_NPE)       += ixp4xx_npe.o 
    45 diff -Nur -x .git -x .gitignore linux-2.6.23/arch/arm/mach-ixp4xx/ixdp425-setup.c ixp4xx-nep.git/arch/arm/mach-ixp4xx/ixdp425-setup.c 
    46 --- linux-2.6.23/arch/arm/mach-ixp4xx/ixdp425-setup.c   2007-10-09 22:31:38.000000000 +0200 
    47 +++ ixp4xx-nep.git/arch/arm/mach-ixp4xx/ixdp425-setup.c 2007-10-22 19:19:41.000000000 +0200 
    48 @@ -177,6 +177,31 @@ 
     48diff --git a/arch/arm/mach-ixp4xx/ixdp425-setup.c b/arch/arm/mach-ixp4xx/ixdp425-setup.c 
     49index d5008d8..10b41c6 100644 
     50--- a/arch/arm/mach-ixp4xx/ixdp425-setup.c 
     51+++ b/arch/arm/mach-ixp4xx/ixdp425-setup.c 
     52@@ -177,6 +177,31 @@ static struct platform_device ixdp425_uart = { 
    4953        .resource               = ixdp425_uart_resources 
    5054 }; 
     
    7882        &ixdp425_i2c_controller, 
    7983        &ixdp425_flash, 
    80 @@ -184,7 +209,9 @@ 
     84@@ -184,7 +209,9 @@ static struct platform_device *ixdp425_devices[] __initdata = { 
    8185     defined(CONFIG_MTD_NAND_PLATFORM_MODULE) 
    8286        &ixdp425_flash_nand, 
     
    8993  
    9094 static void __init ixdp425_init(void) 
    91 diff -Nur -x .git -x .gitignore linux-2.6.23/arch/arm/mach-ixp4xx/ixp4xx_npe.c ixp4xx-nep.git/arch/arm/mach-ixp4xx/ixp4xx_npe.c 
    92 --- linux-2.6.23/arch/arm/mach-ixp4xx/ixp4xx_npe.c      1970-01-01 01:00:00.000000000 +0100 
    93 +++ ixp4xx-nep.git/arch/arm/mach-ixp4xx/ixp4xx_npe.c    2007-10-22 19:19:41.000000000 +0200 
    94 @@ -0,0 +1,737 @@ 
     95diff --git a/arch/arm/mach-ixp4xx/ixp4xx_npe.c b/arch/arm/mach-ixp4xx/ixp4xx_npe.c 
     96new file mode 100644 
     97index 0000000..83c137e 
     98--- /dev/null 
     99+++ b/arch/arm/mach-ixp4xx/ixp4xx_npe.c 
     100@@ -0,0 +1,741 @@ 
    95101+/* 
    96102+ * Intel IXP4xx Network Processor Engine driver for Linux 
     
    109115+ */ 
    110116+ 
     117+#include <linux/delay.h> 
    111118+#include <linux/dma-mapping.h> 
    112119+#include <linux/firmware.h> 
     120+#include <linux/io.h> 
    113121+#include <linux/kernel.h> 
    114122+#include <linux/module.h> 
    115123+#include <linux/slab.h> 
    116 +#include <asm/delay.h> 
    117 +#include <asm/io.h> 
    118124+#include <asm/arch/npe.h> 
    119125+ 
     
    226232+static struct { 
    227233+       u32 reg, val; 
    228 +}ecs_reset[] = { 
     234+} ecs_reset[] = { 
    229235+       { ECS_BG_CTXT_REG_0,    0xA0000000 }, 
    230236+       { ECS_BG_CTXT_REG_1,    0x01000000 }, 
     
    477483+       __raw_writel(0, &npe->regs->watch_count); 
    478484+ 
    479 +       val = ixp4xx_read_fuses(); 
     485+       val = ixp4xx_read_feature_bits(); 
    480486+       /* reset the NPE */ 
    481 +       ixp4xx_write_fuses(val & ~(IXP4XX_FUSE_RESET_NPEA << npe->id)); 
     487+       ixp4xx_write_feature_bits(val & 
     488+                                 ~(IXP4XX_FEATURE_RESET_NPEA << npe->id)); 
    482489+       for (i = 0; i < MAX_RETRIES; i++) { 
    483 +               if (!(ixp4xx_read_fuses() & 
    484 +                     (IXP4XX_FUSE_RESET_NPEA << npe->id))) 
     490+               if (!(ixp4xx_read_feature_bits() & 
     491+                     (IXP4XX_FEATURE_RESET_NPEA << npe->id))) 
    485492+                       break;  /* reset completed */ 
    486493+               udelay(1); 
     
    490497+ 
    491498+       /* deassert reset */ 
    492 +       ixp4xx_write_fuses(val | (IXP4XX_FUSE_RESET_NPEA << npe->id)); 
     499+       ixp4xx_write_feature_bits(val | 
     500+                                 (IXP4XX_FEATURE_RESET_NPEA << npe->id)); 
    493501+       for (i = 0; i < MAX_RETRIES; i++) { 
    494 +               if (ixp4xx_read_fuses() & (IXP4XX_FUSE_RESET_NPEA << npe->id)) 
     502+               if (ixp4xx_read_feature_bits() & 
     503+                   (IXP4XX_FEATURE_RESET_NPEA << npe->id)) 
    495504+                       break;  /* NPE is back alive */ 
    496505+               udelay(1); 
     
    784793+       for (i = 0; i < NPE_COUNT; i++) { 
    785794+               struct npe *npe = &npe_tab[i]; 
    786 +               if (!(ixp4xx_read_fuses() & (IXP4XX_FUSE_RESET_NPEA << i))) 
     795+               if (!(ixp4xx_read_feature_bits() & 
     796+                     (IXP4XX_FEATURE_RESET_NPEA << i))) 
    787797+                       continue; /* NPE already disabled or not present */ 
    788798+               if (!(npe->mem_res = request_mem_region(npe->regs_phys, 
     
    830840+EXPORT_SYMBOL(npe_recv_message); 
    831841+EXPORT_SYMBOL(npe_send_recv_message); 
    832 diff -Nur -x .git -x .gitignore linux-2.6.23/arch/arm/mach-ixp4xx/ixp4xx_qmgr.c ixp4xx-nep.git/arch/arm/mach-ixp4xx/ixp4xx_qmgr.c 
    833 --- linux-2.6.23/arch/arm/mach-ixp4xx/ixp4xx_qmgr.c     1970-01-01 01:00:00.000000000 +0100 
    834 +++ ixp4xx-nep.git/arch/arm/mach-ixp4xx/ixp4xx_qmgr.c   2007-10-22 19:19:41.000000000 +0200 
     842diff --git a/arch/arm/mach-ixp4xx/ixp4xx_qmgr.c b/arch/arm/mach-ixp4xx/ixp4xx_qmgr.c 
     843new file mode 100644 
     844index 0000000..e833013 
     845--- /dev/null 
     846+++ b/arch/arm/mach-ixp4xx/ixp4xx_qmgr.c 
    835847@@ -0,0 +1,274 @@ 
    836848+/* 
     
    10841096+       iounmap(qmgr_regs); 
    10851097+error_map: 
    1086 +       release_resource(mem_res); 
     1098+       release_mem_region(IXP4XX_QMGR_BASE_PHYS, IXP4XX_QMGR_REGION_SIZE); 
    10871099+       return err; 
    10881100+} 
     
    10931105+       synchronize_irq(IRQ_IXP4XX_QM1); 
    10941106+       iounmap(qmgr_regs); 
    1095 +       release_resource(mem_res); 
     1107+       release_mem_region(IXP4XX_QMGR_BASE_PHYS, IXP4XX_QMGR_REGION_SIZE); 
    10961108+} 
    10971109+ 
     
    11081120+EXPORT_SYMBOL(qmgr_request_queue); 
    11091121+EXPORT_SYMBOL(qmgr_release_queue); 
    1110 diff -Nur -x .git -x .gitignore linux-2.6.23/drivers/net/arm/Kconfig ixp4xx-nep.git/drivers/net/arm/Kconfig 
    1111 --- linux-2.6.23/drivers/net/arm/Kconfig        2007-10-09 22:31:38.000000000 +0200 
    1112 +++ ixp4xx-nep.git/drivers/net/arm/Kconfig      2007-10-22 19:20:02.000000000 +0200 
    1113 @@ -47,3 +47,13 @@ 
     1122diff --git a/drivers/net/arm/Kconfig b/drivers/net/arm/Kconfig 
     1123index f9cc2b6..9274d3f 100644 
     1124--- a/drivers/net/arm/Kconfig 
     1125+++ b/drivers/net/arm/Kconfig 
     1126@@ -47,3 +47,13 @@ config EP93XX_ETH 
    11141127        help 
    11151128          This is a driver for the ethernet hardware included in EP93xx CPUs. 
     
    11251138+         Say Y here if you want to use built-in Ethernet ports 
    11261139+         on IXP4xx processor. 
    1127 diff -Nur -x .git -x .gitignore linux-2.6.23/drivers/net/arm/Makefile ixp4xx-nep.git/drivers/net/arm/Makefile 
    1128 --- linux-2.6.23/drivers/net/arm/Makefile       2007-10-09 22:31:38.000000000 +0200 
    1129 +++ ixp4xx-nep.git/drivers/net/arm/Makefile     2007-10-22 19:20:02.000000000 +0200 
    1130 @@ -9,3 +9,4 @@ 
     1140diff --git a/drivers/net/arm/Makefile b/drivers/net/arm/Makefile 
     1141index a4c8682..7c812ac 100644 
     1142--- a/drivers/net/arm/Makefile 
     1143+++ b/drivers/net/arm/Makefile 
     1144@@ -9,3 +9,4 @@ obj-$(CONFIG_ARM_ETHER3)        += ether3.o 
    11311145 obj-$(CONFIG_ARM_ETHER1)       += ether1.o 
    11321146 obj-$(CONFIG_ARM_AT91_ETHER)   += at91_ether.o 
    11331147 obj-$(CONFIG_EP93XX_ETH)       += ep93xx_eth.o 
    11341148+obj-$(CONFIG_IXP4XX_ETH)       += ixp4xx_eth.o 
    1135 diff -Nur -x .git -x .gitignore linux-2.6.23/drivers/net/arm/ixp4xx_eth.c ixp4xx-nep.git/drivers/net/arm/ixp4xx_eth.c 
    1136 --- linux-2.6.23/drivers/net/arm/ixp4xx_eth.c   1970-01-01 01:00:00.000000000 +0100 
    1137 +++ ixp4xx-nep.git/drivers/net/arm/ixp4xx_eth.c 2007-10-22 19:20:02.000000000 +0200 
    1138 @@ -0,0 +1,1258 @@ 
     1149diff --git a/drivers/net/arm/ixp4xx_eth.c b/drivers/net/arm/ixp4xx_eth.c 
     1150new file mode 100644 
     1151index 0000000..2c23f50 
     1152--- /dev/null 
     1153+++ b/drivers/net/arm/ixp4xx_eth.c 
     1154@@ -0,0 +1,1259 @@ 
    11391155+/* 
    11401156+ * Intel IXP4xx Ethernet driver for Linux 
     
    11661182+#include <linux/dma-mapping.h> 
    11671183+#include <linux/dmapool.h> 
     1184+#include <linux/etherdevice.h> 
     1185+#include <linux/io.h> 
    11681186+#include <linux/kernel.h> 
    11691187+#include <linux/mii.h> 
    11701188+#include <linux/platform_device.h> 
    1171 +#include <asm/io.h> 
    11721189+#include <asm/arch/npe.h> 
    11731190+#include <asm/arch/qmgr.h> 
     
    23742391+static int __init eth_init_module(void) 
    23752392+{ 
    2376 +       if (!(ixp4xx_read_fuses() & IXP4XX_FUSE_NPEB_ETH0)) 
     2393+       if (!(ixp4xx_read_feature_bits() & IXP4XX_FEATURE_NPEB_ETH0)) 
    23772394+               return -ENOSYS; 
    23782395+ 
     
    23952412+module_init(eth_init_module); 
    23962413+module_exit(eth_cleanup_module); 
    2397 diff -Nur -x .git -x .gitignore linux-2.6.23/drivers/net/wan/Kconfig ixp4xx-nep.git/drivers/net/wan/Kconfig 
    2398 --- linux-2.6.23/drivers/net/wan/Kconfig        2007-10-09 22:31:38.000000000 +0200 
    2399 +++ ixp4xx-nep.git/drivers/net/wan/Kconfig      2007-10-22 19:20:05.000000000 +0200 
    2400 @@ -334,6 +334,15 @@ 
     2414diff --git a/drivers/net/wan/Kconfig b/drivers/net/wan/Kconfig 
     2415index a3df09e..94e7aa7 100644 
     2416--- a/drivers/net/wan/Kconfig 
     2417+++ b/drivers/net/wan/Kconfig 
     2418@@ -334,6 +334,15 @@ config DSCC4_PCI_RST 
    24012419  
    24022420          Say Y if your card supports this feature. 
     
    24142432        tristate "Frame Relay DLCI support" 
    24152433        ---help--- 
    2416 diff -Nur -x .git -x .gitignore linux-2.6.23/drivers/net/wan/Makefile ixp4xx-nep.git/drivers/net/wan/Makefile 
    2417 --- linux-2.6.23/drivers/net/wan/Makefile       2007-10-09 22:31:38.000000000 +0200 
    2418 +++ ixp4xx-nep.git/drivers/net/wan/Makefile     2007-10-22 19:20:05.000000000 +0200 
    2419 @@ -42,6 +42,7 @@ 
     2434diff --git a/drivers/net/wan/Makefile b/drivers/net/wan/Makefile 
     2435index d61fef3..1b1d116 100644 
     2436--- a/drivers/net/wan/Makefile 
     2437+++ b/drivers/net/wan/Makefile 
     2438@@ -42,6 +42,7 @@ obj-$(CONFIG_C101)            += c101.o 
    24202439 obj-$(CONFIG_WANXL)            += wanxl.o 
    24212440 obj-$(CONFIG_PCI200SYN)                += pci200syn.o 
     
    24252444 clean-files := wanxlfw.inc 
    24262445 $(obj)/wanxl.o:        $(obj)/wanxlfw.inc 
    2427 diff -Nur -x .git -x .gitignore linux-2.6.23/drivers/net/wan/ixp4xx_hss.c ixp4xx-nep.git/drivers/net/wan/ixp4xx_hss.c 
    2428 --- linux-2.6.23/drivers/net/wan/ixp4xx_hss.c   1970-01-01 01:00:00.000000000 +0100 
    2429 +++ ixp4xx-nep.git/drivers/net/wan/ixp4xx_hss.c 2007-10-22 19:20:05.000000000 +0200 
    2430 @@ -0,0 +1,1248 @@ 
     2446diff --git a/drivers/net/wan/ixp4xx_hss.c b/drivers/net/wan/ixp4xx_hss.c 
     2447new file mode 100644 
     2448index 0000000..c4cdace 
     2449--- /dev/null 
     2450+++ b/drivers/net/wan/ixp4xx_hss.c 
     2451@@ -0,0 +1,1270 @@ 
    24312452+/* 
    24322453+ * Intel IXP4xx HSS (synchronous serial port) driver for Linux 
     
    24412462+#include <linux/dma-mapping.h> 
    24422463+#include <linux/dmapool.h> 
     2464+#include <linux/io.h> 
    24432465+#include <linux/kernel.h> 
    24442466+#include <linux/hdlc.h> 
    24452467+#include <linux/platform_device.h> 
    2446 +#include <asm/io.h> 
    24472468+#include <asm/arch/npe.h> 
    24482469+#include <asm/arch/qmgr.h> 
     
    25912612+ 
    25922613+ 
    2593 +/* hss_config, LUTs: default = unassigned */ 
    2594 +#define TDMMAP_HDLC            1       /* HDLC - packetised */ 
    2595 +#define TDMMAP_VOICE56K                2       /* Voice56K - channelised */ 
    2596 +#define TDMMAP_VOICE64K                3       /* Voice64K - channelised */ 
     2614+/* hss_config, LUT entries */ 
     2615+#define TDMMAP_UNASSIGNED      0 
     2616+#define TDMMAP_HDLC            1       /* HDLC - packetized */ 
     2617+#define TDMMAP_VOICE56K                2       /* Voice56K - 7-bit channelized */ 
     2618+#define TDMMAP_VOICE64K                3       /* Voice64K - 8-bit channelized */ 
     2619+ 
     2620+#define TIMESLOTS              128 
     2621+#define LUT_BITS               2 
     2622+ 
     2623+/* offsets into HSS config */ 
     2624+#define HSS_CONFIG_TX_PCR      0x00 
     2625+#define HSS_CONFIG_RX_PCR      0x04 
     2626+#define HSS_CONFIG_CORE_CR     0x08 
     2627+#define HSS_CONFIG_CLOCK_CR    0x0C 
     2628+#define HSS_CONFIG_TX_FCR      0x10 
     2629+#define HSS_CONFIG_RX_FCR      0x14 
     2630+#define HSS_CONFIG_TX_LUT      0x18 
     2631+#define HSS_CONFIG_RX_LUT      0x38 
    25972632+ 
    25982633+ 
     
    26352670+#define PKT_PIPE_MODE_WRITE                    0x57 
    26362671+ 
    2637 + 
    2638 +#define HSS_TIMESLOTS          128 
    2639 +#define HSS_LUT_BITS           2 
    2640 + 
    26412672+/* HDLC packet status values - desc->status */ 
    26422673+#define ERR_SHUTDOWN           1 /* stop or shutdown occurrance */ 
     
    26672698+       struct desc *desc_tab;  /* coherent */ 
    26682699+       u32 desc_tab_phys; 
    2669 +       sync_serial_settings settings; 
    26702700+       int id; 
     2701+       unsigned int clock_type, clock_rate, loopback; 
    26712702+       u8 hdlc_cfg; 
    26722703+}; 
     
    27222753+#define tx_desc_ptr(port, n)   (&(port)->desc_tab[(n) + RX_DESCS]) 
    27232754+ 
    2724 +#ifndef __ARMEB__ 
    2725 +static inline void memcpy_swab32(u32 *dest, u32 *src, int cnt) 
    2726 +{ 
    2727 +       int i; 
    2728 +       for (i = 0; i < cnt; i++) 
    2729 +               dest[i] = swab32(src[i]); 
    2730 +} 
    2731 +#endif 
     2755+/***************************************************************************** 
     2756+ * global variables 
     2757+ ****************************************************************************/ 
    27322758+ 
    27332759+static int ports_open; 
    27342760+static struct dma_pool *dma_pool; 
    27352761+ 
    2736 +static struct { 
     2762+static const struct { 
    27372763+       int tx, txdone, rx, rxfree; 
    27382764+}queue_ids[2] = {{ HSS0_PKT_TX0_QUEUE, HSS0_PKT_TXDONE_QUEUE, 
     
    27422768+}; 
    27432769+ 
     2770+/***************************************************************************** 
     2771+ * utility functions 
     2772+ ****************************************************************************/ 
    27442773+ 
    27452774+static inline struct port* dev_to_port(struct net_device *dev) 
     
    27482777+} 
    27492778+ 
     2779+#ifndef __ARMEB__ 
     2780+static inline void memcpy_swab32(u32 *dest, u32 *src, int cnt) 
     2781+{ 
     2782+       int i; 
     2783+       for (i = 0; i < cnt; i++) 
     2784+               dest[i] = swab32(src[i]); 
     2785+} 
     2786+#endif 
    27502787+ 
    27512788+static inline void debug_pkt(struct net_device *dev, const char *func, 
     
    28532890+ 
    28542891+ 
    2855 +static void hss_set_carrier(void *pdev, int carrier) 
     2892+static void hss_hdlc_set_carrier(void *pdev, int carrier) 
    28562893+{ 
    28572894+       struct net_device *dev = pdev; 
     
    28622899+} 
    28632900+ 
    2864 +static void hss_rx_irq(void *pdev) 
     2901+static void hss_hdlc_rx_irq(void *pdev) 
    28652902+{ 
    28662903+       struct net_device *dev = pdev; 
     
    28682905+ 
    28692906+#if DEBUG_RX 
    2870 +       printk(KERN_DEBUG "%s: hss_rx_irq\n", dev->name); 
     2907+       printk(KERN_DEBUG "%s: hss_hdlc_rx_irq\n", dev->name); 
    28712908+#endif 
    28722909+       qmgr_disable_irq(queue_ids[port->id].rx); 
     
    28742911+} 
    28752912+ 
    2876 +static int hss_poll(struct net_device *dev, int *budget) 
     2913+static int hss_hdlc_poll(struct net_device *dev, int *budget) 
    28772914+{ 
    28782915+       struct port *port = dev_to_port(dev); 
     
    28832920+ 
    28842921+#if DEBUG_RX 
    2885 +       printk(KERN_DEBUG "%s: hss_poll\n", dev->name); 
     2922+       printk(KERN_DEBUG "%s: hss_hdlc_poll\n", dev->name); 
    28862923+#endif 
    28872924+ 
     
    29002937+                       received = 0; 
    29012938+#if DEBUG_RX 
    2902 +                       printk(KERN_DEBUG "%s: hss_poll netif_rx_complete\n", 
    2903 +                              dev->name); 
     2939+                       printk(KERN_DEBUG "%s: hss_hdlc_poll" 
     2940+                              " netif_rx_complete\n", dev->name); 
    29042941+#endif 
    29052942+                       netif_rx_complete(dev); 
     
    29082945+                           netif_rx_reschedule(dev, 0)) { 
    29092946+#if DEBUG_RX 
    2910 +                               printk(KERN_DEBUG "%s: hss_poll" 
     2947+                               printk(KERN_DEBUG "%s: hss_hdlc_poll" 
    29112948+                                      " netif_rx_reschedule successed\n", 
    29122949+                                      dev->name); 
     
    29162953+                       } 
    29172954+#if DEBUG_RX 
    2918 +                       printk(KERN_DEBUG "%s: hss_poll all done\n", 
     2955+                       printk(KERN_DEBUG "%s: hss_hdlc_poll all done\n", 
    29192956+                              dev->name); 
    29202957+#endif 
     
    29252962+ 
    29262963+               if (desc->error_count) /* FIXME - remove printk */ 
    2927 +                       printk(KERN_DEBUG "%s: hss_poll status 0x%02X errors" 
    2928 +                              " %u\n", dev->name, desc->status, 
     2964+                       printk(KERN_DEBUG "%s: hss_hdlc_poll status 0x%02X" 
     2965+                              " errors %u\n", dev->name, desc->status, 
    29292966+                              desc->error_count); 
    29302967+ 
     
    29622999+                       break; 
    29633000+               default:        /* FIXME - remove printk */ 
    2964 +                       printk(KERN_ERR "%s: hss_poll(): status 0x%02X errors" 
    2965 +                              " %u\n", dev->name, desc->status, 
     3001+                       printk(KERN_ERR "%s: hss_hdlc_poll: status 0x%02X" 
     3002+                              " errors %u\n", dev->name, desc->status, 
    29663003+                              desc->error_count); 
    29673004+                       stats->rx_errors++; 
     
    29903027+               skb_put(skb, desc->pkt_len); 
    29913028+ 
    2992 +               debug_pkt(dev, "hss_poll", skb->data, skb->len); 
     3029+               debug_pkt(dev, "hss_hdlc_poll", skb->data, skb->len); 
    29933030+ 
    29943031+               skb->protocol = hdlc_type_trans(skb, dev); 
     
    30123049+       *budget -= received; 
    30133050+#if DEBUG_RX 
    3014 +       printk(KERN_DEBUG "hss_poll(): end, not all work done\n"); 
     3051+       printk(KERN_DEBUG "hss_hdlc_poll: end, not all work done\n"); 
    30153052+#endif 
    30163053+       return 1;               /* not all work done */ 
     
    30183055+ 
    30193056+ 
    3020 +static void hss_txdone_irq(void *pdev) 
     3057+static void hss_hdlc_txdone_irq(void *pdev) 
    30213058+{ 
    30223059+       struct net_device *dev = pdev; 
     
    30263063+ 
    30273064+#if DEBUG_TX 
    3028 +       printk(KERN_DEBUG DRV_NAME ": hss_txdone_irq\n"); 
     3065+       printk(KERN_DEBUG DRV_NAME ": hss_hdlc_txdone_irq\n"); 
    30293066+#endif 
    30303067+       while ((n_desc = queue_get_desc(queue_ids[port->id].txdone, 
     
    30403077+               dma_unmap_tx(port, desc); 
    30413078+#if DEBUG_TX 
    3042 +               printk(KERN_DEBUG "%s: hss_txdone_irq free %p\n", 
     3079+               printk(KERN_DEBUG "%s: hss_hdlc_txdone_irq free %p\n", 
    30433080+                      port->netdev->name, port->tx_buff_tab[n_desc]); 
    30443081+#endif 
     
    30513088+               if (start) { 
    30523089+#if DEBUG_TX 
    3053 +                       printk(KERN_DEBUG "%s: hss_txdone_irq xmit ready\n", 
    3054 +                              port->netdev->name); 
     3090+                       printk(KERN_DEBUG "%s: hss_hdlc_txdone_irq xmit" 
     3091+                              " ready\n", port->netdev->name); 
    30553092+#endif 
    30563093+                       netif_wake_queue(port->netdev); 
     
    30593096+} 
    30603097+ 
    3061 +static int hss_xmit(struct sk_buff *skb, struct net_device *dev) 
     3098+static int hss_hdlc_xmit(struct sk_buff *skb, struct net_device *dev) 
    30623099+{ 
    30633100+       struct port *port = dev_to_port(dev); 
     
    30703107+ 
    30713108+#if DEBUG_TX 
    3072 +       printk(KERN_DEBUG "%s: hss_xmit\n", dev->name); 
     3109+       printk(KERN_DEBUG "%s: hss_hdlc_xmit\n", dev->name); 
    30733110+#endif 
    30743111+ 
     
    30793116+       } 
    30803117+ 
    3081 +       debug_pkt(dev, "hss_xmit", skb->data, skb->len); 
     3118+       debug_pkt(dev, "hss_hdlc_xmit", skb->data, skb->len); 
    30823119+ 
    30833120+       len = skb->len; 
     
    31273164+       if (qmgr_stat_empty(txreadyq)) { 
    31283165+#if DEBUG_TX 
    3129 +               printk(KERN_DEBUG "%s: hss_xmit queue full\n", dev->name); 
     3166+               printk(KERN_DEBUG "%s: hss_hdlc_xmit queue full\n", dev->name); 
    31303167+#endif 
    31313168+               netif_stop_queue(dev); 
     
    31333170+               if (!qmgr_stat_empty(txreadyq)) { 
    31343171+#if DEBUG_TX 
    3135 +                       printk(KERN_DEBUG "%s: hss_xmit ready again\n", 
     3172+                       printk(KERN_DEBUG "%s: hss_hdlc_xmit ready again\n", 
    31363173+                              dev->name); 
    31373174+#endif 
     
    31413178+ 
    31423179+#if DEBUG_TX 
    3143 +       printk(KERN_DEBUG "%s: hss_xmit end\n", dev->name); 
     3180+       printk(KERN_DEBUG "%s: hss_hdlc_xmit end\n", dev->name); 
    31443181+#endif 
    31453182+       return NETDEV_TX_OK; 
     
    31473184+ 
    31483185+ 
    3149 +static int request_queues(struct port *port) 
     3186+static int request_hdlc_queues(struct port *port) 
    31503187+{ 
    31513188+       int err; 
     
    31853222+} 
    31863223+ 
    3187 +static void release_queues(struct port *port) 
     3224+static void release_hdlc_queues(struct port *port) 
    31883225+{ 
    31893226+       qmgr_release_queue(queue_ids[port->id].rxfree); 
     
    31943231+} 
    31953232+ 
    3196 +static int init_queues(struct port *port) 
     3233+static int init_hdlc_queues(struct port *port) 
    31973234+{ 
    31983235+       int i; 
     
    32373274+} 
    32383275+ 
    3239 +static void destroy_queues(struct port *port) 
     3276+static void destroy_hdlc_queues(struct port *port) 
    32403277+{ 
    32413278+       int i; 
     
    32703307+} 
    32713308+ 
    3272 +static int hss_open(struct net_device *dev) 
     3309+static int hss_hdlc_open(struct net_device *dev) 
    32733310+{ 
    32743311+       struct port *port = dev_to_port(dev); 
     
    32883325+       if (port->plat->open) 
    32893326+               if ((err = port->plat->open(port->id, port->netdev, 
    3290 +                                           hss_set_carrier)) != 0) 
     3327+                                           hss_hdlc_set_carrier)) != 0) 
    32913328+                       goto err_hdlc_close; 
    32923329+ 
     
    33023339+               PCR_TX_DATA_ENABLE; 
    33033340+ 
    3304 +       if (port->settings.clock_type == CLOCK_INT) 
     3341+       if (port->clock_type == CLOCK_INT) 
    33053342+               msg.data32 |= PCR_SYNC_CLK_DIR_OUTPUT; 
    33063343+ 
     
    33143351+ 
    33153352+       msg.index = 8; 
    3316 +       msg.data32 = (port->settings.loopback ? CCR_LOOPBACK : 0) | 
     3353+       msg.data32 = (port->loopback ? CCR_LOOPBACK : 0) | 
    33173354+               (port->id ? CCR_SECOND_HSS : 0); 
    33183355+       if ((err = npe_send_message(npe, &msg, "HSS_SET_CORE_CR") != 0)) 
     
    33343371+ 
    33353372+       msg.data32 = 0;         /* Fill LUT with HDLC timeslots */ 
    3336 +       for (i = 0; i < 32 / HSS_LUT_BITS; i++) 
    3337 +               msg.data32 |= TDMMAP_HDLC << (HSS_LUT_BITS * i); 
    3338 + 
    3339 +       for (i = 0; i < 2 /* TX and RX */ * HSS_TIMESLOTS * HSS_LUT_BITS / 8; 
    3340 +            i += 4) { 
     3373+       for (i = 0; i < 32 / LUT_BITS; i++) 
     3374+               msg.data32 |= TDMMAP_HDLC << (LUT_BITS * i); 
     3375+ 
     3376+       for (i = 0; i < 2 /* TX and RX */ * TIMESLOTS * LUT_BITS / 8; i += 4) { 
    33413377+               msg.index = 24 + i; /* 24 - 55: TX LUT, 56 - 87: RX LUT */ 
    33423378+               if ((err = npe_send_message(npe, &msg, "HSS_SET_LUT") != 0)) 
     
    34063442+               goto err_plat_close; 
    34073443+ 
    3408 +       if ((err = request_queues(port)) != 0) 
     3444+       if ((err = request_hdlc_queues(port)) != 0) 
    34093445+               goto err_plat_close; 
    34103446+ 
    3411 +       if ((err = init_queues(port)) != 0) 
     3447+       if ((err = init_hdlc_queues(port)) != 0) 
    34123448+               goto err_destroy_queues; 
    34133449+ 
     
    34303466+ 
    34313467+       qmgr_set_irq(queue_ids[port->id].rx, QUEUE_IRQ_SRC_NOT_EMPTY, 
    3432 +                    hss_rx_irq, dev); 
     3468+                    hss_hdlc_rx_irq, dev); 
    34333469+ 
    34343470+       qmgr_set_irq(queue_ids[port->id].txdone, QUEUE_IRQ_SRC_NOT_EMPTY, 
    3435 +                    hss_txdone_irq, dev); 
     3471+                    hss_hdlc_txdone_irq, dev); 
    34363472+       qmgr_enable_irq(queue_ids[port->id].txdone); 
    34373473+ 
     
    34413477+ 
    34423478+err_destroy_queues: 
    3443 +       destroy_queues(port); 
    3444 +       release_queues(port); 
     3479+       destroy_hdlc_queues(port); 
     3480+       release_hdlc_queues(port); 
    34453481+err_plat_close: 
    34463482+       if (port->plat->close) 
     
    34513487+} 
    34523488+ 
    3453 +static int hss_close(struct net_device *dev) 
     3489+static int hss_hdlc_close(struct net_device *dev) 
    34543490+{ 
    34553491+       struct port *port = dev_to_port(dev); 
     
    35013537+#endif 
    35023538+       qmgr_disable_irq(queue_ids[port->id].txdone); 
    3503 +       destroy_queues(port); 
    3504 +       release_queues(port); 
     3539+       destroy_hdlc_queues(port); 
     3540+       release_hdlc_queues(port); 
    35053541+ 
    35063542+       if (port->plat->close) 
     
    35113547+ 
    35123548+ 
    3513 +static int hss_attach(struct net_device *dev, unsigned short encoding, 
    3514 +                     unsigned short parity) 
     3549+static int hss_hdlc_attach(struct net_device *dev, unsigned short encoding, 
     3550+                          unsigned short parity) 
    35153551+{ 
    35163552+       struct port *port = dev_to_port(dev); 
     
    35343570+ 
    35353571+ 
    3536 +static int hss_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) 
     3572+static int hss_hdlc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) 
    35373573+{ 
    35383574+       const size_t size = sizeof(sync_serial_settings); 
     
    35523588+                       return -ENOBUFS; 
    35533589+               } 
    3554 +               if (copy_to_user(line, &port->settings, size)) 
     3590+               memset(&new_line, 0, sizeof(new_line)); 
     3591+               new_line.clock_type = port->clock_type; 
     3592+               new_line.clock_rate = port->clock_rate; 
     3593+               new_line.loopback = port->loopback; 
     3594+               if (copy_to_user(line, &new_line, size)) 
    35553595+                       return -EFAULT; 
    35563596+               return 0; 
     
    35763616+                       return -EINVAL; 
    35773617+ 
    3578 +               memcpy(&port->settings, &new_line, size); /* Update settings */ 
     3618+               port->clock_type = clk; /* Update settings */ 
     3619+               port->clock_rate = new_line.clock_rate; 
     3620+               port->loopback = new_line.loopback; 
    35793621+               return 0; 
    35803622+ 
     
    36113653+       SET_NETDEV_DEV(dev, &pdev->dev); 
    36123654+       hdlc = dev_to_hdlc(dev); 
    3613 +       hdlc->attach = hss_attach; 
    3614 +       hdlc->xmit = hss_xmit; 
    3615 +       dev->open = hss_open; 
    3616 +       dev->poll = hss_poll; 
    3617 +       dev->stop = hss_close; 
    3618 +       dev->do_ioctl = hss_ioctl; 
     3655+       hdlc->attach = hss_hdlc_attach; 
     3656+       hdlc->xmit = hss_hdlc_xmit; 
     3657+       dev->open = hss_hdlc_open; 
     3658+       dev->poll = hss_hdlc_poll; 
     3659+       dev->stop = hss_hdlc_close; 
     3660+       dev->do_ioctl = hss_hdlc_ioctl; 
    36193661+       dev->weight = 16; 
    36203662+       dev->tx_queue_len = 100; 
    3621 +       port->settings.clock_type = CLOCK_EXT; 
    3622 +       port->settings.clock_rate = 2048000; 
     3663+       port->clock_type = CLOCK_EXT; 
     3664+       port->clock_rate = 2048000; 
    36233665+ 
    36243666+       if (register_hdlc_device(dev)) { 
     
    36613703+static int __init hss_init_module(void) 
    36623704+{ 
    3663 +       if ((ixp4xx_read_fuses() & (IXP4XX_FUSE_HDLC | IXP4XX_FUSE_HSS)) != 
    3664 +           (IXP4XX_FUSE_HDLC | IXP4XX_FUSE_HSS)) 
     3705+       if ((ixp4xx_read_feature_bits() & 
     3706+            (IXP4XX_FEATURE_HDLC | IXP4XX_FEATURE_HSS)) != 
     3707+           (IXP4XX_FEATURE_HDLC | IXP4XX_FEATURE_HSS)) 
    36653708+               return -ENOSYS; 
    36663709+       return platform_driver_register(&drv); 
     
    36773720+module_init(hss_init_module); 
    36783721+module_exit(hss_cleanup_module); 
    3679 diff -Nur -x .git -x .gitignore linux-2.6.23/include/asm-arm/arch-ixp4xx/cpu.h ixp4xx-nep.git/include/asm-arm/arch-ixp4xx/cpu.h 
    3680 --- linux-2.6.23/include/asm-arm/arch-ixp4xx/cpu.h      2007-10-09 22:31:38.000000000 +0200 
    3681 +++ ixp4xx-nep.git/include/asm-arm/arch-ixp4xx/cpu.h    2007-10-22 19:20:22.000000000 +0200 
    3682 @@ -28,4 +28,19 @@ 
     3722diff --git a/include/asm-arm/arch-ixp4xx/cpu.h b/include/asm-arm/arch-ixp4xx/cpu.h 
     3723index d2523b3..2fa3d6b 100644 
     3724--- a/include/asm-arm/arch-ixp4xx/cpu.h 
     3725+++ b/include/asm-arm/arch-ixp4xx/cpu.h 
     3726@@ -28,4 +28,19 @@ extern unsigned int processor_id; 
    36833727 #define cpu_is_ixp46x()        ((processor_id & IXP4XX_PROCESSOR_ID_MASK) == \ 
    36843728                          IXP465_PROCESSOR_ID_VALUE) 
    36853729  
    3686 +static inline u32 ixp4xx_read_fuses(void) 
    3687 +{ 
    3688 +       unsigned int fuses = ~*IXP4XX_EXP_CFG2; 
    3689 +       fuses &= ~IXP4XX_FUSE_RESERVED; 
     3730+static inline u32 ixp4xx_read_feature_bits(void) 
     3731+{ 
     3732+       unsigned int val = ~*IXP4XX_EXP_CFG2; 
     3733+       val &= ~IXP4XX_FEATURE_RESERVED; 
    36903734+       if (!cpu_is_ixp46x()) 
    3691 +               fuses &= ~IXP4XX_FUSE_IXP46X_ONLY; 
    3692 + 
    3693 +       return fuses; 
    3694 +} 
    3695 + 
    3696 +static inline void ixp4xx_write_fuses(u32 value) 
     3735+               val &= ~IXP4XX_FEATURE_IXP46X_ONLY; 
     3736+ 
     3737+       return val; 
     3738+} 
     3739+ 
     3740+static inline void ixp4xx_write_feature_bits(u32 value) 
    36973741+{ 
    36983742+       *IXP4XX_EXP_CFG2 = ~value; 
     
    37003744+ 
    37013745 #endif  /* _ASM_ARCH_CPU_H */ 
    3702 diff -Nur -x .git -x .gitignore linux-2.6.23/include/asm-arm/arch-ixp4xx/hardware.h ixp4xx-nep.git/include/asm-arm/arch-ixp4xx/hardware.h 
    3703 --- linux-2.6.23/include/asm-arm/arch-ixp4xx/hardware.h 2007-10-09 22:31:38.000000000 +0200 
    3704 +++ ixp4xx-nep.git/include/asm-arm/arch-ixp4xx/hardware.h       2007-10-22 19:20:22.000000000 +0200 
     3746diff --git a/include/asm-arm/arch-ixp4xx/hardware.h b/include/asm-arm/arch-ixp4xx/hardware.h 
     3747index 297ceda..73e8dc3 100644 
     3748--- a/include/asm-arm/arch-ixp4xx/hardware.h 
     3749+++ b/include/asm-arm/arch-ixp4xx/hardware.h 
    37053750@@ -27,13 +27,13 @@ 
    37063751  
     
    37203765 #include "platform.h" 
    37213766  
    3722 diff -Nur -x .git -x .gitignore linux-2.6.23/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h ixp4xx-nep.git/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h 
    3723 --- linux-2.6.23/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h      2007-10-09 22:31:38.000000000 +0200 
    3724 +++ ixp4xx-nep.git/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h    2007-10-22 19:20:22.000000000 +0200 
    3725 @@ -607,4 +607,36 @@ 
     3767diff --git a/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h b/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h 
     3768index 5d949d7..c704fe8 100644 
     3769--- a/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h 
     3770+++ b/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h 
     3771@@ -15,10 +15,6 @@ 
     3772  * 
     3773  */ 
     3774  
     3775-#ifndef __ASM_ARCH_HARDWARE_H__ 
     3776-#error "Do not include this directly, instead #include <asm/hardware.h>" 
     3777-#endif 
     3778- 
     3779 #ifndef _ASM_ARM_IXP4XX_H_ 
     3780 #define _ASM_ARM_IXP4XX_H_ 
     3781  
     3782@@ -607,4 +603,36 @@ 
    37263783  
    37273784 #define DCMD_LENGTH    0x01fff         /* length mask (max = 8K - 1) */ 
    37283785  
    3729 +/* Fuse Bits of IXP_EXP_CFG2 */ 
    3730 +#define IXP4XX_FUSE_RCOMP              (1 << 0) 
    3731 +#define IXP4XX_FUSE_USB_DEVICE         (1 << 1) 
    3732 +#define IXP4XX_FUSE_HASH               (1 << 2) 
    3733 +#define IXP4XX_FUSE_AES                        (1 << 3) 
    3734 +#define IXP4XX_FUSE_DES                        (1 << 4) 
    3735 +#define IXP4XX_FUSE_HDLC               (1 << 5) 
    3736 +#define IXP4XX_FUSE_AAL                        (1 << 6) 
    3737 +#define IXP4XX_FUSE_HSS                        (1 << 7) 
    3738 +#define IXP4XX_FUSE_UTOPIA             (1 << 8) 
    3739 +#define IXP4XX_FUSE_NPEB_ETH0          (1 << 9) 
    3740 +#define IXP4XX_FUSE_NPEC_ETH           (1 << 10) 
    3741 +#define IXP4XX_FUSE_RESET_NPEA         (1 << 11) 
    3742 +#define IXP4XX_FUSE_RESET_NPEB         (1 << 12) 
    3743 +#define IXP4XX_FUSE_RESET_NPEC         (1 << 13) 
    3744 +#define IXP4XX_FUSE_PCI                        (1 << 14) 
    3745 +#define IXP4XX_FUSE_ECC_TIMESYNC       (1 << 15) 
    3746 +#define IXP4XX_FUSE_UTOPIA_PHY_LIMIT   (3 << 16) 
    3747 +#define IXP4XX_FUSE_USB_HOST           (1 << 18) 
    3748 +#define IXP4XX_FUSE_NPEA_ETH           (1 << 19) 
    3749 +#define IXP4XX_FUSE_NPEB_ETH_1_TO_3    (1 << 20) 
    3750 +#define IXP4XX_FUSE_RSA                        (1 << 21) 
    3751 +#define IXP4XX_FUSE_XSCALE_MAX_FREQ    (3 << 22) 
    3752 +#define IXP4XX_FUSE_RESERVED           (0xFF << 24) 
    3753 + 
    3754 +#define IXP4XX_FUSE_IXP46X_ONLY (IXP4XX_FUSE_ECC_TIMESYNC |            \ 
    3755 +                                IXP4XX_FUSE_USB_HOST |                 \ 
    3756 +                                IXP4XX_FUSE_NPEA_ETH |                 \ 
    3757 +                                IXP4XX_FUSE_NPEB_ETH_1_TO_3 |          \ 
    3758 +                                IXP4XX_FUSE_RSA |                      \ 
    3759 +                                IXP4XX_FUSE_XSCALE_MAX_FREQ) 
     3786+/* "fuse" bits of IXP_EXP_CFG2 */ 
     3787+#define IXP4XX_FEATURE_RCOMP           (1 << 0) 
     3788+#define IXP4XX_FEATURE_USB_DEVICE      (1 << 1) 
     3789+#define IXP4XX_FEATURE_HASH            (1 << 2) 
     3790+#define IXP4XX_FEATURE_AES             (1 << 3) 
     3791+#define IXP4XX_FEATURE_DES             (1 << 4) 
     3792+#define IXP4XX_FEATURE_HDLC            (1 << 5) 
     3793+#define IXP4XX_FEATURE_AAL             (1 << 6) 
     3794+#define IXP4XX_FEATURE_HSS             (1 << 7) 
     3795+#define IXP4XX_FEATURE_UTOPIA          (1 << 8) 
     3796+#define IXP4XX_FEATURE_NPEB_ETH0       (1 << 9) 
     3797+#define IXP4XX_FEATURE_NPEC_ETH                (1 << 10) 
     3798+#define IXP4XX_FEATURE_RESET_NPEA      (1 << 11) 
     3799+#define IXP4XX_FEATURE_RESET_NPEB      (1 << 12) 
     3800+#define IXP4XX_FEATURE_RESET_NPEC      (1 << 13) 
     3801+#define IXP4XX_FEATURE_PCI             (1 << 14) 
     3802+#define IXP4XX_FEATURE_ECC_TIMESYNC    (1 << 15) 
     3803+#define IXP4XX_FEATURE_UTOPIA_PHY_LIMIT        (3 << 16) 
     3804+#define IXP4XX_FEATURE_USB_HOST                (1 << 18) 
     3805+#define IXP4XX_FEATURE_NPEA_ETH                (1 << 19) 
     3806+#define IXP4XX_FEATURE_NPEB_ETH_1_TO_3 (1 << 20) 
     3807+#define IXP4XX_FEATURE_RSA             (1 << 21) 
     3808+#define IXP4XX_FEATURE_XSCALE_MAX_FREQ (3 << 22) 
     3809+#define IXP4XX_FEATURE_RESERVED                (0xFF << 24) 
     3810+ 
     3811+#define IXP4XX_FEATURE_IXP46X_ONLY (IXP4XX_FEATURE_ECC_TIMESYNC |      \ 
     3812+                                   IXP4XX_FEATURE_USB_HOST |           \ 
     3813+                                   IXP4XX_FEATURE_NPEA_ETH |           \ 
     3814+                                   IXP4XX_FEATURE_NPEB_ETH_1_TO_3 |    \ 
     3815+                                   IXP4XX_FEATURE_RSA |                \ 
     3816+                                   IXP4XX_FEATURE_XSCALE_MAX_FREQ) 
    37603817+ 
    37613818 #endif 
    3762 diff -Nur -x .git -x .gitignore linux-2.6.23/include/asm-arm/arch-ixp4xx/npe.h ixp4xx-nep.git/include/asm-arm/arch-ixp4xx/npe.h 
    3763 --- linux-2.6.23/include/asm-arm/arch-ixp4xx/npe.h      1970-01-01 01:00:00.000000000 +0100 
    3764 +++ ixp4xx-nep.git/include/asm-arm/arch-ixp4xx/npe.h    2007-10-22 19:20:22.000000000 +0200 
    3765 @@ -0,0 +1,41 @@ 
     3819diff --git a/include/asm-arm/arch-ixp4xx/npe.h b/include/asm-arm/arch-ixp4xx/npe.h 
     3820new file mode 100644 
     3821index 0000000..37d0511 
     3822--- /dev/null 
     3823+++ b/include/asm-arm/arch-ixp4xx/npe.h 
     3824@@ -0,0 +1,39 @@ 
    37663825+#ifndef __IXP4XX_NPE_H 
    37673826+#define __IXP4XX_NPE_H 
    37683827+ 
    3769 +#include <linux/etherdevice.h> 
    37703828+#include <linux/kernel.h> 
    3771 +#include <asm/io.h> 
    37723829+ 
    37733830+extern const char *npe_names[]; 
     
    38053862+ 
    38063863+#endif /* __IXP4XX_NPE_H */ 
    3807 diff -Nur -x .git -x .gitignore linux-2.6.23/include/asm-arm/arch-ixp4xx/platform.h ixp4xx-nep.git/include/asm-arm/arch-ixp4xx/platform.h 
    3808 --- linux-2.6.23/include/asm-arm/arch-ixp4xx/platform.h 2007-10-09 22:31:38.000000000 +0200 
    3809 +++ ixp4xx-nep.git/include/asm-arm/arch-ixp4xx/platform.h       2007-10-22 19:20:22.000000000 +0200 
    3810 @@ -77,8 +77,7 @@ 
     3864diff --git a/include/asm-arm/arch-ixp4xx/platform.h b/include/asm-arm/arch-ixp4xx/platform.h 
     3865index 2a44d3d..695b9c4 100644 
     3866--- a/include/asm-arm/arch-ixp4xx/platform.h 
     3867+++ b/include/asm-arm/arch-ixp4xx/platform.h 
     3868@@ -77,8 +77,7 @@ extern unsigned long ixp4xx_exp_bus_size; 
    38113869  
    38123870 /* 
     
    38183876  */ 
    38193877 struct ixp4xx_i2c_pins { 
    3820 @@ -86,6 +85,27 @@ 
     3878@@ -86,6 +85,27 @@ struct ixp4xx_i2c_pins { 
    38213879        unsigned long scl_pin; 
    38223880 }; 
     
    38463904  * This structure provide a means for the board setup code 
    38473905  * to give information to th pata_ixp4xx driver. It is 
    3848 diff -Nur -x .git -x .gitignore linux-2.6.23/include/asm-arm/arch-ixp4xx/qmgr.h ixp4xx-nep.git/include/asm-arm/arch-ixp4xx/qmgr.h 
    3849 --- linux-2.6.23/include/asm-arm/arch-ixp4xx/qmgr.h     1970-01-01 01:00:00.000000000 +0100 
    3850 +++ ixp4xx-nep.git/include/asm-arm/arch-ixp4xx/qmgr.h   2007-10-22 19:20:22.000000000 +0200 
    3851 @@ -0,0 +1,124 @@ 
     3906diff --git a/include/asm-arm/arch-ixp4xx/qmgr.h b/include/asm-arm/arch-ixp4xx/qmgr.h 
     3907new file mode 100644 
     3908index 0000000..1e52b95 
     3909--- /dev/null 
     3910+++ b/include/asm-arm/arch-ixp4xx/qmgr.h 
     3911@@ -0,0 +1,126 @@ 
    38523912+/* 
    38533913+ * Copyright (C) 2007 Krzysztof Halasa <khc@pm.waw.pl> 
     
    38613921+#define IXP4XX_QMGR_H 
    38623922+ 
     3923+#include <linux/io.h> 
    38633924+#include <linux/kernel.h> 
    3864 +#include <asm/io.h> 
    38653925+ 
    38663926+#define HALF_QUEUES    32 
     
    39073967+}; 
    39083968+ 
    3909 +extern struct qmgr_regs __iomem *qmgr_regs; 
    3910 + 
    39113969+void qmgr_set_irq(unsigned int queue, int src, 
    39123970+                 void (*handler)(void *pdev), void *pdev); 
     
    39233981+static inline void qmgr_put_entry(unsigned int queue, u32 val) 
    39243982+{ 
     3983+       extern struct qmgr_regs __iomem *qmgr_regs; 
    39253984+       __raw_writel(val, &qmgr_regs->acc[queue][0]); 
    39263985+} 
     
    39283987+static inline u32 qmgr_get_entry(unsigned int queue) 
    39293988+{ 
     3989+       extern struct qmgr_regs __iomem *qmgr_regs; 
    39303990+       return __raw_readl(&qmgr_regs->acc[queue][0]); 
    39313991+} 
     
    39333993+static inline int qmgr_get_stat1(unsigned int queue) 
    39343994+{ 
     3995+       extern struct qmgr_regs __iomem *qmgr_regs; 
    39353996+       return (__raw_readl(&qmgr_regs->stat1[queue >> 3]) 
    39363997+               >> ((queue & 7) << 2)) & 0xF; 
     
    39394000+static inline int qmgr_get_stat2(unsigned int queue) 
    39404001+{ 
     4002+       extern struct qmgr_regs __iomem *qmgr_regs; 
    39414003+       return (__raw_readl(&qmgr_regs->stat2[queue >> 4]) 
    39424004+               >> ((queue & 0xF) << 1)) & 0x3; 
     
    39744036+ 
    39754037+#endif 
    3976 diff -Nur -x .git -x .gitignore linux-2.6.23/include/asm-arm/arch-ixp4xx/uncompress.h ixp4xx-nep.git/include/asm-arm/arch-ixp4xx/uncompress.h 
    3977 --- linux-2.6.23/include/asm-arm/arch-ixp4xx/uncompress.h       2007-10-09 22:31:38.000000000 +0200 
    3978 +++ ixp4xx-nep.git/include/asm-arm/arch-ixp4xx/uncompress.h     2007-10-22 19:20:22.000000000 +0200 
    3979 @@ -13,7 +13,8 @@ 
     4038diff --git a/include/asm-arm/arch-ixp4xx/uncompress.h b/include/asm-arm/arch-ixp4xx/uncompress.h 
     4039index f7a35b7..34ef48f 100644 
     4040--- a/include/asm-arm/arch-ixp4xx/uncompress.h 
     4041+++ b/include/asm-arm/arch-ixp4xx/uncompress.h 
     4042@@ -13,7 +13,7 @@ 
    39804043 #ifndef _ARCH_UNCOMPRESS_H_ 
    39814044 #define _ARCH_UNCOMPRESS_H_ 
    39824045  
    39834046-#include <asm/hardware.h> 
    3984 +#define __ASM_ARCH_HARDWARE_H__ 
    39854047+#include "ixp4xx-regs.h" 
    39864048 #include <asm/mach-types.h> 
Note: See TracChangeset for help on using the changeset viewer.