• Boris Brezillon's avatar
    USB: ehci-atmel: rework clk handling · e32643a7
    Boris Brezillon authored
    The EHCI IP only needs the UTMI/UPLL (uclk) and the peripheral (iclk)
    clocks to work properly. Remove the useless system clock (fclk).
    
    Avoid calling set_rate on the fixed rate UTMI/IPLL clock and remove
    useless IS_ENABLED(CONFIG_COMMON_CLK) tests (all at91 platforms have been
    moved to the CCF).
    
    This patch also fixes a bug introduced by 3440ef16 (ARM: at91/dt: fix USB
    high-speed clock to select UTMI), which was leaving the usb clock
    uninitialized and preventing the OHCI driver from setting the usb clock
    rate to 48MHz.
    This bug was caused by several things:
    1/ usb clock drivers set the CLK_SET_RATE_GATE flag, which means the rate
       cannot be changed once the clock is prepared
    2/ The EHCI driver was retrieving and preparing/enabling the uhpck
       clock which was in turn preparing its parent clock (the usb clock),
       thus preventing any rate change because of 1/
    
    Fixes: 3440ef16 ("ARM: at91/dt: fix USB high-speed clock to select UTMI")
    Signed-off-by: default avatarBoris Brezillon <boris.brezillon@free-electrons.com>
    Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
    Acked-by: default avatarNicolas Ferre <nicolas.ferre@atmel.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    e32643a7
ehci-atmel.c 6.09 KB