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);