lkml.org 
[lkml]   [2021]   [Jan]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v4 25/37] hwmon: (scmi) port driver to the new scmi_sensor_proto_ops interface
    Date
    Port driver to the new SCMI Sensor interface based on protocol handles
    and common devm_get_ops().

    Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
    ---
    drivers/hwmon/scmi-hwmon.c | 24 +++++++++++++++---------
    1 file changed, 15 insertions(+), 9 deletions(-)

    diff --git a/drivers/hwmon/scmi-hwmon.c b/drivers/hwmon/scmi-hwmon.c
    index 17d064e58938..399011740b00 100644
    --- a/drivers/hwmon/scmi-hwmon.c
    +++ b/drivers/hwmon/scmi-hwmon.c
    @@ -2,7 +2,7 @@
    /*
    * System Control and Management Interface(SCMI) based hwmon sensor driver
    *
    - * Copyright (C) 2018 ARM Ltd.
    + * Copyright (C) 2018-2020 ARM Ltd.
    * Sudeep Holla <sudeep.holla@arm.com>
    */

    @@ -13,8 +13,10 @@
    #include <linux/sysfs.h>
    #include <linux/thermal.h>

    +static const struct scmi_sensor_proto_ops *sensor_ops;
    +
    struct scmi_sensors {
    - const struct scmi_handle *handle;
    + const struct scmi_protocol_handle *ph;
    const struct scmi_sensor_info **info[hwmon_max];
    };

    @@ -69,10 +71,9 @@ static int scmi_hwmon_read(struct device *dev, enum hwmon_sensor_types type,
    u64 value;
    const struct scmi_sensor_info *sensor;
    struct scmi_sensors *scmi_sensors = dev_get_drvdata(dev);
    - const struct scmi_handle *h = scmi_sensors->handle;

    sensor = *(scmi_sensors->info[type] + channel);
    - ret = h->sensor_ops->reading_get(h, sensor->id, &value);
    + ret = sensor_ops->reading_get(scmi_sensors->ph, sensor->id, &value);
    if (ret)
    return ret;

    @@ -169,11 +170,16 @@ static int scmi_hwmon_probe(struct scmi_device *sdev)
    struct hwmon_channel_info *scmi_hwmon_chan;
    const struct hwmon_channel_info **ptr_scmi_ci;
    const struct scmi_handle *handle = sdev->handle;
    + struct scmi_protocol_handle *ph;

    - if (!handle || !handle->sensor_ops)
    + if (!handle)
    return -ENODEV;

    - nr_sensors = handle->sensor_ops->count_get(handle);
    + sensor_ops = handle->devm_get_ops(sdev, SCMI_PROTOCOL_SENSOR, &ph);
    + if (IS_ERR(sensor_ops))
    + return PTR_ERR(sensor_ops);
    +
    + nr_sensors = sensor_ops->count_get(ph);
    if (!nr_sensors)
    return -EIO;

    @@ -181,10 +187,10 @@ static int scmi_hwmon_probe(struct scmi_device *sdev)
    if (!scmi_sensors)
    return -ENOMEM;

    - scmi_sensors->handle = handle;
    + scmi_sensors->ph = ph;

    for (i = 0; i < nr_sensors; i++) {
    - sensor = handle->sensor_ops->info_get(handle, i);
    + sensor = sensor_ops->info_get(ph, i);
    if (!sensor)
    return -EINVAL;

    @@ -236,7 +242,7 @@ static int scmi_hwmon_probe(struct scmi_device *sdev)
    }

    for (i = nr_sensors - 1; i >= 0 ; i--) {
    - sensor = handle->sensor_ops->info_get(handle, i);
    + sensor = sensor_ops->info_get(ph, i);
    if (!sensor)
    continue;

    --
    2.17.1
    \
     
     \ /
      Last update: 2021-01-06 21:23    [W:3.352 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site