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

From: Sarangdhar Joshi
Date: Fri Nov 11 2016 - 16:59:10 EST


On 11/09/2016 05:47 PM, 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;

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?

I saw quite a few places in kernel where similar type casts are used (e.g gpio drivers) and ended up using uint32_t. uintptr_t is nothing but typedef of an unsigned long. Probably it's a good idea to just use unsigned long instead.


+ 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;
+ }
}



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