clk: tegra: Add sdmmc mux divider clock
Add a clock type to model the sdmmc switch divider clocks which have paths to source clocks bypassing the divider (Low Jitter paths). These are handled by selecting the lj path when the divider is 1 (ie the rate is the parent rate), otherwise the normal path with divider will be selected. Otherwise this clock behaves as a normal peripheral clock. Signed-off-by: Peter De-Schrijver <pdeschrijver@nvidia.com> Signed-off-by: Aapo Vienamo <avienamo@nvidia.com> Acked-by: Peter De Schrijver <pdeschrijver@nvidia.com> Acked-by: Jon Hunter <jonathanh@nvidia.com> Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Šī revīzija ir iekļauta:

revīziju iesūtīja
Stephen Boyd

vecāks
cb3ac5947a
revīzija
633e79650b
@@ -706,6 +706,32 @@ struct clk *tegra_clk_register_super_clk(const char *name,
|
||||
const char * const *parent_names, u8 num_parents,
|
||||
unsigned long flags, void __iomem *reg, u8 clk_super_flags,
|
||||
spinlock_t *lock);
|
||||
|
||||
/**
|
||||
* struct tegra_sdmmc_mux - switch divider with Low Jitter inputs for SDMMC
|
||||
*
|
||||
* @hw: handle between common and hardware-specific interfaces
|
||||
* @reg: register controlling mux and divider
|
||||
* @flags: hardware-specific flags
|
||||
* @lock: optional register lock
|
||||
* @gate: gate clock
|
||||
* @gate_ops: gate clock ops
|
||||
*/
|
||||
struct tegra_sdmmc_mux {
|
||||
struct clk_hw hw;
|
||||
void __iomem *reg;
|
||||
spinlock_t *lock;
|
||||
const struct clk_ops *gate_ops;
|
||||
struct tegra_clk_periph_gate gate;
|
||||
u8 div_flags;
|
||||
};
|
||||
|
||||
#define to_clk_sdmmc_mux(_hw) container_of(_hw, struct tegra_sdmmc_mux, hw)
|
||||
|
||||
struct clk *tegra_clk_register_sdmmc_mux_div(const char *name,
|
||||
void __iomem *clk_base, u32 offset, u32 clk_num, u8 div_flags,
|
||||
unsigned long flags, void *lock);
|
||||
|
||||
/**
|
||||
* struct clk_init_table - clock initialization table
|
||||
* @clk_id: clock id as mentioned in device tree bindings
|
||||
|
Atsaukties uz šo jaunā problēmā
Block a user