Skip to content
  • Sascha Hauer's avatar
    pwm: imx: Remove ipg clock and enable per clock when required · 9fb27fac
    Sascha Hauer authored and Thierry Reding's avatar Thierry Reding committed
    The use of the ipg clock was introduced with commit 7b27c160
    
     ("pwm:
    i.MX: fix clock lookup"). In the commit message it was claimed that the
    ipg clock is enabled for register accesses. This is true for the
    ->config() callback, but not for the ->set_enable() callback. Given that
    the ipg clock is not consistently enabled for all register accesses we
    can assume that either it is not required at all or that the current
    code does not work. Remove the ipg clock code for now so that it's no
    longer in the way of refactoring the driver.
    
    On the other hand, the i.MX 7 IP requires the peripheral clock to be
    enabled before accessing its registers. Since ->config() can be called
    when the PWM is disabled (in which case, the peripheral clock is also
    disabled), we need to surround the imx->config() with
    clk_prepare_enable(per_clk)/clk_disable_unprepare(per_clk) calls.
    
    Note that the driver was working fine for the i.MX 7 IP so far because
    the ipg and peripheral clock use the same hardware clock gate, which
    guaranteed peripheral clock activation even when ->config() was called
    when the PWM was disabled.
    
    Signed-off-by: default avatarSascha Hauer <s.hauer@pengutronix.de>
    Signed-off-by: default avatarBoris Brezillon <boris.brezillon@free-electrons.com>
    Cc: Philipp Zabel <p.zabel@pengutronix.de>
    Reviewed-by: default avatarStefan Agner <stefan@agner.ch>
    Tested-by: default avatarStefan Agner <stefan@agner.ch>
    Reviewed-by: default avatarBoris Brezillon <boris.brezillon@free-electrons.com>
    Signed-off-by: default avatarThierry Reding <thierry.reding@gmail.com>
    9fb27fac