Message ID | 20220711104719.40939-6-robimarko@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [1/6] clk: qcom: clk-rcg2: add rcg2 mux ops | expand |
On 11/07/2022 12:47, Robert Marko wrote: > Add support for IPQ8074 since it uses the same PLL setup, however it does > not require the Alpha PLL to be reconfigured. > > Signed-off-by: Robert Marko <robimarko@gmail.com> > --- > drivers/clk/qcom/apss-ipq-pll.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/clk/qcom/apss-ipq-pll.c b/drivers/clk/qcom/apss-ipq-pll.c > index bef7899ad0d6..acfb3ec4f142 100644 > --- a/drivers/clk/qcom/apss-ipq-pll.c > +++ b/drivers/clk/qcom/apss-ipq-pll.c > @@ -55,6 +55,7 @@ static const struct regmap_config ipq_pll_regmap_config = { > static int apss_ipq_pll_probe(struct platform_device *pdev) > { > struct device *dev = &pdev->dev; > + struct device_node *node = dev->of_node; > struct regmap *regmap; > void __iomem *base; > int ret; > @@ -67,7 +68,8 @@ static int apss_ipq_pll_probe(struct platform_device *pdev) > if (IS_ERR(regmap)) > return PTR_ERR(regmap); > > - clk_alpha_pll_configure(&ipq_pll, regmap, &ipq_pll_config); > + if (of_device_is_compatible(node, "qcom,ipq6018-a53pll")) Use match data instead with quirks. Better not to encode compatibles all through the code. Best regards, Krzysztof
On Mon, 11 Jul 2022 at 14:22, Robert Marko <robimarko@gmail.com> wrote: > > Add support for IPQ8074 since it uses the same PLL setup, however it does > not require the Alpha PLL to be reconfigured. > > Signed-off-by: Robert Marko <robimarko@gmail.com> > --- > drivers/clk/qcom/apss-ipq-pll.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/clk/qcom/apss-ipq-pll.c b/drivers/clk/qcom/apss-ipq-pll.c > index bef7899ad0d6..acfb3ec4f142 100644 > --- a/drivers/clk/qcom/apss-ipq-pll.c > +++ b/drivers/clk/qcom/apss-ipq-pll.c > @@ -55,6 +55,7 @@ static const struct regmap_config ipq_pll_regmap_config = { > static int apss_ipq_pll_probe(struct platform_device *pdev) > { > struct device *dev = &pdev->dev; > + struct device_node *node = dev->of_node; > struct regmap *regmap; > void __iomem *base; > int ret; > @@ -67,7 +68,8 @@ static int apss_ipq_pll_probe(struct platform_device *pdev) > if (IS_ERR(regmap)) > return PTR_ERR(regmap); > > - clk_alpha_pll_configure(&ipq_pll, regmap, &ipq_pll_config); > + if (of_device_is_compatible(node, "qcom,ipq6018-a53pll")) > + clk_alpha_pll_configure(&ipq_pll, regmap, &ipq_pll_config); I'd suggest having the 8074 config here too. It seems logical to me to make sure that the pll is configured correctly. > > ret = devm_clk_register_regmap(dev, &ipq_pll.clkr); > if (ret) > @@ -79,6 +81,7 @@ static int apss_ipq_pll_probe(struct platform_device *pdev) > > static const struct of_device_id apss_ipq_pll_match_table[] = { > { .compatible = "qcom,ipq6018-a53pll" }, > + { .compatible = "qcom,ipq8074-a53pll" }, > { } > }; > MODULE_DEVICE_TABLE(of, apss_ipq_pll_match_table); > -- > 2.36.1 >
On Mon, 11 Jul 2022 at 14:51, Dmitry Baryshkov <dmitry.baryshkov@linaro.org> wrote: > > On Mon, 11 Jul 2022 at 14:22, Robert Marko <robimarko@gmail.com> wrote: > > > > Add support for IPQ8074 since it uses the same PLL setup, however it does > > not require the Alpha PLL to be reconfigured. > > > > Signed-off-by: Robert Marko <robimarko@gmail.com> > > --- > > drivers/clk/qcom/apss-ipq-pll.c | 5 ++++- > > 1 file changed, 4 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/clk/qcom/apss-ipq-pll.c b/drivers/clk/qcom/apss-ipq-pll.c > > index bef7899ad0d6..acfb3ec4f142 100644 > > --- a/drivers/clk/qcom/apss-ipq-pll.c > > +++ b/drivers/clk/qcom/apss-ipq-pll.c > > @@ -55,6 +55,7 @@ static const struct regmap_config ipq_pll_regmap_config = { > > static int apss_ipq_pll_probe(struct platform_device *pdev) > > { > > struct device *dev = &pdev->dev; > > + struct device_node *node = dev->of_node; > > struct regmap *regmap; > > void __iomem *base; > > int ret; > > @@ -67,7 +68,8 @@ static int apss_ipq_pll_probe(struct platform_device *pdev) > > if (IS_ERR(regmap)) > > return PTR_ERR(regmap); > > > > - clk_alpha_pll_configure(&ipq_pll, regmap, &ipq_pll_config); > > + if (of_device_is_compatible(node, "qcom,ipq6018-a53pll")) > > + clk_alpha_pll_configure(&ipq_pll, regmap, &ipq_pll_config); > > I'd suggest having the 8074 config here too. It seems logical to me to > make sure that the pll is configured correctly. Hi, I have reworked the driver to use match data so it can be easily provided, However, I dont have it as the downstream QCA kernel does not reconfigure the PLL, unlike IPQ6018. I can probably read the registers from a running board and provide that? Regards, Robert > > > > > ret = devm_clk_register_regmap(dev, &ipq_pll.clkr); > > if (ret) > > @@ -79,6 +81,7 @@ static int apss_ipq_pll_probe(struct platform_device *pdev) > > > > static const struct of_device_id apss_ipq_pll_match_table[] = { > > { .compatible = "qcom,ipq6018-a53pll" }, > > + { .compatible = "qcom,ipq8074-a53pll" }, > > { } > > }; > > MODULE_DEVICE_TABLE(of, apss_ipq_pll_match_table); > > -- > > 2.36.1 > > > > > -- > With best wishes > Dmitry
On Mon, 11 Jul 2022 at 15:55, Robert Marko <robimarko@gmail.com> wrote: > > On Mon, 11 Jul 2022 at 14:51, Dmitry Baryshkov > <dmitry.baryshkov@linaro.org> wrote: > > > > On Mon, 11 Jul 2022 at 14:22, Robert Marko <robimarko@gmail.com> wrote: > > > > > > Add support for IPQ8074 since it uses the same PLL setup, however it does > > > not require the Alpha PLL to be reconfigured. > > > > > > Signed-off-by: Robert Marko <robimarko@gmail.com> > > > --- > > > drivers/clk/qcom/apss-ipq-pll.c | 5 ++++- > > > 1 file changed, 4 insertions(+), 1 deletion(-) > > > > > > diff --git a/drivers/clk/qcom/apss-ipq-pll.c b/drivers/clk/qcom/apss-ipq-pll.c > > > index bef7899ad0d6..acfb3ec4f142 100644 > > > --- a/drivers/clk/qcom/apss-ipq-pll.c > > > +++ b/drivers/clk/qcom/apss-ipq-pll.c > > > @@ -55,6 +55,7 @@ static const struct regmap_config ipq_pll_regmap_config = { > > > static int apss_ipq_pll_probe(struct platform_device *pdev) > > > { > > > struct device *dev = &pdev->dev; > > > + struct device_node *node = dev->of_node; > > > struct regmap *regmap; > > > void __iomem *base; > > > int ret; > > > @@ -67,7 +68,8 @@ static int apss_ipq_pll_probe(struct platform_device *pdev) > > > if (IS_ERR(regmap)) > > > return PTR_ERR(regmap); > > > > > > - clk_alpha_pll_configure(&ipq_pll, regmap, &ipq_pll_config); > > > + if (of_device_is_compatible(node, "qcom,ipq6018-a53pll")) > > > + clk_alpha_pll_configure(&ipq_pll, regmap, &ipq_pll_config); > > > > I'd suggest having the 8074 config here too. It seems logical to me to > > make sure that the pll is configured correctly. > > Hi, > > I have reworked the driver to use match data so it can be easily provided, > However, I dont have it as the downstream QCA kernel does not > reconfigure the PLL, unlike IPQ6018. > I can probably read the registers from a running board and provide that? Yes, please try that. > > Regards, > Robert > > > > > > > > ret = devm_clk_register_regmap(dev, &ipq_pll.clkr); > > > if (ret) > > > @@ -79,6 +81,7 @@ static int apss_ipq_pll_probe(struct platform_device *pdev) > > > > > > static const struct of_device_id apss_ipq_pll_match_table[] = { > > > { .compatible = "qcom,ipq6018-a53pll" }, > > > + { .compatible = "qcom,ipq8074-a53pll" }, > > > { } > > > }; > > > MODULE_DEVICE_TABLE(of, apss_ipq_pll_match_table); > > > -- > > > 2.36.1 > > > > > > > > > -- > > With best wishes > > Dmitry
diff --git a/drivers/clk/qcom/apss-ipq-pll.c b/drivers/clk/qcom/apss-ipq-pll.c index bef7899ad0d6..acfb3ec4f142 100644 --- a/drivers/clk/qcom/apss-ipq-pll.c +++ b/drivers/clk/qcom/apss-ipq-pll.c @@ -55,6 +55,7 @@ static const struct regmap_config ipq_pll_regmap_config = { static int apss_ipq_pll_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; + struct device_node *node = dev->of_node; struct regmap *regmap; void __iomem *base; int ret; @@ -67,7 +68,8 @@ static int apss_ipq_pll_probe(struct platform_device *pdev) if (IS_ERR(regmap)) return PTR_ERR(regmap); - clk_alpha_pll_configure(&ipq_pll, regmap, &ipq_pll_config); + if (of_device_is_compatible(node, "qcom,ipq6018-a53pll")) + clk_alpha_pll_configure(&ipq_pll, regmap, &ipq_pll_config); ret = devm_clk_register_regmap(dev, &ipq_pll.clkr); if (ret) @@ -79,6 +81,7 @@ static int apss_ipq_pll_probe(struct platform_device *pdev) static const struct of_device_id apss_ipq_pll_match_table[] = { { .compatible = "qcom,ipq6018-a53pll" }, + { .compatible = "qcom,ipq8074-a53pll" }, { } }; MODULE_DEVICE_TABLE(of, apss_ipq_pll_match_table);
Add support for IPQ8074 since it uses the same PLL setup, however it does not require the Alpha PLL to be reconfigured. Signed-off-by: Robert Marko <robimarko@gmail.com> --- drivers/clk/qcom/apss-ipq-pll.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)