Lines Matching refs:trigger

143 	struct spi_offload_trigger *trigger =  in spi_offload_trigger_free()  local
146 mutex_destroy(&trigger->lock); in spi_offload_trigger_free()
147 fwnode_handle_put(trigger->fwnode); in spi_offload_trigger_free()
148 kfree(trigger); in spi_offload_trigger_free()
153 struct spi_offload_trigger *trigger = data; in spi_offload_trigger_put() local
155 scoped_guard(mutex, &trigger->lock) in spi_offload_trigger_put()
156 if (trigger->ops && trigger->ops->release) in spi_offload_trigger_put()
157 trigger->ops->release(trigger); in spi_offload_trigger_put()
159 kref_put(&trigger->ref, spi_offload_trigger_free); in spi_offload_trigger_put()
166 struct spi_offload_trigger *trigger; in spi_offload_trigger_get() local
172 list_for_each_entry(trigger, &spi_offload_triggers, list) { in spi_offload_trigger_get()
173 if (trigger->fwnode != args->fwnode) in spi_offload_trigger_get()
176 match = trigger->ops->match(trigger, type, args->args, args->nargs); in spi_offload_trigger_get()
184 guard(mutex)(&trigger->lock); in spi_offload_trigger_get()
186 if (trigger->ops->request) { in spi_offload_trigger_get()
187 ret = trigger->ops->request(trigger, type, args->args, args->nargs); in spi_offload_trigger_get()
192 kref_get(&trigger->ref); in spi_offload_trigger_get()
194 return trigger; in spi_offload_trigger_get()
210 struct spi_offload_trigger *trigger; in devm_spi_offload_trigger_get() local
221 trigger = spi_offload_trigger_get(type, &args); in devm_spi_offload_trigger_get()
223 if (IS_ERR(trigger)) in devm_spi_offload_trigger_get()
224 return trigger; in devm_spi_offload_trigger_get()
226 ret = devm_add_action_or_reset(dev, spi_offload_trigger_put, trigger); in devm_spi_offload_trigger_get()
230 return trigger; in devm_spi_offload_trigger_get()
248 int spi_offload_trigger_validate(struct spi_offload_trigger *trigger, in spi_offload_trigger_validate() argument
251 guard(mutex)(&trigger->lock); in spi_offload_trigger_validate()
253 if (!trigger->ops) in spi_offload_trigger_validate()
256 if (!trigger->ops->validate) in spi_offload_trigger_validate()
259 return trigger->ops->validate(trigger, config); in spi_offload_trigger_validate()
281 struct spi_offload_trigger *trigger, in spi_offload_trigger_enable() argument
286 guard(mutex)(&trigger->lock); in spi_offload_trigger_enable()
288 if (!trigger->ops) in spi_offload_trigger_enable()
297 if (trigger->ops->enable) { in spi_offload_trigger_enable()
298 ret = trigger->ops->enable(trigger, config); in spi_offload_trigger_enable()
321 struct spi_offload_trigger *trigger) in spi_offload_trigger_disable() argument
326 guard(mutex)(&trigger->lock); in spi_offload_trigger_disable()
328 if (!trigger->ops) in spi_offload_trigger_disable()
331 if (trigger->ops->disable) in spi_offload_trigger_disable()
332 trigger->ops->disable(trigger); in spi_offload_trigger_disable()
409 struct spi_offload_trigger *trigger = data; in spi_offload_trigger_unregister() local
412 list_del(&trigger->list); in spi_offload_trigger_unregister()
414 scoped_guard(mutex, &trigger->lock) { in spi_offload_trigger_unregister()
415 trigger->priv = NULL; in spi_offload_trigger_unregister()
416 trigger->ops = NULL; in spi_offload_trigger_unregister()
419 kref_put(&trigger->ref, spi_offload_trigger_free); in spi_offload_trigger_unregister()
432 struct spi_offload_trigger *trigger; in devm_spi_offload_trigger_register() local
437 trigger = kzalloc(sizeof(*trigger), GFP_KERNEL); in devm_spi_offload_trigger_register()
438 if (!trigger) in devm_spi_offload_trigger_register()
441 kref_init(&trigger->ref); in devm_spi_offload_trigger_register()
442 mutex_init(&trigger->lock); in devm_spi_offload_trigger_register()
443 trigger->fwnode = fwnode_handle_get(info->fwnode); in devm_spi_offload_trigger_register()
444 trigger->ops = info->ops; in devm_spi_offload_trigger_register()
445 trigger->priv = info->priv; in devm_spi_offload_trigger_register()
448 list_add_tail(&trigger->list, &spi_offload_triggers); in devm_spi_offload_trigger_register()
450 return devm_add_action_or_reset(dev, spi_offload_trigger_unregister, trigger); in devm_spi_offload_trigger_register()
461 void *spi_offload_trigger_get_priv(struct spi_offload_trigger *trigger) in spi_offload_trigger_get_priv() argument
463 return trigger->priv; in spi_offload_trigger_get_priv()