diff options
Diffstat (limited to 'arch/m68k/atari')
-rw-r--r-- | arch/m68k/atari/config.c | 54 |
1 files changed, 53 insertions, 1 deletions
diff --git a/arch/m68k/atari/config.c b/arch/m68k/atari/config.c index 49d1c750acb0..83ff931ad97a 100644 --- a/arch/m68k/atari/config.c +++ b/arch/m68k/atari/config.c @@ -659,7 +659,7 @@ static void atari_get_hardware_list(struct seq_file *m) /* * MSch: initial platform device support for Atari, - * required for EtherNAT driver + * required for EtherNAT/EtherNEC drivers */ #ifdef CONFIG_ATARI_ETHERNAT @@ -696,6 +696,43 @@ static struct platform_device *atari_ethernat_devices[] __initdata = { }; #endif /* CONFIG_ATARI_ETHERNAT */ +#ifdef CONFIG_ATARI_ETHERNEC +/* + * EtherNEC: RTL8019 (NE2000 compatible) Ethernet chipset, + * handled by ne.c driver + */ + +#define ATARI_ETHERNEC_PHYS_ADDR 0xfffa0000 +#define ATARI_ETHERNEC_BASE 0x300 +#define ATARI_ETHERNEC_IRQ IRQ_MFP_TIMER1 + +static struct resource rtl8019_resources[] = { + [0] = { + .name = "rtl8019-regs", + .start = ATARI_ETHERNEC_BASE, + .end = ATARI_ETHERNEC_BASE + 0x20 - 1, + .flags = IORESOURCE_IO, + }, + [1] = { + .name = "rtl8019-irq", + .start = ATARI_ETHERNEC_IRQ, + .end = ATARI_ETHERNEC_IRQ, + .flags = IORESOURCE_IRQ, + }, +}; + +static struct platform_device rtl8019_device = { + .name = "ne", + .id = -1, + .num_resources = ARRAY_SIZE(rtl8019_resources), + .resource = rtl8019_resources, +}; + +static struct platform_device *atari_ethernec_devices[] __initdata = { + &rtl8019_device +}; +#endif /* CONFIG_ATARI_ETHERNEC */ + int __init atari_platform_init(void) { int rv = 0; @@ -715,6 +752,21 @@ int __init atari_platform_init(void) } #endif +#ifdef CONFIG_ATARI_ETHERNEC + { + int error; + unsigned char *enec_virt; + enec_virt = (unsigned char *)ioremap((ATARI_ETHERNEC_PHYS_ADDR), 0xf); + if (hwreg_present(enec_virt)) { + error = platform_add_devices(atari_ethernec_devices, + ARRAY_SIZE(atari_ethernec_devices)); + if (error && !rv) + rv = error; + } + iounmap(enec_virt); + } +#endif + return rv; } |