clk: at91: clk-generated: Improvement
Subsystems (2)
cover clk: at91: clk-generated: Improvement
The purpose of the patch set is to fix the the incorrect assignment of the generic clock source selection, and to align to the Linux kernel driver, instead of selecting the closest inferior rate, select the absolute closest rate.
Ludovic Desroches (1):
clk: at91: clk-generated: select absolute closest rate
Wenyou Yang (1):
clk: at91: clk-generated: fix incorrect index of clk source
drivers/clk/at91/clk-generated.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-)
Signature · 1 line
2.13.0
PATCH 1/2 clk: at91: clk-generated: select absolute closest rate
From: Ludovic Desroches <[email protected]>
To get the same behavior as the Linux driver, instead of selecting the closest inferior rate, select the closest inferior or superior rate
---
drivers/clk/at91/clk-generated.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
drivers/clk/at91/clk-generated.c +1 -3
@@ -98,9 +98,7 @@ static ulong generic_clk_set_rate(struct clk *clk, ulong rate)for (div =1 ; div <GENERATED_MAX_DIV +2 ; div++) { tmp_rate =DIV_ROUND_CLOSEST (parent_rate, div); -if (rate < tmp_rate) -continue ; - tmp_diff = rate - tmp_rate; + tmp_diff =abs (rate - tmp_rate);if (best_diff <0 || best_diff > tmp_diff) { best_rate = tmp_rate;
Signature · 1 line
2.13.0
PATCH 1/2 clk: at91: clk-generated: select absolute closest rate
Quoted 8 lines · Wenyou Yang
From: Ludovic Desroches <[email protected]>
To get the same behavior as the Linux driver, instead of selecting the closest inferior rate, select the closest inferior or superior rate
Signed-off-by Ludovic Desroches <[email protected]>Signed-off-by Wenyou Yang <[email protected]>
Applied to u-boot/master, thanks!
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: not available URL: <http://lists.denx.de/pipermail/u-boot/attachments/20171130/c6f755b6/attachment.sig>
PATCH 2/2 clk: at91: clk-generated: fix incorrect index of clk source
In reply to Wenyou YangDifferentiate the generic clock source selection value from the parent clock index to fix the incorrect assignment of the generic clock source selection.
---
drivers/clk/at91/clk-generated.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-)
drivers/clk/at91/clk-generated.c +8 -6
@@ -53,16 +53,17 @@ static ulong generic_clk_get_rate(struct clk *clk)struct clk parent;ulong clk_rate;u32 tmp, gckdiv; -u8 parent_id; +u8 clock_source, parent_index;int ret;writel (clk->id &AT91_PMC_PCR_PID_MASK , &pmc->pcr); tmp =readl (&pmc->pcr); - parent_id = (tmp >>AT91_PMC_PCR_GCKCSS_OFFSET ) & + clock_source = (tmp >>AT91_PMC_PCR_GCKCSS_OFFSET ) &AT91_PMC_PCR_GCKCSS_MASK ; gckdiv = (tmp >>AT91_PMC_PCR_GCKDIV_OFFSET ) &AT91_PMC_PCR_GCKDIV_MASK ; - ret =clk_get_by_index (dev_get_parent (clk->dev), parent_id, &parent); + parent_index = clock_source -1 ; + ret =clk_get_by_index (dev_get_parent (clk->dev), parent_index, &parent);if (ret)return 0 ;
@@ -82,7 +83,7 @@ static ulong generic_clk_set_rate(struct clk *clk, ulong rate)ulong tmp_rate, best_rate = rate, parent_rate;int tmp_diff, best_diff =-1 ;u32 div, best_div =0 ; -u8 best_parent_id =0 ; +u8 best_parent_index, best_clock_source =0 ;u8 i;u32 tmp;int ret;
@@ -106,7 +107,8 @@ static ulong generic_clk_set_rate(struct clk *clk, ulong rate) best_div = div -1 ; best_parent = parent; - best_parent_id = i; + best_parent_index = i; + best_clock_source = best_parent_index +1 ; }if (!best_diff || tmp_rate < rate)
@@ -127,7 +129,7 @@ static ulong generic_clk_set_rate(struct clk *clk, ulong rate)writel (clk->id &AT91_PMC_PCR_PID_MASK , &pmc->pcr); tmp =readl (&pmc->pcr); tmp &= ~(AT91_PMC_PCR_GCKDIV |AT91_PMC_PCR_GCKCSS ); - tmp |=AT91_PMC_PCR_GCKCSS_ (best_parent_id) | + tmp |=AT91_PMC_PCR_GCKCSS_ (best_clock_source) |AT91_PMC_PCR_CMD_WRITE |AT91_PMC_PCR_GCKDIV_ (best_div) |AT91_PMC_PCR_GCKEN ;
Signature · 1 line
2.13.0
PATCH 2/2 clk: at91: clk-generated: fix incorrect index of clk source
Quoted 5 lines · Wenyou Yang
Differentiate the generic clock source selection value from the parent clock index to fix the incorrect assignment of the generic clock source selection.
Signed-off-by Wenyou Yang <[email protected]>
Applied to u-boot/master, thanks!
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: not available URL: <http://lists.denx.de/pipermail/u-boot/attachments/20171130/d53b0012/attachment.sig>