Skip to content
Snippets Groups Projects
Select Git revision
0 results

reform-boundary-uboot

  • Clone with SSH
  • Clone with HTTPS
  • Forked from Reform / reform-boundary-uboot
    Loading
    user avatar
    Stephen Warren authored
    Currently, Tegra peripheral drivers control two aspects of their HW module
    clock(s):
    
    1) The clock enable/rate for the peripheral clock itself.
    
    2) The system-level clock tree setup, i.e. the clock parent.
    
    Aspect 1 is reasonable, but aspect 2 is a system-level decision, not
    something that an individual peripheral driver should in general know
    about or influence. Such system-level knowledge ties the driver to a
    specific SoC implementation, even when they use generic APIs for clock
    manipulation, since they must have SoC-specific knowledge such as parent
    clock IDs. Limited exceptions exist, such as where peripheral HW is
    expected to dynamically switch between clock sources at run-time, such
    as CPU clock scaling or display clock conflict management in a multi-head
    scenario.
    
    This patch enhances the Tegra core code to perform system-level clock
    tree setup, in a similar fashion to the Linux kernel Tegra clock driver.
    This will allow future patches to simplify peripheral drivers by removing
    the clock parent setup logic.
    
    This change is required prior to converting peripheral drivers to use the
    standard clock APIs, since:
    
    1) The clock uclass doesn't currently support a set_parent() operation.
    Adding one is possible, but not necessary at the moment.
    
    2) The clock APIs retrieve all clock IDs from device tree, and the DT
    bindings for almost all peripherals only includes information about the
    relevant peripheral clocks, and not any potential parent clocks.
    
    Signed-off-by: default avatarStephen Warren <swarren@nvidia.com>
    Signed-off-by: default avatarTom Warren <twarren@nvidia.com>
    6dbcc962
    History
    Name Last commit Last update