Re: [PATCH 2/4] clk: clk: Add clk_dflt_restore
On 6/19/2018 11:36 AM, Tero Kristo wrote: On 19/06/18 07:28, Keerthy wrote: The default restore context function enables or disables the clock based on the enable_count. This is done in cases where the clock context is lost and based on the enable_count the clock either needs to be enabled/disabled. This particularly helps restore the state of gate clocks. Signed-off-by: Keerthy --- drivers/clk/clk.c | 19 +++ include/linux/clk-provider.h | 2 ++ 2 files changed, 21 insertions(+) diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index 7347e06..c201b8b 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c @@ -910,6 +910,25 @@ static int clk_core_enable_lock(struct clk_core *core) return ret; } +/** + * clk_dflt_restore_context - restore context for poweroff + * @hw: the clk_hw pointer of clock whose state is to be restored + * + * The default restore context function enables or disables + * the clock based on the enable_count. This is done in cases + * where the clock context is lost and based on the enable_count + * the clock either needs to be enabled/disabled. This particularly + * helps restore the state of gate clocks. + */ +void clk_dflt_restore_context(struct clk_hw *hw) I think the name of this function is wrong, it should be clk_gate_restore_context, as only gate clocks are ever going to be using this afaics. Okay. Yes this applies to gate clocks. I will fix this. -Tero +{ + if (hw->clk->core->enable_count) + hw->clk->core->ops->enable(hw); + else + hw->clk->core->ops->disable(hw); +} +EXPORT_SYMBOL_GPL(clk_dflt_restore_context); + static int _clk_save_context(struct clk_core *clk) { struct clk_core *child; diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h index 7f30d62..3e0c61a 100644 --- a/include/linux/clk-provider.h +++ b/include/linux/clk-provider.h @@ -992,5 +992,7 @@ static inline void clk_writel(u32 val, u32 __iomem *reg) #endif /* platform dependent I/O accessors */ +void clk_dflt_restore_context(struct clk_hw *hw); + #endif /* CONFIG_COMMON_CLK */ #endif /* CLK_PROVIDER_H */ -- Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
Re: [PATCH 2/4] clk: clk: Add clk_dflt_restore
On 6/19/2018 11:36 AM, Tero Kristo wrote: On 19/06/18 07:28, Keerthy wrote: The default restore context function enables or disables the clock based on the enable_count. This is done in cases where the clock context is lost and based on the enable_count the clock either needs to be enabled/disabled. This particularly helps restore the state of gate clocks. Signed-off-by: Keerthy --- drivers/clk/clk.c | 19 +++ include/linux/clk-provider.h | 2 ++ 2 files changed, 21 insertions(+) diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index 7347e06..c201b8b 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c @@ -910,6 +910,25 @@ static int clk_core_enable_lock(struct clk_core *core) return ret; } +/** + * clk_dflt_restore_context - restore context for poweroff + * @hw: the clk_hw pointer of clock whose state is to be restored + * + * The default restore context function enables or disables + * the clock based on the enable_count. This is done in cases + * where the clock context is lost and based on the enable_count + * the clock either needs to be enabled/disabled. This particularly + * helps restore the state of gate clocks. + */ +void clk_dflt_restore_context(struct clk_hw *hw) I think the name of this function is wrong, it should be clk_gate_restore_context, as only gate clocks are ever going to be using this afaics. Okay. Yes this applies to gate clocks. I will fix this. -Tero +{ + if (hw->clk->core->enable_count) + hw->clk->core->ops->enable(hw); + else + hw->clk->core->ops->disable(hw); +} +EXPORT_SYMBOL_GPL(clk_dflt_restore_context); + static int _clk_save_context(struct clk_core *clk) { struct clk_core *child; diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h index 7f30d62..3e0c61a 100644 --- a/include/linux/clk-provider.h +++ b/include/linux/clk-provider.h @@ -992,5 +992,7 @@ static inline void clk_writel(u32 val, u32 __iomem *reg) #endif /* platform dependent I/O accessors */ +void clk_dflt_restore_context(struct clk_hw *hw); + #endif /* CONFIG_COMMON_CLK */ #endif /* CLK_PROVIDER_H */ -- Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
Re: [PATCH 2/4] clk: clk: Add clk_dflt_restore
On 19/06/18 07:28, Keerthy wrote: The default restore context function enables or disables the clock based on the enable_count. This is done in cases where the clock context is lost and based on the enable_count the clock either needs to be enabled/disabled. This particularly helps restore the state of gate clocks. Signed-off-by: Keerthy --- drivers/clk/clk.c| 19 +++ include/linux/clk-provider.h | 2 ++ 2 files changed, 21 insertions(+) diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index 7347e06..c201b8b 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c @@ -910,6 +910,25 @@ static int clk_core_enable_lock(struct clk_core *core) return ret; } +/** + * clk_dflt_restore_context - restore context for poweroff + * @hw: the clk_hw pointer of clock whose state is to be restored + * + * The default restore context function enables or disables + * the clock based on the enable_count. This is done in cases + * where the clock context is lost and based on the enable_count + * the clock either needs to be enabled/disabled. This particularly + * helps restore the state of gate clocks. + */ +void clk_dflt_restore_context(struct clk_hw *hw) I think the name of this function is wrong, it should be clk_gate_restore_context, as only gate clocks are ever going to be using this afaics. -Tero +{ + if (hw->clk->core->enable_count) + hw->clk->core->ops->enable(hw); + else + hw->clk->core->ops->disable(hw); +} +EXPORT_SYMBOL_GPL(clk_dflt_restore_context); + static int _clk_save_context(struct clk_core *clk) { struct clk_core *child; diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h index 7f30d62..3e0c61a 100644 --- a/include/linux/clk-provider.h +++ b/include/linux/clk-provider.h @@ -992,5 +992,7 @@ static inline void clk_writel(u32 val, u32 __iomem *reg) #endif /* platform dependent I/O accessors */ +void clk_dflt_restore_context(struct clk_hw *hw); + #endif /* CONFIG_COMMON_CLK */ #endif /* CLK_PROVIDER_H */ -- Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
Re: [PATCH 2/4] clk: clk: Add clk_dflt_restore
On 19/06/18 07:28, Keerthy wrote: The default restore context function enables or disables the clock based on the enable_count. This is done in cases where the clock context is lost and based on the enable_count the clock either needs to be enabled/disabled. This particularly helps restore the state of gate clocks. Signed-off-by: Keerthy --- drivers/clk/clk.c| 19 +++ include/linux/clk-provider.h | 2 ++ 2 files changed, 21 insertions(+) diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index 7347e06..c201b8b 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c @@ -910,6 +910,25 @@ static int clk_core_enable_lock(struct clk_core *core) return ret; } +/** + * clk_dflt_restore_context - restore context for poweroff + * @hw: the clk_hw pointer of clock whose state is to be restored + * + * The default restore context function enables or disables + * the clock based on the enable_count. This is done in cases + * where the clock context is lost and based on the enable_count + * the clock either needs to be enabled/disabled. This particularly + * helps restore the state of gate clocks. + */ +void clk_dflt_restore_context(struct clk_hw *hw) I think the name of this function is wrong, it should be clk_gate_restore_context, as only gate clocks are ever going to be using this afaics. -Tero +{ + if (hw->clk->core->enable_count) + hw->clk->core->ops->enable(hw); + else + hw->clk->core->ops->disable(hw); +} +EXPORT_SYMBOL_GPL(clk_dflt_restore_context); + static int _clk_save_context(struct clk_core *clk) { struct clk_core *child; diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h index 7f30d62..3e0c61a 100644 --- a/include/linux/clk-provider.h +++ b/include/linux/clk-provider.h @@ -992,5 +992,7 @@ static inline void clk_writel(u32 val, u32 __iomem *reg) #endif /* platform dependent I/O accessors */ +void clk_dflt_restore_context(struct clk_hw *hw); + #endif /* CONFIG_COMMON_CLK */ #endif /* CLK_PROVIDER_H */ -- Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
[PATCH 2/4] clk: clk: Add clk_dflt_restore
The default restore context function enables or disables the clock based on the enable_count. This is done in cases where the clock context is lost and based on the enable_count the clock either needs to be enabled/disabled. This particularly helps restore the state of gate clocks. Signed-off-by: Keerthy --- drivers/clk/clk.c| 19 +++ include/linux/clk-provider.h | 2 ++ 2 files changed, 21 insertions(+) diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index 7347e06..c201b8b 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c @@ -910,6 +910,25 @@ static int clk_core_enable_lock(struct clk_core *core) return ret; } +/** + * clk_dflt_restore_context - restore context for poweroff + * @hw: the clk_hw pointer of clock whose state is to be restored + * + * The default restore context function enables or disables + * the clock based on the enable_count. This is done in cases + * where the clock context is lost and based on the enable_count + * the clock either needs to be enabled/disabled. This particularly + * helps restore the state of gate clocks. + */ +void clk_dflt_restore_context(struct clk_hw *hw) +{ + if (hw->clk->core->enable_count) + hw->clk->core->ops->enable(hw); + else + hw->clk->core->ops->disable(hw); +} +EXPORT_SYMBOL_GPL(clk_dflt_restore_context); + static int _clk_save_context(struct clk_core *clk) { struct clk_core *child; diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h index 7f30d62..3e0c61a 100644 --- a/include/linux/clk-provider.h +++ b/include/linux/clk-provider.h @@ -992,5 +992,7 @@ static inline void clk_writel(u32 val, u32 __iomem *reg) #endif /* platform dependent I/O accessors */ +void clk_dflt_restore_context(struct clk_hw *hw); + #endif /* CONFIG_COMMON_CLK */ #endif /* CLK_PROVIDER_H */ -- 1.9.1
[PATCH 2/4] clk: clk: Add clk_dflt_restore
The default restore context function enables or disables the clock based on the enable_count. This is done in cases where the clock context is lost and based on the enable_count the clock either needs to be enabled/disabled. This particularly helps restore the state of gate clocks. Signed-off-by: Keerthy --- drivers/clk/clk.c| 19 +++ include/linux/clk-provider.h | 2 ++ 2 files changed, 21 insertions(+) diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index 7347e06..c201b8b 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c @@ -910,6 +910,25 @@ static int clk_core_enable_lock(struct clk_core *core) return ret; } +/** + * clk_dflt_restore_context - restore context for poweroff + * @hw: the clk_hw pointer of clock whose state is to be restored + * + * The default restore context function enables or disables + * the clock based on the enable_count. This is done in cases + * where the clock context is lost and based on the enable_count + * the clock either needs to be enabled/disabled. This particularly + * helps restore the state of gate clocks. + */ +void clk_dflt_restore_context(struct clk_hw *hw) +{ + if (hw->clk->core->enable_count) + hw->clk->core->ops->enable(hw); + else + hw->clk->core->ops->disable(hw); +} +EXPORT_SYMBOL_GPL(clk_dflt_restore_context); + static int _clk_save_context(struct clk_core *clk) { struct clk_core *child; diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h index 7f30d62..3e0c61a 100644 --- a/include/linux/clk-provider.h +++ b/include/linux/clk-provider.h @@ -992,5 +992,7 @@ static inline void clk_writel(u32 val, u32 __iomem *reg) #endif /* platform dependent I/O accessors */ +void clk_dflt_restore_context(struct clk_hw *hw); + #endif /* CONFIG_COMMON_CLK */ #endif /* CLK_PROVIDER_H */ -- 1.9.1