aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2018-03-27 09:57:19 -0400
committerArnd Bergmann <arnd@arndb.de>2018-03-27 09:57:19 -0400
commitf8d6dc78b8b994cf6903879ab6abf3cb25b76daf (patch)
tree8a3aa04d6b7873bef12f957648e58b34d268950d /drivers
parentb701b41bb4f6304e95fffb1c2b2f0bb9158a2245 (diff)
parent7f9badfceffc6d2ae331050f1cd155a633130437 (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.c12
-rw-r--r--drivers/firmware/arm_scmi/clock.c5
-rw-r--r--drivers/hwmon/scmi-hwmon.c2
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
178static 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
186static const struct scmi_device_id scmi_id_table[] = { 179static const struct scmi_device_id scmi_id_table[] = {
@@ -192,7 +185,6 @@ MODULE_DEVICE_TABLE(scmi, scmi_id_table);
192static struct scmi_driver scmi_clocks_driver = { 185static 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};
198module_scmi_driver(scmi_clocks_driver); 190module_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
188err:
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: