serial: mpc512x: cleanup clock API use
authorGerhard Sittig <gsi@denx.de>
Tue, 6 Aug 2013 20:43:42 +0000 (22:43 +0200)
committerAnatolij Gustschin <agust@denx.de>
Wed, 21 Aug 2013 19:37:38 +0000 (21:37 +0200)
commit2d30ccacb12f1f5fd028da857f61f4d511fc5bcb
tree7d62ca70dc9feb0b8b770f3c382a341b41f335c9
parent6391f697d4892a6f233501beea553e13f7745a23
serial: mpc512x: cleanup clock API use

cleanup the clock API use of the UART driver which is shared among the
MPC512x and the MPC5200 platforms
- get, prepare, and enable the MCLK during port allocation; disable,
  unprepare and put the MCLK upon port release; hold a reference to the
  clock over the period of use; check for and propagate enable errors
- fix a buffer overflow for clock names with two digit PSC index numbers
- stick with the PPC_CLOCK 'psc%d_mclk' name for clock lookup, only
  switch to a fixed string later after device tree based clock lookup
  will have become available

to achieve support for MPC512x which is neutral to MPC5200, the
modification was done as follows
- introduce "clock alloc" and "clock release" routines in addition to
  the previous "clock enable/disable" routine in the psc_ops struct
- make the clock allocation a part of the port request (resource
  allocation), and make clock release a part of the port release, such
  that essential resources get allocated early
- just enable/disable the clock from within the .clock() callback
  without any allocation or preparation as the former implementation
  did, since this routine is called from within the startup and shutdown
  callbacks
- all of the above remains a NOP for the MPC5200 platform (no callbacks
  are provided on that platform)
- implementation note: the clock gets enabled upon allocation already
  just in case the clock is not only required for bitrate generation but
  for register access as well

Signed-off-by: Gerhard Sittig <gsi@denx.de>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Anatolij Gustschin <agust@denx.de>
drivers/tty/serial/mpc52xx_uart.c