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 <agust@denx.de>
diff --git a/arch/powerpc/cpu/mpc5xxx/serial.c b/arch/powerpc/cpu/mpc5xxx/serial.c
index 59a877a..0127065 100644
--- a/arch/powerpc/cpu/mpc5xxx/serial.c
+++ b/arch/powerpc/cpu/mpc5xxx/serial.c
@@ -340,6 +340,7 @@
 	"serial0",
 	"UART0",
 	serial0_init,
+	NULL,
 	serial0_setbrg,
 	serial0_getc,
 	serial0_tstc,
@@ -352,6 +353,7 @@
 	"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 664db65..9514c66 100644
--- a/arch/powerpc/cpu/mpc8xx/serial.c
+++ b/arch/powerpc/cpu/mpc8xx/serial.c
@@ -392,6 +392,7 @@
 	"serial_smc",
 	"SMC",
 	smc_init,
+	NULL,
 	smc_setbrg,
 	smc_getc,
 	smc_tstc,
@@ -662,6 +663,7 @@
 	"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 8de6542..e6ab570 100644
--- a/arch/powerpc/cpu/ppc4xx/4xx_uart.c
+++ b/arch/powerpc/cpu/ppc4xx/4xx_uart.c
@@ -822,6 +822,7 @@
 	"serial0",
 	"UART0",
 	serial0_init,
+	NULL,
 	serial0_setbrg,
 	serial0_getc,
 	serial0_tstc,
@@ -834,6 +835,7 @@
 	"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 c98158f..a6d2427 100644
--- a/board/logicpd/zoom2/zoom2_serial.h
+++ b/board/logicpd/zoom2/zoom2_serial.h
@@ -65,6 +65,7 @@
 	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 dd5f332..8eda95cd 100644
--- a/drivers/serial/serial.c
+++ b/drivers/serial/serial.c
@@ -115,6 +115,7 @@
 	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 9ba457e..b74e439 100644
--- a/drivers/serial/serial_pxa.c
+++ b/drivers/serial/serial_pxa.c
@@ -266,6 +266,7 @@
 	"serial_ffuart",
 	"PXA",
 	ffuart_init,
+	NULL,
 	ffuart_setbrg,
 	ffuart_getc,
 	ffuart_tstc,
@@ -310,6 +311,7 @@
 	"serial_btuart",
 	"PXA",
 	btuart_init,
+	NULL,
 	btuart_setbrg,
 	btuart_getc,
 	btuart_tstc,
@@ -354,6 +356,7 @@
 	"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 5dd4dd8..8a3e302 100644
--- a/drivers/serial/serial_s3c24x0.c
+++ b/drivers/serial/serial_s3c24x0.c
@@ -78,6 +78,7 @@
 	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 73669a9..8da0c86 100644
--- a/drivers/serial/serial_s5pc1xx.c
+++ b/drivers/serial/serial_s5pc1xx.c
@@ -185,6 +185,7 @@
 	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 f2638ec..fbf101b 100644
--- a/include/serial.h
+++ b/include/serial.h
@@ -9,6 +9,7 @@
 	char ctlr[CTLRSIZE];
 
 	int  (*init) (void);
+	int  (*uninit) (void);
 	void (*setbrg) (void);
 	int (*getc) (void);
 	int (*tstc) (void);