On Tue, Jun 02, 2015 at 04:16:07PM -0400, Paul Gortmaker wrote: Ccing a few people with interest in Loongson stuff. > The file looks as if it is non-modular, but it piggy-backs > off CONFIG_SERIAL_8250 which is tristate. If set to "=m" > we will get this after the init/module header cleanup: > > arch/mips/loongson/common/serial.c:76:1: error: data definition has no type or storage class [-Werror] > arch/mips/loongson/common/serial.c:76:1: error: type defaults to 'int' in declaration of 'device_initcall' [-Werror=implicit-int] > arch/mips/loongson/common/serial.c:76:1: error: parameter names (without types) in function declaration [-Werror] > arch/mips/loongson/common/serial.c:58:19: error: 'serial_init' defined but not used [-Werror=unused-function] > cc1: all warnings being treated as errors > make[3]: *** [arch/mips/loongson/common/serial.o] Error 1 > > Make it clearly modular, and add a module_exit function, > so that we avoid the above breakage. Following up on our IRC discussion - your commit would result in platform device registrations from module code which opens another can of worms. This and the whole philosophy of platforms devices to show what devices do exist in a system, not which drivers are configured. So just always build serial.c into the kernel. A related issue is uart_base.o which I think is required to register properly initialized platform devices. It depends on CONFIG_LOONGSON_UART_BASE but probably should also be put into the kernel whenever we register the UART platform devices and that's always. Ralf Signed-off-by: Ralf Baechle <ralf@xxxxxxxxxxxxxx> diff --git a/arch/mips/loongson/common/Makefile b/arch/mips/loongson/common/Makefile index e70c33f..f2e8153 100644 --- a/arch/mips/loongson/common/Makefile +++ b/arch/mips/loongson/common/Makefile @@ -3,15 +3,13 @@ # obj-y += setup.o init.o cmdline.o env.o time.o reset.o irq.o \ - bonito-irq.o mem.o machtype.o platform.o + bonito-irq.o mem.o machtype.o platform.o serial.o obj-$(CONFIG_PCI) += pci.o # # Serial port support # obj-$(CONFIG_EARLY_PRINTK) += early_printk.o -loongson-serial-$(CONFIG_SERIAL_8250) := serial.o -obj-y += $(loongson-serial-m) $(loongson-serial-y) obj-$(CONFIG_LOONGSON_UART_BASE) += uart_base.o obj-$(CONFIG_LOONGSON_MC146818) += rtc.o