Lines Matching refs:serdev
59 struct serdev_device *serdev = to_serdev_device(dev); in serdev_device_release() local
60 kfree(serdev); in serdev_device_release()
101 int serdev_device_add(struct serdev_device *serdev) in serdev_device_add() argument
103 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_add()
104 struct device *parent = serdev->dev.parent; in serdev_device_add()
107 dev_set_name(&serdev->dev, "%s-%d", dev_name(parent), serdev->nr); in serdev_device_add()
110 if (ctrl->serdev) { in serdev_device_add()
111 dev_err(&serdev->dev, "controller busy\n"); in serdev_device_add()
114 ctrl->serdev = serdev; in serdev_device_add()
116 err = device_add(&serdev->dev); in serdev_device_add()
118 dev_err(&serdev->dev, "Can't add %s, status %d\n", in serdev_device_add()
119 dev_name(&serdev->dev), err); in serdev_device_add()
123 dev_dbg(&serdev->dev, "device %s registered\n", dev_name(&serdev->dev)); in serdev_device_add()
128 ctrl->serdev = NULL; in serdev_device_add()
137 void serdev_device_remove(struct serdev_device *serdev) in serdev_device_remove() argument
139 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_remove()
141 device_unregister(&serdev->dev); in serdev_device_remove()
142 ctrl->serdev = NULL; in serdev_device_remove()
146 int serdev_device_open(struct serdev_device *serdev) in serdev_device_open() argument
148 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_open()
174 void serdev_device_close(struct serdev_device *serdev) in serdev_device_close() argument
176 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_close()
192 int devm_serdev_device_open(struct device *dev, struct serdev_device *serdev) in devm_serdev_device_open() argument
201 ret = serdev_device_open(serdev); in devm_serdev_device_open()
207 *dr = serdev; in devm_serdev_device_open()
214 void serdev_device_write_wakeup(struct serdev_device *serdev) in serdev_device_write_wakeup() argument
216 complete(&serdev->write_comp); in serdev_device_write_wakeup()
235 int serdev_device_write_buf(struct serdev_device *serdev, in serdev_device_write_buf() argument
238 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_write_buf()
269 int serdev_device_write(struct serdev_device *serdev, in serdev_device_write() argument
273 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_write()
277 if (!ctrl || !ctrl->ops->write_buf || !serdev->ops->write_wakeup) in serdev_device_write()
283 mutex_lock(&serdev->write_lock); in serdev_device_write()
285 reinit_completion(&serdev->write_comp); in serdev_device_write()
298 timeout = wait_for_completion_interruptible_timeout(&serdev->write_comp, in serdev_device_write()
301 mutex_unlock(&serdev->write_lock); in serdev_device_write()
317 void serdev_device_write_flush(struct serdev_device *serdev) in serdev_device_write_flush() argument
319 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_write_flush()
328 int serdev_device_write_room(struct serdev_device *serdev) in serdev_device_write_room() argument
330 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_write_room()
335 return serdev->ctrl->ops->write_room(ctrl); in serdev_device_write_room()
339 unsigned int serdev_device_set_baudrate(struct serdev_device *serdev, unsigned int speed) in serdev_device_set_baudrate() argument
341 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_set_baudrate()
351 void serdev_device_set_flow_control(struct serdev_device *serdev, bool enable) in serdev_device_set_flow_control() argument
353 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_set_flow_control()
362 int serdev_device_set_parity(struct serdev_device *serdev, in serdev_device_set_parity() argument
365 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_set_parity()
374 void serdev_device_wait_until_sent(struct serdev_device *serdev, long timeout) in serdev_device_wait_until_sent() argument
376 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_wait_until_sent()
385 int serdev_device_get_tiocm(struct serdev_device *serdev) in serdev_device_get_tiocm() argument
387 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_get_tiocm()
396 int serdev_device_set_tiocm(struct serdev_device *serdev, int set, int clear) in serdev_device_set_tiocm() argument
398 struct serdev_controller *ctrl = serdev->ctrl; in serdev_device_set_tiocm()
450 struct serdev_device *serdev; in serdev_device_alloc() local
452 serdev = kzalloc(sizeof(*serdev), GFP_KERNEL); in serdev_device_alloc()
453 if (!serdev) in serdev_device_alloc()
456 serdev->ctrl = ctrl; in serdev_device_alloc()
457 device_initialize(&serdev->dev); in serdev_device_alloc()
458 serdev->dev.parent = &ctrl->dev; in serdev_device_alloc()
459 serdev->dev.bus = &serdev_bus_type; in serdev_device_alloc()
460 serdev->dev.type = &serdev_device_type; in serdev_device_alloc()
461 init_completion(&serdev->write_comp); in serdev_device_alloc()
462 mutex_init(&serdev->write_lock); in serdev_device_alloc()
463 return serdev; in serdev_device_alloc()
524 struct serdev_device *serdev = NULL; in of_serdev_register_devices() local
534 serdev = serdev_device_alloc(ctrl); in of_serdev_register_devices()
535 if (!serdev) in of_serdev_register_devices()
538 serdev->dev.of_node = node; in of_serdev_register_devices()
540 err = serdev_device_add(serdev); in of_serdev_register_devices()
542 dev_err(&serdev->dev, in of_serdev_register_devices()
544 serdev_device_put(serdev); in of_serdev_register_devices()
558 struct serdev_device *serdev = NULL; in acpi_serdev_register_device() local
565 serdev = serdev_device_alloc(ctrl); in acpi_serdev_register_device()
566 if (!serdev) { in acpi_serdev_register_device()
572 ACPI_COMPANION_SET(&serdev->dev, adev); in acpi_serdev_register_device()
575 err = serdev_device_add(serdev); in acpi_serdev_register_device()
577 dev_err(&serdev->dev, in acpi_serdev_register_device()
579 serdev_device_put(serdev); in acpi_serdev_register_device()
611 if (!ctrl->serdev) in acpi_serdev_register_devices()
667 struct serdev_device *serdev = to_serdev_device(dev); in serdev_remove_device() local
669 serdev_device_remove(serdev); in serdev_remove_device()