// SPDX-License-Identifier: GPL-2.0-only /* * linux/arch/arm/mach-footbridge/isa.c * * Copyright (C) 2004 Russell King. */ #include <linux/init.h> #include <linux/serial_8250.h> #include <asm/irq.h> #include <asm/hardware/dec21285.h> #include "common.h" static struct resource rtc_resources[] = { [0] = { .start = 0x70, .end = 0x73, .flags = IORESOURCE_IO, }, [1] = { .start = IRQ_ISA_RTC_ALARM, .end = IRQ_ISA_RTC_ALARM, .flags = IORESOURCE_IRQ, } }; static struct platform_device rtc_device = { .name = "rtc_cmos", .id = -1, .resource = rtc_resources, .num_resources = ARRAY_SIZE(rtc_resources), }; static struct resource serial_resources[] = { [0] = { .start = 0x3f8, .end = 0x3ff, .flags = IORESOURCE_IO, }, [1] = { .start = 0x2f8, .end = 0x2ff, .flags = IORESOURCE_IO, }, }; static struct plat_serial8250_port serial_platform_data[] = { { .iobase = 0x3f8, .irq = IRQ_ISA_UART, .uartclk = 1843200, .regshift = 0, .iotype = UPIO_PORT, .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, }, { .iobase = 0x2f8, .irq = IRQ_ISA_UART2, .uartclk = 1843200, .regshift = 0, .iotype = UPIO_PORT, .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, }, { }, }; static struct platform_device serial_device = { .name = "serial8250", .id = PLAT8250_DEV_PLATFORM, .dev = { .platform_data = serial_platform_data, }, .resource = serial_resources, .num_resources = ARRAY_SIZE(serial_resources), }; static int __init footbridge_isa_init(void) { int err = 0; if (!footbridge_cfn_mode()) return 0; /* Personal server doesn't have RTC */ if (!machine_is_personal_server()) { isa_rtc_init(); err = platform_device_register(&rtc_device); if (err) printk(KERN_ERR "Unable to register RTC device: %d\n", err); } err = platform_device_register(&serial_device); if (err) printk(KERN_ERR "Unable to register serial device: %d\n", err); return 0; } arch_initcall(footbridge_isa_init);