Commit 1d87a8f2 authored by Michael Schmitz's avatar Michael Schmitz Committed by Geert Uytterhoeven

m68k/atari: EtherNEC - add platform device support

Add platform device for the Atari ROM port ethernet adapter, EtherNEC.
This platform device will be used by the ne.c driver.

[Geert] Conditionalize platform device data structures
Signed-off-by: default avatarMichael Schmitz <schmitz@debian.org>
Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
parent 736b24db
......@@ -65,6 +65,20 @@ config ATARI_ETHERNAT
To compile the actual ethernet driver, choose Y or M for the SMC91X
option in the network device section; the module will be called smc91x.
config ATARI_ETHERNEC
bool "Atari EtherNEC Ethernet support"
depends on ATARI_ROM_ISA
---help---
Say Y to include support for the EtherNEC network adapter for the
ROM port. The driver works by polling instead of interrupts, so it
is quite slow.
This driver also suppports the ethernet part of the NetUSBee ROM
port combined Ethernet/USB adapter.
To compile the actual ethernet driver, choose Y or M in for the NE2000
option in the network device section; the module will be called ne.
endmenu
menu "Character devices"
......
......@@ -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;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment