static int __init xxx_probe(struct platform_device *pdev) { regs = platform_get_resource(pdev, IORESOURCE_MEM, CTRL_IOMEM_ID); fifo = platform_get_resource(pdev, IORESOURCE_MEM, FIFO_IOMEM_ID); if (!regs || !fifo) return -ENXIO; irq = platform_get_irq(pdev, 0); if (irq < 0) return irq; platform_set_drvdata(pdev, xxx); } static int __exit xxx_remove(struct platform_device *pdev) { xxx = platform_get_drvdata(pdev); platform_set_drvdata(pdev, NULL); return 0; } static struct platform_driver xxx_driver = { .remove = __exit_p(xxx_remove), .driver = { .name = "xxx", }, }; static int __init xxx_init(void) { return platform_driver_probe(&xxx_driver, xxx_probe); } module_init(xxx_init); static void __exit xxx_exit(void) { platform_driver_unregister(&xxx_driver); } module_exit(xxx_exit); arch/m68k/amiga/amiints.c: if (AMIGAHW_PRESENT(PCMCIA)) arch/m68k/amiga/chipram.c: if (!AMIGAHW_PRESENT(CHIP_RAM)) arch/m68k/amiga/config.c: if (AMIGAHW_PRESENT(name)) \ arch/m68k/amiga/config.c: if (AMIGAHW_PRESENT(ZORRO)) arch/m68k/amiga/config.c: printk("ZORRO%s ", AMIGAHW_PRESENT(ZORRO3) ? "3" : ""); arch/m68k/amiga/config.c: if (AMIGAHW_PRESENT(A3000_CLK)) { arch/m68k/amiga/config.c: } else /* if (AMIGAHW_PRESENT(A2000_CLK)) */ { arch/m68k/amiga/config.c: if (AMIGAHW_PRESENT(ZORRO3)) { arch/m68k/amiga/config.c: if (amiga_enable_debug_mem && AMIGAHW_PRESENT(CHIP_RAM)) arch/m68k/amiga/config.c: if (AMIGAHW_PRESENT(AMI_AUDIO)) arch/m68k/amiga/config.c: if (AMIGAHW_PRESENT(MAGIC_REKICK)) arch/m68k/amiga/config.c: if (AMIGAHW_PRESENT(A3000_CLK)) { arch/m68k/amiga/config.c: } else /* if (AMIGAHW_PRESENT(A2000_CLK)) */ { arch/m68k/amiga/config.c: if (AMIGAHW_PRESENT(A3000_CLK)) { arch/m68k/amiga/config.c: } else /* if (AMIGAHW_PRESENT(A2000_CLK)) */ { arch/m68k/amiga/config.c: if (!AMIGAHW_PRESENT(CHIP_RAM)) { arch/m68k/amiga/config.c: if (AMIGAHW_PRESENT(CHIP_RAM)) arch/m68k/amiga/config.c: if (AMIGAHW_PRESENT(AMI_VIDEO)) { arch/m68k/amiga/config.c: if (AMIGAHW_PRESENT(name)) \ arch/m68k/amiga/config.c: if (AMIGAHW_PRESENT(ZORRO)) arch/m68k/amiga/config.c: AMIGAHW_PRESENT(ZORRO3) ? "I" : "", arch/m68k/kernel/setup.c: if (MACH_IS_AMIGA && AMIGAHW_PRESENT(GG2_ISA)) { arch/m68k/kernel/setup.c: if (MACH_IS_AMIGA && AMIGAHW_PRESENT(PCMCIA)) { drivers/block/amiflop.c: if (!AMIGAHW_PRESENT(AMI_FLOPPY)) drivers/char/amiserial.c: if (!MACH_IS_AMIGA || !AMIGAHW_PRESENT(AMI_SERIAL)) drivers/ide/legacy/gayle.c: if ((a4000 = AMIGAHW_PRESENT(A4000_IDE)) || AMIGAHW_PRESENT(A1200_IDE)) drivers/input/keyboard/amikbd.c: if (!AMIGAHW_PRESENT(AMI_KEYBOARD)) drivers/input/mouse/amimouse.c: if (!MACH_IS_AMIGA || !AMIGAHW_PRESENT(AMI_MOUSE)) drivers/net/apne.c: if ( !(AMIGAHW_PRESENT(PCMCIA)) ) drivers/parport/parport_amiga.c: if (!MACH_IS_AMIGA || !AMIGAHW_PRESENT(AMI_PARALLEL)) drivers/scsi/a3000.c: if (!MACH_IS_AMIGA || !AMIGAHW_PRESENT(A3000_SCSI)) drivers/scsi/a4000t.c: if (!(MACH_IS_AMIGA && AMIGAHW_PRESENT(A4000_SCSI))) drivers/video/amifb.c: if (!MACH_IS_AMIGA || !AMIGAHW_PRESENT(AMI_VIDEO)) drivers/video/amifb.c: if (AMIGAHW_PRESENT(AMBER_FF)) drivers/video/amifb.c: } else if (AMIGAHW_PRESENT(AGNUS_HR_PAL) || drivers/video/amifb.c: AMIGAHW_PRESENT(AGNUS_HR_NTSC)) { drivers/video/amifb.c: } else if (AMIGAHW_PRESENT(AGNUS_HR_PAL) || drivers/video/amifb.c: AMIGAHW_PRESENT(AGNUS_HR_NTSC)) { drivers/zorro/proc.c: if (MACH_IS_AMIGA && AMIGAHW_PRESENT(ZORRO)) { drivers/zorro/zorro.c: if (!MACH_IS_AMIGA || !AMIGAHW_PRESENT(ZORRO)) drivers/zorro/zorro.c: if (!MACH_IS_AMIGA || !AMIGAHW_PRESENT(ZORRO)) drivers/zorro/zorro.c: zorro_bus.num_resources = AMIGAHW_PRESENT(ZORRO3) ? 4 : 2; include/asm-m68k/amigahw.h:#define AMIGAHW_PRESENT(name) (amiga_hw_present.name) sound/oss/dmasound/dmasound_paula.c: if (MACH_IS_AMIGA && AMIGAHW_PRESENT(AMI_AUDIO)) { --- arch/m68k/amiga/Makefile | 2 - arch/m68k/amiga/platform.c | 73 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+), 1 deletion(-) --- a/arch/m68k/amiga/Makefile +++ b/arch/m68k/amiga/Makefile @@ -2,6 +2,6 @@ # Makefile for Linux arch/m68k/amiga source directory # -obj-y := config.o amiints.o cia.o chipram.o amisound.o +obj-y := config.o amiints.o cia.o chipram.o amisound.o platform.o obj-$(CONFIG_AMIGA_PCMCIA) += pcmcia.o --- /dev/null +++ b/arch/m68k/amiga/platform.c @@ -0,0 +1,73 @@ +/* + * Copyright (C) 2007 Geert Uytterhoeven + * + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file COPYING in the main directory of this archive + * for more details. + */ + +#include +#include // FIXME show_mem() + +#include + + +static struct platform_device amiga_serial = { + .name = "amiga-serial", + .id = -1, +}; + +static int __init amiga_init_devices(void) +{ + if (AMIGAHW_PRESENT(AMI_FLOPPY)) + platform_device_register_simple("amiga-floppy", -1, NULL, 0); + + if (AMIGAHW_PRESENT(AMI_SERIAL)) + platform_device_register(&amiga_serial); + +#if 0 + /* video hardware */ +[ ] AMIGAHW_PRESENT(AMI_VIDEO); /* Amiga Video */ +[ ] AMIGAHW_PRESENT(AMI_BLITTER); /* Amiga Blitter */ +[ ] AMIGAHW_PRESENT(AMBER_FF); /* Amber Flicker Fixer */ + /* sound hardware */ +[ ] AMIGAHW_PRESENT(AMI_AUDIO); /* Amiga Audio */ + /* disk storage interfaces */ +[ ] AMIGAHW_PRESENT(AMI_FLOPPY); /* Amiga Floppy */ +[ ] AMIGAHW_PRESENT(A3000_SCSI); /* SCSI (wd33c93, A3000 alike) */ +[ ] AMIGAHW_PRESENT(A4000_SCSI); /* SCSI (ncr53c710, A4000T alike) */ +[ ] AMIGAHW_PRESENT(A1200_IDE); /* IDE (A1200 alike) */ +[ ] AMIGAHW_PRESENT(A4000_IDE); /* IDE (A4000 alike) */ +[ ] AMIGAHW_PRESENT(CD_ROM); /* CD ROM drive */ + /* other I/O hardware */ +[ ] AMIGAHW_PRESENT(AMI_KEYBOARD); /* Amiga Keyboard */ +[ ] AMIGAHW_PRESENT(AMI_MOUSE); /* Amiga Mouse */ +[ ] AMIGAHW_PRESENT(AMI_SERIAL); /* Amiga Serial */ +[ ] AMIGAHW_PRESENT(AMI_PARALLEL); /* Amiga Parallel */ + /* real time clocks */ +[ ] AMIGAHW_PRESENT(A2000_CLK); /* Hardware Clock (A2000 alike) */ +[ ] AMIGAHW_PRESENT(A3000_CLK); /* Hardware Clock (A3000 alike) */ + /* supporting hardware */ +[ ] AMIGAHW_PRESENT(CHIP_RAM); /* Chip RAM */ +[ ] AMIGAHW_PRESENT(PAULA); /* Paula (8364) */ +[ ] AMIGAHW_PRESENT(DENISE); /* Denise (8362) */ +[ ] AMIGAHW_PRESENT(DENISE_HR); /* Denise (8373) */ +[ ] AMIGAHW_PRESENT(LISA); /* Lisa (8375) */ +[ ] AMIGAHW_PRESENT(AGNUS_PAL); /* Normal/Fat PAL Agnus (8367/8371) */ +[ ] AMIGAHW_PRESENT(AGNUS_NTSC); /* Normal/Fat NTSC Agnus (8361/8370) */ +[ ] AMIGAHW_PRESENT(AGNUS_HR_PAL); /* Fat Hires PAL Agnus (8372) */ +[ ] AMIGAHW_PRESENT(AGNUS_HR_NTSC); /* Fat Hires NTSC Agnus (8372) */ +[ ] AMIGAHW_PRESENT(ALICE_PAL); /* PAL Alice (8374) */ +[ ] AMIGAHW_PRESENT(ALICE_NTSC); /* NTSC Alice (8374) */ +[ ] AMIGAHW_PRESENT(MAGIC_REKICK); /* A3000 Magic Hard Rekick */ +[ ] AMIGAHW_PRESENT(PCMCIA); /* PCMCIA Slot */ +[ ] AMIGAHW_PRESENT(GG2_ISA); /* GG2 Zorro2ISA Bridge */ +[ ] AMIGAHW_PRESENT(ZORRO); /* Zorro AutoConfig */ +[ ] AMIGAHW_PRESENT(ZORRO3); /* Zorro III */ +#endif + + return 0; +} + +device_initcall(amiga_init_devices); +