History

Merge tag 'renesas-fixes-for-v5.14-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel into arm/fixes

Renesas fixes for v5.14 - Fix a clock/reset handling design issue on the new RZ/G2L SoC, requiring an atomic change to DT binding definitions, clock driver, and DTS, - Restore graphical consoles in the shmobile_defconfig. * tag 'renesas-fixes-for-v5.14-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel: ARM: shmobile: defconfig: Restore graphical consoles dt-bindings: clock: r9a07g044-cpg: Update clock/reset definitions clk: renesas: r9a07g044: Add P2 Clock support clk: renesas: r9a07g044: Fix P1 Clock clk: renesas: r9a07g044: Rename divider table clk: renesas: rzg2l: Add multi clock PM support

Arnd Bergmann committed 5 years ago

Commit e0129a02 parents b6e473d 432b52e6 files · +320 −147Browse files

Unified · Split

6 files
  1. arch/arm/configs/shmobile_defconfig +1 −0
  2. arch/arm64/boot/dts/renesas/r9a07g044.dtsi +2 −2
  3. drivers/clk/renesas/r9a07g044-cpg.c +47 −32
  4. drivers/clk/renesas/renesas-rzg2l-cpg.c +59 −51
  5. drivers/clk/renesas/renesas-rzg2l-cpg.h +28 −9
  6. include/dt-bindings/clock/r9a07g044-cpg.h +183 −53
