diff options
author | Arnd Bergmann <arnd@arndb.de> | 2018-03-27 09:57:19 -0400 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2018-03-27 09:57:19 -0400 |
commit | f8d6dc78b8b994cf6903879ab6abf3cb25b76daf (patch) | |
tree | 8a3aa04d6b7873bef12f957648e58b34d268950d /drivers | |
parent | b701b41bb4f6304e95fffb1c2b2f0bb9158a2245 (diff) | |
parent | 7f9badfceffc6d2ae331050f1cd155a633130437 (diff) |
Merge tag 'scmi-fixes-4.17' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux into next/drivers
Pull "ARM SCMI fixes/cleanups for v4.17" from Sudeep Holla:
Couple of fixes for build warning due to uninitialised variable
and static checker warning for passing NULL pointer to PTR_ERR.
It also contains cleanup suggested by Stephen Boyd in SCMI clock
driver using the new devm_of_clk_add_hw_provider() API.
* tag 'scmi-fixes-4.17' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux:
clk: scmi: use devm_of_clk_add_hw_provider() API and drop scmi_clocks_remove
firmware: arm_scmi: prevent accessing rate_discrete uninitialized
hwmon: (scmi) return -EINVAL when sensor information is unavailable
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/clk/clk-scmi.c | 12 | ||||
-rw-r--r-- | drivers/firmware/arm_scmi/clock.c | 5 | ||||
-rw-r--r-- | drivers/hwmon/scmi-hwmon.c | 2 |
3 files changed, 6 insertions, 13 deletions
diff --git a/drivers/clk/clk-scmi.c b/drivers/clk/clk-scmi.c index 26f1476d4a79..488c21376b55 100644 --- a/drivers/clk/clk-scmi.c +++ b/drivers/clk/clk-scmi.c | |||
@@ -172,15 +172,8 @@ static int scmi_clocks_probe(struct scmi_device *sdev) | |||
172 | } | 172 | } |
173 | } | 173 | } |
174 | 174 | ||
175 | return of_clk_add_hw_provider(np, of_clk_hw_onecell_get, clk_data); | 175 | return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, |
176 | } | 176 | clk_data); |
177 | |||
178 | static void scmi_clocks_remove(struct scmi_device *sdev) | ||
179 | { | ||
180 | struct device *dev = &sdev->dev; | ||
181 | struct device_node *np = dev->of_node; | ||
182 | |||
183 | of_clk_del_provider(np); | ||
184 | } | 177 | } |
185 | 178 | ||
186 | static const struct scmi_device_id scmi_id_table[] = { | 179 | static const struct scmi_device_id scmi_id_table[] = { |
@@ -192,7 +185,6 @@ MODULE_DEVICE_TABLE(scmi, scmi_id_table); | |||
192 | static struct scmi_driver scmi_clocks_driver = { | 185 | static struct scmi_driver scmi_clocks_driver = { |
193 | .name = "scmi-clocks", | 186 | .name = "scmi-clocks", |
194 | .probe = scmi_clocks_probe, | 187 | .probe = scmi_clocks_probe, |
195 | .remove = scmi_clocks_remove, | ||
196 | .id_table = scmi_id_table, | 188 | .id_table = scmi_id_table, |
197 | }; | 189 | }; |
198 | module_scmi_driver(scmi_clocks_driver); | 190 | module_scmi_driver(scmi_clocks_driver); |
diff --git a/drivers/firmware/arm_scmi/clock.c b/drivers/firmware/arm_scmi/clock.c index e8ffad33a0ff..e6f17825db79 100644 --- a/drivers/firmware/arm_scmi/clock.c +++ b/drivers/firmware/arm_scmi/clock.c | |||
@@ -125,7 +125,7 @@ scmi_clock_describe_rates_get(const struct scmi_handle *handle, u32 clk_id, | |||
125 | { | 125 | { |
126 | u64 *rate; | 126 | u64 *rate; |
127 | int ret, cnt; | 127 | int ret, cnt; |
128 | bool rate_discrete; | 128 | bool rate_discrete = false; |
129 | u32 tot_rate_cnt = 0, rates_flag; | 129 | u32 tot_rate_cnt = 0, rates_flag; |
130 | u16 num_returned, num_remaining; | 130 | u16 num_returned, num_remaining; |
131 | struct scmi_xfer *t; | 131 | struct scmi_xfer *t; |
@@ -147,7 +147,7 @@ scmi_clock_describe_rates_get(const struct scmi_handle *handle, u32 clk_id, | |||
147 | 147 | ||
148 | ret = scmi_do_xfer(handle, t); | 148 | ret = scmi_do_xfer(handle, t); |
149 | if (ret) | 149 | if (ret) |
150 | break; | 150 | goto err; |
151 | 151 | ||
152 | rates_flag = le32_to_cpu(rlist->num_rates_flags); | 152 | rates_flag = le32_to_cpu(rlist->num_rates_flags); |
153 | num_remaining = NUM_REMAINING(rates_flag); | 153 | num_remaining = NUM_REMAINING(rates_flag); |
@@ -185,6 +185,7 @@ scmi_clock_describe_rates_get(const struct scmi_handle *handle, u32 clk_id, | |||
185 | if (rate_discrete) | 185 | if (rate_discrete) |
186 | clk->list.num_rates = tot_rate_cnt; | 186 | clk->list.num_rates = tot_rate_cnt; |
187 | 187 | ||
188 | err: | ||
188 | scmi_one_xfer_put(handle, t); | 189 | scmi_one_xfer_put(handle, t); |
189 | return ret; | 190 | return ret; |
190 | } | 191 | } |
diff --git a/drivers/hwmon/scmi-hwmon.c b/drivers/hwmon/scmi-hwmon.c index 32e750373ced..363bf56eb0f2 100644 --- a/drivers/hwmon/scmi-hwmon.c +++ b/drivers/hwmon/scmi-hwmon.c | |||
@@ -138,7 +138,7 @@ static int scmi_hwmon_probe(struct scmi_device *sdev) | |||
138 | for (i = 0; i < nr_sensors; i++) { | 138 | for (i = 0; i < nr_sensors; i++) { |
139 | sensor = handle->sensor_ops->info_get(handle, i); | 139 | sensor = handle->sensor_ops->info_get(handle, i); |
140 | if (!sensor) | 140 | if (!sensor) |
141 | return PTR_ERR(sensor); | 141 | return -EINVAL; |
142 | 142 | ||
143 | switch (sensor->type) { | 143 | switch (sensor->type) { |
144 | case TEMPERATURE_C: | 144 | case TEMPERATURE_C: |