Re: [PATCH v2 2/3] firmware: qcom: scm: Remove core, iface and bus clocks dependency

From: Sarangdhar Joshi
Date: Fri Nov 11 2016 - 17:07:36 EST


On 11/09/2016 09:55 PM, Bjorn Andersson wrote:
On Wed 09 Nov 17:47 PST 2016, Stephen Boyd wrote:

On 11/03, Sarangdhar Joshi wrote:
diff --git a/drivers/firmware/qcom_scm.c b/drivers/firmware/qcom_scm.c
index d79fecd..844e90d 100644
--- a/drivers/firmware/qcom_scm.c
+++ b/drivers/firmware/qcom_scm.c
@@ -380,32 +384,40 @@ EXPORT_SYMBOL(qcom_scm_is_available);
static int qcom_scm_probe(struct platform_device *pdev)
{
struct qcom_scm *scm;
+ uint32_t clks;

If this was unsigned long flags;


I did look at this too and could only find a mixture of ways people have
done this. Isn't the correct type for this intptr_t?

That's true. There are lot of variations of how it's done. I had referred one of the gpio driver for this. I think it's safe to use unsigned long instead as Stephen suggested.

Btw I don't see intptr_t defined in include/linux/types.h.

Regards,
Sarang


Regards,
Bjorn

int ret;

scm = devm_kzalloc(&pdev->dev, sizeof(*scm), GFP_KERNEL);
if (!scm)
return -ENOMEM;

- scm->core_clk = devm_clk_get(&pdev->dev, "core");
- if (IS_ERR(scm->core_clk)) {
- if (PTR_ERR(scm->core_clk) == -EPROBE_DEFER)
- return PTR_ERR(scm->core_clk);
+ clks = (uint32_t)((uintptr_t)of_device_get_match_data(&pdev->dev));

then this could just be a cast to unsigned long?

+ if (clks & SCM_HAS_CORE_CLK) {
+ scm->core_clk = devm_clk_get(&pdev->dev, "core");
+ if (IS_ERR(scm->core_clk)) {
+ if (PTR_ERR(scm->core_clk) == -EPROBE_DEFER)
+ return PTR_ERR(scm->core_clk);

- scm->core_clk = NULL;
+ scm->core_clk = NULL;
+ }
}

--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project


--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project