Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -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"
+53 −1
Original line number Diff line number Diff line
@@ -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;
}