Lines Matching refs:ac97_ctrl

64 ac97_codec_find(struct ac97_controller *ac97_ctrl, unsigned int codec_num)  in ac97_codec_find()  argument
69 return ac97_ctrl->codecs[codec_num]; in ac97_codec_find()
73 ac97_of_get_child_device(struct ac97_controller *ac97_ctrl, int idx, in ac97_of_get_child_device() argument
83 for_each_child_of_node(ac97_ctrl->parent->of_node, node) { in ac97_of_get_child_device()
96 struct ac97_controller *ac97_ctrl; in ac97_codec_release() local
99 ac97_ctrl = adev->ac97_ctrl; in ac97_codec_release()
100 ac97_ctrl->codecs[adev->num] = NULL; in ac97_codec_release()
105 static int ac97_codec_add(struct ac97_controller *ac97_ctrl, int idx, in ac97_codec_add() argument
114 ac97_ctrl->codecs[idx] = codec; in ac97_codec_add()
118 codec->dev.parent = &ac97_ctrl->adap; in ac97_codec_add()
120 codec->ac97_ctrl = ac97_ctrl; in ac97_codec_add()
123 dev_set_name(&codec->dev, "%s:%u", dev_name(ac97_ctrl->parent), idx); in ac97_codec_add()
124 codec->dev.of_node = ac97_of_get_child_device(ac97_ctrl, idx, in ac97_codec_add()
136 ac97_ctrl->codecs[idx] = NULL; in ac97_codec_add()
162 static int ac97_bus_scan(struct ac97_controller *ac97_ctrl) in ac97_bus_scan() argument
168 if (ac97_codec_find(ac97_ctrl, i)) in ac97_bus_scan()
170 if (!(ac97_ctrl->slots_available & BIT(i))) in ac97_bus_scan()
172 vendor_id = snd_ac97_bus_scan_one(ac97_ctrl, i); in ac97_bus_scan()
176 ret = ac97_codec_add(ac97_ctrl, i, vendor_id); in ac97_bus_scan()
183 static int ac97_bus_reset(struct ac97_controller *ac97_ctrl) in ac97_bus_reset() argument
185 ac97_ctrl->ops->reset(ac97_ctrl); in ac97_bus_reset()
230 struct ac97_controller *ac97_ctrl = adev->ac97_ctrl; in snd_ac97_codec_get_platdata() local
232 return ac97_ctrl->codecs_pdata[adev->num]; in snd_ac97_codec_get_platdata()
236 static void ac97_ctrl_codecs_unregister(struct ac97_controller *ac97_ctrl) in ac97_ctrl_codecs_unregister() argument
241 if (ac97_ctrl->codecs[i]) { in ac97_ctrl_codecs_unregister()
242 ac97_ctrl->codecs[i]->ac97_ctrl = &ac97_unbound_ctrl; in ac97_ctrl_codecs_unregister()
243 device_unregister(&ac97_ctrl->codecs[i]->dev); in ac97_ctrl_codecs_unregister()
251 struct ac97_controller *ac97_ctrl; in cold_reset_store() local
254 ac97_ctrl = to_ac97_controller(dev); in cold_reset_store()
255 ac97_ctrl->ops->reset(ac97_ctrl); in cold_reset_store()
265 struct ac97_controller *ac97_ctrl; in warm_reset_store() local
271 ac97_ctrl = to_ac97_controller(dev); in warm_reset_store()
272 ac97_ctrl->ops->warm_reset(ac97_ctrl); in warm_reset_store()
294 static void ac97_del_adapter(struct ac97_controller *ac97_ctrl) in ac97_del_adapter() argument
297 ac97_ctrl_codecs_unregister(ac97_ctrl); in ac97_del_adapter()
298 list_del(&ac97_ctrl->controllers); in ac97_del_adapter()
301 device_unregister(&ac97_ctrl->adap); in ac97_del_adapter()
306 struct ac97_controller *ac97_ctrl; in ac97_adapter_release() local
308 ac97_ctrl = to_ac97_controller(dev); in ac97_adapter_release()
309 idr_remove(&ac97_adapter_idr, ac97_ctrl->nr); in ac97_adapter_release()
310 dev_dbg(&ac97_ctrl->adap, "adapter unregistered by %s\n", in ac97_adapter_release()
311 dev_name(ac97_ctrl->parent)); in ac97_adapter_release()
319 static int ac97_add_adapter(struct ac97_controller *ac97_ctrl) in ac97_add_adapter() argument
324 ret = idr_alloc(&ac97_adapter_idr, ac97_ctrl, 0, 0, GFP_KERNEL); in ac97_add_adapter()
325 ac97_ctrl->nr = ret; in ac97_add_adapter()
327 dev_set_name(&ac97_ctrl->adap, "ac97-%d", ret); in ac97_add_adapter()
328 ac97_ctrl->adap.type = &ac97_adapter_type; in ac97_add_adapter()
329 ac97_ctrl->adap.parent = ac97_ctrl->parent; in ac97_add_adapter()
330 ret = device_register(&ac97_ctrl->adap); in ac97_add_adapter()
332 put_device(&ac97_ctrl->adap); in ac97_add_adapter()
335 list_add(&ac97_ctrl->controllers, &ac97_controllers); in ac97_add_adapter()
339 dev_dbg(&ac97_ctrl->adap, "adapter registered by %s\n", in ac97_add_adapter()
340 dev_name(ac97_ctrl->parent)); in ac97_add_adapter()
360 struct ac97_controller *ac97_ctrl; in snd_ac97_controller_register() local
363 ac97_ctrl = kzalloc(sizeof(*ac97_ctrl), GFP_KERNEL); in snd_ac97_controller_register()
364 if (!ac97_ctrl) in snd_ac97_controller_register()
368 ac97_ctrl->codecs_pdata[i] = codecs_pdata[i]; in snd_ac97_controller_register()
370 ac97_ctrl->ops = ops; in snd_ac97_controller_register()
371 ac97_ctrl->slots_available = slots_available; in snd_ac97_controller_register()
372 ac97_ctrl->parent = dev; in snd_ac97_controller_register()
373 ret = ac97_add_adapter(ac97_ctrl); in snd_ac97_controller_register()
377 ac97_bus_reset(ac97_ctrl); in snd_ac97_controller_register()
378 ac97_bus_scan(ac97_ctrl); in snd_ac97_controller_register()
380 return ac97_ctrl; in snd_ac97_controller_register()
382 kfree(ac97_ctrl); in snd_ac97_controller_register()
392 void snd_ac97_controller_unregister(struct ac97_controller *ac97_ctrl) in snd_ac97_controller_unregister() argument
394 ac97_del_adapter(ac97_ctrl); in snd_ac97_controller_unregister()