Skip to content

Commit

Permalink
m68k/atari: EtherNEC - add platform device support
Browse files Browse the repository at this point in the history
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 <[email protected]>
Signed-off-by: Geert Uytterhoeven <[email protected]>
  • Loading branch information
Michael Schmitz authored and geertu committed Apr 16, 2013
1 parent 736b24d commit 1d87a8f
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 1 deletion.
14 changes: 14 additions & 0 deletions arch/m68k/Kconfig.devices
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
54 changes: 53 additions & 1 deletion arch/m68k/atari/config.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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;
Expand All @@ -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;
}

Expand Down

0 comments on commit 1d87a8f

Please sign in to comment.