Commit b183c688 authored by Stephen Boyd's avatar Stephen Boyd

Merge branches 'clk-imx6-video-parent', 'clk-qcom-sdm845-criticals',...

Merge branches 'clk-imx6-video-parent', 'clk-qcom-sdm845-criticals', 'clk-renesas', 'clk-stratix10-fixes' and 'clk-atmel-i2s' into clk-next

* clk-imx6-video-parent:
  :  - Fix i.MX6QDL video clk parent
  clk: imx6: fix video_27m parent for IMX6QDL_CLK_CKO1_SEL

* clk-qcom-sdm845-criticals:
  :  - critical clk markings for qcom SDM845
  clk: qcom: Enable clocks which needs to be always on for SDM845

* clk-renesas:
  clk: renesas: Renesas R9A06G032 clock driver
  dt-bindings: clock: renesas,r9a06g032-sysctrl: documentation
  dt-bindings: clock: Add the r9a06g032-sysctrl.h file
  clk: renesas: r8a7795: Add CCREE clock
  clk: renesas: r8a7795: Add CR clock

* clk-stratix10-fixes:
  :  - Fix Stratix10 mpu_free_clk and sdmmc_free_clk parents
  clk: socfpga: stratix10: fix the sdmmc_free_clk mux
  clk: socfpga: stratix10: fix the parents of mpu_free_clk

* clk-atmel-i2s:
  :  - Atmel at91 I2S audio clk support
  clk: at91: add I2S clock mux driver
  dt-bindings: clk: at91: add an I2S mux clock
