linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] clk: ast2600: Fix AHB clock divider for A1
@ 2020-04-08 20:36 Eddie James
  2020-05-27  8:15 ` Stephen Boyd
  2020-05-27  8:36 ` Stephen Boyd
  0 siblings, 2 replies; 4+ messages in thread
From: Eddie James @ 2020-04-08 20:36 UTC (permalink / raw)
  To: linux-clk; +Cc: linux-kernel, sboyd, mturquette, joel, Eddie James

The latest specs for the AST2600 A1 chip include some different bit
definitions for calculating the AHB clock divider. Implement these in
order to get the correct AHB clock value in Linux.

Signed-off-by: Eddie James <eajames@linux.ibm.com>
---
 drivers/clk/clk-ast2600.c | 31 +++++++++++++++++++++++++------
 1 file changed, 25 insertions(+), 6 deletions(-)

diff --git a/drivers/clk/clk-ast2600.c b/drivers/clk/clk-ast2600.c
index 392d01705b97..99afc949925f 100644
--- a/drivers/clk/clk-ast2600.c
+++ b/drivers/clk/clk-ast2600.c
@@ -642,14 +642,22 @@ static const u32 ast2600_a0_axi_ahb_div_table[] = {
 	2, 2, 3, 5,
 };
 
-static const u32 ast2600_a1_axi_ahb_div_table[] = {
-	4, 6, 2, 4,
+static const u32 ast2600_a1_axi_ahb_div0_tbl[] = {
+	3, 2, 3, 4,
+};
+
+static const u32 ast2600_a1_axi_ahb_div1_tbl[] = {
+	3, 4, 6, 8,
+};
+
+static const u32 ast2600_a1_axi_ahb200_tbl[] = {
+	3, 4, 3, 4, 2, 2, 2, 2,
 };
 
 static void __init aspeed_g6_cc(struct regmap *map)
 {
 	struct clk_hw *hw;
-	u32 val, div, chip_id, axi_div, ahb_div;
+	u32 val, div, divbits, chip_id, axi_div, ahb_div;
 
 	clk_hw_register_fixed_rate(NULL, "clkin", NULL, 0, 25000000);
 
@@ -679,11 +687,22 @@ static void __init aspeed_g6_cc(struct regmap *map)
 	else
 		axi_div = 2;
 
+	divbits = (val >> 11) & 0x3;
 	regmap_read(map, ASPEED_G6_SILICON_REV, &chip_id);
-	if (chip_id & BIT(16))
-		ahb_div = ast2600_a1_axi_ahb_div_table[(val >> 11) & 0x3];
-	else
+	if (chip_id & BIT(16)) {
+		if (!divbits) {
+			ahb_div = ast2600_a1_axi_ahb200_tbl[(val >> 8) & 0x3];
+			if (val & BIT(16))
+				ahb_div *= 2;
+		} else {
+			if (val & BIT(16))
+				ahb_div = ast2600_a1_axi_ahb_div1_tbl[divbits];
+			else
+				ahb_div = ast2600_a1_axi_ahb_div0_tbl[divbits];
+		}
+	} else {
 		ahb_div = ast2600_a0_axi_ahb_div_table[(val >> 11) & 0x3];
+	}
 
 	hw = clk_hw_register_fixed_factor(NULL, "ahb", "hpll", 0, 1, axi_div * ahb_div);
 	aspeed_g6_clk_data->hws[ASPEED_CLK_AHB] = hw;
-- 
2.24.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] clk: ast2600: Fix AHB clock divider for A1
  2020-04-08 20:36 [PATCH] clk: ast2600: Fix AHB clock divider for A1 Eddie James
@ 2020-05-27  8:15 ` Stephen Boyd
  2020-05-27  8:30   ` Joel Stanley
  2020-05-27  8:36 ` Stephen Boyd
  1 sibling, 1 reply; 4+ messages in thread
From: Stephen Boyd @ 2020-05-27  8:15 UTC (permalink / raw)
  To: Eddie James, linux-clk; +Cc: linux-kernel, mturquette, joel, Eddie James

Quoting Eddie James (2020-04-08 13:36:16)
> The latest specs for the AST2600 A1 chip include some different bit
> definitions for calculating the AHB clock divider. Implement these in
> order to get the correct AHB clock value in Linux.
> 
> Signed-off-by: Eddie James <eajames@linux.ibm.com>

Any Fixes tag for this patch? Seems like it is fixing something.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] clk: ast2600: Fix AHB clock divider for A1
  2020-05-27  8:15 ` Stephen Boyd
@ 2020-05-27  8:30   ` Joel Stanley
  0 siblings, 0 replies; 4+ messages in thread
From: Joel Stanley @ 2020-05-27  8:30 UTC (permalink / raw)
  To: Stephen Boyd
  Cc: Eddie James, linux-clk, Linux Kernel Mailing List, Michael Turquette

On Wed, 27 May 2020 at 08:15, Stephen Boyd <sboyd@kernel.org> wrote:
>
> Quoting Eddie James (2020-04-08 13:36:16)
> > The latest specs for the AST2600 A1 chip include some different bit
> > definitions for calculating the AHB clock divider. Implement these in
> > order to get the correct AHB clock value in Linux.
> >
> > Signed-off-by: Eddie James <eajames@linux.ibm.com>
>
> Any Fixes tag for this patch? Seems like it is fixing something.

It fixes the driver to work on the new hardware that didn't exist
until now. I guess you could say:

Fixes: d3d04f6c330a ("clk: Add support for AST2600 SoC")

Cheers,

Joel

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] clk: ast2600: Fix AHB clock divider for A1
  2020-04-08 20:36 [PATCH] clk: ast2600: Fix AHB clock divider for A1 Eddie James
  2020-05-27  8:15 ` Stephen Boyd
@ 2020-05-27  8:36 ` Stephen Boyd
  1 sibling, 0 replies; 4+ messages in thread
From: Stephen Boyd @ 2020-05-27  8:36 UTC (permalink / raw)
  To: Eddie James, linux-clk; +Cc: linux-kernel, mturquette, joel, Eddie James

Quoting Eddie James (2020-04-08 13:36:16)
> The latest specs for the AST2600 A1 chip include some different bit
> definitions for calculating the AHB clock divider. Implement these in
> order to get the correct AHB clock value in Linux.
> 
> Signed-off-by: Eddie James <eajames@linux.ibm.com>
> ---

Applied to clk-next

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-05-27  8:36 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-08 20:36 [PATCH] clk: ast2600: Fix AHB clock divider for A1 Eddie James
2020-05-27  8:15 ` Stephen Boyd
2020-05-27  8:30   ` Joel Stanley
2020-05-27  8:36 ` Stephen Boyd

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).