Re: [PATCH 3/4] mips: make loongsoon serial driver explicitly modular

Ralf Baechle
2015-06-09T07:35:55Z

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@linux-mips.org>

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