Lines Matching refs:edev
40 int devfreq_event_enable_edev(struct devfreq_event_dev *edev) in devfreq_event_enable_edev() argument
44 if (!edev || !edev->desc) in devfreq_event_enable_edev()
47 mutex_lock(&edev->lock); in devfreq_event_enable_edev()
48 if (edev->desc->ops && edev->desc->ops->enable in devfreq_event_enable_edev()
49 && edev->enable_count == 0) { in devfreq_event_enable_edev()
50 ret = edev->desc->ops->enable(edev); in devfreq_event_enable_edev()
54 edev->enable_count++; in devfreq_event_enable_edev()
56 mutex_unlock(&edev->lock); in devfreq_event_enable_edev()
72 int devfreq_event_disable_edev(struct devfreq_event_dev *edev) in devfreq_event_disable_edev() argument
76 if (!edev || !edev->desc) in devfreq_event_disable_edev()
79 mutex_lock(&edev->lock); in devfreq_event_disable_edev()
80 if (edev->enable_count <= 0) { in devfreq_event_disable_edev()
81 dev_warn(&edev->dev, "unbalanced enable_count\n"); in devfreq_event_disable_edev()
86 if (edev->desc->ops && edev->desc->ops->disable in devfreq_event_disable_edev()
87 && edev->enable_count == 1) { in devfreq_event_disable_edev()
88 ret = edev->desc->ops->disable(edev); in devfreq_event_disable_edev()
92 edev->enable_count--; in devfreq_event_disable_edev()
94 mutex_unlock(&edev->lock); in devfreq_event_disable_edev()
109 bool devfreq_event_is_enabled(struct devfreq_event_dev *edev) in devfreq_event_is_enabled() argument
113 if (!edev || !edev->desc) in devfreq_event_is_enabled()
116 mutex_lock(&edev->lock); in devfreq_event_is_enabled()
118 if (edev->enable_count > 0) in devfreq_event_is_enabled()
121 mutex_unlock(&edev->lock); in devfreq_event_is_enabled()
134 int devfreq_event_set_event(struct devfreq_event_dev *edev) in devfreq_event_set_event() argument
138 if (!edev || !edev->desc) in devfreq_event_set_event()
141 if (!edev->desc->ops || !edev->desc->ops->set_event) in devfreq_event_set_event()
144 if (!devfreq_event_is_enabled(edev)) in devfreq_event_set_event()
147 mutex_lock(&edev->lock); in devfreq_event_set_event()
148 ret = edev->desc->ops->set_event(edev); in devfreq_event_set_event()
149 mutex_unlock(&edev->lock); in devfreq_event_set_event()
163 int devfreq_event_get_event(struct devfreq_event_dev *edev, in devfreq_event_get_event() argument
168 if (!edev || !edev->desc) in devfreq_event_get_event()
171 if (!edev->desc->ops || !edev->desc->ops->get_event) in devfreq_event_get_event()
174 if (!devfreq_event_is_enabled(edev)) in devfreq_event_get_event()
179 mutex_lock(&edev->lock); in devfreq_event_get_event()
180 ret = edev->desc->ops->get_event(edev, edata); in devfreq_event_get_event()
183 mutex_unlock(&edev->lock); in devfreq_event_get_event()
196 int devfreq_event_reset_event(struct devfreq_event_dev *edev) in devfreq_event_reset_event() argument
200 if (!edev || !edev->desc) in devfreq_event_reset_event()
203 if (!devfreq_event_is_enabled(edev)) in devfreq_event_reset_event()
206 mutex_lock(&edev->lock); in devfreq_event_reset_event()
207 if (edev->desc->ops && edev->desc->ops->reset) in devfreq_event_reset_event()
208 ret = edev->desc->ops->reset(edev); in devfreq_event_reset_event()
209 mutex_unlock(&edev->lock); in devfreq_event_reset_event()
227 struct devfreq_event_dev *edev; in devfreq_event_get_edev_by_phandle() local
242 list_for_each_entry(edev, &devfreq_event_list, node) { in devfreq_event_get_edev_by_phandle()
243 if (!strcmp(edev->desc->name, node->name)) in devfreq_event_get_edev_by_phandle()
246 edev = NULL; in devfreq_event_get_edev_by_phandle()
250 if (!edev) { in devfreq_event_get_edev_by_phandle()
259 return edev; in devfreq_event_get_edev_by_phandle()
293 struct devfreq_event_dev *edev = to_devfreq_event(dev); in devfreq_event_release_edev() local
295 kfree(edev); in devfreq_event_release_edev()
310 struct devfreq_event_dev *edev; in devfreq_event_add_edev() local
323 edev = kzalloc(sizeof(struct devfreq_event_dev), GFP_KERNEL); in devfreq_event_add_edev()
324 if (!edev) in devfreq_event_add_edev()
327 mutex_init(&edev->lock); in devfreq_event_add_edev()
328 edev->desc = desc; in devfreq_event_add_edev()
329 edev->enable_count = 0; in devfreq_event_add_edev()
330 edev->dev.parent = dev; in devfreq_event_add_edev()
331 edev->dev.class = devfreq_event_class; in devfreq_event_add_edev()
332 edev->dev.release = devfreq_event_release_edev; in devfreq_event_add_edev()
334 dev_set_name(&edev->dev, "event.%d", atomic_inc_return(&event_no) - 1); in devfreq_event_add_edev()
335 ret = device_register(&edev->dev); in devfreq_event_add_edev()
337 put_device(&edev->dev); in devfreq_event_add_edev()
340 dev_set_drvdata(&edev->dev, edev); in devfreq_event_add_edev()
342 INIT_LIST_HEAD(&edev->node); in devfreq_event_add_edev()
345 list_add(&edev->node, &devfreq_event_list); in devfreq_event_add_edev()
348 return edev; in devfreq_event_add_edev()
358 int devfreq_event_remove_edev(struct devfreq_event_dev *edev) in devfreq_event_remove_edev() argument
360 if (!edev) in devfreq_event_remove_edev()
363 WARN_ON(edev->enable_count); in devfreq_event_remove_edev()
366 list_del(&edev->node); in devfreq_event_remove_edev()
369 device_unregister(&edev->dev); in devfreq_event_remove_edev()
403 struct devfreq_event_dev **ptr, *edev; in devm_devfreq_event_add_edev() local
409 edev = devfreq_event_add_edev(dev, desc); in devm_devfreq_event_add_edev()
410 if (IS_ERR(edev)) { in devm_devfreq_event_add_edev()
415 *ptr = edev; in devm_devfreq_event_add_edev()
418 return edev; in devm_devfreq_event_add_edev()
431 struct devfreq_event_dev *edev) in devm_devfreq_event_remove_edev() argument
434 devm_devfreq_event_match, edev)); in devm_devfreq_event_remove_edev()
444 struct devfreq_event_dev *edev = to_devfreq_event(dev); in name_show() local
446 if (!edev || !edev->desc) in name_show()
449 return sprintf(buf, "%s\n", edev->desc->name); in name_show()
456 struct devfreq_event_dev *edev = to_devfreq_event(dev); in enable_count_show() local
458 if (!edev || !edev->desc) in enable_count_show()
461 return sprintf(buf, "%d\n", edev->enable_count); in enable_count_show()