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: Michael Schmitz <schmitz@debian.org>
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
This commit is contained in:
Michael Schmitz
2013-04-06 13:26:40 +13:00
committad av Geert Uytterhoeven
förälder 736b24db32
incheckning 1d87a8f291
2 ändrade filer med 67 tillägg och 1 borttagningar

Visa fil

@@ -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;
}