Commit 09081e5b47f6842669bb645e015deedf191244f4

Authored by Anatolij Gustschin
Committed by Greg Kroah-Hartman
1 parent 34dcfb8479

tty: serial: mpc5xxx: fix PSC clock name bug

mpc512x platform clock code names PSC clocks as "pscX_mclk" but
the driver tries to get "pscX_clk" clock and this results in
errors like:

  mpc52xx-psc-uart 80011700.psc: Failed to get PSC clock entry!

The problem appears when opening ttyPSC devices other than the
system's serial console. Since getting and enabling the PSC clock
fails, uart port startup doesn't succeed and tty flag TTY_IO_ERROR
remains set causing further errors in tty ioctls, i.e.
'strace stty -F /dev/ttyPSC1' shows:

open("/dev/ttyPSC1", O_RDONLY|O_NONBLOCK|O_LARGEFILE) = 3
dup2(3, 0)                              = 0
close(3)                                = 0
fcntl64(0, F_GETFL)                     = 0x10800 (flags O_RDONLY|O_NONBLOCK|O_LARGEFILE)
fcntl64(0, F_SETFL, O_RDONLY|O_LARGEFILE) = 0
ioctl(0, TCGETS, 0xbff89038)            = -1 EIO (Input/output error)

Only request PSC clock names that the platform actually provides.

Signed-off-by: Anatolij Gustschin <agust@denx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Showing 1 changed file with 1 additions and 1 deletions Side-by-side Diff

drivers/tty/serial/mpc52xx_uart.c
... ... @@ -550,7 +550,7 @@
550 550 return 0;
551 551  
552 552 psc_num = (port->mapbase & 0xf00) >> 8;
553   - snprintf(clk_name, sizeof(clk_name), "psc%d_clk", psc_num);
  553 + snprintf(clk_name, sizeof(clk_name), "psc%d_mclk", psc_num);
554 554 psc_clk = clk_get(port->dev, clk_name);
555 555 if (IS_ERR(psc_clk)) {
556 556 dev_err(port->dev, "Failed to get PSC clock entry!\n");