...@@ -91,6 +91,9 @@ Required properties: ...@@ -91,6 +91,9 @@ Required properties:
at91 audio pll output on AUDIOPLLCLK that feeds the PMC at91 audio pll output on AUDIOPLLCLK that feeds the PMC
and can be used by peripheral clock or generic clock and can be used by peripheral clock or generic clock
"atmel,sama5d2-clk-i2s-mux" (under pmc node):
at91 I2S clock source selection
Required properties for SCKC node: Required properties for SCKC node:
- reg : defines the IO memory reserved for the SCKC. - reg : defines the IO memory reserved for the SCKC.
- #size-cells : shall be 0 (reg is used to encode clk id). - #size-cells : shall be 0 (reg is used to encode clk id).
...@@ -507,3 +510,35 @@ For example: ...@@ -507,3 +510,35 @@ For example:
atmel,clk-output-range = <0 83000000>; atmel,clk-output-range = <0 83000000>;
}; };
}; };
Required properties for I2S mux clocks:
- #size-cells : shall be 0 (reg is used to encode I2S bus id).
- #address-cells : shall be 1 (reg is used to encode I2S bus id).
- name: device tree node describing a specific mux clock.
* #clock-cells : from common clock binding; shall be set to 0.
* clocks : shall be the mux clock parent phandles; shall be 2 phandles:
peripheral and generated clock; the first phandle shall belong to the
peripheral clock and the second one shall belong to the generated
clock; "clock-indices" property can be user to specify
the correct order.
* reg: I2S bus id of the corresponding mux clock.
e.g. reg = <0>; for i2s0, reg = <1>; for i2s1
For example:
i2s_clkmux {
compatible = "atmel,sama5d2-clk-i2s-mux";
#address-cells = <1>;
#size-cells = <0>;
i2s0muxck: i2s0_muxclk {
clocks = <&i2s0_clk>, <&i2s0_gclk>;
#clock-cells = <0>;
reg = <0>;
};
i2s1muxck: i2s1_muxclk {
clocks = <&i2s1_clk>, <&i2s1_gclk>;
#clock-cells = <0>;
reg = <1>;
};
};
* Renesas R9A06G032 SYSCTRL
Required Properties:
- compatible: Must be:
- "renesas,r9a06g032-sysctrl"
- reg: Base address and length of the SYSCTRL IO block.
- #clock-cells: Must be 1
- clocks: References to the parent clocks:
- external 40mhz crystal.
- external (optional) 32.768khz
- external (optional) jtag input
- external (optional) RGMII_REFCLK
- clock-names: Must be:
clock-names = "mclk", "rtc", "jtag", "rgmii_ref_ext";
Examples
--------
- SYSCTRL node:
sysctrl: system-controller@4000c000 {
compatible = "renesas,r9a06g032-sysctrl";
reg = <0x4000c000 0x1000>;
#clock-cells = <1>;
clocks = <&ext_mclk>, <&ext_rtc_clk>,
<&ext_jtag_clk>, <&ext_rgmii_ref>;
clock-names = "mclk", "rtc", "jtag", "rgmii_ref_ext";
};
- Other nodes can use the clocks provided by SYSCTRL as in:
#include <dt-bindings/clock/r9a06g032-sysctrl.h>
uart0: serial@40060000 {
compatible = "snps,dw-apb-uart";
reg = <0x40060000 0x400>;
interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
reg-shift = <2>;
reg-io-width = <4>;
clocks = <&sysctrl R9A06G032_CLK_UART0>;
clock-names = "baudclk";
};
...@@ -27,6 +27,7 @@ config SOC_SAMA5D2 ...@@ -27,6 +27,7 @@ config SOC_SAMA5D2
select HAVE_AT91_H32MX select HAVE_AT91_H32MX
select HAVE_AT91_GENERATED_CLK select HAVE_AT91_GENERATED_CLK
select HAVE_AT91_AUDIO_PLL select HAVE_AT91_AUDIO_PLL
select HAVE_AT91_I2S_MUX_CLK
select PINCTRL_AT91PIO4 select PINCTRL_AT91PIO4
help help
Select this if ou are using one of Microchip's SAMA5D2 family SoC. Select this if ou are using one of Microchip's SAMA5D2 family SoC.
...@@ -129,6 +130,9 @@ config HAVE_AT91_GENERATED_CLK ...@@ -129,6 +130,9 @@ config HAVE_AT91_GENERATED_CLK
config HAVE_AT91_AUDIO_PLL config HAVE_AT91_AUDIO_PLL
bool bool
config HAVE_AT91_I2S_MUX_CLK
bool
config SOC_SAM_V4_V5 config SOC_SAM_V4_V5
bool bool
......
...@@ -13,3 +13,4 @@ obj-$(CONFIG_HAVE_AT91_USB_CLK) += clk-usb.o ...@@ -13,3 +13,4 @@ obj-$(CONFIG_HAVE_AT91_USB_CLK) += clk-usb.o
obj-$(CONFIG_HAVE_AT91_SMD) += clk-smd.o obj-$(CONFIG_HAVE_AT91_SMD) += clk-smd.o
obj-$(CONFIG_HAVE_AT91_H32MX) += clk-h32mx.o obj-$(CONFIG_HAVE_AT91_H32MX) += clk-h32mx.o
obj-$(CONFIG_HAVE_AT91_GENERATED_CLK) += clk-generated.o obj-$(CONFIG_HAVE_AT91_GENERATED_CLK) += clk-generated.o
obj-$(CONFIG_HAVE_AT91_I2S_MUX_CLK) += clk-i2s-mux.o
// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2018 Microchip Technology Inc,
* Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
*
*
*/
#include <linux/clk-provider.h>
#include <linux/of.h>
#include <linux/mfd/syscon.h>
#include <linux/regmap.h>
#include <linux/slab.h>
#include <soc/at91/atmel-sfr.h>
#define I2S_BUS_NR 2
struct clk_i2s_mux {
struct clk_hw hw;
struct regmap *regmap;
u8 bus_id;
};
#define to_clk_i2s_mux(hw) container_of(hw, struct clk_i2s_mux, hw)
static u8 clk_i2s_mux_get_parent(struct clk_hw *hw)
{
struct clk_i2s_mux *mux = to_clk_i2s_mux(hw);
u32 val;
regmap_read(mux->regmap, AT91_SFR_I2SCLKSEL, &val);
return (val & BIT(mux->bus_id)) >> mux->bus_id;
}
static int clk_i2s_mux_set_parent(struct clk_hw *hw, u8 index)
{
struct clk_i2s_mux *mux = to_clk_i2s_mux(hw);
return regmap_update_bits(mux->regmap, AT91_SFR_I2SCLKSEL,
BIT(mux->bus_id), index << mux->bus_id);
}
static const struct clk_ops clk_i2s_mux_ops = {
.get_parent = clk_i2s_mux_get_parent,
.set_parent = clk_i2s_mux_set_parent,
.determine_rate = __clk_mux_determine_rate,
};
static struct clk_hw * __init
at91_clk_i2s_mux_register(struct regmap *regmap, const char *name,
const char * const *parent_names,
unsigned int num_parents, u8 bus_id)
{
struct clk_init_data init = {};
struct clk_i2s_mux *i2s_ck;
int ret;
i2s_ck = kzalloc(sizeof(*i2s_ck), GFP_KERNEL);
if (!i2s_ck)
return ERR_PTR(-ENOMEM);
init.name = name;
init.ops = &clk_i2s_mux_ops;
init.parent_names = parent_names;
init.num_parents = num_parents;
i2s_ck->hw.init = &init;
i2s_ck->bus_id = bus_id;
i2s_ck->regmap = regmap;
ret = clk_hw_register(NULL, &i2s_ck->hw);
if (ret) {
kfree(i2s_ck);
return ERR_PTR(ret);
}
return &i2s_ck->hw;
}
static void __init of_sama5d2_clk_i2s_mux_setup(struct device_node *np)
{
struct regmap *regmap_sfr;
u8 bus_id;
const char *parent_names[2];
struct device_node *i2s_mux_np;
struct clk_hw *hw;
int ret;
regmap_sfr = syscon_regmap_lookup_by_compatible("atmel,sama5d2-sfr");
if (IS_ERR(regmap_sfr))
return;
for_each_child_of_node(np, i2s_mux_np) {
if (of_property_read_u8(i2s_mux_np, "reg", &bus_id))
continue;
if (bus_id > I2S_BUS_NR)
continue;
ret = of_clk_parent_fill(i2s_mux_np, parent_names, 2);
if (ret != 2)
continue;
hw = at91_clk_i2s_mux_register(regmap_sfr, i2s_mux_np->name,
parent_names, 2, bus_id);
if (IS_ERR(hw))
continue;
of_clk_add_hw_provider(i2s_mux_np, of_clk_hw_simple_get, hw);
}
}
CLK_OF_DECLARE(sama5d2_clk_i2s_mux, "atmel,sama5d2-clk-i2s-mux",
of_sama5d2_clk_i2s_mux_setup);
...@@ -65,7 +65,7 @@ static const char *ipg_per_sels[] = { "ipg", "osc", }; ...@@ -65,7 +65,7 @@ static const char *ipg_per_sels[] = { "ipg", "osc", };
static const char *ecspi_sels[] = { "pll3_60m", "osc", }; static const char *ecspi_sels[] = { "pll3_60m", "osc", };
static const char *can_sels[] = { "pll3_60m", "osc", "pll3_80m", }; static const char *can_sels[] = { "pll3_60m", "osc", "pll3_80m", };
static const char *cko1_sels[] = { "pll3_usb_otg", "pll2_bus", "pll1_sys", "pll5_video_div", static const char *cko1_sels[] = { "pll3_usb_otg", "pll2_bus", "pll1_sys", "pll5_video_div",
"dummy", "axi", "enfc", "ipu1_di0", "ipu1_di1", "ipu2_di0", "video_27m", "axi", "enfc", "ipu1_di0", "ipu1_di1", "ipu2_di0",
"ipu2_di1", "ahb", "ipg", "ipg_per", "ckil", "pll4_audio_div", }; "ipu2_di1", "ahb", "ipg", "ipg_per", "ckil", "pll4_audio_div", };
static const char *cko2_sels[] = { static const char *cko2_sels[] = {
"mmdc_ch0_axi", "mmdc_ch1_axi", "usdhc4", "usdhc1", "mmdc_ch0_axi", "mmdc_ch1_axi", "usdhc4", "usdhc1",
......
...@@ -1103,6 +1103,7 @@ static struct clk_branch gcc_camera_ahb_clk = { ...@@ -1103,6 +1103,7 @@ static struct clk_branch gcc_camera_ahb_clk = {
.enable_mask = BIT(0), .enable_mask = BIT(0),
.hw.init = &(struct clk_init_data){ .hw.init = &(struct clk_init_data){
.name = "gcc_camera_ahb_clk", .name = "gcc_camera_ahb_clk",
.flags = CLK_IS_CRITICAL,
.ops = &clk_branch2_ops, .ops = &clk_branch2_ops,
}, },
}, },
...@@ -1129,6 +1130,7 @@ static struct clk_branch gcc_camera_xo_clk = { ...@@ -1129,6 +1130,7 @@ static struct clk_branch gcc_camera_xo_clk = {
.enable_mask = BIT(0), .enable_mask = BIT(0),
.hw.init = &(struct clk_init_data){ .hw.init = &(struct clk_init_data){
.name = "gcc_camera_xo_clk", .name = "gcc_camera_xo_clk",
.flags = CLK_IS_CRITICAL,
.ops = &clk_branch2_ops, .ops = &clk_branch2_ops,
}, },
}, },
...@@ -1270,6 +1272,7 @@ static struct clk_branch gcc_disp_ahb_clk = { ...@@ -1270,6 +1272,7 @@ static struct clk_branch gcc_disp_ahb_clk = {
.enable_mask = BIT(0), .enable_mask = BIT(0),
.hw.init = &(struct clk_init_data){ .hw.init = &(struct clk_init_data){
.name = "gcc_disp_ahb_clk", .name = "gcc_disp_ahb_clk",
.flags = CLK_IS_CRITICAL,
.ops = &clk_branch2_ops, .ops = &clk_branch2_ops,
}, },
}, },
...@@ -1328,6 +1331,7 @@ static struct clk_branch gcc_disp_xo_clk = { ...@@ -1328,6 +1331,7 @@ static struct clk_branch gcc_disp_xo_clk = {
.enable_mask = BIT(0), .enable_mask = BIT(0),
.hw.init = &(struct clk_init_data){ .hw.init = &(struct clk_init_data){
.name = "gcc_disp_xo_clk", .name = "gcc_disp_xo_clk",
.flags = CLK_IS_CRITICAL,
.ops = &clk_branch2_ops, .ops = &clk_branch2_ops,
}, },
}, },
...@@ -1397,6 +1401,7 @@ static struct clk_branch gcc_gpu_cfg_ahb_clk = { ...@@ -1397,6 +1401,7 @@ static struct clk_branch gcc_gpu_cfg_ahb_clk = {
.enable_mask = BIT(0), .enable_mask = BIT(0),
.hw.init = &(struct clk_init_data){ .hw.init = &(struct clk_init_data){
.name = "gcc_gpu_cfg_ahb_clk", .name = "gcc_gpu_cfg_ahb_clk",
.flags = CLK_IS_CRITICAL,
.ops = &clk_branch2_ops, .ops = &clk_branch2_ops,
}, },
}, },
...@@ -2985,6 +2990,7 @@ static struct clk_branch gcc_video_ahb_clk = { ...@@ -2985,6 +2990,7 @@ static struct clk_branch gcc_video_ahb_clk = {
.enable_mask = BIT(0), .enable_mask = BIT(0),
.hw.init = &(struct clk_init_data){ .hw.init = &(struct clk_init_data){
.name = "gcc_video_ahb_clk", .name = "gcc_video_ahb_clk",
.flags = CLK_IS_CRITICAL,
.ops = &clk_branch2_ops, .ops = &clk_branch2_ops,
}, },
}, },
...@@ -3011,6 +3017,7 @@ static struct clk_branch gcc_video_xo_clk = { ...@@ -3011,6 +3017,7 @@ static struct clk_branch gcc_video_xo_clk = {
.enable_mask = BIT(0), .enable_mask = BIT(0),
.hw.init = &(struct clk_init_data){ .hw.init = &(struct clk_init_data){
.name = "gcc_video_xo_clk", .name = "gcc_video_xo_clk",
.flags = CLK_IS_CRITICAL,
.ops = &clk_branch2_ops, .ops = &clk_branch2_ops,
}, },
}, },
...@@ -3049,6 +3056,36 @@ static struct clk_branch gcc_vs_ctrl_clk = { ...@@ -3049,6 +3056,36 @@ static struct clk_branch gcc_vs_ctrl_clk = {
}, },
}; };
static struct clk_branch gcc_cpuss_dvm_bus_clk = {
.halt_reg = 0x48190,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x48190,
.enable_mask = BIT(0),
.hw.init = &(struct clk_init_data){
.name = "gcc_cpuss_dvm_bus_clk",
.flags = CLK_IS_CRITICAL,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch gcc_cpuss_gnoc_clk = {
.halt_reg = 0x48004,
.halt_check = BRANCH_HALT_VOTED,
.hwcg_reg = 0x48004,
.hwcg_bit = 1,
.clkr = {
.enable_reg = 0x52004,
.enable_mask = BIT(22),
.hw.init = &(struct clk_init_data){
.name = "gcc_cpuss_gnoc_clk",
.flags = CLK_IS_CRITICAL,
.ops = &clk_branch2_ops,
},
},
};
static struct gdsc pcie_0_gdsc = { static struct gdsc pcie_0_gdsc = {
.gdscr = 0x6b004, .gdscr = 0x6b004,
.pd = { .pd = {
...@@ -3344,6 +3381,8 @@ static struct clk_regmap *gcc_sdm845_clocks[] = { ...@@ -3344,6 +3381,8 @@ static struct clk_regmap *gcc_sdm845_clocks[] = {
[GPLL0] = &gpll0.clkr, [GPLL0] = &gpll0.clkr,
[GPLL0_OUT_EVEN] = &gpll0_out_even.clkr, [GPLL0_OUT_EVEN] = &gpll0_out_even.clkr,
[GPLL4] = &gpll4.clkr, [GPLL4] = &gpll4.clkr,
[GCC_CPUSS_DVM_BUS_CLK] = &gcc_cpuss_dvm_bus_clk.clkr,
[GCC_CPUSS_GNOC_CLK] = &gcc_cpuss_gnoc_clk.clkr,
}; };
static const struct qcom_reset_map gcc_sdm845_resets[] = { static const struct qcom_reset_map gcc_sdm845_resets[] = {
...@@ -3433,10 +3472,6 @@ static int gcc_sdm845_probe(struct platform_device *pdev) ...@@ -3433,10 +3472,6 @@ static int gcc_sdm845_probe(struct platform_device *pdev)
regmap_update_bits(regmap, 0x09ffc, 0x3, 0x3); regmap_update_bits(regmap, 0x09ffc, 0x3, 0x3);
regmap_update_bits(regmap, 0x71028, 0x3, 0x3); regmap_update_bits(regmap, 0x71028, 0x3, 0x3);
/* Enable CPUSS clocks */
regmap_update_bits(regmap, 0x48190, BIT(0), 0x1);
regmap_update_bits(regmap, 0x52004, BIT(22), 0x1);
return qcom_cc_really_probe(pdev, &gcc_sdm845_desc, regmap); return qcom_cc_really_probe(pdev, &gcc_sdm845_desc, regmap);
} }
......
...@@ -21,6 +21,7 @@ config CLK_RENESAS ...@@ -21,6 +21,7 @@ config CLK_RENESAS
select CLK_R8A77980 if ARCH_R8A77980 select CLK_R8A77980 if ARCH_R8A77980
select CLK_R8A77990 if ARCH_R8A77990 select CLK_R8A77990 if ARCH_R8A77990
select CLK_R8A77995 if ARCH_R8A77995 select CLK_R8A77995 if ARCH_R8A77995
select CLK_R9A06G032 if ARCH_R9A06G032
select CLK_SH73A0 if ARCH_SH73A0 select CLK_SH73A0 if ARCH_SH73A0
if CLK_RENESAS if CLK_RENESAS
...@@ -125,6 +126,11 @@ config CLK_R8A77995 ...@@ -125,6 +126,11 @@ config CLK_R8A77995
bool "R-Car D3 clock support" if COMPILE_TEST bool "R-Car D3 clock support" if COMPILE_TEST
select CLK_RCAR_GEN3_CPG select CLK_RCAR_GEN3_CPG
config CLK_R9A06G032
bool "Renesas R9A06G032 clock driver"
help
This is a driver for R9A06G032 clocks
config CLK_SH73A0 config CLK_SH73A0
bool "SH-Mobile AG5 clock support" if COMPILE_TEST bool "SH-Mobile AG5 clock support" if COMPILE_TEST
select CLK_RENESAS_CPG_MSTP select CLK_RENESAS_CPG_MSTP
......
...@@ -20,6 +20,7 @@ obj-$(CONFIG_CLK_R8A77970) += r8a77970-cpg-mssr.o ...@@ -20,6 +20,7 @@ obj-$(CONFIG_CLK_R8A77970) += r8a77970-cpg-mssr.o
obj-$(CONFIG_CLK_R8A77980) += r8a77980-cpg-mssr.o obj-$(CONFIG_CLK_R8A77980) += r8a77980-cpg-mssr.o
obj-$(CONFIG_CLK_R8A77990) += r8a77990-cpg-mssr.o obj-$(CONFIG_CLK_R8A77990) += r8a77990-cpg-mssr.o
obj-$(CONFIG_CLK_R8A77995) += r8a77995-cpg-mssr.o obj-$(CONFIG_CLK_R8A77995) += r8a77995-cpg-mssr.o
obj-$(CONFIG_CLK_R9A06G032) += r9a06g032-clocks.o
obj-$(CONFIG_CLK_SH73A0) += clk-sh73a0.o obj-$(CONFIG_CLK_SH73A0) += clk-sh73a0.o
# Family # Family
......
...@@ -103,6 +103,7 @@ static struct cpg_core_clk r8a7795_core_clks[] __initdata = { ...@@ -103,6 +103,7 @@ static struct cpg_core_clk r8a7795_core_clks[] __initdata = {
DEF_GEN3_SD("sd3", R8A7795_CLK_SD3, CLK_SDSRC, 0x26c), DEF_GEN3_SD("sd3", R8A7795_CLK_SD3, CLK_SDSRC, 0x26c),
DEF_FIXED("cl", R8A7795_CLK_CL, CLK_PLL1_DIV2, 48, 1), DEF_FIXED("cl", R8A7795_CLK_CL, CLK_PLL1_DIV2, 48, 1),
DEF_FIXED("cr", R8A7795_CLK_CR, CLK_PLL1_DIV4, 2, 1),
DEF_FIXED("cp", R8A7795_CLK_CP, CLK_EXTAL, 2, 1), DEF_FIXED("cp", R8A7795_CLK_CP, CLK_EXTAL, 2, 1),
DEF_DIV6P1("canfd", R8A7795_CLK_CANFD, CLK_PLL1_DIV4, 0x244), DEF_DIV6P1("canfd", R8A7795_CLK_CANFD, CLK_PLL1_DIV4, 0x244),
...@@ -132,6 +133,7 @@ static struct mssr_mod_clk r8a7795_mod_clks[] __initdata = { ...@@ -132,6 +133,7 @@ static struct mssr_mod_clk r8a7795_mod_clks[] __initdata = {
DEF_MOD("sys-dmac2", 217, R8A7795_CLK_S0D3), DEF_MOD("sys-dmac2", 217, R8A7795_CLK_S0D3),
DEF_MOD("sys-dmac1", 218, R8A7795_CLK_S0D3), DEF_MOD("sys-dmac1", 218, R8A7795_CLK_S0D3),
DEF_MOD("sys-dmac0", 219, R8A7795_CLK_S0D3), DEF_MOD("sys-dmac0", 219, R8A7795_CLK_S0D3),
DEF_MOD("sceg-pub", 229, R8A7795_CLK_CR),
DEF_MOD("cmt3", 300, R8A7795_CLK_R), DEF_MOD("cmt3", 300, R8A7795_CLK_R),
DEF_MOD("cmt2", 301, R8A7795_CLK_R), DEF_MOD("cmt2", 301, R8A7795_CLK_R),
DEF_MOD("cmt1", 302, R8A7795_CLK_R), DEF_MOD("cmt1", 302, R8A7795_CLK_R),
......
This diff is collapsed.
...@@ -28,7 +28,7 @@ static const char * const emaca_free_mux[] = {"peri_emaca_clk", "boot_clk"}; ...@@ -28,7 +28,7 @@ static const char * const emaca_free_mux[] = {"peri_emaca_clk", "boot_clk"};
static const char * const emacb_free_mux[] = {"peri_emacb_clk", "boot_clk"}; static const char * const emacb_free_mux[] = {"peri_emacb_clk", "boot_clk"};
static const char * const emac_ptp_free_mux[] = {"peri_emac_ptp_clk", "boot_clk"}; static const char * const emac_ptp_free_mux[] = {"peri_emac_ptp_clk", "boot_clk"};
static const char * const gpio_db_free_mux[] = {"peri_gpio_db_clk", "boot_clk"}; static const char * const gpio_db_free_mux[] = {"peri_gpio_db_clk", "boot_clk"};
static const char * const sdmmc_free_mux[] = {"peri_sdmmc_clk", "boot_clk"}; static const char * const sdmmc_free_mux[] = {"main_sdmmc_clk", "boot_clk"};
static const char * const s2f_usr1_free_mux[] = {"peri_s2f_usr1_clk", "boot_clk"}; static const char * const s2f_usr1_free_mux[] = {"peri_s2f_usr1_clk", "boot_clk"};
static const char * const psi_ref_free_mux[] = {"peri_psi_ref_clk", "boot_clk"}; static const char * const psi_ref_free_mux[] = {"peri_psi_ref_clk", "boot_clk"};
static const char * const mpu_mux[] = { "mpu_free_clk", "boot_clk",}; static const char * const mpu_mux[] = { "mpu_free_clk", "boot_clk",};
...@@ -37,6 +37,11 @@ static const char * const s2f_usr0_mux[] = {"f2s_free_clk", "boot_clk"}; ...@@ -37,6 +37,11 @@ static const char * const s2f_usr0_mux[] = {"f2s_free_clk", "boot_clk"};
static const char * const emac_mux[] = {"emaca_free_clk", "emacb_free_clk"}; static const char * const emac_mux[] = {"emaca_free_clk", "emacb_free_clk"};
static const char * const noc_mux[] = {"noc_free_clk", "boot_clk"}; static const char * const noc_mux[] = {"noc_free_clk", "boot_clk"};
static const char * const mpu_free_mux[] = {"main_mpu_base_clk",
"peri_mpu_base_clk",
"osc1", "cb_intosc_hs_div2_clk",
"f2s_free_clk"};
/* clocks in AO (always on) controller */ /* clocks in AO (always on) controller */
static const struct stratix10_pll_clock s10_pll_clks[] = { static const struct stratix10_pll_clock s10_pll_clks[] = {
{ STRATIX10_BOOT_CLK, "boot_clk", boot_mux, ARRAY_SIZE(boot_mux), 0, { STRATIX10_BOOT_CLK, "boot_clk", boot_mux, ARRAY_SIZE(boot_mux), 0,
...@@ -57,7 +62,7 @@ static const struct stratix10_perip_c_clock s10_main_perip_c_clks[] = { ...@@ -57,7 +62,7 @@ static const struct stratix10_perip_c_clock s10_main_perip_c_clks[] = {
}; };
static const struct stratix10_perip_cnt_clock s10_main_perip_cnt_clks[] = { static const struct stratix10_perip_cnt_clock s10_main_perip_cnt_clks[] = {
{ STRATIX10_MPU_FREE_CLK, "mpu_free_clk", NULL, cntr_mux, ARRAY_SIZE(cntr_mux), { STRATIX10_MPU_FREE_CLK, "mpu_free_clk", NULL, mpu_free_mux, ARRAY_SIZE(mpu_free_mux),
0, 0x48, 0, 0, 0}, 0, 0x48, 0, 0, 0},
{ STRATIX10_NOC_FREE_CLK, "noc_free_clk", NULL, noc_free_mux, ARRAY_SIZE(noc_free_mux), { STRATIX10_NOC_FREE_CLK, "noc_free_clk", NULL, noc_free_mux, ARRAY_SIZE(noc_free_mux),
0, 0x4C, 0, 0, 0}, 0, 0x4C, 0, 0, 0},
......
...@@ -192,6 +192,8 @@ ...@@ -192,6 +192,8 @@
#define GCC_VS_CTRL_CLK_SRC 182 #define GCC_VS_CTRL_CLK_SRC 182
#define GCC_VSENSOR_CLK_SRC 183 #define GCC_VSENSOR_CLK_SRC 183
#define GPLL4 184 #define GPLL4 184
#define GCC_CPUSS_DVM_BUS_CLK 185
#define GCC_CPUSS_GNOC_CLK 186
/* GCC Resets */ /* GCC Resets */
#define GCC_MMSS_BCR 0 #define GCC_MMSS_BCR 0
......
/* SPDX-License-Identifier: GPL-2.0 */
/*
* R9A06G032 sysctrl IDs
*
* Copyright (C) 2018 Renesas Electronics Europe Limited
*
* Michel Pollet <michel.pollet@bp.renesas.com>, <buserror@gmail.com>
*/
#ifndef __DT_BINDINGS_R9A06G032_SYSCTRL_H__
#define __DT_BINDINGS_R9A06G032_SYSCTRL_H__
#define R9A06G032_CLK_PLL_USB 1
#define R9A06G032_CLK_48 1 /* AKA CLK_PLL_USB */
#define R9A06G032_MSEBIS_CLK 3 /* AKA CLKOUT_D16 */
#define R9A06G032_MSEBIM_CLK 3 /* AKA CLKOUT_D16 */
#define R9A06G032_CLK_DDRPHY_PLLCLK 5 /* AKA CLKOUT_D1OR2 */
#define R9A06G032_CLK50 6 /* AKA CLKOUT_D20 */
#define R9A06G032_CLK25 7 /* AKA CLKOUT_D40 */
#define R9A06G032_CLK125 9 /* AKA CLKOUT_D8 */
#define R9A06G032_CLK_P5_PG1 17 /* AKA DIV_P5_PG */
#define R9A06G032_CLK_REF_SYNC 21 /* AKA DIV_REF_SYNC */
#define R9A06G032_CLK_25_PG4 26
#define R9A06G032_CLK_25_PG5 27
#define R9A06G032_CLK_25_PG6 28
#define R9A06G032_CLK_25_PG7 29
#define R9A06G032_CLK_25_PG8 30
#define R9A06G032_CLK_ADC 31
#define R9A06G032_CLK_ECAT100 32
#define R9A06G032_CLK_HSR100 33
#define R9A06G032_CLK_I2C0 34
#define R9A06G032_CLK_I2C1 35
#define R9A06G032_CLK_MII_REF 36
#define R9A06G032_CLK_NAND 37
#define R9A06G032_CLK_NOUSBP2_PG6 38
#define R9A06G032_CLK_P1_PG2 39
#define R9A06G032_CLK_P1_PG3 40
#define R9A06G032_CLK_P1_PG4 41
#define R9A06G032_CLK_P4_PG3 42
#define R9A06G032_CLK_P4_PG4 43
#define R9A06G032_CLK_P6_PG1 44
#define R9A06G032_CLK_P6_PG2 45
#define R9A06G032_CLK_P6_PG3 46
#define R9A06G032_CLK_P6_PG4 47
#define R9A06G032_CLK_PCI_USB 48
#define R9A06G032_CLK_QSPI0 49
#define R9A06G032_CLK_QSPI1 50
#define R9A06G032_CLK_RGMII_REF 51
#define R9A06G032_CLK_RMII_REF 52
#define R9A06G032_CLK_SDIO0 53
#define R9A06G032_CLK_SDIO1 54
#define R9A06G032_CLK_SERCOS100 55
#define R9A06G032_CLK_SLCD 56
#define R9A06G032_CLK_SPI0 57
#define R9A06G032_CLK_SPI1 58
#define R9A06G032_CLK_SPI2 59
#define R9A06G032_CLK_SPI3 60
#define R9A06G032_CLK_SPI4 61
#define R9A06G032_CLK_SPI5 62
#define R9A06G032_CLK_SWITCH 63
#define R9A06G032_HCLK_ECAT125 65
#define R9A06G032_HCLK_PINCONFIG 66
#define R9A06G032_HCLK_SERCOS 67
#define R9A06G032_HCLK_SGPIO2 68
#define R9A06G032_HCLK_SGPIO3 69
#define R9A06G032_HCLK_SGPIO4 70
#define R9A06G032_HCLK_TIMER0 71
#define R9A06G032_HCLK_TIMER1 72
#define R9A06G032_HCLK_USBF 73
#define R9A06G032_HCLK_USBH 74
#define R9A06G032_HCLK_USBPM 75
#define R9A06G032_CLK_48_PG_F 76
#define R9A06G032_CLK_48_PG4 77
#define R9A06G032_CLK_DDRPHY_PCLK 81 /* AKA CLK_REF_SYNC_D4 */
#define R9A06G032_CLK_FW 81 /* AKA CLK_REF_SYNC_D4 */
#define R9A06G032_CLK_CRYPTO 81 /* AKA CLK_REF_SYNC_D4 */
#define R9A06G032_CLK_A7MP 84 /* AKA DIV_CA7 */
#define R9A06G032_HCLK_CAN0 85
#define R9A06G032_HCLK_CAN1 86
#define R9A06G032_HCLK_DELTASIGMA 87
#define R9A06G032_HCLK_PWMPTO 88
#define R9A06G032_HCLK_RSV 89
#define R9A06G032_HCLK_SGPIO0 90
#define R9A06G032_HCLK_SGPIO1 91
#define R9A06G032_RTOS_MDC 92
#define R9A06G032_CLK_CM3 93
#define R9A06G032_CLK_DDRC 94
#define R9A06G032_CLK_ECAT25 95
#define R9A06G032_CLK_HSR50 96
#define R9A06G032_CLK_HW_RTOS 97
#define R9A06G032_CLK_SERCOS50 98
#define R9A06G032_HCLK_ADC 99
#define R9A06G032_HCLK_CM3 100
#define R9A06G032_HCLK_CRYPTO_EIP150 101
#define R9A06G032_HCLK_CRYPTO_EIP93 102
#define R9A06G032_HCLK_DDRC 103
#define R9A06G032_HCLK_DMA0 104
#define R9A06G032_HCLK_DMA1 105
#define R9A06G032_HCLK_GMAC0 106
#define R9A06G032_HCLK_GMAC1 107
#define R9A06G032_HCLK_GPIO0 108
#define R9A06G032_HCLK_GPIO1 109
#define R9A06G032_HCLK_GPIO2 110
#define R9A06G032_HCLK_HSR 111
#define R9A06G032_HCLK_I2C0 112
#define R9A06G032_HCLK_I2C1 113
#define R9A06G032_HCLK_LCD 114
#define R9A06G032_HCLK_MSEBI_M 115
#define R9A06G032_HCLK_MSEBI_S 116
#define R9A06G032_HCLK_NAND 117
#define R9A06G032_HCLK_PG_I 118
#define R9A06G032_HCLK_PG19 119
#define R9A06G032_HCLK_PG20 120
#define R9A06G032_HCLK_PG3 121
#define R9A06G032_HCLK_PG4 122
#define R9A06G032_HCLK_QSPI0 123
#define R9A06G032_HCLK_QSPI1 124
#define R9A06G032_HCLK_ROM 125
#define R9A06G032_HCLK_RTC 126
#define R9A06G032_HCLK_SDIO0 127
#define R9A06G032_HCLK_SDIO1 128
#define R9A06G032_HCLK_SEMAP 129
#define R9A06G032_HCLK_SPI0 130
#define R9A06G032_HCLK_SPI1 131
#define R9A06G032_HCLK_SPI2 132
#define R9A06G032_HCLK_SPI3 133
#define R9A06G032_HCLK_SPI4 134
#define R9A06G032_HCLK_SPI5 135
#define R9A06G032_HCLK_SWITCH 136
#define R9A06G032_HCLK_SWITCH_RG 137
#define R9A06G032_HCLK_UART0 138
#define R9A06G032_HCLK_UART1 139
#define R9A06G032_HCLK_UART2 140
#define R9A06G032_HCLK_UART3 141
#define R9A06G032_HCLK_UART4 142
#define R9A06G032_HCLK_UART5 143
#define R9A06G032_HCLK_UART6 144
#define R9A06G032_HCLK_UART7 145
#define R9A06G032_CLK_UART0 146
#define R9A06G032_CLK_UART1 147
#define R9A06G032_CLK_UART2 148
#define R9A06G032_CLK_UART3 149
#define R9A06G032_CLK_UART4 150
#define R9A06G032_CLK_UART5 151
#define R9A06G032_CLK_UART6 152
#define R9A06G032_CLK_UART7 153
#endif /* __DT_BINDINGS_R9A06G032_SYSCTRL_H__ */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment