• Gerhard Sittig's avatar
    serial: mpc512x: cleanup clock API use · 2d30ccac
    Gerhard Sittig authored
    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: default avatarGerhard Sittig <gsi@denx.de>
    Acked-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: default avatarAnatolij Gustschin <agust@denx.de>
    2d30ccac
mpc52xx_uart.c 49.3 KB