• Home
  • Raw
  • Download

Lines Matching +full:rx +full:- +full:level +full:- +full:trig

18  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
39 * vuart - An inter-partition data link service.
43 * The vuart provides a bi-directional byte stream data link between logical
75 * struct ps3_vuart_port_priv - private vuart device data.
98 BUG_ON(!dev->driver_priv); in to_port_priv()
99 return (struct ps3_vuart_port_priv *)dev->driver_priv; in to_port_priv()
103 * struct ports_bmp - bitmap indicating ports needing service.
118 pr_debug("%s:%d: ports_bmp: %016llxh\n", func, line, bmp->status); in _dump_ports_bmp()
155 struct vuart_triggers *trig) in ps3_vuart_get_triggers() argument
162 result = lv1_get_virtual_uart_param(dev->port_number, in ps3_vuart_get_triggers()
164 trig->tx = tx; in ps3_vuart_get_triggers()
167 dev_dbg(&dev->core, "%s:%d: tx_trigger failed: %s\n", in ps3_vuart_get_triggers()
172 result = lv1_get_virtual_uart_param(dev->port_number, in ps3_vuart_get_triggers()
176 dev_dbg(&dev->core, "%s:%d: tx_buf_size failed: %s\n", in ps3_vuart_get_triggers()
181 result = lv1_get_virtual_uart_param(dev->port_number, in ps3_vuart_get_triggers()
185 dev_dbg(&dev->core, "%s:%d: rx_trigger failed: %s\n", in ps3_vuart_get_triggers()
190 trig->rx = size - val; in ps3_vuart_get_triggers()
192 dev_dbg(&dev->core, "%s:%d: tx %lxh, rx %lxh\n", __func__, __LINE__, in ps3_vuart_get_triggers()
193 trig->tx, trig->rx); in ps3_vuart_get_triggers()
199 unsigned int rx) in ps3_vuart_set_triggers() argument
204 result = lv1_set_virtual_uart_param(dev->port_number, in ps3_vuart_set_triggers()
208 dev_dbg(&dev->core, "%s:%d: tx_trigger failed: %s\n", in ps3_vuart_set_triggers()
213 result = lv1_get_virtual_uart_param(dev->port_number, in ps3_vuart_set_triggers()
217 dev_dbg(&dev->core, "%s:%d: tx_buf_size failed: %s\n", in ps3_vuart_set_triggers()
222 result = lv1_set_virtual_uart_param(dev->port_number, in ps3_vuart_set_triggers()
223 PARAM_RX_TRIGGER, size - rx); in ps3_vuart_set_triggers()
226 dev_dbg(&dev->core, "%s:%d: rx_trigger failed: %s\n", in ps3_vuart_set_triggers()
231 dev_dbg(&dev->core, "%s:%d: tx %xh, rx %xh\n", __func__, __LINE__, in ps3_vuart_set_triggers()
232 tx, rx); in ps3_vuart_set_triggers()
242 result = lv1_get_virtual_uart_param(dev->port_number, in ps3_vuart_get_rx_bytes_waiting()
246 dev_dbg(&dev->core, "%s:%d: rx_bytes failed: %s\n", in ps3_vuart_get_rx_bytes_waiting()
249 dev_dbg(&dev->core, "%s:%d: %llxh\n", __func__, __LINE__, in ps3_vuart_get_rx_bytes_waiting()
255 * ps3_vuart_set_interrupt_mask - Enable/disable the port interrupt sources.
266 dev_dbg(&dev->core, "%s:%d: %lxh\n", __func__, __LINE__, mask); in ps3_vuart_set_interrupt_mask()
268 priv->interrupt_mask = mask; in ps3_vuart_set_interrupt_mask()
270 result = lv1_set_virtual_uart_param(dev->port_number, in ps3_vuart_set_interrupt_mask()
271 PARAM_INTERRUPT_MASK, priv->interrupt_mask); in ps3_vuart_set_interrupt_mask()
274 dev_dbg(&dev->core, "%s:%d: interrupt_mask failed: %s\n", in ps3_vuart_set_interrupt_mask()
287 result = lv1_get_virtual_uart_param(dev->port_number, in ps3_vuart_get_interrupt_status()
291 dev_dbg(&dev->core, "%s:%d: interrupt_status failed: %s\n", in ps3_vuart_get_interrupt_status()
294 *status = tmp & priv->interrupt_mask; in ps3_vuart_get_interrupt_status()
296 dev_dbg(&dev->core, "%s:%d: m %llxh, s %llxh, m&s %lxh\n", in ps3_vuart_get_interrupt_status()
297 __func__, __LINE__, priv->interrupt_mask, tmp, *status); in ps3_vuart_get_interrupt_status()
306 return (priv->interrupt_mask & INTERRUPT_MASK_TX) ? 0 in ps3_vuart_enable_interrupt_tx()
307 : ps3_vuart_set_interrupt_mask(dev, priv->interrupt_mask in ps3_vuart_enable_interrupt_tx()
315 return (priv->interrupt_mask & INTERRUPT_MASK_RX) ? 0 in ps3_vuart_enable_interrupt_rx()
316 : ps3_vuart_set_interrupt_mask(dev, priv->interrupt_mask in ps3_vuart_enable_interrupt_rx()
324 return (priv->interrupt_mask & INTERRUPT_MASK_DISCONNECT) ? 0 in ps3_vuart_enable_interrupt_disconnect()
325 : ps3_vuart_set_interrupt_mask(dev, priv->interrupt_mask in ps3_vuart_enable_interrupt_disconnect()
333 return (priv->interrupt_mask & INTERRUPT_MASK_TX) in ps3_vuart_disable_interrupt_tx()
334 ? ps3_vuart_set_interrupt_mask(dev, priv->interrupt_mask in ps3_vuart_disable_interrupt_tx()
342 return (priv->interrupt_mask & INTERRUPT_MASK_RX) in ps3_vuart_disable_interrupt_rx()
343 ? ps3_vuart_set_interrupt_mask(dev, priv->interrupt_mask in ps3_vuart_disable_interrupt_rx()
351 return (priv->interrupt_mask & INTERRUPT_MASK_DISCONNECT) in ps3_vuart_disable_interrupt_disconnect()
352 ? ps3_vuart_set_interrupt_mask(dev, priv->interrupt_mask in ps3_vuart_disable_interrupt_disconnect()
357 * ps3_vuart_raw_write - Low level write helper.
369 result = lv1_write_virtual_uart(dev->port_number, in ps3_vuart_raw_write()
373 dev_dbg(&dev->core, "%s:%d: lv1_write_virtual_uart failed: " in ps3_vuart_raw_write()
378 priv->stats.bytes_written += *bytes_written; in ps3_vuart_raw_write()
380 dev_dbg(&dev->core, "%s:%d: wrote %llxh/%xh=>%lxh\n", __func__, __LINE__, in ps3_vuart_raw_write()
381 *bytes_written, bytes, priv->stats.bytes_written); in ps3_vuart_raw_write()
387 * ps3_vuart_raw_read - Low level read helper.
399 dev_dbg(&dev->core, "%s:%d: %xh\n", __func__, __LINE__, bytes); in ps3_vuart_raw_read()
401 result = lv1_read_virtual_uart(dev->port_number, in ps3_vuart_raw_read()
405 dev_dbg(&dev->core, "%s:%d: lv1_read_virtual_uart failed: %s\n", in ps3_vuart_raw_read()
410 priv->stats.bytes_read += *bytes_read; in ps3_vuart_raw_read()
412 dev_dbg(&dev->core, "%s:%d: read %llxh/%xh=>%lxh\n", __func__, __LINE__, in ps3_vuart_raw_read()
413 *bytes_read, bytes, priv->stats.bytes_read); in ps3_vuart_raw_read()
419 * ps3_vuart_clear_rx_bytes - Discard bytes received.
423 * Used to clear pending rx interrupt source. Will not block.
440 dev_dbg(&dev->core, "%s:%d: %u\n", __func__, __LINE__, bytes); in ps3_vuart_clear_rx_bytes()
460 priv->stats.bytes_read -= bytes_waiting; in ps3_vuart_clear_rx_bytes()
465 * struct list_buffer - An element for a port device fifo buffer list.
477 * ps3_vuart_write - the entry point for writing data to a port
495 dev_dbg(&dev->core, "%s:%d: %u(%xh) bytes\n", __func__, __LINE__, in ps3_vuart_write()
498 spin_lock_irqsave(&priv->tx_list.lock, flags); in ps3_vuart_write()
500 if (list_empty(&priv->tx_list.head)) { in ps3_vuart_write()
505 spin_unlock_irqrestore(&priv->tx_list.lock, flags); in ps3_vuart_write()
508 dev_dbg(&dev->core, in ps3_vuart_write()
515 dev_dbg(&dev->core, "%s:%d: wrote %xh bytes\n", in ps3_vuart_write()
520 bytes -= bytes_written; in ps3_vuart_write()
523 spin_unlock_irqrestore(&priv->tx_list.lock, flags); in ps3_vuart_write()
528 return -ENOMEM; in ps3_vuart_write()
530 memcpy(lb->data, buf, bytes); in ps3_vuart_write()
531 lb->head = lb->data; in ps3_vuart_write()
532 lb->tail = lb->data + bytes; in ps3_vuart_write()
533 lb->dbg_number = ++dbg_number; in ps3_vuart_write()
535 spin_lock_irqsave(&priv->tx_list.lock, flags); in ps3_vuart_write()
536 list_add_tail(&lb->link, &priv->tx_list.head); in ps3_vuart_write()
538 spin_unlock_irqrestore(&priv->tx_list.lock, flags); in ps3_vuart_write()
540 dev_dbg(&dev->core, "%s:%d: queued buf_%lu, %xh bytes\n", in ps3_vuart_write()
541 __func__, __LINE__, lb->dbg_number, bytes); in ps3_vuart_write()
548 * ps3_vuart_queue_rx_bytes - Queue waiting bytes into the buffer list.
552 * Must be called with priv->rx_list.lock held.
570 return -EIO; in ps3_vuart_queue_rx_bytes()
582 return -ENOMEM; in ps3_vuart_queue_rx_bytes()
584 ps3_vuart_raw_read(dev, lb->data, bytes, &bytes); in ps3_vuart_queue_rx_bytes()
586 lb->head = lb->data; in ps3_vuart_queue_rx_bytes()
587 lb->tail = lb->data + bytes; in ps3_vuart_queue_rx_bytes()
588 lb->dbg_number = ++dbg_number; in ps3_vuart_queue_rx_bytes()
590 list_add_tail(&lb->link, &priv->rx_list.head); in ps3_vuart_queue_rx_bytes()
591 priv->rx_list.bytes_held += bytes; in ps3_vuart_queue_rx_bytes()
593 dev_dbg(&dev->core, "%s:%d: buf_%lu: queued %llxh bytes\n", in ps3_vuart_queue_rx_bytes()
594 __func__, __LINE__, lb->dbg_number, bytes); in ps3_vuart_queue_rx_bytes()
602 * ps3_vuart_read - The entry point for reading data from a port.
607 * be statified by bytes held in the list buffers -EAGAIN is returned.
619 dev_dbg(&dev->core, "%s:%d: %u(%xh) bytes\n", __func__, __LINE__, in ps3_vuart_read()
622 spin_lock_irqsave(&priv->rx_list.lock, flags); in ps3_vuart_read()
624 /* Queue rx bytes here for polled reads. */ in ps3_vuart_read()
626 while (priv->rx_list.bytes_held < bytes) { in ps3_vuart_read()
631 dev_dbg(&dev->core, "%s:%d: starved for %lxh bytes\n", in ps3_vuart_read()
633 bytes - priv->rx_list.bytes_held); in ps3_vuart_read()
634 spin_unlock_irqrestore(&priv->rx_list.lock, flags); in ps3_vuart_read()
635 return -EAGAIN; in ps3_vuart_read()
639 list_for_each_entry_safe(lb, n, &priv->rx_list.head, link) { in ps3_vuart_read()
640 bytes_read = min((unsigned int)(lb->tail - lb->head), bytes); in ps3_vuart_read()
642 memcpy(buf, lb->head, bytes_read); in ps3_vuart_read()
644 bytes -= bytes_read; in ps3_vuart_read()
645 priv->rx_list.bytes_held -= bytes_read; in ps3_vuart_read()
647 if (bytes_read < lb->tail - lb->head) { in ps3_vuart_read()
648 lb->head += bytes_read; in ps3_vuart_read()
649 dev_dbg(&dev->core, "%s:%d: buf_%lu: dequeued %lxh " in ps3_vuart_read()
650 "bytes\n", __func__, __LINE__, lb->dbg_number, in ps3_vuart_read()
652 spin_unlock_irqrestore(&priv->rx_list.lock, flags); in ps3_vuart_read()
656 dev_dbg(&dev->core, "%s:%d: buf_%lu: free, dequeued %lxh " in ps3_vuart_read()
657 "bytes\n", __func__, __LINE__, lb->dbg_number, in ps3_vuart_read()
660 list_del(&lb->link); in ps3_vuart_read()
664 spin_unlock_irqrestore(&priv->rx_list.lock, flags); in ps3_vuart_read()
670 * ps3_vuart_work - Asynchronous read handler.
681 drv->work(dev); in ps3_vuart_work()
689 if (priv->rx_list.work.trigger) { in ps3_vuart_read_async()
690 dev_dbg(&dev->core, "%s:%d: warning, multiple calls\n", in ps3_vuart_read_async()
692 return -EAGAIN; in ps3_vuart_read_async()
697 spin_lock_irqsave(&priv->rx_list.lock, flags); in ps3_vuart_read_async()
698 if (priv->rx_list.bytes_held >= bytes) { in ps3_vuart_read_async()
699 dev_dbg(&dev->core, "%s:%d: schedule_work %xh bytes\n", in ps3_vuart_read_async()
701 schedule_work(&priv->rx_list.work.work); in ps3_vuart_read_async()
702 spin_unlock_irqrestore(&priv->rx_list.lock, flags); in ps3_vuart_read_async()
706 priv->rx_list.work.trigger = bytes; in ps3_vuart_read_async()
707 spin_unlock_irqrestore(&priv->rx_list.lock, flags); in ps3_vuart_read_async()
709 dev_dbg(&dev->core, "%s:%d: waiting for %u(%xh) bytes\n", __func__, in ps3_vuart_read_async()
718 to_port_priv(dev)->rx_list.work.trigger = 0; in ps3_vuart_cancel_async()
723 * ps3_vuart_handle_interrupt_tx - third stage transmit interrupt handler
738 dev_dbg(&dev->core, "%s:%d\n", __func__, __LINE__); in ps3_vuart_handle_interrupt_tx()
740 spin_lock_irqsave(&priv->tx_list.lock, flags); in ps3_vuart_handle_interrupt_tx()
742 list_for_each_entry_safe(lb, n, &priv->tx_list.head, link) { in ps3_vuart_handle_interrupt_tx()
746 result = ps3_vuart_raw_write(dev, lb->head, lb->tail - lb->head, in ps3_vuart_handle_interrupt_tx()
750 dev_dbg(&dev->core, in ps3_vuart_handle_interrupt_tx()
758 if (bytes_written < lb->tail - lb->head) { in ps3_vuart_handle_interrupt_tx()
759 lb->head += bytes_written; in ps3_vuart_handle_interrupt_tx()
760 dev_dbg(&dev->core, in ps3_vuart_handle_interrupt_tx()
762 __func__, __LINE__, lb->dbg_number, in ps3_vuart_handle_interrupt_tx()
767 dev_dbg(&dev->core, "%s:%d free buf_%lu\n", __func__, __LINE__, in ps3_vuart_handle_interrupt_tx()
768 lb->dbg_number); in ps3_vuart_handle_interrupt_tx()
770 list_del(&lb->link); in ps3_vuart_handle_interrupt_tx()
776 spin_unlock_irqrestore(&priv->tx_list.lock, flags); in ps3_vuart_handle_interrupt_tx()
777 dev_dbg(&dev->core, "%s:%d wrote %lxh bytes total\n", in ps3_vuart_handle_interrupt_tx()
783 * ps3_vuart_handle_interrupt_rx - third stage receive interrupt handler
797 dev_dbg(&dev->core, "%s:%d\n", __func__, __LINE__); in ps3_vuart_handle_interrupt_rx()
799 spin_lock_irqsave(&priv->rx_list.lock, flags); in ps3_vuart_handle_interrupt_rx()
803 spin_unlock_irqrestore(&priv->rx_list.lock, flags); in ps3_vuart_handle_interrupt_rx()
807 if (priv->rx_list.work.trigger && priv->rx_list.bytes_held in ps3_vuart_handle_interrupt_rx()
808 >= priv->rx_list.work.trigger) { in ps3_vuart_handle_interrupt_rx()
809 dev_dbg(&dev->core, "%s:%d: schedule_work %lxh bytes\n", in ps3_vuart_handle_interrupt_rx()
810 __func__, __LINE__, priv->rx_list.work.trigger); in ps3_vuart_handle_interrupt_rx()
811 priv->rx_list.work.trigger = 0; in ps3_vuart_handle_interrupt_rx()
812 schedule_work(&priv->rx_list.work.work); in ps3_vuart_handle_interrupt_rx()
815 spin_unlock_irqrestore(&priv->rx_list.lock, flags); in ps3_vuart_handle_interrupt_rx()
822 dev_dbg(&dev->core, "%s:%d\n", __func__, __LINE__); in ps3_vuart_handle_interrupt_disconnect()
824 return -1; in ps3_vuart_handle_interrupt_disconnect()
828 * ps3_vuart_handle_port_interrupt - second stage interrupt handler
846 dev_dbg(&dev->core, "%s:%d: status: %lxh\n", __func__, __LINE__, in ps3_vuart_handle_port_interrupt()
850 priv->stats.disconnect_interrupts++; in ps3_vuart_handle_port_interrupt()
857 priv->stats.tx_interrupts++; in ps3_vuart_handle_port_interrupt()
864 priv->stats.rx_interrupts++; in ps3_vuart_handle_port_interrupt()
882 * ps3_vuart_irq_handler - first stage interrupt handler
898 dump_ports_bmp(bus_priv->bmp); in ps3_vuart_irq_handler()
900 port = (BITS_PER_LONG - 1) - __ilog2(bus_priv->bmp->status); in ps3_vuart_irq_handler()
906 BUG_ON(!bus_priv->devices[port]); in ps3_vuart_irq_handler()
908 ps3_vuart_handle_port_interrupt(bus_priv->devices[port]); in ps3_vuart_irq_handler()
918 pr_debug(" -> %s:%d\n", __func__, __LINE__); in ps3_vuart_bus_interrupt_get()
933 result = -ENOMEM; in ps3_vuart_bus_interrupt_get()
943 result = -EPERM; in ps3_vuart_bus_interrupt_get()
956 pr_debug(" <- %s:%d: ok\n", __func__, __LINE__); in ps3_vuart_bus_interrupt_get()
966 vuart_bus_priv.use_count--; in ps3_vuart_bus_interrupt_get()
967 pr_debug(" <- %s:%d: failed\n", __func__, __LINE__); in ps3_vuart_bus_interrupt_get()
973 pr_debug(" -> %s:%d\n", __func__, __LINE__); in ps3_vuart_bus_interrupt_put()
975 vuart_bus_priv.use_count--; in ps3_vuart_bus_interrupt_put()
990 pr_debug(" <- %s:%d\n", __func__, __LINE__); in ps3_vuart_bus_interrupt_put()
1000 dev_dbg(&dev->core, "%s:%d\n", __func__, __LINE__); in ps3_vuart_probe()
1005 dev_dbg(&dev->core, "%s:%d: (%s)\n", __func__, __LINE__, in ps3_vuart_probe()
1006 drv->core.core.name); in ps3_vuart_probe()
1008 if (dev->port_number >= PORT_COUNT) { in ps3_vuart_probe()
1010 return -EINVAL; in ps3_vuart_probe()
1020 if (vuart_bus_priv.devices[dev->port_number]) { in ps3_vuart_probe()
1021 dev_dbg(&dev->core, "%s:%d: port busy (%d)\n", __func__, in ps3_vuart_probe()
1022 __LINE__, dev->port_number); in ps3_vuart_probe()
1023 result = -EBUSY; in ps3_vuart_probe()
1027 vuart_bus_priv.devices[dev->port_number] = dev; in ps3_vuart_probe()
1029 /* Setup dev->driver_priv. */ in ps3_vuart_probe()
1031 dev->driver_priv = kzalloc(sizeof(struct ps3_vuart_port_priv), in ps3_vuart_probe()
1034 if (!dev->driver_priv) { in ps3_vuart_probe()
1035 result = -ENOMEM; in ps3_vuart_probe()
1041 INIT_LIST_HEAD(&priv->tx_list.head); in ps3_vuart_probe()
1042 spin_lock_init(&priv->tx_list.lock); in ps3_vuart_probe()
1044 INIT_LIST_HEAD(&priv->rx_list.head); in ps3_vuart_probe()
1045 spin_lock_init(&priv->rx_list.lock); in ps3_vuart_probe()
1047 INIT_WORK(&priv->rx_list.work.work, ps3_vuart_work); in ps3_vuart_probe()
1048 priv->rx_list.work.trigger = 0; in ps3_vuart_probe()
1049 priv->rx_list.work.dev = dev; in ps3_vuart_probe()
1059 if (drv->probe) in ps3_vuart_probe()
1060 result = drv->probe(dev); in ps3_vuart_probe()
1063 dev_info(&dev->core, "%s:%d: no probe method\n", __func__, in ps3_vuart_probe()
1068 dev_dbg(&dev->core, "%s:%d: drv->probe failed\n", in ps3_vuart_probe()
1079 kfree(dev->driver_priv); in ps3_vuart_probe()
1080 dev->driver_priv = NULL; in ps3_vuart_probe()
1082 vuart_bus_priv.devices[dev->port_number] = NULL; in ps3_vuart_probe()
1087 dev_dbg(&dev->core, "%s:%d: failed\n", __func__, __LINE__); in ps3_vuart_probe()
1092 * ps3_vuart_cleanup - common cleanup helper.
1102 dev_dbg(&dev->core, "%s:%d\n", __func__, __LINE__); in ps3_vuart_cleanup()
1111 * ps3_vuart_remove - Completely clean the device instance.
1127 dev_dbg(&dev->core, " -> %s:%d: match_id %d\n", __func__, __LINE__, in ps3_vuart_remove()
1128 dev->match_id); in ps3_vuart_remove()
1130 if (!dev->core.driver) { in ps3_vuart_remove()
1131 dev_dbg(&dev->core, "%s:%d: no driver bound\n", __func__, in ps3_vuart_remove()
1141 if (drv->remove) { in ps3_vuart_remove()
1142 drv->remove(dev); in ps3_vuart_remove()
1144 dev_dbg(&dev->core, "%s:%d: no remove method\n", __func__, in ps3_vuart_remove()
1151 vuart_bus_priv.devices[dev->port_number] = NULL; in ps3_vuart_remove()
1155 dev_dbg(&dev->core, " <- %s:%d\n", __func__, __LINE__); in ps3_vuart_remove()
1161 * ps3_vuart_shutdown - Cleans interrupts and HV resources.
1166 * by sys-manager to be able to complete the device power operation
1178 dev_dbg(&dev->core, " -> %s:%d: match_id %d\n", __func__, __LINE__, in ps3_vuart_shutdown()
1179 dev->match_id); in ps3_vuart_shutdown()
1181 if (!dev->core.driver) { in ps3_vuart_shutdown()
1182 dev_dbg(&dev->core, "%s:%d: no driver bound\n", __func__, in ps3_vuart_shutdown()
1192 if (drv->shutdown) in ps3_vuart_shutdown()
1193 drv->shutdown(dev); in ps3_vuart_shutdown()
1194 else if (drv->remove) { in ps3_vuart_shutdown()
1195 dev_dbg(&dev->core, "%s:%d: no shutdown, calling remove\n", in ps3_vuart_shutdown()
1197 drv->remove(dev); in ps3_vuart_shutdown()
1199 dev_dbg(&dev->core, "%s:%d: no shutdown method\n", __func__, in ps3_vuart_shutdown()
1206 dev_dbg(&dev->core, " <- %s:%d\n", __func__, __LINE__); in ps3_vuart_shutdown()
1217 return -ENODEV; in ps3_vuart_bus_init()
1233 * ps3_vuart_port_driver_register - Add a vuart port device driver.
1240 pr_debug("%s:%d: (%s)\n", __func__, __LINE__, drv->core.core.name); in ps3_vuart_port_driver_register()
1242 BUG_ON(!drv->core.match_id); in ps3_vuart_port_driver_register()
1243 BUG_ON(!drv->core.core.name); in ps3_vuart_port_driver_register()
1245 drv->core.probe = ps3_vuart_probe; in ps3_vuart_port_driver_register()
1246 drv->core.remove = ps3_vuart_remove; in ps3_vuart_port_driver_register()
1247 drv->core.shutdown = ps3_vuart_shutdown; in ps3_vuart_port_driver_register()
1249 result = ps3_system_bus_driver_register(&drv->core); in ps3_vuart_port_driver_register()
1255 * ps3_vuart_port_driver_unregister - Remove a vuart port device driver.
1260 pr_debug("%s:%d: (%s)\n", __func__, __LINE__, drv->core.core.name); in ps3_vuart_port_driver_unregister()
1261 ps3_system_bus_driver_unregister(&drv->core); in ps3_vuart_port_driver_unregister()