diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-05-27 10:19:19 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-05-27 10:19:19 -0700 |
commit | a9a0aff5b56d4c40288c000ff09c3f238b6b6fec (patch) | |
tree | 496cce8240689a61b4c76a4318ac53487287c74b /arch/m68k/amiga/platform.c | |
parent | ade61088bc77dd209f8edadbe544f1e5dad6c287 (diff) | |
parent | 0779c862e43e052c58a350a8bd2bf97e6908de04 (diff) | |
download | kernel_samsung_smdk4412-a9a0aff5b56d4c40288c000ff09c3f238b6b6fec.zip kernel_samsung_smdk4412-a9a0aff5b56d4c40288c000ff09c3f238b6b6fec.tar.gz kernel_samsung_smdk4412-a9a0aff5b56d4c40288c000ff09c3f238b6b6fec.tar.bz2 |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k: (24 commits)
m68k: amiga - RTC platform device conversion
m68k: amiga - Parallel port platform device conversion
m68k: amiga - Serial port platform device conversion
m68k: amiga - Mouse platform device conversion
m68k: amiga - Keyboard platform device conversion
m68k: amiga - Amiga Gayle IDE platform device conversion
m68k: amiga - A4000T SCSI platform device conversion
m68k/scsi: a3000 - Do not use legacy Scsi_Host.base
m68k: amiga - A3000 SCSI platform device conversion
m68k/scsi: gvp11 - Do not use legacy Scsi_Host.base
m68k: amiga - GVP Series II SCSI zorro_driver conversion
m68k/scsi: a2091 - Do not use legacy Scsi_Host.base
m68k: amiga - A2091/A590 SCSI zorro_driver conversion
m68k/scsi: mvme147 - Kill obsolete HOSTS_C logic
m68k/scsi: a3000 - Kill a3000_scsiregs typedef
m68k/scsi: gvp11 - Kill gvp11_scsiregs typedef
m68k/scsi: a2091 - Kill a2091_scsiregs typedef
m68k/scsi: gvp11 - Extract check_wd33c93()
m68k/scsi: a3000 - Kill static global a3000_host
m68k/scsi: mvme147 - Kill static global mvme147_host
...
Diffstat (limited to 'arch/m68k/amiga/platform.c')
-rw-r--r-- | arch/m68k/amiga/platform.c | 116 |
1 files changed, 115 insertions, 1 deletions
diff --git a/arch/m68k/amiga/platform.c b/arch/m68k/amiga/platform.c index 38f18bf..7fd8b41 100644 --- a/arch/m68k/amiga/platform.c +++ b/arch/m68k/amiga/platform.c @@ -11,6 +11,7 @@ #include <linux/zorro.h> #include <asm/amigahw.h> +#include <asm/amigayle.h> #ifdef CONFIG_ZORRO @@ -55,11 +56,77 @@ static int __init amiga_init_bus(void) subsys_initcall(amiga_init_bus); -#endif /* CONFIG_ZORRO */ + +static int z_dev_present(zorro_id id) +{ + unsigned int i; + + for (i = 0; i < zorro_num_autocon; i++) + if (zorro_autocon[i].rom.er_Manufacturer == ZORRO_MANUF(id) && + zorro_autocon[i].rom.er_Product == ZORRO_PROD(id)) + return 1; + + return 0; +} + +#else /* !CONFIG_ZORRO */ + +static inline int z_dev_present(zorro_id id) { return 0; } + +#endif /* !CONFIG_ZORRO */ + + +static const struct resource a3000_scsi_resource __initconst = { + .start = 0xdd0000, + .end = 0xdd00ff, + .flags = IORESOURCE_MEM, +}; + + +static const struct resource a4000t_scsi_resource __initconst = { + .start = 0xdd0000, + .end = 0xdd0fff, + .flags = IORESOURCE_MEM, +}; + + +static const struct resource a1200_ide_resource __initconst = { + .start = 0xda0000, + .end = 0xda1fff, + .flags = IORESOURCE_MEM, +}; + +static const struct gayle_ide_platform_data a1200_ide_pdata __initconst = { + .base = 0xda0000, + .irqport = 0xda9000, + .explicit_ack = 1, +}; + + +static const struct resource a4000_ide_resource __initconst = { + .start = 0xdd2000, + .end = 0xdd3fff, + .flags = IORESOURCE_MEM, +}; + +static const struct gayle_ide_platform_data a4000_ide_pdata __initconst = { + .base = 0xdd2020, + .irqport = 0xdd3020, + .explicit_ack = 0, +}; + + +static const struct resource amiga_rtc_resource __initconst = { + .start = 0x00dc0000, + .end = 0x00dcffff, + .flags = IORESOURCE_MEM, +}; static int __init amiga_init_devices(void) { + struct platform_device *pdev; + if (!MACH_IS_AMIGA) return -ENODEV; @@ -77,6 +144,53 @@ static int __init amiga_init_devices(void) if (AMIGAHW_PRESENT(AMI_FLOPPY)) platform_device_register_simple("amiga-floppy", -1, NULL, 0); + if (AMIGAHW_PRESENT(A3000_SCSI)) + platform_device_register_simple("amiga-a3000-scsi", -1, + &a3000_scsi_resource, 1); + + if (AMIGAHW_PRESENT(A4000_SCSI)) + platform_device_register_simple("amiga-a4000t-scsi", -1, + &a4000t_scsi_resource, 1); + + if (AMIGAHW_PRESENT(A1200_IDE) || + z_dev_present(ZORRO_PROD_MTEC_VIPER_MK_V_E_MATRIX_530_SCSI_IDE)) { + pdev = platform_device_register_simple("amiga-gayle-ide", -1, + &a1200_ide_resource, 1); + platform_device_add_data(pdev, &a1200_ide_pdata, + sizeof(a1200_ide_pdata)); + } + + if (AMIGAHW_PRESENT(A4000_IDE)) { + pdev = platform_device_register_simple("amiga-gayle-ide", -1, + &a4000_ide_resource, 1); + platform_device_add_data(pdev, &a4000_ide_pdata, + sizeof(a4000_ide_pdata)); + } + + + /* other I/O hardware */ + if (AMIGAHW_PRESENT(AMI_KEYBOARD)) + platform_device_register_simple("amiga-keyboard", -1, NULL, 0); + + if (AMIGAHW_PRESENT(AMI_MOUSE)) + platform_device_register_simple("amiga-mouse", -1, NULL, 0); + + if (AMIGAHW_PRESENT(AMI_SERIAL)) + platform_device_register_simple("amiga-serial", -1, NULL, 0); + + if (AMIGAHW_PRESENT(AMI_PARALLEL)) + platform_device_register_simple("amiga-parallel", -1, NULL, 0); + + + /* real time clocks */ + if (AMIGAHW_PRESENT(A2000_CLK)) + platform_device_register_simple("rtc-msm6242", -1, + &amiga_rtc_resource, 1); + + if (AMIGAHW_PRESENT(A3000_CLK)) + platform_device_register_simple("rtc-rp5c01", -1, + &amiga_rtc_resource, 1); + return 0; } |