mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-14 06:35:12 +00:00
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: Michael Schmitz <schmitz@debian.org> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
This commit is contained in:
parent
b1ae432c5e
commit
736b24db32
5 changed files with 86 additions and 2 deletions
|
@ -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 @@
|
||||||
#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)
|
||||||
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 {
|
||||||
|
|
||||||
#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 @@
|
||||||
#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 @@
|
||||||
* 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
|
||||||
|
|
Loading…
Reference in a new issue