Lines Matching refs:ctrl

75 	struct serdev_controller *ctrl = to_serdev_controller(dev);  in serdev_ctrl_release()  local
76 ida_simple_remove(&ctrl_ida, ctrl->nr); in serdev_ctrl_release()
77 kfree(ctrl); in serdev_ctrl_release()
102 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_add() local
109 if (ctrl->serdev) { in serdev_device_add()
113 ctrl->serdev = serdev; in serdev_device_add()
127 ctrl->serdev = NULL; in serdev_device_add()
138 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_remove() local
141 ctrl->serdev = NULL; in serdev_device_remove()
147 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_open() local
150 if (!ctrl || !ctrl->ops->open) in serdev_device_open()
153 ret = ctrl->ops->open(ctrl); in serdev_device_open()
157 ret = pm_runtime_get_sync(&ctrl->dev); in serdev_device_open()
159 pm_runtime_put_noidle(&ctrl->dev); in serdev_device_open()
166 if (ctrl->ops->close) in serdev_device_open()
167 ctrl->ops->close(ctrl); in serdev_device_open()
175 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_close() local
177 if (!ctrl || !ctrl->ops->close) in serdev_device_close()
180 pm_runtime_put(&ctrl->dev); in serdev_device_close()
182 ctrl->ops->close(ctrl); in serdev_device_close()
222 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_write_buf() local
224 if (!ctrl || !ctrl->ops->write_buf) in serdev_device_write_buf()
227 return ctrl->ops->write_buf(ctrl, buf, count); in serdev_device_write_buf()
235 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_write() local
238 if (!ctrl || !ctrl->ops->write_buf || in serdev_device_write()
246 ret = ctrl->ops->write_buf(ctrl, buf, count); in serdev_device_write()
263 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_write_flush() local
265 if (!ctrl || !ctrl->ops->write_flush) in serdev_device_write_flush()
268 ctrl->ops->write_flush(ctrl); in serdev_device_write_flush()
274 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_write_room() local
276 if (!ctrl || !ctrl->ops->write_room) in serdev_device_write_room()
279 return serdev->ctrl->ops->write_room(ctrl); in serdev_device_write_room()
285 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_set_baudrate() local
287 if (!ctrl || !ctrl->ops->set_baudrate) in serdev_device_set_baudrate()
290 return ctrl->ops->set_baudrate(ctrl, speed); in serdev_device_set_baudrate()
297 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_set_flow_control() local
299 if (!ctrl || !ctrl->ops->set_flow_control) in serdev_device_set_flow_control()
302 ctrl->ops->set_flow_control(ctrl, enable); in serdev_device_set_flow_control()
309 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_set_parity() local
311 if (!ctrl || !ctrl->ops->set_parity) in serdev_device_set_parity()
314 return ctrl->ops->set_parity(ctrl, parity); in serdev_device_set_parity()
320 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_wait_until_sent() local
322 if (!ctrl || !ctrl->ops->wait_until_sent) in serdev_device_wait_until_sent()
325 ctrl->ops->wait_until_sent(ctrl, timeout); in serdev_device_wait_until_sent()
331 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_get_tiocm() local
333 if (!ctrl || !ctrl->ops->get_tiocm) in serdev_device_get_tiocm()
336 return ctrl->ops->get_tiocm(ctrl); in serdev_device_get_tiocm()
342 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_set_tiocm() local
344 if (!ctrl || !ctrl->ops->set_tiocm) in serdev_device_set_tiocm()
347 return ctrl->ops->set_tiocm(ctrl, set, clear); in serdev_device_set_tiocm()
392 struct serdev_device *serdev_device_alloc(struct serdev_controller *ctrl) in serdev_device_alloc() argument
400 serdev->ctrl = ctrl; in serdev_device_alloc()
402 serdev->dev.parent = &ctrl->dev; in serdev_device_alloc()
424 struct serdev_controller *ctrl; in serdev_controller_alloc() local
430 ctrl = kzalloc(sizeof(*ctrl) + size, GFP_KERNEL); in serdev_controller_alloc()
431 if (!ctrl) in serdev_controller_alloc()
441 ctrl->nr = id; in serdev_controller_alloc()
443 device_initialize(&ctrl->dev); in serdev_controller_alloc()
444 ctrl->dev.type = &serdev_ctrl_type; in serdev_controller_alloc()
445 ctrl->dev.bus = &serdev_bus_type; in serdev_controller_alloc()
446 ctrl->dev.parent = parent; in serdev_controller_alloc()
447 ctrl->dev.of_node = parent->of_node; in serdev_controller_alloc()
448 serdev_controller_set_drvdata(ctrl, &ctrl[1]); in serdev_controller_alloc()
450 dev_set_name(&ctrl->dev, "serial%d", id); in serdev_controller_alloc()
452 pm_runtime_no_callbacks(&ctrl->dev); in serdev_controller_alloc()
453 pm_suspend_ignore_children(&ctrl->dev, true); in serdev_controller_alloc()
455 dev_dbg(&ctrl->dev, "allocated controller 0x%p id %d\n", ctrl, id); in serdev_controller_alloc()
456 return ctrl; in serdev_controller_alloc()
459 kfree(ctrl); in serdev_controller_alloc()
465 static int of_serdev_register_devices(struct serdev_controller *ctrl) in of_serdev_register_devices() argument
472 for_each_available_child_of_node(ctrl->dev.of_node, node) { in of_serdev_register_devices()
476 dev_dbg(&ctrl->dev, "adding child %pOF\n", node); in of_serdev_register_devices()
478 serdev = serdev_device_alloc(ctrl); in of_serdev_register_devices()
499 static acpi_status acpi_serdev_register_device(struct serdev_controller *ctrl, in acpi_serdev_register_device() argument
509 serdev = serdev_device_alloc(ctrl); in acpi_serdev_register_device()
511 dev_err(&ctrl->dev, "failed to allocate serdev device for %s\n", in acpi_serdev_register_device()
532 struct serdev_controller *ctrl = data; in acpi_serdev_add_device() local
538 return acpi_serdev_register_device(ctrl, adev); in acpi_serdev_add_device()
541 static int acpi_serdev_register_devices(struct serdev_controller *ctrl) in acpi_serdev_register_devices() argument
546 handle = ACPI_HANDLE(ctrl->dev.parent); in acpi_serdev_register_devices()
551 acpi_serdev_add_device, NULL, ctrl, NULL); in acpi_serdev_register_devices()
553 dev_dbg(&ctrl->dev, "failed to enumerate serdev slaves\n"); in acpi_serdev_register_devices()
555 if (!ctrl->serdev) in acpi_serdev_register_devices()
561 static inline int acpi_serdev_register_devices(struct serdev_controller *ctrl) in acpi_serdev_register_devices() argument
574 int serdev_controller_add(struct serdev_controller *ctrl) in serdev_controller_add() argument
582 ret = device_add(&ctrl->dev); in serdev_controller_add()
586 pm_runtime_enable(&ctrl->dev); in serdev_controller_add()
588 ret_of = of_serdev_register_devices(ctrl); in serdev_controller_add()
589 ret_acpi = acpi_serdev_register_devices(ctrl); in serdev_controller_add()
591 dev_dbg(&ctrl->dev, "no devices registered: of:%d acpi:%d\n", in serdev_controller_add()
597 dev_dbg(&ctrl->dev, "serdev%d registered: dev:%p\n", in serdev_controller_add()
598 ctrl->nr, &ctrl->dev); in serdev_controller_add()
602 pm_runtime_disable(&ctrl->dev); in serdev_controller_add()
603 device_del(&ctrl->dev); in serdev_controller_add()
624 void serdev_controller_remove(struct serdev_controller *ctrl) in serdev_controller_remove() argument
628 if (!ctrl) in serdev_controller_remove()
631 dummy = device_for_each_child(&ctrl->dev, NULL, in serdev_controller_remove()
633 pm_runtime_disable(&ctrl->dev); in serdev_controller_remove()
634 device_del(&ctrl->dev); in serdev_controller_remove()