Lines Matching refs:serdev
62 struct serdev_device *serdev = to_serdev_device(dev); in serdev_device_release() local
63 kfree(serdev); in serdev_device_release()
104 int serdev_device_add(struct serdev_device *serdev) in serdev_device_add() argument
106 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_add()
107 struct device *parent = serdev->dev.parent; in serdev_device_add()
110 dev_set_name(&serdev->dev, "%s-%d", dev_name(parent), serdev->nr); in serdev_device_add()
113 if (ctrl->serdev) { in serdev_device_add()
114 dev_err(&serdev->dev, "controller busy\n"); in serdev_device_add()
117 ctrl->serdev = serdev; in serdev_device_add()
119 err = device_add(&serdev->dev); in serdev_device_add()
121 dev_err(&serdev->dev, "Failed to add serdev: %d\n", err); in serdev_device_add()
125 dev_dbg(&serdev->dev, "serdev registered successfully\n"); in serdev_device_add()
130 ctrl->serdev = NULL; in serdev_device_add()
139 void serdev_device_remove(struct serdev_device *serdev) in serdev_device_remove() argument
141 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_remove()
143 device_unregister(&serdev->dev); in serdev_device_remove()
144 ctrl->serdev = NULL; in serdev_device_remove()
148 int serdev_device_open(struct serdev_device *serdev) in serdev_device_open() argument
150 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_open()
176 void serdev_device_close(struct serdev_device *serdev) in serdev_device_close() argument
178 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_close()
189 static void devm_serdev_device_close(void *serdev) in devm_serdev_device_close() argument
191 serdev_device_close(serdev); in devm_serdev_device_close()
194 int devm_serdev_device_open(struct device *dev, struct serdev_device *serdev) in devm_serdev_device_open() argument
198 ret = serdev_device_open(serdev); in devm_serdev_device_open()
202 return devm_add_action_or_reset(dev, devm_serdev_device_close, serdev); in devm_serdev_device_open()
206 void serdev_device_write_wakeup(struct serdev_device *serdev) in serdev_device_write_wakeup() argument
208 complete(&serdev->write_comp); in serdev_device_write_wakeup()
227 int serdev_device_write_buf(struct serdev_device *serdev, const u8 *buf, size_t count) in serdev_device_write_buf() argument
229 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_write_buf()
260 ssize_t serdev_device_write(struct serdev_device *serdev, const u8 *buf, in serdev_device_write() argument
263 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_write()
267 if (!ctrl || !ctrl->ops->write_buf || !serdev->ops->write_wakeup) in serdev_device_write()
273 mutex_lock(&serdev->write_lock); in serdev_device_write()
275 reinit_completion(&serdev->write_comp); in serdev_device_write()
288 timeout = wait_for_completion_interruptible_timeout(&serdev->write_comp, in serdev_device_write()
291 mutex_unlock(&serdev->write_lock); in serdev_device_write()
307 void serdev_device_write_flush(struct serdev_device *serdev) in serdev_device_write_flush() argument
309 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_write_flush()
318 unsigned int serdev_device_set_baudrate(struct serdev_device *serdev, unsigned int speed) in serdev_device_set_baudrate() argument
320 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_set_baudrate()
330 void serdev_device_set_flow_control(struct serdev_device *serdev, bool enable) in serdev_device_set_flow_control() argument
332 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_set_flow_control()
341 int serdev_device_set_parity(struct serdev_device *serdev, in serdev_device_set_parity() argument
344 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_set_parity()
353 void serdev_device_wait_until_sent(struct serdev_device *serdev, long timeout) in serdev_device_wait_until_sent() argument
355 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_wait_until_sent()
364 int serdev_device_get_tiocm(struct serdev_device *serdev) in serdev_device_get_tiocm() argument
366 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_get_tiocm()
375 int serdev_device_set_tiocm(struct serdev_device *serdev, int set, int clear) in serdev_device_set_tiocm() argument
377 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_set_tiocm()
386 int serdev_device_break_ctl(struct serdev_device *serdev, int break_state) in serdev_device_break_ctl() argument
388 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_break_ctl()
443 struct serdev_device *serdev; in serdev_device_alloc() local
445 serdev = kzalloc_obj(*serdev); in serdev_device_alloc()
446 if (!serdev) in serdev_device_alloc()
449 serdev->ctrl = ctrl; in serdev_device_alloc()
450 device_initialize(&serdev->dev); in serdev_device_alloc()
451 serdev->dev.parent = &ctrl->dev; in serdev_device_alloc()
452 serdev->dev.bus = &serdev_bus_type; in serdev_device_alloc()
453 serdev->dev.type = &serdev_device_type; in serdev_device_alloc()
454 init_completion(&serdev->write_comp); in serdev_device_alloc()
455 mutex_init(&serdev->write_lock); in serdev_device_alloc()
456 return serdev; in serdev_device_alloc()
520 struct serdev_device *serdev = NULL; in of_serdev_register_devices() local
530 serdev = serdev_device_alloc(ctrl); in of_serdev_register_devices()
531 if (!serdev) in of_serdev_register_devices()
534 device_set_node(&serdev->dev, of_fwnode_handle(node)); in of_serdev_register_devices()
536 err = serdev_device_add(serdev); in of_serdev_register_devices()
538 dev_err(&serdev->dev, in of_serdev_register_devices()
541 serdev_device_put(serdev); in of_serdev_register_devices()
671 struct serdev_device *serdev; in acpi_serdev_register_device() local
674 serdev = serdev_device_alloc(ctrl); in acpi_serdev_register_device()
675 if (!serdev) { in acpi_serdev_register_device()
681 ACPI_COMPANION_SET(&serdev->dev, adev); in acpi_serdev_register_device()
684 err = serdev_device_add(serdev); in acpi_serdev_register_device()
686 dev_err(&serdev->dev, in acpi_serdev_register_device()
689 serdev_device_put(serdev); in acpi_serdev_register_device()
748 if (!ctrl->serdev) in acpi_serdev_register_devices()
803 struct serdev_device *serdev = to_serdev_device(dev); in serdev_remove_device() local
805 serdev_device_remove(serdev); in serdev_remove_device()
827 static void serdev_legacy_shutdown(struct serdev_device *serdev) in serdev_legacy_shutdown() argument
829 struct device *dev = &serdev->dev; in serdev_legacy_shutdown()