From a0bcc432eb904074b98ea45def6d0a614476cbfe Mon Sep 17 00:00:00 2001 From: Vivek Aknurwar Date: Tue, 5 May 2020 22:24:27 -0700 Subject: [PATCH] clk: qcom: lahaina: Enable common regulator handle initialization Enable common regulator handle initialization by adding clk regulator vote data and clean up clock controllers probe functions to allow them to move to common clock regulator initialization at one place. Change-Id: I058982d5e5ed6db7bf856e16b6d39bc0e68f44f3 Signed-off-by: Vivek Aknurwar --- drivers/clk/qcom/camcc-lahaina.c | 27 ++++++++++----------------- drivers/clk/qcom/dispcc-lahaina.c | 15 +++++++-------- drivers/clk/qcom/gcc-lahaina.c | 15 +++++++-------- drivers/clk/qcom/gpucc-lahaina.c | 15 +++++++-------- drivers/clk/qcom/videocc-lahaina.c | 27 ++++++++++----------------- 5 files changed, 41 insertions(+), 58 deletions(-) diff --git a/drivers/clk/qcom/camcc-lahaina.c b/drivers/clk/qcom/camcc-lahaina.c index bf286a14896d..c7d2adc145fc 100644 --- a/drivers/clk/qcom/camcc-lahaina.c +++ b/drivers/clk/qcom/camcc-lahaina.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-only /* - * Copyright (c) 2019, The Linux Foundation. All rights reserved. + * Copyright (c) 2019-2020, The Linux Foundation. All rights reserved. */ #include @@ -24,8 +24,13 @@ #include "reset.h" #include "vdd-level.h" -static DEFINE_VDD_REGULATORS(vdd_mm, VDD_NUM, 1, vdd_corner); -static DEFINE_VDD_REGULATORS(vdd_mx, VDD_NUM, 1, vdd_corner); +static DEFINE_VDD_REGULATORS(vdd_mm, VDD_NOMINAL + 1, 1, vdd_corner); +static DEFINE_VDD_REGULATORS(vdd_mx, VDD_HIGH + 1, 1, vdd_corner); + +static struct clk_vdd_class *cam_cc_lahaina_regulators[] = { + &vdd_mm, + &vdd_mx, +}; enum { P_BI_TCXO, @@ -2946,6 +2951,8 @@ static const struct qcom_cc_desc cam_cc_lahaina_desc = { .num_clks = ARRAY_SIZE(cam_cc_lahaina_clocks), .resets = cam_cc_lahaina_resets, .num_resets = ARRAY_SIZE(cam_cc_lahaina_resets), + .clk_regulators = cam_cc_lahaina_regulators, + .num_clk_regulators = ARRAY_SIZE(cam_cc_lahaina_regulators), }; static const struct of_device_id cam_cc_lahaina_match_table[] = { @@ -2968,20 +2975,6 @@ static int cam_cc_lahaina_probe(struct platform_device *pdev) } devm_clk_put(&pdev->dev, clk); - vdd_mm.regulator[0] = devm_regulator_get(&pdev->dev, "vdd_mm"); - if (IS_ERR(vdd_mm.regulator[0])) { - if (PTR_ERR(vdd_mm.regulator[0]) != -EPROBE_DEFER) - dev_err(&pdev->dev, "Unable to get vdd_mm regulator\n"); - return PTR_ERR(vdd_mm.regulator[0]); - } - - vdd_mx.regulator[0] = devm_regulator_get(&pdev->dev, "vdd_mx"); - if (IS_ERR(vdd_mx.regulator[0])) { - if (PTR_ERR(vdd_mx.regulator[0]) != -EPROBE_DEFER) - dev_err(&pdev->dev, "Unable to get vdd_mx regulator\n"); - return PTR_ERR(vdd_mx.regulator[0]); - } - regmap = qcom_cc_map(pdev, &cam_cc_lahaina_desc); if (IS_ERR(regmap)) { dev_err(&pdev->dev, "Failed to map cam CC registers\n"); diff --git a/drivers/clk/qcom/dispcc-lahaina.c b/drivers/clk/qcom/dispcc-lahaina.c index b78b4ad7ca09..4fffc7e0e96f 100644 --- a/drivers/clk/qcom/dispcc-lahaina.c +++ b/drivers/clk/qcom/dispcc-lahaina.c @@ -24,7 +24,11 @@ #include "reset.h" #include "vdd-level.h" -static DEFINE_VDD_REGULATORS(vdd_mm, VDD_NUM, 1, vdd_corner); +static DEFINE_VDD_REGULATORS(vdd_mm, VDD_NOMINAL + 1, 1, vdd_corner); + +static struct clk_vdd_class *disp_cc_lahaina_regulators[] = { + &vdd_mm, +}; #define DISP_CC_MISC_CMD 0x8000 @@ -1515,6 +1519,8 @@ static const struct qcom_cc_desc disp_cc_lahaina_desc = { .num_clks = ARRAY_SIZE(disp_cc_lahaina_clocks), .resets = disp_cc_lahaina_resets, .num_resets = ARRAY_SIZE(disp_cc_lahaina_resets), + .clk_regulators = disp_cc_lahaina_regulators, + .num_clk_regulators = ARRAY_SIZE(disp_cc_lahaina_regulators), }; static const struct of_device_id disp_cc_lahaina_match_table[] = { @@ -1529,13 +1535,6 @@ static int disp_cc_lahaina_probe(struct platform_device *pdev) struct clk *clk; int ret; - vdd_mm.regulator[0] = devm_regulator_get(&pdev->dev, "vdd_mm"); - if (IS_ERR(vdd_mm.regulator[0])) { - if (PTR_ERR(vdd_mm.regulator[0]) != -EPROBE_DEFER) - dev_err(&pdev->dev, "Unable to get vdd_mm regulator\n"); - return PTR_ERR(vdd_mm.regulator[0]); - } - regmap = qcom_cc_map(pdev, &disp_cc_lahaina_desc); if (IS_ERR(regmap)) return PTR_ERR(regmap); diff --git a/drivers/clk/qcom/gcc-lahaina.c b/drivers/clk/qcom/gcc-lahaina.c index d3c6933735b5..a06147f8f68d 100644 --- a/drivers/clk/qcom/gcc-lahaina.c +++ b/drivers/clk/qcom/gcc-lahaina.c @@ -28,7 +28,11 @@ #include "reset.h" #include "vdd-level.h" -static DEFINE_VDD_REGULATORS(vdd_cx, VDD_NUM, 1, vdd_corner); +static DEFINE_VDD_REGULATORS(vdd_cx, VDD_HIGH + 1, 1, vdd_corner); + +static struct clk_vdd_class *gcc_lahaina_regulators[] = { + &vdd_cx, +}; enum { P_BI_TCXO, @@ -4368,6 +4372,8 @@ static const struct qcom_cc_desc gcc_lahaina_desc = { .num_resets = ARRAY_SIZE(gcc_lahaina_resets), .clk_hws = gcc_lahaina_hws, .num_clk_hws = ARRAY_SIZE(gcc_lahaina_hws), + .clk_regulators = gcc_lahaina_regulators, + .num_clk_regulators = ARRAY_SIZE(gcc_lahaina_regulators), }; static const struct of_device_id gcc_lahaina_match_table[] = { @@ -4381,13 +4387,6 @@ static int gcc_lahaina_probe(struct platform_device *pdev) struct regmap *regmap; int ret; - vdd_cx.regulator[0] = devm_regulator_get(&pdev->dev, "vdd_cx"); - if (IS_ERR(vdd_cx.regulator[0])) { - if (PTR_ERR(vdd_cx.regulator[0]) != -EPROBE_DEFER) - dev_err(&pdev->dev, "Unable to get vdd_cx regulator\n"); - return PTR_ERR(vdd_cx.regulator[0]); - } - regmap = qcom_cc_map(pdev, &gcc_lahaina_desc); if (IS_ERR(regmap)) { dev_err(&pdev->dev, "Failed to map gcc registers\n"); diff --git a/drivers/clk/qcom/gpucc-lahaina.c b/drivers/clk/qcom/gpucc-lahaina.c index bdb163662c04..fda3cf5d7042 100644 --- a/drivers/clk/qcom/gpucc-lahaina.c +++ b/drivers/clk/qcom/gpucc-lahaina.c @@ -24,7 +24,11 @@ #include "reset.h" #include "vdd-level.h" -static DEFINE_VDD_REGULATORS(vdd_mx, VDD_NUM, 1, vdd_corner); +static DEFINE_VDD_REGULATORS(vdd_mx, VDD_NOMINAL + 1, 1, vdd_corner); + +static struct clk_vdd_class *gpu_cc_lahaina_regulators[] = { + &vdd_mx, +}; enum { P_BI_TCXO, @@ -596,6 +600,8 @@ static const struct qcom_cc_desc gpu_cc_lahaina_desc = { .num_clks = ARRAY_SIZE(gpu_cc_lahaina_clocks), .resets = gpu_cc_lahaina_resets, .num_resets = ARRAY_SIZE(gpu_cc_lahaina_resets), + .clk_regulators = gpu_cc_lahaina_regulators, + .num_clk_regulators = ARRAY_SIZE(gpu_cc_lahaina_regulators), }; static const struct of_device_id gpu_cc_lahaina_match_table[] = { @@ -609,13 +615,6 @@ static int gpu_cc_lahaina_probe(struct platform_device *pdev) struct regmap *regmap; int ret; - vdd_mx.regulator[0] = devm_regulator_get(&pdev->dev, "vdd_mx"); - if (IS_ERR(vdd_mx.regulator[0])) { - if (PTR_ERR(vdd_mx.regulator[0]) != -EPROBE_DEFER) - dev_err(&pdev->dev, "Unable to get vdd_mx regulator\n"); - return PTR_ERR(vdd_mx.regulator[0]); - } - regmap = qcom_cc_map(pdev, &gpu_cc_lahaina_desc); if (IS_ERR(regmap)) { dev_err(&pdev->dev, "Failed to map gpu cc registers\n"); diff --git a/drivers/clk/qcom/videocc-lahaina.c b/drivers/clk/qcom/videocc-lahaina.c index c1678af4a4ba..e27cc9114c5e 100644 --- a/drivers/clk/qcom/videocc-lahaina.c +++ b/drivers/clk/qcom/videocc-lahaina.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-only /* - * Copyright (c) 2019, The Linux Foundation. All rights reserved. + * Copyright (c) 2019-2020, The Linux Foundation. All rights reserved. */ #include @@ -24,8 +24,13 @@ #include "reset.h" #include "vdd-level.h" -static DEFINE_VDD_REGULATORS(vdd_mm, VDD_NUM, 1, vdd_corner); -static DEFINE_VDD_REGULATORS(vdd_mx, VDD_NUM, 1, vdd_corner); +static DEFINE_VDD_REGULATORS(vdd_mm, VDD_NOMINAL + 1, 1, vdd_corner); +static DEFINE_VDD_REGULATORS(vdd_mx, VDD_NOMINAL + 1, 1, vdd_corner); + +static struct clk_vdd_class *video_cc_lahaina_regulators[] = { + &vdd_mm, + &vdd_mx +}; enum { P_BI_TCXO, @@ -550,6 +555,8 @@ static const struct qcom_cc_desc video_cc_lahaina_desc = { .num_clks = ARRAY_SIZE(video_cc_lahaina_clocks), .resets = video_cc_lahaina_resets, .num_resets = ARRAY_SIZE(video_cc_lahaina_resets), + .clk_regulators = video_cc_lahaina_regulators, + .num_clk_regulators = ARRAY_SIZE(video_cc_lahaina_regulators), }; static const struct of_device_id video_cc_lahaina_match_table[] = { @@ -564,20 +571,6 @@ static int video_cc_lahaina_probe(struct platform_device *pdev) struct clk *clk; int ret; - vdd_mm.regulator[0] = devm_regulator_get(&pdev->dev, "vdd_mm"); - if (IS_ERR(vdd_mm.regulator[0])) { - if (PTR_ERR(vdd_mm.regulator[0]) != -EPROBE_DEFER) - dev_err(&pdev->dev, "Unable to get vdd_mm regulator\n"); - return PTR_ERR(vdd_mm.regulator[0]); - } - - vdd_mx.regulator[0] = devm_regulator_get(&pdev->dev, "vdd_mx"); - if (IS_ERR(vdd_mx.regulator[0])) { - if (PTR_ERR(vdd_mx.regulator[0]) != -EPROBE_DEFER) - dev_err(&pdev->dev, "Unable to get vdd_mx regulator\n"); - return PTR_ERR(vdd_mx.regulator[0]); - } - regmap = qcom_cc_map(pdev, &video_cc_lahaina_desc); if (IS_ERR(regmap)) return PTR_ERR(regmap);