Add definitions for AST2600 i3c clocks
Subsystems (2)
v5 cover Add definitions for AST2600 i3c clocks
This series adds some base configuration for the i3c controllers on ast2600 hardware. We'll use the reset and clock definitions in the proposed dt binding example, hence sending these first.
v5:
- use regmap_update_bits rather than FIELD_PREP
- drop reset defines; resets should be handled by clock control
- add comments for the above
- add comment for NUM_CLKS semantics
v4:
- ensure we have enough space in ASPEED_G6_NUM_CLKS
v3:
- split dt-bindings from clk changes
- unify subject prefixes
v2:
- based on feedback from Joel Stanley: avoid adding RESERVED clock definitions, allowing empty entries in aspeed_g6_gates instead.
Jeremy Kerr (6):
clk: ast2600: allow empty entries in aspeed_g6_gates
dt-bindings: clock: ast2600: Add top-level I3C clock
clk: ast2600: Add full configs for I3C clocks
dt-bindings: clock: ast2600: remove IC36 & I3C7 clock definitions
clk: ast2600: Add comment about combined clock + reset handling
dt-bindings: clock: ast2600: Expand comment on reset definitions
drivers/clk/clk-ast2600.c | 67 ++++++++++++++++++++--- include/dt-bindings/clock/ast2600-clock.h | 5 +- 2 files changed, 60 insertions(+), 12 deletions(-)
Signature · 1 line
2.39.1
PATCH v5 1/6 clk: ast2600: allow empty entries in aspeed_g6_gates
We're about to remove an entry from aspeed_g6_gates, but we won't want to alter/reorder existing entries. Allow empty entries in this array.
---
v3:
- reword commit message
--- drivers/clk/clk-ast2600.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/clk/clk-ast2600.c +3 -0
@@ -652,6 +652,9 @@ static int aspeed_g6_clk_probe(struct platform_device *pdev)const struct aspeed_gate_data *gd = &aspeed_g6_gates[i];u32 gate_flags; +if (!gd->name) +continue ; +/* * Special case: the USB port 1 clock (bit 14) is always * working the opposite way from the other ones.
Signature · 1 line
2.39.1
PATCH v5 1/6 clk: ast2600: allow empty entries in aspeed_g6_gates
Quoting Jeremy Kerr (2023-03-01 16:58:29)
Quoted 7 lines
We're about to remove an entry from
aspeed_g6_gates, but we won't want to alter/reorder existing entries. Allow empty entries in this array.Reviewed-by Joel Stanley <[email protected]>Signed-off-by Jeremy Kerr <[email protected]>---
Applied to clk-next
PATCH v5 2/6 dt-bindings: clock: ast2600: Add top-level I3C clock
In reply to Jeremy KerrThe ast2600 hardware has a top-level clock for all i3c controller peripherals (then gated to each individual controller), so add a top-level i3c clock line to control this.
This is a partial cherry-pick and rework of ed44b8cdfdb and 1a35eb926d7 from Aspeed's own tree, originally by Dylan Hung <[email protected]>.
---
v4:
- use contiguous clock index
v3:
- split into separate bindings & clk changes
v2:
- reword commit message
--- include/dt-bindings/clock/ast2600-clock.h | 1 + 1 file changed, 1 insertion(+)
include/dt-bindings/clock/ast2600-clock.h +1 -0
@@ -87,6 +87,7 @@#define ASPEED_CLK_MAC2RCLK 68#define ASPEED_CLK_MAC3RCLK 69#define ASPEED_CLK_MAC4RCLK 70 +#define ASPEED_CLK_I3C 71/* Only list resets here that are not part of a gate */ #define ASPEED_RESET_ADC 55
Signature · 1 line
2.39.1
PATCH v5 2/6 dt-bindings: clock: ast2600: Add top-level I3C clock
Quoting Jeremy Kerr (2023-03-01 16:58:30)
Quoted 8 lines
The ast2600 hardware has a top-level clock for all i3c controller peripherals (then gated to each individual controller), so add a top-level i3c clock line to control this.
This is a partial cherry-pick and rework of
ed44b8cdfdband1a35eb926d7from Aspeed's own tree, originally by Dylan Hung <[email protected]>.
Quoted 5 lines
Reviewed-by Joel Stanley <[email protected]>Signed-off-by Jeremy Kerr <[email protected]>---
Applied to clk-next
PATCH v5 3/6 clk: ast2600: Add full configs for I3C clocks
In reply to Jeremy KerrThe current ast2600 I3C clock definitions are top-level (rather than based on their actual hw sources: either HCLK or APLL), and include a couple of definitions for (non-existent) i3c6 and i3c7.
Re-parent the individual I3C controller clocks to the main i3c clock, explicitly sourced from the APLL rather than whatever G6_CLK_SELECTION5 was last set to.
While we're at it, remove the definitions for the i3c6 and i3c7 clock lines; this hardware isn't present.
This is a partial cherry-pick and rework of ed44b8cdfdb and 1a35eb926d7 from Aspeed's own tree, originally by Dylan Hung <[email protected]>.
---
v5:
- use regmap_update_bits()
- add comment on NUM_CLKS semantics
v4:
- expand NUM_CLKS for the new I3C clock
v3:
- split dt-bindings and clk changes
v2:
- reword commit message
--- drivers/clk/clk-ast2600.c | 43 +++++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 9 deletions(-)
drivers/clk/clk-ast2600.c +34 -9
@@ -15,7 +15,11 @@#include "clk-aspeed.h" -#define ASPEED_G6_NUM_CLKS 71 +/* +* This includes the gates (configured from aspeed_g6_gates), plus the +* explicitly-configured clocks (ASPEED_CLK_HPLL and up). +*/ +#define ASPEED_G6_NUM_CLKS 72#define ASPEED_G6_SILICON_REV 0x014#define CHIP_REVISION_ID GENMASK(23, 16)
@@ -32,6 +36,20 @@#define ASPEED_G6_CLK_SELECTION1 0x300#define ASPEED_G6_CLK_SELECTION2 0x304#define ASPEED_G6_CLK_SELECTION4 0x310 +#define ASPEED_G6_CLK_SELECTION5 0x314 +#define I3C_CLK_SELECTION_SHIFT 31 +#define I3C_CLK_SELECTION BIT(31) +#define I3C_CLK_SELECT_HCLK (0 << I3C_CLK_SELECTION_SHIFT) +#define I3C_CLK_SELECT_APLL_DIV (1 << I3C_CLK_SELECTION_SHIFT) +#define APLL_DIV_SELECTION_SHIFT 28 +#define APLL_DIV_SELECTION GENMASK(30, 28) +#define APLL_DIV_2 (0b001 << APLL_DIV_SELECTION_SHIFT) +#define APLL_DIV_3 (0b010 << APLL_DIV_SELECTION_SHIFT) +#define APLL_DIV_4 (0b011 << APLL_DIV_SELECTION_SHIFT) +#define APLL_DIV_5 (0b100 << APLL_DIV_SELECTION_SHIFT) +#define APLL_DIV_6 (0b101 << APLL_DIV_SELECTION_SHIFT) +#define APLL_DIV_7 (0b110 << APLL_DIV_SELECTION_SHIFT) +#define APLL_DIV_8 (0b111 << APLL_DIV_SELECTION_SHIFT)#define ASPEED_HPLL_PARAM 0x200#define ASPEED_APLL_PARAM 0x210
@@ -97,14 +115,13 @@ static const struct aspeed_gate_data aspeed_g6_gates[] = { [ASPEED_CLK_GATE_LHCCLK] = { 37, -1, "lhclk-gate", "lhclk", 0 }, /* LPC master/LPC+ *//* Reserved 38 RSA: no longer used */ /* Reserved 39 */ - [ASPEED_CLK_GATE_I3C0CLK] = { 40, 40, "i3c0clk-gate", NULL, 0 }, /* I3C0 */ - [ASPEED_CLK_GATE_I3C1CLK] = { 41, 41, "i3c1clk-gate", NULL, 0 }, /* I3C1 */ - [ASPEED_CLK_GATE_I3C2CLK] = { 42, 42, "i3c2clk-gate", NULL, 0 }, /* I3C2 */ - [ASPEED_CLK_GATE_I3C3CLK] = { 43, 43, "i3c3clk-gate", NULL, 0 }, /* I3C3 */ - [ASPEED_CLK_GATE_I3C4CLK] = { 44, 44, "i3c4clk-gate", NULL, 0 }, /* I3C4 */ - [ASPEED_CLK_GATE_I3C5CLK] = { 45, 45, "i3c5clk-gate", NULL, 0 }, /* I3C5 */ - [ASPEED_CLK_GATE_I3C6CLK] = { 46, 46, "i3c6clk-gate", NULL, 0 }, /* I3C6 */ - [ASPEED_CLK_GATE_I3C7CLK] = { 47, 47, "i3c7clk-gate", NULL, 0 }, /* I3C7 */ + [ASPEED_CLK_GATE_I3C0CLK] = { 40, 40, "i3c0clk-gate", "i3cclk", 0 }, /* I3C0 */ + [ASPEED_CLK_GATE_I3C1CLK] = { 41, 41, "i3c1clk-gate", "i3cclk", 0 }, /* I3C1 */ + [ASPEED_CLK_GATE_I3C2CLK] = { 42, 42, "i3c2clk-gate", "i3cclk", 0 }, /* I3C2 */ + [ASPEED_CLK_GATE_I3C3CLK] = { 43, 43, "i3c3clk-gate", "i3cclk", 0 }, /* I3C3 */ + [ASPEED_CLK_GATE_I3C4CLK] = { 44, 44, "i3c4clk-gate", "i3cclk", 0 }, /* I3C4 */ + [ASPEED_CLK_GATE_I3C5CLK] = { 45, 45, "i3c5clk-gate", "i3cclk", 0 }, /* I3C5 */ + /* Reserved: 46 & 47 */ [ASPEED_CLK_GATE_UART1CLK] = { 48, -1, "uart1clk-gate", "uart", 0 }, /* UART1 */ [ASPEED_CLK_GATE_UART2CLK] = { 49, -1, "uart2clk-gate", "uart", 0 }, /* UART2 */ [ASPEED_CLK_GATE_UART3CLK] = { 50, -1, "uart3clk-gate", "uart", 0 }, /* UART3 */
@@ -775,6 +792,14 @@ static void __init aspeed_g6_cc(struct regmap *map)/* USB 2.0 port1 phy 40MHz clock */ hw =clk_hw_register_fixed_rate (NULL ,"usb-phy-40m" ,NULL ,0 ,40000000 ); aspeed_g6_clk_data->hws[ASPEED_CLK_USBPHY_40M ] = hw; + +/* i3c clock: source from apll, divide by 8 */ +regmap_update_bits (map,ASPEED_G6_CLK_SELECTION5 , +I3C_CLK_SELECTION |APLL_DIV_SELECTION , +I3C_CLK_SELECT_APLL_DIV |APLL_DIV_8 ); + + hw =clk_hw_register_fixed_factor (NULL ,"i3cclk" ,"apll" ,0 ,1 ,8 ); + aspeed_g6_clk_data->hws[ASPEED_CLK_I3C ] = hw; };static void __init aspeed_g6_cc_init (struct device_node *np)
Signature · 1 line
2.39.1
PATCH v5 3/6 clk: ast2600: Add full configs for I3C clocks
Quoted 9 lines · Jeremy Kerr
The current ast2600 I3C clock definitions are top-level (rather than based on their actual hw sources: either HCLK or APLL), and include a couple of definitions for (non-existent) i3c6 and i3c7.
Re-parent the individual I3C controller clocks to the main i3c clock, explicitly sourced from the APLL rather than whatever
G6_CLK_SELECTION5was last set to.
Quoted 8 lines
While we're at it, remove the definitions for the i3c6 and i3c7 clock lines; this hardware isn't present.
This is a partial cherry-pick and rework of
ed44b8cdfdband1a35eb926d7from Aspeed's own tree, originally by Dylan Hung <[email protected]>.Signed-off-by Jeremy Kerr <[email protected]>
Quoted 93 lines
---
v5:
- useregmap_update_bits()
- add comment onNUM_CLKSsemantics
v4:
- expandNUM_CLKSfor the new I3C clock
v3:
- split dt-bindings and clk changes
v2:
- reword commit message--- drivers/clk/clk-ast2600.c | 43 +++++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 9 deletions(-)drivers/clk/clk-ast2600.c +34
-10@@ -15,7 +15,11 @@#include "clk-aspeed.h" -#define ASPEED_G6_NUM_CLKS 71 +/* +* This includes the gates (configured from aspeed_g6_gates), plus the +* explicitly-configured clocks (ASPEED_CLK_HPLL and up). +*/ +#define ASPEED_G6_NUM_CLKS 72#define ASPEED_G6_SILICON_REV 0x014#define CHIP_REVISION_ID GENMASK(23, 16)@@ -32,6 +36,20 @@#define ASPEED_G6_CLK_SELECTION1 0x300#define ASPEED_G6_CLK_SELECTION2 0x304#define ASPEED_G6_CLK_SELECTION4 0x310 +#define ASPEED_G6_CLK_SELECTION5 0x314 +#define I3C_CLK_SELECTION_SHIFT 31 +#define I3C_CLK_SELECTION BIT(31) +#define I3C_CLK_SELECT_HCLK (0 << I3C_CLK_SELECTION_SHIFT) +#define I3C_CLK_SELECT_APLL_DIV (1 << I3C_CLK_SELECTION_SHIFT) +#define APLL_DIV_SELECTION_SHIFT 28 +#define APLL_DIV_SELECTION GENMASK(30, 28) +#define APLL_DIV_2 (0b001 << APLL_DIV_SELECTION_SHIFT) +#define APLL_DIV_3 (0b010 << APLL_DIV_SELECTION_SHIFT) +#define APLL_DIV_4 (0b011 << APLL_DIV_SELECTION_SHIFT) +#define APLL_DIV_5 (0b100 << APLL_DIV_SELECTION_SHIFT) +#define APLL_DIV_6 (0b101 << APLL_DIV_SELECTION_SHIFT) +#define APLL_DIV_7 (0b110 << APLL_DIV_SELECTION_SHIFT) +#define APLL_DIV_8 (0b111 << APLL_DIV_SELECTION_SHIFT)#define ASPEED_HPLL_PARAM 0x200#define ASPEED_APLL_PARAM 0x210@@ -97,14 +115,13 @@ static const struct aspeed_gate_data aspeed_g6_gates[] = { [ASPEED_CLK_GATE_LHCCLK] = { 37, -1, "lhclk-gate", "lhclk", 0 }, /* LPC master/LPC+ *//* Reserved 38 RSA: no longer used */ /* Reserved 39 */ - [ASPEED_CLK_GATE_I3C0CLK] = { 40, 40, "i3c0clk-gate", NULL, 0 }, /* I3C0 */ - [ASPEED_CLK_GATE_I3C1CLK] = { 41, 41, "i3c1clk-gate", NULL, 0 }, /* I3C1 */ - [ASPEED_CLK_GATE_I3C2CLK] = { 42, 42, "i3c2clk-gate", NULL, 0 }, /* I3C2 */ - [ASPEED_CLK_GATE_I3C3CLK] = { 43, 43, "i3c3clk-gate", NULL, 0 }, /* I3C3 */ - [ASPEED_CLK_GATE_I3C4CLK] = { 44, 44, "i3c4clk-gate", NULL, 0 }, /* I3C4 */ - [ASPEED_CLK_GATE_I3C5CLK] = { 45, 45, "i3c5clk-gate", NULL, 0 }, /* I3C5 */ - [ASPEED_CLK_GATE_I3C6CLK] = { 46, 46, "i3c6clk-gate", NULL, 0 }, /* I3C6 */ - [ASPEED_CLK_GATE_I3C7CLK] = { 47, 47, "i3c7clk-gate", NULL, 0 }, /* I3C7 */ + [ASPEED_CLK_GATE_I3C0CLK] = { 40, 40, "i3c0clk-gate", "i3cclk", 0 }, /* I3C0 */ + [ASPEED_CLK_GATE_I3C1CLK] = { 41, 41, "i3c1clk-gate", "i3cclk", 0 }, /* I3C1 */ + [ASPEED_CLK_GATE_I3C2CLK] = { 42, 42, "i3c2clk-gate", "i3cclk", 0 }, /* I3C2 */ + [ASPEED_CLK_GATE_I3C3CLK] = { 43, 43, "i3c3clk-gate", "i3cclk", 0 }, /* I3C3 */ + [ASPEED_CLK_GATE_I3C4CLK] = { 44, 44, "i3c4clk-gate", "i3cclk", 0 }, /* I3C4 */ + [ASPEED_CLK_GATE_I3C5CLK] = { 45, 45, "i3c5clk-gate", "i3cclk", 0 }, /* I3C5 */ + /* Reserved: 46 & 47 */ [ASPEED_CLK_GATE_UART1CLK] = { 48, -1, "uart1clk-gate", "uart", 0 }, /* UART1 */ [ASPEED_CLK_GATE_UART2CLK] = { 49, -1, "uart2clk-gate", "uart", 0 }, /* UART2 */ [ASPEED_CLK_GATE_UART3CLK] = { 50, -1, "uart3clk-gate", "uart", 0 }, /* UART3 */@@ -775,6 +792,14 @@ static void __init aspeed_g6_cc(struct regmap *map)/* USB 2.0 port1 phy 40MHz clock */ hw =clk_hw_register_fixed_rate (NULL ,"usb-phy-40m" ,NULL ,0 ,40000000 ); aspeed_g6_clk_data->hws[ASPEED_CLK_USBPHY_40M ] = hw; + +/* i3c clock: source from apll, divide by 8 */ +regmap_update_bits (map,ASPEED_G6_CLK_SELECTION5 , +I3C_CLK_SELECTION |APLL_DIV_SELECTION , +I3C_CLK_SELECT_APLL_DIV |APLL_DIV_8 ); + + hw =clk_hw_register_fixed_factor (NULL ,"i3cclk" ,"apll" ,0 ,1 ,8 ); + aspeed_g6_clk_data->hws[ASPEED_CLK_I3C ] = hw; };static void __init aspeed_g6_cc_init (struct device_node *np) --2.39.1
PATCH v5 3/6 clk: ast2600: Add full configs for I3C clocks
In reply to Jeremy KerrQuoting Jeremy Kerr (2023-03-01 16:58:31)
Quoted 11 lines
The current ast2600 I3C clock definitions are top-level (rather than based on their actual hw sources: either HCLK or APLL), and include a couple of definitions for (non-existent) i3c6 and i3c7.
Re-parent the individual I3C controller clocks to the main i3c clock, explicitly sourced from the APLL rather than whatever
G6_CLK_SELECTION5was last set to.While we're at it, remove the definitions for the i3c6 and i3c7 clock lines; this hardware isn't present.
Quoted 7 lines
This is a partial cherry-pick and rework of
ed44b8cdfdband1a35eb926d7from Aspeed's own tree, originally by Dylan Hung <[email protected]>.Signed-off-by Jeremy Kerr <[email protected]>---
Applied to clk-next
PATCH v5 4/6 dt-bindings: clock: ast2600: remove IC36 & I3C7 clock definitions
In reply to Jeremy KerrThe current ast2600 clock definitions include entries for i3c6 and i3c7 devices, which don't exist: there are no clock control lines documented for these, and only i3c devices 0 through 5 are present.
So, remove the definitions for I3C6 and I3C7. Although this is a potential ABI-breaking change, there are no in-tree users of these, and any references would be broken anyway, as the hardware doesn't exist.
This is a partial cherry-pick and rework of ed44b8cdfdb and 1a35eb926d7 from Aspeed's own tree, originally by Dylan Hung <[email protected]>.
---
v3:
- split dt-bindings and clk changes
v2:
- reword commit message
--- include/dt-bindings/clock/ast2600-clock.h | 2 -- 1 file changed, 2 deletions(-)
include/dt-bindings/clock/ast2600-clock.h +0 -2
@@ -57,8 +57,6 @@#define ASPEED_CLK_GATE_I3C3CLK 40#define ASPEED_CLK_GATE_I3C4CLK 41#define ASPEED_CLK_GATE_I3C5CLK 42 -#define ASPEED_CLK_GATE_I3C6CLK 43 -#define ASPEED_CLK_GATE_I3C7CLK 44#define ASPEED_CLK_GATE_FSICLK 45
Signature · 1 line
2.39.1
PATCH v5 4/6 dt-bindings: clock: ast2600: remove IC36 & I3C7 clock definitions
Quoting Jeremy Kerr (2023-03-01 16:58:32)
Quoted 12 lines
The current ast2600 clock definitions include entries for i3c6 and i3c7 devices, which don't exist: there are no clock control lines documented for these, and only i3c devices 0 through 5 are present.
So, remove the definitions for I3C6 and I3C7. Although this is a potential ABI-breaking change, there are no in-tree users of these, and any references would be broken anyway, as the hardware doesn't exist.
This is a partial cherry-pick and rework of
ed44b8cdfdband1a35eb926d7from Aspeed's own tree, originally by Dylan Hung <[email protected]>.
Quoted 5 lines
Reviewed-by Joel Stanley <[email protected]>Signed-off-by Jeremy Kerr <[email protected]>---
Applied to clk-next
PATCH v5 5/6 clk: ast2600: Add comment about combined clock + reset handling
In reply to Jeremy KerrAdd a little description about how reset lines can be implicit with clock enable/disable. This is mostly based on the commit message from the original submission in 15ed8ce5f8.
--- drivers/clk/clk-ast2600.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)
drivers/clk/clk-ast2600.c +21 -0
@@ -73,6 +73,27 @@ static void __iomem *scu_g6_base;static u8 soc_rev;/* +* The majority of the clocks in the system are gates paired with a reset +* controller that holds the IP in reset; this is represented by the @reset_idx +* member of entries here. +* +* This borrows from clk_hw_register_gate, but registers two 'gates', one +* to control the clock enable register and the other to control the reset +* IP. This allows us to enforce the ordering: +* +* 1. Place IP in reset +* 2. Enable clock +* 3. Delay +* 4. Release reset +* +* Consequently, if reset_idx is set, reset control is implicit: the clock +* consumer does not need its own reset handling, as enabling the clock will +* also deassert reset. +* +* There are some gates that do not have an associated reset; these are +* handled by using -1 as the index for the reset, and the consumer must +* explictly assert/deassert reset lines as required. +* * Clocks marked with CLK_IS_CRITICAL: * * ref0 and ref1 are essential for the SoC to operate
Signature · 1 line
2.39.1
PATCH v5 5/6 clk: ast2600: Add comment about combined clock + reset handling
Quoted 4 lines · Jeremy Kerr
Add a little description about how reset lines can be implicit with clock enable/disable. This is mostly based on the commit message from the original submission in
15ed8ce5f8.
Excellent, thank you.
Quoted 41 lines
Signed-off-by Jeremy Kerr <[email protected]>--- drivers/clk/clk-ast2600.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)drivers/clk/clk-ast2600.c +21
-1@@ -73,6 +73,27 @@ static void __iomem *scu_g6_base;static u8 soc_rev;/* +* The majority of the clocks in the system are gates paired with a reset +* controller that holds the IP in reset; this is represented by the @reset_idx +* member of entries here. +* +* This borrows from clk_hw_register_gate, but registers two 'gates', one +* to control the clock enable register and the other to control the reset +* IP. This allows us to enforce the ordering: +* +* 1. Place IP in reset +* 2. Enable clock +* 3. Delay +* 4. Release reset +* +* Consequently, if reset_idx is set, reset control is implicit: the clock +* consumer does not need its own reset handling, as enabling the clock will +* also deassert reset. +* +* There are some gates that do not have an associated reset; these are +* handled by using -1 as the index for the reset, and the consumer must +* explictly assert/deassert reset lines as required. +* * Clocks marked with CLK_IS_CRITICAL: * * ref0 and ref1 are essential for the SoC to operate -- 2.39.1
PATCH v5 5/6 clk: ast2600: Add comment about combined clock + reset handling
In reply to Jeremy KerrQuoting Jeremy Kerr (2023-03-01 16:58:33)
Quoted 6 lines
Add a little description about how reset lines can be implicit with clock enable/disable. This is mostly based on the commit message from the original submission in
15ed8ce5f8.Signed-off-by Jeremy Kerr <[email protected]>---
Applied to clk-next
PATCH v5 6/6 dt-bindings: clock: ast2600: Expand comment on reset definitions
In reply to Jeremy KerrThe current "not part of a gate" is a little ambiguous. Expand this a little to clarify the reference to the paired clock + reset control.
--- include/dt-bindings/clock/ast2600-clock.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
include/dt-bindings/clock/ast2600-clock.h +1 -1
@@ -87,7 +87,7 @@#define ASPEED_CLK_MAC4RCLK 70#define ASPEED_CLK_I3C 71 -/* Only list resets here that are not part of a gate */ +/* Only list resets here that are not part of a clock gate + reset pair */ #define ASPEED_RESET_ADC 55#define ASPEED_RESET_JTAG_MASTER2 54#define ASPEED_RESET_I3C_DMA 39
Signature · 1 line
2.39.1
PATCH v5 6/6 dt-bindings: clock: ast2600: Expand comment on reset definitions
Quoted 3 lines · Jeremy Kerr
The current "not part of a gate" is a little ambiguous. Expand this a little to clarify the reference to the paired clock + reset control.
This confuses me, but if you think it helps then that's good.
Quoted 22 lines
Signed-off-by Jeremy Kerr <[email protected]>--- include/dt-bindings/clock/ast2600-clock.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)include/dt-bindings/clock/ast2600-clock.h +1
-2@@ -87,7 +87,7 @@#define ASPEED_CLK_MAC4RCLK 70#define ASPEED_CLK_I3C 71 -/* Only list resets here that are not part of a gate */ +/* Only list resets here that are not part of a clock gate + reset pair */ #define ASPEED_RESET_ADC 55#define ASPEED_RESET_JTAG_MASTER2 54#define ASPEED_RESET_I3C_DMA 39 --2.39.1
PATCH v5 6/6 dt-bindings: clock: ast2600: Expand comment on reset definitions
In reply to Jeremy KerrQuoted 5 lines · Jeremy Kerr
The current "not part of a gate" is a little ambiguous. Expand this a little to clarify the reference to the paired clock + reset control.
Signed-off-by Jeremy Kerr <[email protected]>---
Best regards,
Krzysztof
PATCH v5 6/6 dt-bindings: clock: ast2600: Expand comment on reset definitions
In reply to Jeremy KerrQuoting Jeremy Kerr (2023-03-01 16:58:34)
Quoted 5 lines
The current "not part of a gate" is a little ambiguous. Expand this a little to clarify the reference to the paired clock + reset control.
Signed-off-by Jeremy Kerr <[email protected]>---
Applied to clk-next
v5 cover Add definitions for AST2600 i3c clocks
In reply to Jeremy KerrQuoted 4 lines · Jeremy Kerr
This series adds some base configuration for the i3c controllers on ast2600 hardware. We'll use the reset and clock definitions in the proposed dt binding example, hence sending these first.
Cool, looks good:
clkin 6 6 0 25000000
0 0 50000 Y
apll 1 1 0 800000000
0 0 50000 Y
i3cclk 2 2 0 100000000
0 0 50000 Y
i3c5clk-gate 0 0 0 100000000
0 0 50000 N
i3c4clk-gate 0 0 0 100000000
0 0 50000 N
i3c3clk-gate 0 0 0 100000000
0 0 50000 N
i3c2clk-gate 0 0 0 100000000
0 0 50000 N
i3c1clk-gate 1 1 0 100000000
0 0 50000 Y
i3c0clk-gate 1 1 0 100000000
0 0 50000 YThanks for the cleanups and documentation.
Cheers,
Joel
Quoted 30 lines
v5:
- useregmap_update_bitsrather thanFIELD_PREP
- drop reset defines; resets should be handled by clock control
- add comments for the above
- add comment forNUM_CLKSsemantics
v4:
- ensure we have enough space inASPEED_G6_NUM_CLKS
v3:
- split dt-bindings from clk changes
- unify subject prefixes
v2:
- based on feedback from Joel Stanley: avoid adding RESERVED clock definitions, allowing empty entries inaspeed_g6_gatesinstead.Jeremy Kerr (6):
clk: ast2600: allow empty entries inaspeed_g6_gates
dt-bindings: clock: ast2600: Add top-level I3C clock
clk: ast2600: Add full configs for I3C clocks
dt-bindings: clock: ast2600: remove IC36 & I3C7 clock definitions
clk: ast2600: Add comment about combined clock + reset handling
dt-bindings: clock: ast2600: Expand comment on reset definitionsdrivers/clk/clk-ast2600.c | 67 ++++++++++++++++++++--- include/dt-bindings/clock/ast2600-clock.h | 5 +- 2 files changed, 60 insertions(+), 12 deletions(-)--
2.39.1