Lines Matching refs:ctrl

152 static int slim_add_device(struct slim_controller *ctrl,
157 sbdev->dev.parent = ctrl->dev;
160 sbdev->ctrl = ctrl;
175 static struct slim_device *slim_alloc_device(struct slim_controller *ctrl,
187 ret = slim_add_device(ctrl, sbdev, node);
196 static void of_register_slim_devices(struct slim_controller *ctrl)
198 struct device *dev = ctrl->dev;
201 if (!ctrl->dev->of_node)
204 for_each_child_of_node(ctrl->dev->of_node, node) {
234 sbdev = slim_alloc_device(ctrl, &e_addr, node);
243 * @ctrl: Controller to be registered.
249 int slim_register_controller(struct slim_controller *ctrl)
257 ctrl->id = id;
259 if (!ctrl->min_cg)
260 ctrl->min_cg = SLIM_MIN_CLK_GEAR;
261 if (!ctrl->max_cg)
262 ctrl->max_cg = SLIM_MAX_CLK_GEAR;
264 ida_init(&ctrl->laddr_ida);
265 idr_init(&ctrl->tid_idr);
266 mutex_init(&ctrl->lock);
267 mutex_init(&ctrl->sched.m_reconf);
268 init_completion(&ctrl->sched.pause_comp);
269 spin_lock_init(&ctrl->txn_lock);
271 dev_dbg(ctrl->dev, "Bus [%s] registered:dev:%p\n",
272 ctrl->name, ctrl->dev);
274 of_register_slim_devices(ctrl);
296 * @ctrl: Controller to tear-down.
298 int slim_unregister_controller(struct slim_controller *ctrl)
301 device_for_each_child(ctrl->dev, NULL, slim_ctrl_remove_device);
302 ida_free(&ctrl_ida, ctrl->id);
316 struct slim_controller *ctrl = sbdev->ctrl;
318 if (!ctrl)
322 mutex_lock(&ctrl->lock);
324 mutex_unlock(&ctrl->lock);
325 if (!ctrl->get_laddr)
326 ida_free(&ctrl->laddr_ida, sbdev->laddr);
347 static struct slim_device *find_slim_device(struct slim_controller *ctrl,
353 dev = device_find_child(ctrl->dev, eaddr, slim_match_dev);
365 * @ctrl: Controller on which this device will be added/queried
371 struct slim_device *slim_get_device(struct slim_controller *ctrl,
376 sbdev = find_slim_device(ctrl, e_addr);
378 sbdev = slim_alloc_device(ctrl, e_addr, NULL);
395 static struct slim_device *of_find_slim_device(struct slim_controller *ctrl,
401 dev = device_find_child(ctrl->dev, np, of_slim_match_dev);
413 * @ctrl: Controller on which this device will be added/queried
419 struct slim_device *of_slim_get_device(struct slim_controller *ctrl,
422 return of_find_slim_device(ctrl, np);
429 struct slim_controller *ctrl = sbdev->ctrl;
433 mutex_lock(&ctrl->lock);
434 if (ctrl->get_laddr) {
435 ret = ctrl->get_laddr(ctrl, &sbdev->e_addr, &laddr);
439 ret = ida_alloc_max(&ctrl->laddr_ida,
450 if (ctrl->set_laddr) {
451 ret = ctrl->set_laddr(ctrl, &sbdev->e_addr, laddr);
460 mutex_unlock(&ctrl->lock);
464 dev_dbg(ctrl->dev, "setting slimbus l-addr:%x, ea:%x,%x,%x,%x\n",
471 mutex_unlock(&ctrl->lock);
479 * @ctrl: Controller with which device is enumerated.
488 int slim_device_report_present(struct slim_controller *ctrl,
494 ret = pm_runtime_get_sync(ctrl->dev);
496 if (ctrl->sched.clk_state != SLIM_CLK_ACTIVE) {
497 dev_err(ctrl->dev, "slim ctrl not active,state:%d, ret:%d\n",
498 ctrl->sched.clk_state, ret);
502 sbdev = slim_get_device(ctrl, e_addr);
514 pm_runtime_mark_last_busy(ctrl->dev);
515 pm_runtime_put_autosuspend(ctrl->dev);