Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

PM / devfreq: event: Change prototype of devfreq_event_get_edev_by_phandle function

Previously, devfreq core support 'devfreq-events' property in order to get
the devfreq-event device by phandle. But, 'devfreq-events' property name is
not proper on devicetree binding because this name doesn't mean
the any h/w attribute.

The devfreq-event core hand over the rights to decide the property name
for getting the devfreq-event device on devicetree. Each devfreq-event driver
will decide the property name on devicetree binding and then pass
the their own property name to devfreq_event_get_edev_by_phandle function.

And change the prototype of devfreq_event_get_edev_count function
because of used deprecated 'devfreq-events' property.

Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>

+26 -15
+8 -6
drivers/devfreq/devfreq-event.c
··· 213 213 * devfreq_event_get_edev_by_phandle() - Get the devfreq-event dev from 214 214 * devicetree. 215 215 * @dev : the pointer to the given device 216 + * @phandle_name: name of property holding a phandle value 216 217 * @index : the index into list of devfreq-event device 217 218 * 218 219 * Note that this function return the pointer of devfreq-event device. 219 220 */ 220 221 struct devfreq_event_dev *devfreq_event_get_edev_by_phandle(struct device *dev, 221 - int index) 222 + const char *phandle_name, int index) 222 223 { 223 224 struct device_node *node; 224 225 struct devfreq_event_dev *edev; 225 226 226 - if (!dev->of_node) 227 + if (!dev->of_node || !phandle_name) 227 228 return ERR_PTR(-EINVAL); 228 229 229 - node = of_parse_phandle(dev->of_node, "devfreq-events", index); 230 + node = of_parse_phandle(dev->of_node, phandle_name, index); 230 231 if (!node) 231 232 return ERR_PTR(-ENODEV); 232 233 ··· 259 258 /** 260 259 * devfreq_event_get_edev_count() - Get the count of devfreq-event dev 261 260 * @dev : the pointer to the given device 261 + * @phandle_name: name of property holding a phandle value 262 262 * 263 263 * Note that this function return the count of devfreq-event devices. 264 264 */ 265 - int devfreq_event_get_edev_count(struct device *dev) 265 + int devfreq_event_get_edev_count(struct device *dev, const char *phandle_name) 266 266 { 267 267 int count; 268 268 269 - if (!dev->of_node) { 269 + if (!dev->of_node || !phandle_name) { 270 270 dev_err(dev, "device does not have a device node entry\n"); 271 271 return -EINVAL; 272 272 } 273 273 274 - count = of_property_count_elems_of_size(dev->of_node, "devfreq-events", 274 + count = of_property_count_elems_of_size(dev->of_node, phandle_name, 275 275 sizeof(u32)); 276 276 if (count < 0) { 277 277 dev_err(dev,
+3 -2
drivers/devfreq/exynos-bus.c
··· 193 193 * Get the devfreq-event devices to get the current utilization of 194 194 * buses. This raw data will be used in devfreq ondemand governor. 195 195 */ 196 - count = devfreq_event_get_edev_count(dev); 196 + count = devfreq_event_get_edev_count(dev, "devfreq-events"); 197 197 if (count < 0) { 198 198 dev_err(dev, "failed to get the count of devfreq-event dev\n"); 199 199 ret = count; ··· 209 209 } 210 210 211 211 for (i = 0; i < count; i++) { 212 - bus->edev[i] = devfreq_event_get_edev_by_phandle(dev, i); 212 + bus->edev[i] = devfreq_event_get_edev_by_phandle(dev, 213 + "devfreq-events", i); 213 214 if (IS_ERR(bus->edev[i])) { 214 215 ret = -EPROBE_DEFER; 215 216 goto err_regulator;
+1 -1
drivers/devfreq/rk3399_dmc.c
··· 341 341 return PTR_ERR(data->dmc_clk); 342 342 } 343 343 344 - data->edev = devfreq_event_get_edev_by_phandle(dev, 0); 344 + data->edev = devfreq_event_get_edev_by_phandle(dev, "devfreq-events", 0); 345 345 if (IS_ERR(data->edev)) 346 346 return -EPROBE_DEFER; 347 347
+4 -2
drivers/memory/samsung/exynos5422-dmc.c
··· 1293 1293 int counters_size; 1294 1294 int ret, i; 1295 1295 1296 - dmc->num_counters = devfreq_event_get_edev_count(dmc->dev); 1296 + dmc->num_counters = devfreq_event_get_edev_count(dmc->dev, 1297 + "devfreq-events"); 1297 1298 if (dmc->num_counters < 0) { 1298 1299 dev_err(dmc->dev, "could not get devfreq-event counters\n"); 1299 1300 return dmc->num_counters; ··· 1307 1306 1308 1307 for (i = 0; i < dmc->num_counters; i++) { 1309 1308 dmc->counter[i] = 1310 - devfreq_event_get_edev_by_phandle(dmc->dev, i); 1309 + devfreq_event_get_edev_by_phandle(dmc->dev, 1310 + "devfreq-events", i); 1311 1311 if (IS_ERR_OR_NULL(dmc->counter[i])) 1312 1312 return -EPROBE_DEFER; 1313 1313 }
+10 -4
include/linux/devfreq-event.h
··· 106 106 struct devfreq_event_data *edata); 107 107 extern int devfreq_event_reset_event(struct devfreq_event_dev *edev); 108 108 extern struct devfreq_event_dev *devfreq_event_get_edev_by_phandle( 109 - struct device *dev, int index); 110 - extern int devfreq_event_get_edev_count(struct device *dev); 109 + struct device *dev, 110 + const char *phandle_name, 111 + int index); 112 + extern int devfreq_event_get_edev_count(struct device *dev, 113 + const char *phandle_name); 111 114 extern struct devfreq_event_dev *devfreq_event_add_edev(struct device *dev, 112 115 struct devfreq_event_desc *desc); 113 116 extern int devfreq_event_remove_edev(struct devfreq_event_dev *edev); ··· 155 152 } 156 153 157 154 static inline struct devfreq_event_dev *devfreq_event_get_edev_by_phandle( 158 - struct device *dev, int index) 155 + struct device *dev, 156 + const char *phandle_name, 157 + int index) 159 158 { 160 159 return ERR_PTR(-EINVAL); 161 160 } 162 161 163 - static inline int devfreq_event_get_edev_count(struct device *dev) 162 + static inline int devfreq_event_get_edev_count(struct device *dev, 163 + const char *phandle_name) 164 164 { 165 165 return -EINVAL; 166 166 }