Commit 736b24db authored by Michael Schmitz's avatar Michael Schmitz Committed by Geert Uytterhoeven

m68k/atari: EtherNAT - platform device and IRQ support code

Add platform device and interrupt definitions necessary for the EtherNAT
Ethernet/USB adapter for the Falcon extension port. EtherNAT interrupt
numbers are 139/140 so the max. interrupt number for Atari has to be
increased.

[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 b1ae432c
...@@ -55,6 +55,16 @@ config NFETH ...@@ -55,6 +55,16 @@ config NFETH
which will emulate a regular ethernet device while presenting an which will emulate a regular ethernet device while presenting an
ethertap device to the host system. ethertap device to the host system.
config ATARI_ETHERNAT
bool "Atari EtherNAT Ethernet support"
depends on ATARI
---help---
Say Y to include support for the EtherNAT network adapter for the
CT/60 extension port.
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.
endmenu endmenu
menu "Character devices" menu "Character devices"
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/ioport.h> #include <linux/ioport.h>
#include <linux/platform_device.h>
#include <linux/vt_kern.h> #include <linux/vt_kern.h>
#include <linux/module.h> #include <linux/module.h>
...@@ -655,3 +656,66 @@ static void atari_get_hardware_list(struct seq_file *m) ...@@ -655,3 +656,66 @@ static void atari_get_hardware_list(struct seq_file *m)
ATARIHW_ANNOUNCE(VME, "VME Bus"); ATARIHW_ANNOUNCE(VME, "VME Bus");
ATARIHW_ANNOUNCE(DSP56K, "DSP56001 processor"); ATARIHW_ANNOUNCE(DSP56K, "DSP56001 processor");
} }
/*
* MSch: initial platform device support for Atari,
* required for EtherNAT driver
*/
#ifdef CONFIG_ATARI_ETHERNAT
/*
* EtherNAT: SMC91C111 Ethernet chipset, handled by smc91x driver
*/
#define ATARI_ETHERNAT_IRQ 140
static struct resource smc91x_resources[] = {
[0] = {
.name = "smc91x-regs",
.start = ATARI_ETHERNAT_PHYS_ADDR,
.end = ATARI_ETHERNAT_PHYS_ADDR + 0xfffff,
.flags = IORESOURCE_MEM,
},
[1] = {
.name = "smc91x-irq",
.start = ATARI_ETHERNAT_IRQ,
.end = ATARI_ETHERNAT_IRQ,
.flags = IORESOURCE_IRQ,
},
};
static struct platform_device smc91x_device = {
.name = "smc91x",
.id = -1,
.num_resources = ARRAY_SIZE(smc91x_resources),
.resource = smc91x_resources,
};
static struct platform_device *atari_ethernat_devices[] __initdata = {
&smc91x_device
};
#endif /* CONFIG_ATARI_ETHERNAT */
int __init atari_platform_init(void)
{
int rv = 0;
if (!MACH_IS_ATARI)
return -ENODEV;
#ifdef CONFIG_ATARI_ETHERNAT
{
unsigned char *enatc_virt;
enatc_virt = (unsigned char *)ioremap((ATARI_ETHERNAT_PHYS_ADDR+0x23), 0xf);
if (hwreg_present(enatc_virt)) {
rv = platform_add_devices(atari_ethernat_devices,
ARRAY_SIZE(atari_ethernat_devices));
}
iounmap(enatc_virt);
}
#endif
return rv;
}
arch_initcall(atari_platform_init);
...@@ -805,5 +805,11 @@ struct MSTE_RTC { ...@@ -805,5 +805,11 @@ struct MSTE_RTC {
#define mste_rtc ((*(volatile struct MSTE_RTC *)MSTE_RTC_BAS)) #define mste_rtc ((*(volatile struct MSTE_RTC *)MSTE_RTC_BAS))
/*
** EtherNAT add-on card for Falcon - combined ethernet and USB adapter
*/
#define ATARI_ETHERNAT_PHYS_ADDR 0x80000000
#endif /* linux/atarihw.h */ #endif /* linux/atarihw.h */
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
#define VME_SOURCE_BASE 56 #define VME_SOURCE_BASE 56
#define VME_MAX_SOURCES 16 #define VME_MAX_SOURCES 16
#define NUM_ATARI_SOURCES (VME_SOURCE_BASE+VME_MAX_SOURCES-STMFP_SOURCE_BASE) #define NUM_ATARI_SOURCES 141
/* convert vector number to int source number */ /* convert vector number to int source number */
#define IRQ_VECTOR_TO_SOURCE(v) ((v) - ((v) < 0x20 ? 0x18 : (0x40-8))) #define IRQ_VECTOR_TO_SOURCE(v) ((v) - ((v) < 0x20 ? 0x18 : (0x40-8)))
......
...@@ -6,12 +6,16 @@ ...@@ -6,12 +6,16 @@
* different m68k hosts compiled into the kernel. * different m68k hosts compiled into the kernel.
* Currently the Atari has 72 and the Amiga 24, but if both are * Currently the Atari has 72 and the Amiga 24, but if both are
* supported in the kernel it is better to make room for 72. * supported in the kernel it is better to make room for 72.
* With EtherNAT add-on card on Atari, the highest interrupt
* number is 140 so NR_IRQS needs to be 141.
*/ */
#if defined(CONFIG_COLDFIRE) #if defined(CONFIG_COLDFIRE)
#define NR_IRQS 256 #define NR_IRQS 256
#elif defined(CONFIG_VME) || defined(CONFIG_SUN3) || defined(CONFIG_SUN3X) #elif defined(CONFIG_VME) || defined(CONFIG_SUN3) || defined(CONFIG_SUN3X)
#define NR_IRQS 200 #define NR_IRQS 200
#elif defined(CONFIG_ATARI) || defined(CONFIG_MAC) #elif defined(CONFIG_ATARI)
#define NR_IRQS 141
#elif defined(CONFIG_MAC)
#define NR_IRQS 72 #define NR_IRQS 72
#elif defined(CONFIG_Q40) #elif defined(CONFIG_Q40)
#define NR_IRQS 43 #define NR_IRQS 43
......
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