Merge branches 'clk-allwinner', 'clk-rockchip', 'clk-tegra', 'clk-berlin' and 'clk-qcom-mmagic' into clk-next
* clk-allwinner: clk: sunxi-ng: r40: export a regmap to access the GMAC register clk: sunxi-ng: r40: rewrite init code to a platform driver clk: sunxi-ng: add support for H6 PRCM CCU * clk-rockchip: clk: rockchip: remove deprecated gate-clk code and dt-binding clk: rockchip: use match_string() helper * clk-tegra: clk: tegra: Add quirk for getting CDEV1/2 clocks on Tegra20 clk: tegra20: Correct parents of CDEV1/2 clocks clk: tegra20: Add DEV1/DEV2 OSC dividers * clk-berlin: clk: berlin: switch to SPDX license identifier * clk-qcom-mmagic: clk: qcom: mmcc-msm8996: leave all mmagic gdscs and clocks always enabled clk: qcom: Register the gdscs before the clocks clk: qcom: gdsc: Add support for ALWAYS_ON gdscs
Dieser Commit ist enthalten in:
@@ -228,22 +228,6 @@ int qcom_cc_really_probe(struct platform_device *pdev,
|
||||
if (!cc)
|
||||
return -ENOMEM;
|
||||
|
||||
cc->rclks = rclks;
|
||||
cc->num_rclks = num_clks;
|
||||
|
||||
for (i = 0; i < num_clks; i++) {
|
||||
if (!rclks[i])
|
||||
continue;
|
||||
|
||||
ret = devm_clk_register_regmap(dev, rclks[i]);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = devm_of_clk_add_hw_provider(dev, qcom_cc_clk_hw_get, cc);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
reset = &cc->reset;
|
||||
reset->rcdev.of_node = dev->of_node;
|
||||
reset->rcdev.ops = &qcom_reset_ops;
|
||||
@@ -272,6 +256,22 @@ int qcom_cc_really_probe(struct platform_device *pdev,
|
||||
return ret;
|
||||
}
|
||||
|
||||
cc->rclks = rclks;
|
||||
cc->num_rclks = num_clks;
|
||||
|
||||
for (i = 0; i < num_clks; i++) {
|
||||
if (!rclks[i])
|
||||
continue;
|
||||
|
||||
ret = devm_clk_register_regmap(dev, rclks[i]);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = devm_of_clk_add_hw_provider(dev, qcom_cc_clk_hw_get, cc);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(qcom_cc_really_probe);
|
||||
|
@@ -3105,7 +3105,7 @@ static struct gdsc aggre0_noc_gdsc = {
|
||||
.name = "aggre0_noc",
|
||||
},
|
||||
.pwrsts = PWRSTS_OFF_ON,
|
||||
.flags = VOTABLE,
|
||||
.flags = VOTABLE | ALWAYS_ON,
|
||||
};
|
||||
|
||||
static struct gdsc hlos1_vote_aggre0_noc_gdsc = {
|
||||
|
@@ -291,6 +291,14 @@ static int gdsc_init(struct gdsc *sc)
|
||||
if ((sc->flags & VOTABLE) && on)
|
||||
gdsc_enable(&sc->pd);
|
||||
|
||||
/* If ALWAYS_ON GDSCs are not ON, turn them ON */
|
||||
if (sc->flags & ALWAYS_ON) {
|
||||
if (!on)
|
||||
gdsc_enable(&sc->pd);
|
||||
on = true;
|
||||
sc->pd.flags |= GENPD_FLAG_ALWAYS_ON;
|
||||
}
|
||||
|
||||
if (on || (sc->pwrsts & PWRSTS_RET))
|
||||
gdsc_force_mem_on(sc);
|
||||
else
|
||||
|
@@ -53,6 +53,7 @@ struct gdsc {
|
||||
#define VOTABLE BIT(0)
|
||||
#define CLAMP_IO BIT(1)
|
||||
#define HW_CTRL BIT(2)
|
||||
#define ALWAYS_ON BIT(3)
|
||||
struct reset_controller_dev *rcdev;
|
||||
unsigned int *resets;
|
||||
unsigned int reset_count;
|
||||
|
@@ -1245,7 +1245,7 @@ static struct clk_branch mmss_mmagic_ahb_clk = {
|
||||
.name = "mmss_mmagic_ahb_clk",
|
||||
.parent_names = (const char *[]){ "ahb_clk_src" },
|
||||
.num_parents = 1,
|
||||
.flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
|
||||
.flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
|
||||
.ops = &clk_branch2_ops,
|
||||
},
|
||||
},
|
||||
@@ -1260,7 +1260,7 @@ static struct clk_branch mmss_mmagic_cfg_ahb_clk = {
|
||||
.name = "mmss_mmagic_cfg_ahb_clk",
|
||||
.parent_names = (const char *[]){ "ahb_clk_src" },
|
||||
.num_parents = 1,
|
||||
.flags = CLK_SET_RATE_PARENT,
|
||||
.flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
|
||||
.ops = &clk_branch2_ops,
|
||||
},
|
||||
},
|
||||
@@ -1319,7 +1319,7 @@ static struct clk_branch mmagic_camss_axi_clk = {
|
||||
.name = "mmagic_camss_axi_clk",
|
||||
.parent_names = (const char *[]){ "axi_clk_src" },
|
||||
.num_parents = 1,
|
||||
.flags = CLK_SET_RATE_PARENT,
|
||||
.flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
|
||||
.ops = &clk_branch2_ops,
|
||||
},
|
||||
},
|
||||
@@ -1334,7 +1334,7 @@ static struct clk_branch mmagic_camss_noc_cfg_ahb_clk = {
|
||||
.name = "mmagic_camss_noc_cfg_ahb_clk",
|
||||
.parent_names = (const char *[]){ "gcc_mmss_noc_cfg_ahb_clk" },
|
||||
.num_parents = 1,
|
||||
.flags = CLK_SET_RATE_PARENT,
|
||||
.flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
|
||||
.ops = &clk_branch2_ops,
|
||||
},
|
||||
},
|
||||
@@ -1439,7 +1439,7 @@ static struct clk_branch mmagic_mdss_axi_clk = {
|
||||
.name = "mmagic_mdss_axi_clk",
|
||||
.parent_names = (const char *[]){ "axi_clk_src" },
|
||||
.num_parents = 1,
|
||||
.flags = CLK_SET_RATE_PARENT,
|
||||
.flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
|
||||
.ops = &clk_branch2_ops,
|
||||
},
|
||||
},
|
||||
@@ -1454,7 +1454,7 @@ static struct clk_branch mmagic_mdss_noc_cfg_ahb_clk = {
|
||||
.name = "mmagic_mdss_noc_cfg_ahb_clk",
|
||||
.parent_names = (const char *[]){ "gcc_mmss_noc_cfg_ahb_clk" },
|
||||
.num_parents = 1,
|
||||
.flags = CLK_SET_RATE_PARENT,
|
||||
.flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
|
||||
.ops = &clk_branch2_ops,
|
||||
},
|
||||
},
|
||||
@@ -1529,7 +1529,7 @@ static struct clk_branch mmagic_video_axi_clk = {
|
||||
.name = "mmagic_video_axi_clk",
|
||||
.parent_names = (const char *[]){ "axi_clk_src" },
|
||||
.num_parents = 1,
|
||||
.flags = CLK_SET_RATE_PARENT,
|
||||
.flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
|
||||
.ops = &clk_branch2_ops,
|
||||
},
|
||||
},
|
||||
@@ -1544,7 +1544,7 @@ static struct clk_branch mmagic_video_noc_cfg_ahb_clk = {
|
||||
.name = "mmagic_video_noc_cfg_ahb_clk",
|
||||
.parent_names = (const char *[]){ "gcc_mmss_noc_cfg_ahb_clk" },
|
||||
.num_parents = 1,
|
||||
.flags = CLK_SET_RATE_PARENT,
|
||||
.flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
|
||||
.ops = &clk_branch2_ops,
|
||||
},
|
||||
},
|
||||
@@ -2919,7 +2919,7 @@ static struct gdsc mmagic_video_gdsc = {
|
||||
.name = "mmagic_video",
|
||||
},
|
||||
.pwrsts = PWRSTS_OFF_ON,
|
||||
.flags = VOTABLE,
|
||||
.flags = VOTABLE | ALWAYS_ON,
|
||||
};
|
||||
|
||||
static struct gdsc mmagic_mdss_gdsc = {
|
||||
@@ -2929,7 +2929,7 @@ static struct gdsc mmagic_mdss_gdsc = {
|
||||
.name = "mmagic_mdss",
|
||||
},
|
||||
.pwrsts = PWRSTS_OFF_ON,
|
||||
.flags = VOTABLE,
|
||||
.flags = VOTABLE | ALWAYS_ON,
|
||||
};
|
||||
|
||||
static struct gdsc mmagic_camss_gdsc = {
|
||||
@@ -2939,7 +2939,7 @@ static struct gdsc mmagic_camss_gdsc = {
|
||||
.name = "mmagic_camss",
|
||||
},
|
||||
.pwrsts = PWRSTS_OFF_ON,
|
||||
.flags = VOTABLE,
|
||||
.flags = VOTABLE | ALWAYS_ON,
|
||||
};
|
||||
|
||||
static struct gdsc venus_gdsc = {
|
||||
|
In neuem Issue referenzieren
Einen Benutzer sperren