lkml.org 
[lkml]   [2019]   [Apr]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 07/13] thermal: qoriq: Pass data to qoriq_tmu_calibration() directly
    Date
    We can simplify error cleanup code if instead of passing a "struct
    platform_device *" to qoriq_tmu_calibration() and deriving a bunch of
    pointers from it, we pass those pointers directly. This way we won't
    be force to call platform_set_drvdata() as early in qoriq_tmu_probe()
    and consequently would be able to drop the "err_iomap" error path.

    Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
    Cc: Chris Healy <cphealy@gmail.com>
    Cc: Lucas Stach <l.stach@pengutronix.de>
    Cc: Zhang Rui <rui.zhang@intel.com>
    Cc: Eduardo Valentin <edubezval@gmail.com>
    Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
    Cc: Angus Ainslie (Purism) <angus@akkea.ca>
    Cc: linux-imx@nxp.com
    Cc: linux-pm@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    ---
    drivers/thermal/qoriq_thermal.c | 22 +++++++++-------------
    1 file changed, 9 insertions(+), 13 deletions(-)

    diff --git a/drivers/thermal/qoriq_thermal.c b/drivers/thermal/qoriq_thermal.c
    index 24a2a57f61c9..a3ddb55740e4 100644
    --- a/drivers/thermal/qoriq_thermal.c
    +++ b/drivers/thermal/qoriq_thermal.c
    @@ -139,16 +139,16 @@ static int qoriq_tmu_register_tmu_zone(struct device *dev,
    return 0;
    }

    -static int qoriq_tmu_calibration(struct platform_device *pdev)
    +static int qoriq_tmu_calibration(struct device *dev,
    + struct qoriq_tmu_data *data)
    {
    int i, val, len;
    u32 range[4];
    const u32 *calibration;
    - struct device_node *np = pdev->dev.of_node;
    - struct qoriq_tmu_data *data = platform_get_drvdata(pdev);
    + struct device_node *np = dev->of_node;

    if (of_property_read_u32_array(np, "fsl,tmu-range", range, 4)) {
    - dev_err(&pdev->dev, "missing calibration range.\n");
    + dev_err(dev, "missing calibration range.\n");
    return -ENODEV;
    }

    @@ -160,7 +160,7 @@ static int qoriq_tmu_calibration(struct platform_device *pdev)

    calibration = of_get_property(np, "fsl,tmu-calibration", &len);
    if (calibration == NULL || len % 8) {
    - dev_err(&pdev->dev, "invalid calibration data.\n");
    + dev_err(dev, "invalid calibration data.\n");
    return -ENODEV;
    }

    @@ -198,20 +198,17 @@ static int qoriq_tmu_probe(struct platform_device *pdev)
    if (!data)
    return -ENOMEM;

    - platform_set_drvdata(pdev, data);
    -
    data->little_endian = of_property_read_bool(np, "little-endian");

    data->regs = of_iomap(np, 0);
    if (!data->regs) {
    dev_err(dev, "Failed to get memory region\n");
    - ret = -ENODEV;
    - goto err_iomap;
    + return -ENODEV;
    }

    qoriq_tmu_init_device(data); /* TMU initialization */

    - ret = qoriq_tmu_calibration(pdev); /* TMU calibration */
    + ret = qoriq_tmu_calibration(dev, data); /* TMU calibration */
    if (ret < 0)
    goto err_tmu;

    @@ -222,14 +219,13 @@ static int qoriq_tmu_probe(struct platform_device *pdev)
    goto err_iomap;
    }

    + platform_set_drvdata(pdev, data);
    +
    return 0;

    err_tmu:
    iounmap(data->regs);

    -err_iomap:
    - platform_set_drvdata(pdev, NULL);
    -
    return ret;
    }

    --
    2.20.1
    \
     
     \ /
      Last update: 2019-04-01 06:15    [W:2.629 / U:0.268 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site