[POWERPC] CPM_UART: Fix non-console initialisation
The cpm_uart driver is initialised incorrectly, if there is a frame buffer console, and CONFIG_SERIAL_CPM_CONSOLE is defined. The driver fails to call cpm_uart_init_portdesc() and set_lineif() in this case. Signed-off-by: Kalle Pokki <kalle.pokki@iki.fi> Signed-off-by: Vitaly Bordug <vbordug@ru.mvista.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
parent
599540a855
commit
0091cf5a6a
|
@ -88,7 +88,7 @@ extern struct uart_cpm_port cpm_uart_ports[UART_NR];
|
||||||
|
|
||||||
/* these are located in their respective files */
|
/* these are located in their respective files */
|
||||||
void cpm_line_cr_cmd(int line, int cmd);
|
void cpm_line_cr_cmd(int line, int cmd);
|
||||||
int cpm_uart_init_portdesc(void);
|
int __init cpm_uart_init_portdesc(void);
|
||||||
int cpm_uart_allocbuf(struct uart_cpm_port *pinfo, unsigned int is_con);
|
int cpm_uart_allocbuf(struct uart_cpm_port *pinfo, unsigned int is_con);
|
||||||
void cpm_uart_freebuf(struct uart_cpm_port *pinfo);
|
void cpm_uart_freebuf(struct uart_cpm_port *pinfo);
|
||||||
|
|
||||||
|
|
|
@ -1349,11 +1349,10 @@ static int cpm_uart_init(void) {
|
||||||
pr_info("cpm_uart: WARNING: no UART devices found on platform bus!\n");
|
pr_info("cpm_uart: WARNING: no UART devices found on platform bus!\n");
|
||||||
pr_info(
|
pr_info(
|
||||||
"cpm_uart: the driver will guess configuration, but this mode is no longer supported.\n");
|
"cpm_uart: the driver will guess configuration, but this mode is no longer supported.\n");
|
||||||
#ifndef CONFIG_SERIAL_CPM_CONSOLE
|
|
||||||
ret = cpm_uart_init_portdesc();
|
/* Don't run this again, if the console driver did it already */
|
||||||
if (ret)
|
if (cpm_uart_nr == 0)
|
||||||
return ret;
|
cpm_uart_init_portdesc();
|
||||||
#endif
|
|
||||||
|
|
||||||
cpm_reg.nr = cpm_uart_nr;
|
cpm_reg.nr = cpm_uart_nr;
|
||||||
ret = uart_register_driver(&cpm_reg);
|
ret = uart_register_driver(&cpm_reg);
|
||||||
|
@ -1365,6 +1364,8 @@ static int cpm_uart_init(void) {
|
||||||
int con = cpm_uart_port_map[i];
|
int con = cpm_uart_port_map[i];
|
||||||
cpm_uart_ports[con].port.line = i;
|
cpm_uart_ports[con].port.line = i;
|
||||||
cpm_uart_ports[con].port.flags = UPF_BOOT_AUTOCONF;
|
cpm_uart_ports[con].port.flags = UPF_BOOT_AUTOCONF;
|
||||||
|
if (cpm_uart_ports[con].set_lineif)
|
||||||
|
cpm_uart_ports[con].set_lineif(&cpm_uart_ports[con]);
|
||||||
uart_add_one_port(&cpm_reg, &cpm_uart_ports[con].port);
|
uart_add_one_port(&cpm_reg, &cpm_uart_ports[con].port);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -184,7 +184,7 @@ void cpm_uart_freebuf(struct uart_cpm_port *pinfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Setup any dynamic params in the uart desc */
|
/* Setup any dynamic params in the uart desc */
|
||||||
int cpm_uart_init_portdesc(void)
|
int __init cpm_uart_init_portdesc(void)
|
||||||
{
|
{
|
||||||
pr_debug("CPM uart[-]:init portdesc\n");
|
pr_debug("CPM uart[-]:init portdesc\n");
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue