diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-23 12:16:56 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-23 12:16:56 -0400 |
| commit | 5a439c565799cb8d290d71ce375e86be64d43a4b (patch) | |
| tree | b7933dced01add02249af35f5497e77cd11dbfdf | |
| parent | 94b6da5ab8293b04a300ba35c72eddfa94db8b02 (diff) | |
| parent | 0025427eee4b5c005b4ac7a6489adc773e38611d (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/czankel/xtensa-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/czankel/xtensa-2.6:
xtensa: Add config files for Diamond 232L - Rev B processor variant
xtensa: Fix io regions
xtensa: Add support for the Sonic Ethernet device for the XT2000 board.
xtensa: replace remaining __FUNCTION__ occurrences
xtensa: use newer __SPIN_LOCK_UNLOCKED macro
XTENSA: warn about including <asm/rwsem.h> directly.
| -rw-r--r-- | arch/xtensa/Kconfig | 7 | ||||
| -rw-r--r-- | arch/xtensa/Makefile | 1 | ||||
| -rw-r--r-- | arch/xtensa/kernel/irq.c | 2 | ||||
| -rw-r--r-- | arch/xtensa/platforms/iss/network.c | 2 | ||||
| -rw-r--r-- | drivers/net/Kconfig | 6 | ||||
| -rw-r--r-- | drivers/net/Makefile | 2 | ||||
| -rw-r--r-- | drivers/net/xtsonic.c | 319 | ||||
| -rw-r--r-- | include/asm-xtensa/io.h | 8 | ||||
| -rw-r--r-- | include/asm-xtensa/rwsem.h | 4 | ||||
| -rw-r--r-- | include/asm-xtensa/variant-dc232b/core.h | 424 | ||||
| -rw-r--r-- | include/asm-xtensa/variant-dc232b/tie-asm.h | 122 | ||||
| -rw-r--r-- | include/asm-xtensa/variant-dc232b/tie.h | 131 |
12 files changed, 1022 insertions, 6 deletions
diff --git a/arch/xtensa/Kconfig b/arch/xtensa/Kconfig index a213260b51e5..6c873dceb177 100644 --- a/arch/xtensa/Kconfig +++ b/arch/xtensa/Kconfig | |||
| @@ -64,7 +64,12 @@ choice | |||
| 64 | default XTENSA_VARIANT_FSF | 64 | default XTENSA_VARIANT_FSF |
| 65 | 65 | ||
| 66 | config XTENSA_VARIANT_FSF | 66 | config XTENSA_VARIANT_FSF |
| 67 | bool "fsf" | 67 | bool "fsf - default (not generic) configuration" |
| 68 | |||
| 69 | config XTENSA_VARIANT_DC232B | ||
| 70 | bool "dc232b - Diamond 232L Standard Core Rev.B (LE)" | ||
| 71 | help | ||
| 72 | This variant refers to Tensilica's Diamond 232L Standard core Rev.B (LE). | ||
| 68 | endchoice | 73 | endchoice |
| 69 | 74 | ||
| 70 | config MMU | 75 | config MMU |
diff --git a/arch/xtensa/Makefile b/arch/xtensa/Makefile index 4bd1e14c6b90..015b6b2a26b9 100644 --- a/arch/xtensa/Makefile +++ b/arch/xtensa/Makefile | |||
| @@ -14,6 +14,7 @@ | |||
| 14 | # (Use VAR=<xtensa_config> to use another default compiler.) | 14 | # (Use VAR=<xtensa_config> to use another default compiler.) |
| 15 | 15 | ||
| 16 | variant-$(CONFIG_XTENSA_VARIANT_FSF) := fsf | 16 | variant-$(CONFIG_XTENSA_VARIANT_FSF) := fsf |
| 17 | variant-$(CONFIG_XTENSA_VARIANT_DC232B) := dc232b | ||
| 17 | variant-$(CONFIG_XTENSA_VARIANT_LINUX_CUSTOM) := custom | 18 | variant-$(CONFIG_XTENSA_VARIANT_LINUX_CUSTOM) := custom |
| 18 | 19 | ||
| 19 | VARIANT = $(variant-y) | 20 | VARIANT = $(variant-y) |
diff --git a/arch/xtensa/kernel/irq.c b/arch/xtensa/kernel/irq.c index c9ea73b7031b..5fbcde59a92d 100644 --- a/arch/xtensa/kernel/irq.c +++ b/arch/xtensa/kernel/irq.c | |||
| @@ -48,7 +48,7 @@ asmlinkage void do_IRQ(int irq, struct pt_regs *regs) | |||
| 48 | 48 | ||
| 49 | if (irq >= NR_IRQS) { | 49 | if (irq >= NR_IRQS) { |
| 50 | printk(KERN_EMERG "%s: cannot handle IRQ %d\n", | 50 | printk(KERN_EMERG "%s: cannot handle IRQ %d\n", |
| 51 | __FUNCTION__, irq); | 51 | __func__, irq); |
| 52 | } | 52 | } |
| 53 | 53 | ||
| 54 | irq_enter(); | 54 | irq_enter(); |
diff --git a/arch/xtensa/platforms/iss/network.c b/arch/xtensa/platforms/iss/network.c index a2e252217428..11a20adc1409 100644 --- a/arch/xtensa/platforms/iss/network.c +++ b/arch/xtensa/platforms/iss/network.c | |||
| @@ -640,7 +640,7 @@ static int iss_net_configure(int index, char *init) | |||
| 640 | *lp = ((struct iss_net_private) { | 640 | *lp = ((struct iss_net_private) { |
| 641 | .device_list = LIST_HEAD_INIT(lp->device_list), | 641 | .device_list = LIST_HEAD_INIT(lp->device_list), |
| 642 | .opened_list = LIST_HEAD_INIT(lp->opened_list), | 642 | .opened_list = LIST_HEAD_INIT(lp->opened_list), |
| 643 | .lock = SPIN_LOCK_UNLOCKED, | 643 | .lock = __SPIN_LOCK_UNLOCKED(lp.lock), |
| 644 | .dev = dev, | 644 | .dev = dev, |
| 645 | .index = index, | 645 | .index = index, |
| 646 | //.fd = -1, | 646 | //.fd = -1, |
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index a5a9c6da5134..0b71ebc074b6 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig | |||
| @@ -464,6 +464,12 @@ config MIPS_JAZZ_SONIC | |||
| 464 | This is the driver for the onboard card of MIPS Magnum 4000, | 464 | This is the driver for the onboard card of MIPS Magnum 4000, |
| 465 | Acer PICA, Olivetti M700-10 and a few other identical OEM systems. | 465 | Acer PICA, Olivetti M700-10 and a few other identical OEM systems. |
| 466 | 466 | ||
| 467 | config XTENSA_XT2000_SONIC | ||
| 468 | tristate "Xtensa XT2000 onboard SONIC Ethernet support" | ||
| 469 | depends on XTENSA_PLATFORM_XT2000 | ||
| 470 | help | ||
| 471 | This is the driver for the onboard card of the Xtensa XT2000 board. | ||
| 472 | |||
| 467 | config MIPS_AU1X00_ENET | 473 | config MIPS_AU1X00_ENET |
| 468 | bool "MIPS AU1000 Ethernet support" | 474 | bool "MIPS AU1000 Ethernet support" |
| 469 | depends on SOC_AU1X00 | 475 | depends on SOC_AU1X00 |
diff --git a/drivers/net/Makefile b/drivers/net/Makefile index fa2510b2e609..f19acf8b9220 100644 --- a/drivers/net/Makefile +++ b/drivers/net/Makefile | |||
| @@ -227,6 +227,8 @@ pasemi_mac_driver-objs := pasemi_mac.o pasemi_mac_ethtool.o | |||
| 227 | obj-$(CONFIG_MLX4_CORE) += mlx4/ | 227 | obj-$(CONFIG_MLX4_CORE) += mlx4/ |
| 228 | obj-$(CONFIG_ENC28J60) += enc28j60.o | 228 | obj-$(CONFIG_ENC28J60) += enc28j60.o |
| 229 | 229 | ||
| 230 | obj-$(CONFIG_XTENSA_XT2000_SONIC) += xtsonic.o | ||
| 231 | |||
| 230 | obj-$(CONFIG_MACB) += macb.o | 232 | obj-$(CONFIG_MACB) += macb.o |
| 231 | 233 | ||
| 232 | obj-$(CONFIG_ARM) += arm/ | 234 | obj-$(CONFIG_ARM) += arm/ |
diff --git a/drivers/net/xtsonic.c b/drivers/net/xtsonic.c new file mode 100644 index 000000000000..da42aa06a3ba --- /dev/null +++ b/drivers/net/xtsonic.c | |||
| @@ -0,0 +1,319 @@ | |||
| 1 | /* | ||
| 2 | * xtsonic.c | ||
| 3 | * | ||
| 4 | * (C) 2001 - 2007 Tensilica Inc. | ||
| 5 | * Kevin Chea <kchea@yahoo.com> | ||
| 6 | * Marc Gauthier <marc@linux-xtensa.org> | ||
| 7 | * Chris Zankel <chris@zankel.net> | ||
| 8 | * | ||
| 9 | * (C) 1996,1998 by Thomas Bogendoerfer (tsbogend@alpha.franken.de) | ||
| 10 | * | ||
| 11 | * This driver is based on work from Andreas Busse, but most of | ||
| 12 | * the code is rewritten. | ||
| 13 | * | ||
| 14 | * (C) 1995 by Andreas Busse (andy@waldorf-gmbh.de) | ||
| 15 | * | ||
| 16 | * A driver for the onboard Sonic ethernet controller on the XT2000. | ||
| 17 | */ | ||
| 18 | |||
| 19 | #include <linux/kernel.h> | ||
| 20 | #include <linux/module.h> | ||
| 21 | #include <linux/types.h> | ||
| 22 | #include <linux/fcntl.h> | ||
| 23 | #include <linux/interrupt.h> | ||
| 24 | #include <linux/init.h> | ||
| 25 | #include <linux/ioport.h> | ||
| 26 | #include <linux/in.h> | ||
| 27 | #include <linux/slab.h> | ||
| 28 | #include <linux/string.h> | ||
| 29 | #include <linux/delay.h> | ||
| 30 | #include <linux/errno.h> | ||
| 31 | #include <linux/netdevice.h> | ||
| 32 | #include <linux/etherdevice.h> | ||
| 33 | #include <linux/skbuff.h> | ||
| 34 | #include <linux/platform_device.h> | ||
| 35 | #include <linux/dma-mapping.h> | ||
| 36 | |||
| 37 | #include <asm/io.h> | ||
| 38 | #include <asm/pgtable.h> | ||
| 39 | #include <asm/dma.h> | ||
| 40 | |||
| 41 | static char xtsonic_string[] = "xtsonic"; | ||
| 42 | |||
| 43 | extern unsigned xtboard_nvram_valid(void); | ||
| 44 | extern void xtboard_get_ether_addr(unsigned char *buf); | ||
| 45 | |||
| 46 | #include "sonic.h" | ||
| 47 | |||
| 48 | /* | ||
| 49 | * According to the documentation for the Sonic ethernet controller, | ||
| 50 | * EOBC should be 760 words (1520 bytes) for 32-bit applications, and, | ||
| 51 | * as such, 2 words less than the buffer size. The value for RBSIZE | ||
| 52 | * defined in sonic.h, however is only 1520. | ||
| 53 | * | ||
| 54 | * (Note that in 16-bit configurations, EOBC is 759 words (1518 bytes) and | ||
| 55 | * RBSIZE 1520 bytes) | ||
| 56 | */ | ||
| 57 | #undef SONIC_RBSIZE | ||
| 58 | #define SONIC_RBSIZE 1524 | ||
| 59 | |||
| 60 | /* | ||
| 61 | * The chip provides 256 byte register space. | ||
| 62 | */ | ||
| 63 | #define SONIC_MEM_SIZE 0x100 | ||
| 64 | |||
| 65 | /* | ||
| 66 | * Macros to access SONIC registers | ||
| 67 | */ | ||
| 68 | #define SONIC_READ(reg) \ | ||
| 69 | (0xffff & *((volatile unsigned int *)dev->base_addr+reg)) | ||
| 70 | |||
| 71 | #define SONIC_WRITE(reg,val) \ | ||
| 72 | *((volatile unsigned int *)dev->base_addr+reg) = val | ||
| 73 | |||
| 74 | |||
| 75 | /* Use 0 for production, 1 for verification, and >2 for debug */ | ||
| 76 | #ifdef SONIC_DEBUG | ||
| 77 | static unsigned int sonic_debug = SONIC_DEBUG; | ||
| 78 | #else | ||
| 79 | static unsigned int sonic_debug = 1; | ||
| 80 | #endif | ||
| 81 | |||
| 82 | /* | ||
| 83 | * We cannot use station (ethernet) address prefixes to detect the | ||
| 84 | * sonic controller since these are board manufacturer depended. | ||
| 85 | * So we check for known Silicon Revision IDs instead. | ||
| 86 | */ | ||
| 87 | static unsigned short known_revisions[] = | ||
| 88 | { | ||
| 89 | 0x101, /* SONIC 83934 */ | ||
| 90 | 0xffff /* end of list */ | ||
| 91 | }; | ||
| 92 | |||
| 93 | static in | ||