arch/arm/configs/shmobile_defconfig+1−0
@@ -135,6 +135,7 @@ CONFIG_DRM_SII902X=y · 134 unmodified lines
135135 CONFIG_DRM_SIMPLE_BRIDGE=y
136136 CONFIG_DRM_I2C_ADV7511=y
137137 CONFIG_DRM_I2C_ADV7511_AUDIO=y
138+CONFIG_FB=y
138139 CONFIG_FB_SH_MOBILE_LCDC=y
139140 CONFIG_BACKLIGHT_PWM=y
140141 CONFIG_BACKLIGHT_AS3711=y
arch/arm64/boot/dts/renesas/r9a07g044.dtsi+2−2
@@ -82,10 +82,10 @@ · 81 unmodified lines
8282 <GIC_SPI 384 IRQ_TYPE_LEVEL_HIGH>;
8383 interrupt-names = "eri", "rxi", "txi",
8484 "bri", "dri", "tei";
85− clocks = <&cpg CPG_MOD R9A07G044_CLK_SCIF0>;
85+ clocks = <&cpg CPG_MOD R9A07G044_SCIF0_CLK_PCK>;
8686 clock-names = "fck";
8787 power-domains = <&cpg>;
88− resets = <&cpg R9A07G044_CLK_SCIF0>;
88+ resets = <&cpg R9A07G044_SCIF0_RST_SYSTEM_N>;
8989 status = "disabled";
9090 };
9191
drivers/clk/renesas/r9a07g044-cpg.c+47−32
@@ -30,8 +30,9 @@ enum clk_ids { · 29 unmodified lines
3030 CLK_PLL2_DIV20,
3131 CLK_PLL3,
3232 CLK_PLL3_DIV2,
33+ CLK_PLL3_DIV2_4,
34+ CLK_PLL3_DIV2_4_2,
3335 CLK_PLL3_DIV4,
34− CLK_PLL3_DIV8,
3536 CLK_PLL4,
3637 CLK_PLL5,
3738 CLK_PLL5_DIV2,
@@ -42,12 +43,13 @@ enum clk_ids { · 4 unmodified lines
4243 };
4344
4445 /* Divider tables */
45−static const struct clk_div_table dtable_3b[] = {
46+static const struct clk_div_table dtable_1_32[] = {
4647 {0, 1},
4748 {1, 2},
4849 {2, 4},
4950 {3, 8},
5051 {4, 32},
52+ {0, 0},
5153 };
5254
5355 static const struct cpg_core_clk r9a07g044_core_clks[] __initconst = {
@@ -66,47 +68,56 @@ static const struct cpg_core_clk r9a07g044_core_clks[] __initconst = { · 12 unmodified lines
6668 DEF_FIXED(".pll2_div20", CLK_PLL2_DIV20, CLK_PLL2, 1, 20),
6769
6870 DEF_FIXED(".pll3_div2", CLK_PLL3_DIV2, CLK_PLL3, 1, 2),
71+ DEF_FIXED(".pll3_div2_4", CLK_PLL3_DIV2_4, CLK_PLL3_DIV2, 1, 4),
72+ DEF_FIXED(".pll3_div2_4_2", CLK_PLL3_DIV2_4_2, CLK_PLL3_DIV2_4, 1, 2),
6973 DEF_FIXED(".pll3_div4", CLK_PLL3_DIV4, CLK_PLL3, 1, 4),
70− DEF_FIXED(".pll3_div8", CLK_PLL3_DIV8, CLK_PLL3, 1, 8),
7174
7275 /* Core output clk */
7376 DEF_FIXED("I", R9A07G044_CLK_I, CLK_PLL1, 1, 1),
7477 DEF_DIV("P0", R9A07G044_CLK_P0, CLK_PLL2_DIV16, DIVPL2A,
75− dtable_3b, CLK_DIVIDER_HIWORD_MASK),
78+ dtable_1_32, CLK_DIVIDER_HIWORD_MASK),
7679 DEF_FIXED("TSU", R9A07G044_CLK_TSU, CLK_PLL2_DIV20, 1, 1),
77− DEF_DIV("P1", R9A07G044_CLK_P1, CLK_PLL3_DIV8,
78− DIVPL3B, dtable_3b, CLK_DIVIDER_HIWORD_MASK),
80+ DEF_DIV("P1", R9A07G044_CLK_P1, CLK_PLL3_DIV2_4,
81+ DIVPL3B, dtable_1_32, CLK_DIVIDER_HIWORD_MASK),
82+ DEF_DIV("P2", R9A07G044_CLK_P2, CLK_PLL3_DIV2_4_2,
83+ DIVPL3A, dtable_1_32, CLK_DIVIDER_HIWORD_MASK),
7984 };
8085
8186 static struct rzg2l_mod_clk r9a07g044_mod_clks[] = {
82− DEF_MOD("gic", R9A07G044_CLK_GIC600,
83− R9A07G044_CLK_P1,
84− 0x514, BIT(0), (BIT(0) | BIT(1))),
85− DEF_MOD("ia55", R9A07G044_CLK_IA55,
86− R9A07G044_CLK_P1,
87− 0x518, (BIT(0) | BIT(1)), BIT(0)),
88− DEF_MOD("scif0", R9A07G044_CLK_SCIF0,
89− R9A07G044_CLK_P0,
90− 0x584, BIT(0), BIT(0)),
91− DEF_MOD("scif1", R9A07G044_CLK_SCIF1,
92− R9A07G044_CLK_P0,
93− 0x584, BIT(1), BIT(1)),
94− DEF_MOD("scif2", R9A07G044_CLK_SCIF2,
95− R9A07G044_CLK_P0,
96− 0x584, BIT(2), BIT(2)),
97− DEF_MOD("scif3", R9A07G044_CLK_SCIF3,
98− R9A07G044_CLK_P0,
99− 0x584, BIT(3), BIT(3)),
100− DEF_MOD("scif4", R9A07G044_CLK_SCIF4,
101− R9A07G044_CLK_P0,
102− 0x584, BIT(4), BIT(4)),
103− DEF_MOD("sci0", R9A07G044_CLK_SCI0,
104− R9A07G044_CLK_P0,
105− 0x588, BIT(0), BIT(0)),
87+ DEF_MOD("gic", R9A07G044_GIC600_GICCLK, R9A07G044_CLK_P1,
88+ 0x514, 0),
89+ DEF_MOD("ia55_pclk", R9A07G044_IA55_PCLK, R9A07G044_CLK_P2,
90+ 0x518, 0),
91+ DEF_MOD("ia55_clk", R9A07G044_IA55_CLK, R9A07G044_CLK_P1,
92+ 0x518, 1),
93+ DEF_MOD("scif0", R9A07G044_SCIF0_CLK_PCK, R9A07G044_CLK_P0,
94+ 0x584, 0),
95+ DEF_MOD("scif1", R9A07G044_SCIF1_CLK_PCK, R9A07G044_CLK_P0,
96+ 0x584, 1),
97+ DEF_MOD("scif2", R9A07G044_SCIF2_CLK_PCK, R9A07G044_CLK_P0,
98+ 0x584, 2),
99+ DEF_MOD("scif3", R9A07G044_SCIF3_CLK_PCK, R9A07G044_CLK_P0,
100+ 0x584, 3),
101+ DEF_MOD("scif4", R9A07G044_SCIF4_CLK_PCK, R9A07G044_CLK_P0,
102+ 0x584, 4),
103+ DEF_MOD("sci0", R9A07G044_SCI0_CLKP, R9A07G044_CLK_P0,
104+ 0x588, 0),
105+};
106+
107+static struct rzg2l_reset r9a07g044_resets[] = {
108+ DEF_RST(R9A07G044_GIC600_GICRESET_N, 0x814, 0),
109+ DEF_RST(R9A07G044_GIC600_DBG_GICRESET_N, 0x814, 1),
110+ DEF_RST(R9A07G044_IA55_RESETN, 0x818, 0),
111+ DEF_RST(R9A07G044_SCIF0_RST_SYSTEM_N, 0x884, 0),
112+ DEF_RST(R9A07G044_SCIF1_RST_SYSTEM_N, 0x884, 1),
113+ DEF_RST(R9A07G044_SCIF2_RST_SYSTEM_N, 0x884, 2),
114+ DEF_RST(R9A07G044_SCIF3_RST_SYSTEM_N, 0x884, 3),
115+ DEF_RST(R9A07G044_SCIF4_RST_SYSTEM_N, 0x884, 4),
116+ DEF_RST(R9A07G044_SCI0_RST, 0x888, 0),
106117 };
107118
108119 static const unsigned int r9a07g044_crit_mod_clks[] __initconst = {
109− MOD_CLK_BASE + R9A07G044_CLK_GIC600,
120+ MOD_CLK_BASE + R9A07G044_GIC600_GICCLK,
110121 };
111122
112123 const struct rzg2l_cpg_info r9a07g044_cpg_info = {
@@ -123,5 +134,9 @@ const struct rzg2l_cpg_info r9a07g044_cpg_info = { · 10 unmodified lines
123134 /* Module Clocks */
124135 .mod_clks = r9a07g044_mod_clks,
125136 .num_mod_clks = ARRAY_SIZE(r9a07g044_mod_clks),
126− .num_hw_mod_clks = R9A07G044_CLK_MIPI_DSI_PIN + 1,
137+ .num_hw_mod_clks = R9A07G044_TSU_PCLK + 1,
138+
139+ /* Resets */
140+ .resets = r9a07g044_resets,
141+ .num_resets = ARRAY_SIZE(r9a07g044_resets),
127142 };
drivers/clk/renesas/renesas-rzg2l-cpg.c+59−51
@@ -47,9 +47,9 @@ · 46 unmodified lines
4747 #define SDIV(val) DIV_RSMASK(val, 0, 0x7)
4848
4949 #define CLK_ON_R(reg) (reg)
50−#define CLK_MON_R(reg) (0x680 - 0x500 + (reg))
51−#define CLK_RST_R(reg) (0x800 - 0x500 + (reg))
52−#define CLK_MRST_R(reg) (0x980 - 0x500 + (reg))
50+#define CLK_MON_R(reg) (0x180 + (reg))
51+#define CLK_RST_R(reg) (reg)
52+#define CLK_MRST_R(reg) (0x180 + (reg))
5353
5454 #define GET_REG_OFFSET(val) ((val >> 20) & 0xfff)
5555 #define GET_REG_SAMPLL_CLK1(val) ((val >> 22) & 0xfff)
@@ -78,6 +78,7 @@ struct rzg2l_cpg_priv { · 22 unmodified lines
7878 struct clk **clks;
7979 unsigned int num_core_clks;
8080 unsigned int num_mod_clks;
81+ unsigned int num_resets;
8182 unsigned int last_dt_core_clk;
8283
8384 struct raw_notifier_head notifiers;
@@ -315,15 +316,13 @@ fail: · 231 unmodified lines
315316 *
316317 * @hw: handle between common and hardware-specific interfaces
317318 * @off: register offset
318− * @onoff: ON/MON bits
319− * @reset: reset bits
319+ * @bit: ON/MON bit
320320 * @priv: CPG/MSTP private data
321321 */
322322 struct mstp_clock {
323323 struct clk_hw hw;
324324 u16 off;
325− u8 onoff;
326− u8 reset;
325+ u8 bit;
327326 struct rzg2l_cpg_priv *priv;
328327 };
329328
@@ -337,6 +336,7 @@ static int rzg2l_mod_clock_endisable(struct clk_hw *hw, bool enable) · 7 unmodified lines
337336 struct device *dev = priv->dev;
338337 unsigned long flags;
339338 unsigned int i;
339+ u32 bitmask = BIT(clock->bit);
340340 u32 value;
341341
342342 if (!clock->off) {
@@ -349,9 +349,9 @@ static int rzg2l_mod_clock_endisable(struct clk_hw *hw, bool enable) · 6 unmodified lines
349349 spin_lock_irqsave(&priv->rmw_lock, flags);
350350
351351 if (enable)
352− value = (clock->onoff << 16) | clock->onoff;
352+ value = (bitmask << 16) | bitmask;
353353 else
354− value = clock->onoff << 16;
354+ value = bitmask << 16;
355355 writel(value, priv->base + CLK_ON_R(reg));
356356
357357 spin_unlock_irqrestore(&priv->rmw_lock, flags);
@@ -360,7 +360,7 @@ static int rzg2l_mod_clock_endisable(struct clk_hw *hw, bool enable) · 2 unmodified lines
360360 return 0;
361361
362362 for (i = 1000; i > 0; --i) {
363− if (((readl(priv->base + CLK_MON_R(reg))) & clock->onoff))
363+ if (((readl(priv->base + CLK_MON_R(reg))) & bitmask))
364364 break;
365365 cpu_relax();
366366 }
@@ -388,6 +388,7 @@ static int rzg2l_mod_clock_is_enabled(struct clk_hw *hw) · 21 unmodified lines
388388 {
389389 struct mstp_clock *clock = to_mod_clock(hw);
390390 struct rzg2l_cpg_priv *priv = clock->priv;
391+ u32 bitmask = BIT(clock->bit);
391392 u32 value;
392393
393394 if (!clock->off) {
@@ -397,7 +398,7 @@ static int rzg2l_mod_clock_is_enabled(struct clk_hw *hw) · 3 unmodified lines
397398
398399 value = readl(priv->base + CLK_MON_R(clock->off));
399400
400− return !(value & clock->onoff);
401+ return !(value & bitmask);
401402 }
402403
403404 static const struct clk_ops rzg2l_mod_clock_ops = {
@@ -457,8 +458,7 @@ rzg2l_cpg_register_mod_clk(const struct rzg2l_mod_clk *mod, · 53 unmodified lines
457458 init.num_parents = 1;
458459
459460 clock->off = mod->off;
460− clock->onoff = mod->onoff;
461− clock->reset = mod->reset;
461+ clock->bit = mod->bit;
462462 clock->priv = priv;
463463 clock->hw.init = &init;
464464
@@ -483,12 +483,11 @@ static int rzg2l_cpg_reset(struct reset_controller_dev *rcdev, · 18 unmodified lines
483483 {
484484 struct rzg2l_cpg_priv *priv = rcdev_to_priv(rcdev);
485485 const struct rzg2l_cpg_info *info = priv->info;
486− unsigned int reg = info->mod_clks[id].off;
487− u32 dis = info->mod_clks[id].reset;
486+ unsigned int reg = info->resets[id].off;
487+ u32 dis = BIT(info->resets[id].bit);
488488 u32 we = dis << 16;
489489
490− dev_dbg(rcdev->dev, "reset name:%s id:%ld offset:0x%x\n",
491− info->mod_clks[id].name, id, CLK_RST_R(reg));
490+ dev_dbg(rcdev->dev, "reset id:%ld offset:0x%x\n", id, CLK_RST_R(reg));
492491
493492 /* Reset module */
494493 writel(we, priv->base + CLK_RST_R(reg));
@@ -507,11 +506,10 @@ static int rzg2l_cpg_assert(struct reset_controller_dev *rcdev, · 12 unmodified lines
507506 {
508507 struct rzg2l_cpg_priv *priv = rcdev_to_priv(rcdev);
509508 const struct rzg2l_cpg_info *info = priv->info;
510− unsigned int reg = info->mod_clks[id].off;
511− u32 value = info->mod_clks[id].reset << 16;
509+ unsigned int reg = info->resets[id].off;
510+ u32 value = BIT(info->resets[id].bit) << 16;
512511
513− dev_dbg(rcdev->dev, "assert name:%s id:%ld offset:0x%x\n",
514− info->mod_clks[id].name, id, CLK_RST_R(reg));
512+ dev_dbg(rcdev->dev, "assert id:%ld offset:0x%x\n", id, CLK_RST_R(reg));
515513
516514 writel(value, priv->base + CLK_RST_R(reg));
517515 return 0;
@@ -522,12 +520,12 @@ static int rzg2l_cpg_deassert(struct reset_controller_dev *rcdev, · 4 unmodified lines
522520 {
523521 struct rzg2l_cpg_priv *priv = rcdev_to_priv(rcdev);
524522 const struct rzg2l_cpg_info *info = priv->info;
525− unsigned int reg = info->mod_clks[id].off;
526− u32 dis = info->mod_clks[id].reset;
523+ unsigned int reg = info->resets[id].off;
524+ u32 dis = BIT(info->resets[id].bit);
527525 u32 value = (dis << 16) | dis;
528526
529− dev_dbg(rcdev->dev, "deassert name:%s id:%ld offset:0x%x\n",
530− info->mod_clks[id].name, id, CLK_RST_R(reg));
527+ dev_dbg(rcdev->dev, "deassert id:%ld offset:0x%x\n", id,
528+ CLK_RST_R(reg));
531529
532530 writel(value, priv->base + CLK_RST_R(reg));
533531 return 0;
@@ -538,8 +536,8 @@ static int rzg2l_cpg_status(struct reset_controller_dev *rcdev, · 4 unmodified lines
538536 {
539537 struct rzg2l_cpg_priv *priv = rcdev_to_priv(rcdev);
540538 const struct rzg2l_cpg_info *info = priv->info;
541− unsigned int reg = info->mod_clks[id].off;
542− u32 bitmask = info->mod_clks[id].reset;
539+ unsigned int reg = info->resets[id].off;
540+ u32 bitmask = BIT(info->resets[id].bit);
543541
544542 return !(readl(priv->base + CLK_MRST_R(reg)) & bitmask);
545543 }
@@ -554,9 +552,11 @@ static const struct reset_control_ops rzg2l_cpg_reset_ops = { · 8 unmodified lines
554552 static int rzg2l_cpg_reset_xlate(struct reset_controller_dev *rcdev,
555553 const struct of_phandle_args *reset_spec)
556554 {
555+ struct rzg2l_cpg_priv *priv = rcdev_to_priv(rcdev);
556+ const struct rzg2l_cpg_info *info = priv->info;
557557 unsigned int id = reset_spec->args[0];
558558
559− if (id >= rcdev->nr_resets) {
559+ if (id >= rcdev->nr_resets || !info->resets[id].off) {
560560 dev_err(rcdev->dev, "Invalid reset index %u\n", id);
561561 return -EINVAL;
562562 }
@@ -571,7 +571,7 @@ static int rzg2l_cpg_reset_controller_register(struct rzg2l_cpg_priv *priv) · 8 unmodified lines
571571 priv->rcdev.dev = priv->dev;
572572 priv->rcdev.of_reset_n_cells = 1;
573573 priv->rcdev.of_xlate = rzg2l_cpg_reset_xlate;
574− priv->rcdev.nr_resets = priv->num_mod_clks;
574+ priv->rcdev.nr_resets = priv->num_resets;
575575
576576 return devm_reset_controller_register(priv->dev, &priv->rcdev);
577577 }
@@ -594,42 +594,49 @@ static int rzg2l_cpg_attach_dev(struct generic_pm_domain *unused, struct device · 16 unmodified lines
594594 {
595595 struct device_node *np = dev->of_node;
596596 struct of_phandle_args clkspec;
597+ bool once = true;
597598 struct clk *clk;
598599 int error;
599600 int i = 0;
600601
601602 while (!of_parse_phandle_with_args(np, "clocks", "#clock-cells", i,
602603 &clkspec)) {
603− if (rzg2l_cpg_is_pm_clk(&clkspec))
604− goto found;
605−
606− of_node_put(clkspec.np);
604+ if (rzg2l_cpg_is_pm_clk(&clkspec)) {
605+ if (once) {
606+ once = false;
607+ error = pm_clk_create(dev);
608+ if (error) {
609+ of_node_put(clkspec.np);
610+ goto err;
611+ }
612+ }
613+ clk = of_clk_get_from_provider(&clkspec);
614+ of_node_put(clkspec.np);
615+ if (IS_ERR(clk)) {
616+ error = PTR_ERR(clk);
617+ goto fail_destroy;
618+ }
619+
620+ error = pm_clk_add_clk(dev, clk);
621+ if (error) {
622+ dev_err(dev, "pm_clk_add_clk failed %d\n",
623+ error);
624+ goto fail_put;
625+ }
626+ } else {
627+ of_node_put(clkspec.np);
628+ }
607629 i++;
608630 }
609631
610632 return 0;
611633
612−found:
613− clk = of_clk_get_from_provider(&clkspec);
614− of_node_put(clkspec.np);
615−
616− if (IS_ERR(clk))
617− return PTR_ERR(clk);
618−
619− error = pm_clk_create(dev);
620− if (error)
621− goto fail_put;
622−
623− error = pm_clk_add_clk(dev, clk);
624− if (error)
625− goto fail_destroy;
626−
627− return 0;
634+fail_put:
635+ clk_put(clk);
628636
629637 fail_destroy:
630638 pm_clk_destroy(dev);
631−fail_put:
632− clk_put(clk);
639+err:
633640 return error;
634641 }
635642
@@ -692,6 +699,7 @@ static int __init rzg2l_cpg_probe(struct platform_device *pdev) · 56 unmodified lines
692699 priv->clks = clks;
693700 priv->num_core_clks = info->num_total_core_clks;
694701 priv->num_mod_clks = info->num_hw_mod_clks;
702+ priv->num_resets = info->num_resets;
695703 priv->last_dt_core_clk = info->last_dt_core_clk;
696704
697705 for (i = 0; i < nclks; i++)
drivers/clk/renesas/renesas-rzg2l-cpg.h+28−9
@@ -21,6 +21,7 @@ · 20 unmodified lines
2121 #define DDIV_PACK(offset, bitpos, size) \
2222 (((offset) << 20) | ((bitpos) << 12) | ((size) << 8))
2323 #define DIVPL2A DDIV_PACK(CPG_PL2_DDIV, 0, 3)
24+#define DIVPL3A DDIV_PACK(CPG_PL3A_DDIV, 0, 3)
2425 #define DIVPL3B DDIV_PACK(CPG_PL3A_DDIV, 4, 3)
2526
2627 /**
@@ -76,26 +77,40 @@ enum clk_types { · 49 unmodified lines
7677 * @id: clock index in array containing all Core and Module Clocks
7778 * @parent: id of parent clock
7879 * @off: register offset
79− * @onoff: ON/MON bits
80− * @reset: reset bits
80+ * @bit: ON/MON bit
8181 */
8282 struct rzg2l_mod_clk {
8383 const char *name;
8484 unsigned int id;
8585 unsigned int parent;
8686 u16 off;
87− u8 onoff;
88− u8 reset;
87+ u8 bit;
8988 };
9089
91−#define DEF_MOD(_name, _id, _parent, _off, _onoff, _reset) \
92− [_id] = { \
90+#define DEF_MOD(_name, _id, _parent, _off, _bit) \
91+ { \
9392 .name = _name, \
94− .id = MOD_CLK_BASE + _id, \
93+ .id = MOD_CLK_BASE + (_id), \
9594 .parent = (_parent), \
9695 .off = (_off), \
97− .onoff = (_onoff), \
98− .reset = (_reset) \
96+ .bit = (_bit), \
97+ }
98+
99+/**
100+ * struct rzg2l_reset - Reset definitions
101+ *
102+ * @off: register offset
103+ * @bit: reset bit
104+ */
105+struct rzg2l_reset {
106+ u16 off;
107+ u8 bit;
108+};
109+
110+#define DEF_RST(_id, _off, _bit) \
111+ [_id] = { \
112+ .off = (_off), \
113+ .bit = (_bit) \
99114 }
100115
101116 /**
@@ -126,6 +141,10 @@ struct rzg2l_cpg_info { · 24 unmodified lines
126141 unsigned int num_mod_clks;
127142 unsigned int num_hw_mod_clks;
128143
144+ /* Resets */
145+ const struct rzg2l_reset *resets;
146+ unsigned int num_resets;
147+
129148 /* Critical Module Clocks that should not be disabled */
130149 const unsigned int *crit_mod_clks;
131150 unsigned int num_crit_mod_clks;
include/dt-bindings/clock/r9a07g044-cpg.h+183−53
@@ -32,58 +32,188 @@ · 31 unmodified lines
3232 #define R9A07G044_OSCCLK 21
3333
3434 /* R9A07G044 Module Clocks */
35−#define R9A07G044_CLK_GIC600 0
36−#define R9A07G044_CLK_IA55 1
37−#define R9A07G044_CLK_SYC 2
38−#define R9A07G044_CLK_DMAC 3
39−#define R9A07G044_CLK_SYSC 4
40−#define R9A07G044_CLK_MTU 5
41−#define R9A07G044_CLK_GPT 6
42−#define R9A07G044_CLK_ETH0 7
43−#define R9A07G044_CLK_ETH1 8
44−#define R9A07G044_CLK_I2C0 9
45−#define R9A07G044_CLK_I2C1 10
46−#define R9A07G044_CLK_I2C2 11
47−#define R9A07G044_CLK_I2C3 12
48−#define R9A07G044_CLK_SCIF0 13
49−#define R9A07G044_CLK_SCIF1 14
50−#define R9A07G044_CLK_SCIF2 15
51−#define R9A07G044_CLK_SCIF3 16
52−#define R9A07G044_CLK_SCIF4 17
53−#define R9A07G044_CLK_SCI0 18
54−#define R9A07G044_CLK_SCI1 19
55−#define R9A07G044_CLK_GPIO 20
56−#define R9A07G044_CLK_SDHI0 21
57−#define R9A07G044_CLK_SDHI1 22
58−#define R9A07G044_CLK_USB0 23
59−#define R9A07G044_CLK_USB1 24
60−#define R9A07G044_CLK_CANFD 25
61−#define R9A07G044_CLK_SSI0 26
62−#define R9A07G044_CLK_SSI1 27
63−#define R9A07G044_CLK_SSI2 28
64−#define R9A07G044_CLK_SSI3 29
65−#define R9A07G044_CLK_MHU 30
66−#define R9A07G044_CLK_OSTM0 31
67−#define R9A07G044_CLK_OSTM1 32
68−#define R9A07G044_CLK_OSTM2 33
69−#define R9A07G044_CLK_WDT0 34
70−#define R9A07G044_CLK_WDT1 35
71−#define R9A07G044_CLK_WDT2 36
72−#define R9A07G044_CLK_WDT_PON 37
73−#define R9A07G044_CLK_GPU 38
74−#define R9A07G044_CLK_ISU 39
75−#define R9A07G044_CLK_H264 40
76−#define R9A07G044_CLK_CRU 41
77−#define R9A07G044_CLK_MIPI_DSI 42
78−#define R9A07G044_CLK_LCDC 43
79−#define R9A07G044_CLK_SRC 44
80−#define R9A07G044_CLK_RSPI0 45
81−#define R9A07G044_CLK_RSPI1 46
82−#define R9A07G044_CLK_RSPI2 47
83−#define R9A07G044_CLK_ADC 48
84−#define R9A07G044_CLK_TSU_PCLK 49
85−#define R9A07G044_CLK_SPI 50
86−#define R9A07G044_CLK_MIPI_DSI_V 51
87−#define R9A07G044_CLK_MIPI_DSI_PIN 52
35+#define R9A07G044_CA55_SCLK 0
36+#define R9A07G044_CA55_PCLK 1
37+#define R9A07G044_CA55_ATCLK 2
38+#define R9A07G044_CA55_GICCLK 3
39+#define R9A07G044_CA55_PERICLK 4
40+#define R9A07G044_CA55_ACLK 5
41+#define R9A07G044_CA55_TSCLK 6
42+#define R9A07G044_GIC600_GICCLK 7
43+#define R9A07G044_IA55_CLK 8
44+#define R9A07G044_IA55_PCLK 9
45+#define R9A07G044_MHU_PCLK 10
46+#define R9A07G044_SYC_CNT_CLK 11
47+#define R9A07G044_DMAC_ACLK 12
48+#define R9A07G044_DMAC_PCLK 13
49+#define R9A07G044_OSTM0_PCLK 14
50+#define R9A07G044_OSTM1_PCLK 15
51+#define R9A07G044_OSTM2_PCLK 16
52+#define R9A07G044_MTU_X_MCK_MTU3 17
53+#define R9A07G044_POE3_CLKM_POE 18
54+#define R9A07G044_GPT_PCLK 19
55+#define R9A07G044_POEG_A_CLKP 20
56+#define R9A07G044_POEG_B_CLKP 21
57+#define R9A07G044_POEG_C_CLKP 22
58+#define R9A07G044_POEG_D_CLKP 23
59+#define R9A07G044_WDT0_PCLK 24
60+#define R9A07G044_WDT0_CLK 25
61+#define R9A07G044_WDT1_PCLK 26
62+#define R9A07G044_WDT1_CLK 27
63+#define R9A07G044_WDT2_PCLK 28
64+#define R9A07G044_WDT2_CLK 29
65+#define R9A07G044_SPI_CLK2 30
66+#define R9A07G044_SPI_CLK 31
67+#define R9A07G044_SDHI0_IMCLK 32
68+#define R9A07G044_SDHI0_IMCLK2 33
69+#define R9A07G044_SDHI0_CLK_HS 34
70+#define R9A07G044_SDHI0_ACLK 35
71+#define R9A07G044_SDHI1_IMCLK 36
72+#define R9A07G044_SDHI1_IMCLK2 37
73+#define R9A07G044_SDHI1_CLK_HS 38
74+#define R9A07G044_SDHI1_ACLK 39
75+#define R9A07G044_GPU_CLK 40
76+#define R9A07G044_GPU_AXI_CLK 41
77+#define R9A07G044_GPU_ACE_CLK 42
78+#define R9A07G044_ISU_ACLK 43
79+#define R9A07G044_ISU_PCLK 44
80+#define R9A07G044_H264_CLK_A 45
81+#define R9A07G044_H264_CLK_P 46
82+#define R9A07G044_CRU_SYSCLK 47
83+#define R9A07G044_CRU_VCLK 48
84+#define R9A07G044_CRU_PCLK 49
85+#define R9A07G044_CRU_ACLK 50
86+#define R9A07G044_MIPI_DSI_PLLCLK 51
87+#define R9A07G044_MIPI_DSI_SYSCLK 52
88+#define R9A07G044_MIPI_DSI_ACLK 53
89+#define R9A07G044_MIPI_DSI_PCLK 54
90+#define R9A07G044_MIPI_DSI_VCLK 55
91+#define R9A07G044_MIPI_DSI_LPCLK 56
92+#define R9A07G044_LCDC_CLK_A 57
93+#define R9A07G044_LCDC_CLK_P 58
94+#define R9A07G044_LCDC_CLK_D 59
95+#define R9A07G044_SSI0_PCLK2 60
96+#define R9A07G044_SSI0_PCLK_SFR 61
97+#define R9A07G044_SSI1_PCLK2 62
98+#define R9A07G044_SSI1_PCLK_SFR 63
99+#define R9A07G044_SSI2_PCLK2 64
100+#define R9A07G044_SSI2_PCLK_SFR 65
101+#define R9A07G044_SSI3_PCLK2 66
102+#define R9A07G044_SSI3_PCLK_SFR 67
103+#define R9A07G044_SRC_CLKP 68
104+#define R9A07G044_USB_U2H0_HCLK 69
105+#define R9A07G044_USB_U2H1_HCLK 70
106+#define R9A07G044_USB_U2P_EXR_CPUCLK 71
107+#define R9A07G044_USB_PCLK 72
108+#define R9A07G044_ETH0_CLK_AXI 73
109+#define R9A07G044_ETH0_CLK_CHI 74
110+#define R9A07G044_ETH1_CLK_AXI 75
111+#define R9A07G044_ETH1_CLK_CHI 76
112+#define R9A07G044_I2C0_PCLK 77
113+#define R9A07G044_I2C1_PCLK 78
114+#define R9A07G044_I2C2_PCLK 79
115+#define R9A07G044_I2C3_PCLK 80
116+#define R9A07G044_SCIF0_CLK_PCK 81
117+#define R9A07G044_SCIF1_CLK_PCK 82
118+#define R9A07G044_SCIF2_CLK_PCK 83
119+#define R9A07G044_SCIF3_CLK_PCK 84
120+#define R9A07G044_SCIF4_CLK_PCK 85
121+#define R9A07G044_SCI0_CLKP 86
122+#define R9A07G044_SCI1_CLKP 87
123+#define R9A07G044_IRDA_CLKP 88
124+#define R9A07G044_RSPI0_CLKB 89
125+#define R9A07G044_RSPI1_CLKB 90
126+#define R9A07G044_RSPI2_CLKB 91
127+#define R9A07G044_CANFD_PCLK 92
128+#define R9A07G044_GPIO_HCLK 93
129+#define R9A07G044_ADC_ADCLK 94
130+#define R9A07G044_ADC_PCLK 95
131+#define R9A07G044_TSU_PCLK 96
132+
133+/* R9A07G044 Resets */
134+#define R9A07G044_CA55_RST_1_0 0
135+#define R9A07G044_CA55_RST_1_1 1
136+#define R9A07G044_CA55_RST_3_0 2
137+#define R9A07G044_CA55_RST_3_1 3
138+#define R9A07G044_CA55_RST_4 4
139+#define R9A07G044_CA55_RST_5 5
140+#define R9A07G044_CA55_RST_6 6
141+#define R9A07G044_CA55_RST_7 7
142+#define R9A07G044_CA55_RST_8 8
143+#define R9A07G044_CA55_RST_9 9
144+#define R9A07G044_CA55_RST_10 10
145+#define R9A07G044_CA55_RST_11 11
146+#define R9A07G044_CA55_RST_12 12
147+#define R9A07G044_GIC600_GICRESET_N 13
148+#define R9A07G044_GIC600_DBG_GICRESET_N 14
149+#define R9A07G044_IA55_RESETN 15
150+#define R9A07G044_MHU_RESETN 16
151+#define R9A07G044_DMAC_ARESETN 17
152+#define R9A07G044_DMAC_RST_ASYNC 18
153+#define R9A07G044_SYC_RESETN 19
154+#define R9A07G044_OSTM0_PRESETZ 20
155+#define R9A07G044_OSTM1_PRESETZ 21
156+#define R9A07G044_OSTM2_PRESETZ 22
157+#define R9A07G044_MTU_X_PRESET_MTU3 23
158+#define R9A07G044_POE3_RST_M_REG 24
159+#define R9A07G044_GPT_RST_C 25
160+#define R9A07G044_POEG_A_RST 26
161+#define R9A07G044_POEG_B_RST 27
162+#define R9A07G044_POEG_C_RST 28
163+#define R9A07G044_POEG_D_RST 29
164+#define R9A07G044_WDT0_PRESETN 30
165+#define R9A07G044_WDT1_PRESETN 31
166+#define R9A07G044_WDT2_PRESETN 32
167+#define R9A07G044_SPI_RST 33
168+#define R9A07G044_SDHI0_IXRST 34
169+#define R9A07G044_SDHI1_IXRST 35
170+#define R9A07G044_GPU_RESETN 36
171+#define R9A07G044_GPU_AXI_RESETN 37
172+#define R9A07G044_GPU_ACE_RESETN 38
173+#define R9A07G044_ISU_ARESETN 39
174+#define R9A07G044_ISU_PRESETN 40
175+#define R9A07G044_H264_X_RESET_VCP 41
176+#define R9A07G044_H264_CP_PRESET_P 42
177+#define R9A07G044_CRU_CMN_RSTB 43
178+#define R9A07G044_CRU_PRESETN 44
179+#define R9A07G044_CRU_ARESETN 45
180+#define R9A07G044_MIPI_DSI_CMN_RSTB 46
181+#define R9A07G044_MIPI_DSI_ARESET_N 47
182+#define R9A07G044_MIPI_DSI_PRESET_N 48
183+#define R9A07G044_LCDC_RESET_N 49
184+#define R9A07G044_SSI0_RST_M2_REG 50
185+#define R9A07G044_SSI1_RST_M2_REG 51
186+#define R9A07G044_SSI2_RST_M2_REG 52
187+#define R9A07G044_SSI3_RST_M2_REG 53
188+#define R9A07G044_SRC_RST 54
189+#define R9A07G044_USB_U2H0_HRESETN 55
190+#define R9A07G044_USB_U2H1_HRESETN 56
191+#define R9A07G044_USB_U2P_EXL_SYSRST 57
192+#define R9A07G044_USB_PRESETN 58
193+#define R9A07G044_ETH0_RST_HW_N 59
194+#define R9A07G044_ETH1_RST_HW_N 60
195+#define R9A07G044_I2C0_MRST 61
196+#define R9A07G044_I2C1_MRST 62
197+#define R9A07G044_I2C2_MRST 63
198+#define R9A07G044_I2C3_MRST 64
199+#define R9A07G044_SCIF0_RST_SYSTEM_N 65
200+#define R9A07G044_SCIF1_RST_SYSTEM_N 66
201+#define R9A07G044_SCIF2_RST_SYSTEM_N 67
202+#define R9A07G044_SCIF3_RST_SYSTEM_N 68
203+#define R9A07G044_SCIF4_RST_SYSTEM_N 69
204+#define R9A07G044_SCI0_RST 70
205+#define R9A07G044_SCI1_RST 71
206+#define R9A07G044_IRDA_RST 72
207+#define R9A07G044_RSPI0_RST 73
208+#define R9A07G044_RSPI1_RST 74
209+#define R9A07G044_RSPI2_RST 75
210+#define R9A07G044_CANFD_RSTP_N 76
211+#define R9A07G044_CANFD_RSTC_N 77
212+#define R9A07G044_GPIO_RSTN 78
213+#define R9A07G044_GPIO_PORT_RESETN 79
214+#define R9A07G044_GPIO_SPARE_RESETN 80
215+#define R9A07G044_ADC_PRESETN 81
216+#define R9A07G044_ADC_ADRST_N 82
217+#define R9A07G044_TSU_PRESETN 83
88218
89219 #endif /* __DT_BINDINGS_CLOCK_R9A07G044_CPG_H__ */

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t