From fbb0030e3894119c089256f16626edd166c7629c Mon Sep 17 00:00:00 2001 From: Anatolij Gustschin Date: Sat, 24 Apr 2010 19:27:04 +0200 Subject: [PATCH] serial: struct serial_device: add uninit() entry for drivers Subsequent patch extends mpc512x serial driver to support multiple PSC ports. The driver will provide an uninit() function to stop the serial controller and to disable the controller's clock. Adding uninit() entry to struct serial_device allows disabling the serial controller after usage of a stdio serial device. This patch adds uninit() entry to the struct serial_device and fixes initialization of this structure in the code accordingly. Signed-off-by: Anatolij Gustschin --- arch/powerpc/cpu/mpc5xxx/serial.c | 2 ++ arch/powerpc/cpu/mpc8xx/serial.c | 2 ++ arch/powerpc/cpu/ppc4xx/4xx_uart.c | 2 ++ board/logicpd/zoom2/zoom2_serial.h | 1 + drivers/serial/serial.c | 1 + drivers/serial/serial_pxa.c | 3 +++ drivers/serial/serial_s3c24x0.c | 1 + drivers/serial/serial_s5pc1xx.c | 1 + include/serial.h | 1 + 9 files changed, 14 insertions(+) diff --git a/arch/powerpc/cpu/mpc5xxx/serial.c b/arch/powerpc/cpu/mpc5xxx/serial.c index 59a877a8f9..01270655ae 100644 --- a/arch/powerpc/cpu/mpc5xxx/serial.c +++ b/arch/powerpc/cpu/mpc5xxx/serial.c @@ -340,6 +340,7 @@ struct serial_device serial0_device = "serial0", "UART0", serial0_init, + NULL, serial0_setbrg, serial0_getc, serial0_tstc, @@ -352,6 +353,7 @@ struct serial_device serial1_device = "serial1", "UART1", serial1_init, + NULL, serial1_setbrg, serial1_getc, serial1_tstc, diff --git a/arch/powerpc/cpu/mpc8xx/serial.c b/arch/powerpc/cpu/mpc8xx/serial.c index 664db65a56..9514c66fd5 100644 --- a/arch/powerpc/cpu/mpc8xx/serial.c +++ b/arch/powerpc/cpu/mpc8xx/serial.c @@ -392,6 +392,7 @@ struct serial_device serial_smc_device = "serial_smc", "SMC", smc_init, + NULL, smc_setbrg, smc_getc, smc_tstc, @@ -662,6 +663,7 @@ struct serial_device serial_scc_device = "serial_scc", "SCC", scc_init, + NULL, scc_setbrg, scc_getc, scc_tstc, diff --git a/arch/powerpc/cpu/ppc4xx/4xx_uart.c b/arch/powerpc/cpu/ppc4xx/4xx_uart.c index 8de65425c9..e6ab570c02 100644 --- a/arch/powerpc/cpu/ppc4xx/4xx_uart.c +++ b/arch/powerpc/cpu/ppc4xx/4xx_uart.c @@ -822,6 +822,7 @@ struct serial_device serial0_device = "serial0", "UART0", serial0_init, + NULL, serial0_setbrg, serial0_getc, serial0_tstc, @@ -834,6 +835,7 @@ struct serial_device serial1_device = "serial1", "UART1", serial1_init, + NULL, serial1_setbrg, serial1_getc, serial1_tstc, diff --git a/board/logicpd/zoom2/zoom2_serial.h b/board/logicpd/zoom2/zoom2_serial.h index c98158f1ba..a6d2427fef 100644 --- a/board/logicpd/zoom2/zoom2_serial.h +++ b/board/logicpd/zoom2/zoom2_serial.h @@ -65,6 +65,7 @@ struct serial_device zoom2_serial_device##n = \ N(n), \ U(n), \ quad_init_##n, \ + NULL, \ quad_setbrg_##n, \ quad_getc_##n, \ quad_tstc_##n, \ diff --git a/drivers/serial/serial.c b/drivers/serial/serial.c index dd5f332ba9..8eda95cd3e 100644 --- a/drivers/serial/serial.c +++ b/drivers/serial/serial.c @@ -115,6 +115,7 @@ static NS16550_t serial_ports[4] = { name,\ bus,\ eserial##port##_init,\ + NULL,\ eserial##port##_setbrg,\ eserial##port##_getc,\ eserial##port##_tstc,\ diff --git a/drivers/serial/serial_pxa.c b/drivers/serial/serial_pxa.c index 9ba457e75a..b74e43957f 100644 --- a/drivers/serial/serial_pxa.c +++ b/drivers/serial/serial_pxa.c @@ -266,6 +266,7 @@ struct serial_device serial_ffuart_device = "serial_ffuart", "PXA", ffuart_init, + NULL, ffuart_setbrg, ffuart_getc, ffuart_tstc, @@ -310,6 +311,7 @@ struct serial_device serial_btuart_device = "serial_btuart", "PXA", btuart_init, + NULL, btuart_setbrg, btuart_getc, btuart_tstc, @@ -354,6 +356,7 @@ struct serial_device serial_stuart_device = "serial_stuart", "PXA", stuart_init, + NULL, stuart_setbrg, stuart_getc, stuart_tstc, diff --git a/drivers/serial/serial_s3c24x0.c b/drivers/serial/serial_s3c24x0.c index 5dd4dd8160..8a3e30209c 100644 --- a/drivers/serial/serial_s3c24x0.c +++ b/drivers/serial/serial_s3c24x0.c @@ -78,6 +78,7 @@ DECLARE_GLOBAL_DATA_PTR; name, \ bus, \ s3serial##port##_init, \ + NULL,\ s3serial##port##_setbrg, \ s3serial##port##_getc, \ s3serial##port##_tstc, \ diff --git a/drivers/serial/serial_s5pc1xx.c b/drivers/serial/serial_s5pc1xx.c index 73669a9f17..8da0c8606d 100644 --- a/drivers/serial/serial_s5pc1xx.c +++ b/drivers/serial/serial_s5pc1xx.c @@ -185,6 +185,7 @@ void s5p_serial##port##_puts(const char *s) { serial_puts_dev(s, port); } name, \ bus, \ s5p_serial##port##_init, \ + NULL, \ s5p_serial##port##_setbrg, \ s5p_serial##port##_getc, \ s5p_serial##port##_tstc, \ diff --git a/include/serial.h b/include/serial.h index f2638ec566..fbf101bd7f 100644 --- a/include/serial.h +++ b/include/serial.h @@ -9,6 +9,7 @@ struct serial_device { char ctlr[CTLRSIZE]; int (*init) (void); + int (*uninit) (void); void (*setbrg) (void); int (*getc) (void); int (*tstc) (void); -- 2.39.5