nu 48 drivers/nfc/nfcmrvl/uart.c struct nci_uart *nu = priv->drv_data; nu 50 drivers/nfc/nfcmrvl/uart.c return nu->ops.send(nu, skb); nu 56 drivers/nfc/nfcmrvl/uart.c struct nci_uart *nu = priv->drv_data; nu 59 drivers/nfc/nfcmrvl/uart.c nci_uart_set_config(nu, le32_to_cpu(config->baudrate), nu 109 drivers/nfc/nfcmrvl/uart.c static int nfcmrvl_nci_uart_open(struct nci_uart *nu) nu 114 drivers/nfc/nfcmrvl/uart.c struct device *dev = nu->tty->dev; nu 135 drivers/nfc/nfcmrvl/uart.c priv = nfcmrvl_nci_register_dev(NFCMRVL_PHY_UART, nu, &uart_ops, nu 142 drivers/nfc/nfcmrvl/uart.c nu->drv_data = priv; nu 143 drivers/nfc/nfcmrvl/uart.c nu->ndev = priv->ndev; nu 148 drivers/nfc/nfcmrvl/uart.c static void nfcmrvl_nci_uart_close(struct nci_uart *nu) nu 150 drivers/nfc/nfcmrvl/uart.c nfcmrvl_nci_unregister_dev((struct nfcmrvl_private *)nu->drv_data); nu 153 drivers/nfc/nfcmrvl/uart.c static int nfcmrvl_nci_uart_recv(struct nci_uart *nu, struct sk_buff *skb) nu 155 drivers/nfc/nfcmrvl/uart.c return nfcmrvl_nci_recv_frame((struct nfcmrvl_private *)nu->drv_data, nu 159 drivers/nfc/nfcmrvl/uart.c static void nfcmrvl_nci_uart_tx_start(struct nci_uart *nu) nu 161 drivers/nfc/nfcmrvl/uart.c struct nfcmrvl_private *priv = (struct nfcmrvl_private *)nu->drv_data; nu 167 drivers/nfc/nfcmrvl/uart.c if (priv->config.break_control && nu->tty->ops->break_ctl) { nu 168 drivers/nfc/nfcmrvl/uart.c nu->tty->ops->break_ctl(nu->tty, 0); nu 173 drivers/nfc/nfcmrvl/uart.c static void nfcmrvl_nci_uart_tx_done(struct nci_uart *nu) nu 175 drivers/nfc/nfcmrvl/uart.c struct nfcmrvl_private *priv = (struct nfcmrvl_private *)nu->drv_data; nu 185 drivers/nfc/nfcmrvl/uart.c if (priv->config.break_control && nu->tty->ops->break_ctl) { nu 186 drivers/nfc/nfcmrvl/uart.c nu->tty->ops->break_ctl(nu->tty, -1); nu 459 include/net/nfc/nci_core.h int nci_uart_register(struct nci_uart *nu); nu 460 include/net/nfc/nci_core.h void nci_uart_unregister(struct nci_uart *nu); nu 461 include/net/nfc/nci_core.h void nci_uart_set_config(struct nci_uart *nu, int baudrate, int flow_ctrl); nu 51 net/nfc/nci/uart.c static inline struct sk_buff *nci_uart_dequeue(struct nci_uart *nu) nu 53 net/nfc/nci/uart.c struct sk_buff *skb = nu->tx_skb; nu 56 net/nfc/nci/uart.c skb = skb_dequeue(&nu->tx_q); nu 58 net/nfc/nci/uart.c nu->tx_skb = NULL; nu 63 net/nfc/nci/uart.c static inline int nci_uart_queue_empty(struct nci_uart *nu) nu 65 net/nfc/nci/uart.c if (nu->tx_skb) nu 68 net/nfc/nci/uart.c return skb_queue_empty(&nu->tx_q); nu 71 net/nfc/nci/uart.c static int nci_uart_tx_wakeup(struct nci_uart *nu) nu 73 net/nfc/nci/uart.c if (test_and_set_bit(NCI_UART_SENDING, &nu->tx_state)) { nu 74 net/nfc/nci/uart.c set_bit(NCI_UART_TX_WAKEUP, &nu->tx_state); nu 78 net/nfc/nci/uart.c schedule_work(&nu->write_work); nu 85 net/nfc/nci/uart.c struct nci_uart *nu = container_of(work, struct nci_uart, write_work); nu 86 net/nfc/nci/uart.c struct tty_struct *tty = nu->tty; nu 90 net/nfc/nci/uart.c clear_bit(NCI_UART_TX_WAKEUP, &nu->tx_state); nu 92 net/nfc/nci/uart.c if (nu->ops.tx_start) nu 93 net/nfc/nci/uart.c nu->ops.tx_start(nu); nu 95 net/nfc/nci/uart.c while ((skb = nci_uart_dequeue(nu))) { nu 102 net/nfc/nci/uart.c nu->tx_skb = skb; nu 108 net/nfc/nci/uart.c if (test_bit(NCI_UART_TX_WAKEUP, &nu->tx_state)) nu 111 net/nfc/nci/uart.c if (nu->ops.tx_done && nci_uart_queue_empty(nu)) nu 112 net/nfc/nci/uart.c nu->ops.tx_done(nu); nu 114 net/nfc/nci/uart.c clear_bit(NCI_UART_SENDING, &nu->tx_state); nu 119 net/nfc/nci/uart.c struct nci_uart *nu = NULL; nu 128 net/nfc/nci/uart.c nu = kzalloc(sizeof(*nu), GFP_KERNEL); nu 129 net/nfc/nci/uart.c if (!nu) nu 132 net/nfc/nci/uart.c memcpy(nu, nci_uart_drivers[driver], sizeof(struct nci_uart)); nu 133 net/nfc/nci/uart.c nu->tty = tty; nu 134 net/nfc/nci/uart.c tty->disc_data = nu; nu 135 net/nfc/nci/uart.c skb_queue_head_init(&nu->tx_q); nu 136 net/nfc/nci/uart.c INIT_WORK(&nu->write_work, nci_uart_write_work); nu 137 net/nfc/nci/uart.c spin_lock_init(&nu->rx_lock); nu 139 net/nfc/nci/uart.c ret = nu->ops.open(nu); nu 142 net/nfc/nci/uart.c kfree(nu); nu 143 net/nfc/nci/uart.c } else if (!try_module_get(nu->owner)) { nu 144 net/nfc/nci/uart.c nu->ops.close(nu); nu 146 net/nfc/nci/uart.c kfree(nu); nu 187 net/nfc/nci/uart.c struct nci_uart *nu = (void *)tty->disc_data; nu 192 net/nfc/nci/uart.c if (!nu) nu 195 net/nfc/nci/uart.c kfree_skb(nu->tx_skb); nu 196 net/nfc/nci/uart.c kfree_skb(nu->rx_skb); nu 198 net/nfc/nci/uart.c skb_queue_purge(&nu->tx_q); nu 200 net/nfc/nci/uart.c nu->ops.close(nu); nu 201 net/nfc/nci/uart.c nu->tty = NULL; nu 202 net/nfc/nci/uart.c module_put(nu->owner); nu 204 net/nfc/nci/uart.c cancel_work_sync(&nu->write_work); nu 206 net/nfc/nci/uart.c kfree(nu); nu 219 net/nfc/nci/uart.c struct nci_uart *nu = (void *)tty->disc_data; nu 221 net/nfc/nci/uart.c if (!nu) nu 226 net/nfc/nci/uart.c if (tty != nu->tty) nu 229 net/nfc/nci/uart.c nci_uart_tx_wakeup(nu); nu 247 net/nfc/nci/uart.c struct nci_uart *nu = (void *)tty->disc_data; nu 249 net/nfc/nci/uart.c if (!nu || tty != nu->tty) nu 252 net/nfc/nci/uart.c spin_lock(&nu->rx_lock); nu 253 net/nfc/nci/uart.c nu->ops.recv_buf(nu, (void *)data, flags, count); nu 254 net/nfc/nci/uart.c spin_unlock(&nu->rx_lock); nu 275 net/nfc/nci/uart.c struct nci_uart *nu = (void *)tty->disc_data; nu 280 net/nfc/nci/uart.c if (!nu) nu 312 net/nfc/nci/uart.c static int nci_uart_send(struct nci_uart *nu, struct sk_buff *skb) nu 315 net/nfc/nci/uart.c skb_queue_tail(&nu->tx_q, skb); nu 318 net/nfc/nci/uart.c nci_uart_tx_wakeup(nu); nu 329 net/nfc/nci/uart.c static int nci_uart_default_recv_buf(struct nci_uart *nu, const u8 *data, nu 334 net/nfc/nci/uart.c if (!nu->ndev) { nu 335 net/nfc/nci/uart.c nfc_err(nu->tty->dev, nu 345 net/nfc/nci/uart.c if (!nu->rx_skb) { nu 346 net/nfc/nci/uart.c nu->rx_packet_len = -1; nu 347 net/nfc/nci/uart.c nu->rx_skb = nci_skb_alloc(nu->ndev, nu 350 net/nfc/nci/uart.c if (!nu->rx_skb) nu 355 net/nfc/nci/uart.c if (nu->rx_skb->len < NCI_CTRL_HDR_SIZE) { nu 356 net/nfc/nci/uart.c skb_put_u8(nu->rx_skb, *data++); nu 362 net/nfc/nci/uart.c if (nu->rx_packet_len < 0) nu 363 net/nfc/nci/uart.c nu->rx_packet_len = NCI_CTRL_HDR_SIZE + nu 364 net/nfc/nci/uart.c nci_plen(nu->rx_skb->data); nu 369 net/nfc/nci/uart.c chunk_len = nu->rx_packet_len - nu->rx_skb->len; nu 372 net/nfc/nci/uart.c skb_put_data(nu->rx_skb, data, chunk_len); nu 377 net/nfc/nci/uart.c if (nu->rx_packet_len == nu->rx_skb->len) { nu 379 net/nfc/nci/uart.c if (nu->ops.recv(nu, nu->rx_skb) != 0) nu 380 net/nfc/nci/uart.c nfc_err(nu->tty->dev, "corrupted RX packet\n"); nu 382 net/nfc/nci/uart.c nu->rx_skb = NULL; nu 390 net/nfc/nci/uart.c static int nci_uart_default_recv(struct nci_uart *nu, struct sk_buff *skb) nu 392 net/nfc/nci/uart.c return nci_recv_frame(nu->ndev, skb); nu 395 net/nfc/nci/uart.c int nci_uart_register(struct nci_uart *nu) nu 397 net/nfc/nci/uart.c if (!nu || !nu->ops.open || nu 398 net/nfc/nci/uart.c !nu->ops.recv || !nu->ops.close) nu 402 net/nfc/nci/uart.c nu->ops.send = nci_uart_send; nu 405 net/nfc/nci/uart.c if (!nu->ops.recv_buf) nu 406 net/nfc/nci/uart.c nu->ops.recv_buf = nci_uart_default_recv_buf; nu 407 net/nfc/nci/uart.c if (!nu->ops.recv) nu 408 net/nfc/nci/uart.c nu->ops.recv = nci_uart_default_recv; nu 411 net/nfc/nci/uart.c if (nci_uart_drivers[nu->driver]) { nu 412 net/nfc/nci/uart.c pr_err("driver %d is already registered\n", nu->driver); nu 415 net/nfc/nci/uart.c nci_uart_drivers[nu->driver] = nu; nu 417 net/nfc/nci/uart.c pr_info("NCI uart driver '%s [%d]' registered\n", nu->name, nu->driver); nu 423 net/nfc/nci/uart.c void nci_uart_unregister(struct nci_uart *nu) nu 425 net/nfc/nci/uart.c pr_info("NCI uart driver '%s [%d]' unregistered\n", nu->name, nu 426 net/nfc/nci/uart.c nu->driver); nu 429 net/nfc/nci/uart.c nci_uart_drivers[nu->driver] = NULL; nu 433 net/nfc/nci/uart.c void nci_uart_set_config(struct nci_uart *nu, int baudrate, int flow_ctrl) nu 437 net/nfc/nci/uart.c if (!nu->tty) nu 440 net/nfc/nci/uart.c down_read(&nu->tty->termios_rwsem); nu 441 net/nfc/nci/uart.c new_termios = nu->tty->termios; nu 442 net/nfc/nci/uart.c up_read(&nu->tty->termios_rwsem); nu 450 net/nfc/nci/uart.c tty_set_termios(nu->tty, &new_termios);