gb_tty 84 drivers/staging/greybus/uart.c struct gb_tty *gb_tty = gb_connection_get_data(connection); gb_tty 85 drivers/staging/greybus/uart.c struct tty_port *port = &gb_tty->port; gb_tty 93 drivers/staging/greybus/uart.c dev_err(&gb_tty->gbphy_dev->dev, gb_tty 103 drivers/staging/greybus/uart.c dev_err(&gb_tty->gbphy_dev->dev, gb_tty 128 drivers/staging/greybus/uart.c dev_err(&gb_tty->gbphy_dev->dev, gb_tty 140 drivers/staging/greybus/uart.c struct gb_tty *gb_tty = gb_connection_get_data(connection); gb_tty 145 drivers/staging/greybus/uart.c dev_err(&gb_tty->gbphy_dev->dev, gb_tty 152 drivers/staging/greybus/uart.c gb_tty->ctrlin = serial_state->control; gb_tty 160 drivers/staging/greybus/uart.c struct gb_tty *gb_tty = gb_connection_get_data(connection); gb_tty 168 drivers/staging/greybus/uart.c dev_err(&gb_tty->gbphy_dev->dev, gb_tty 178 drivers/staging/greybus/uart.c spin_lock_irqsave(&gb_tty->write_lock, flags); gb_tty 179 drivers/staging/greybus/uart.c gb_tty->credits += incoming_credits; gb_tty 180 drivers/staging/greybus/uart.c if (gb_tty->credits > GB_UART_FIRMWARE_CREDITS) { gb_tty 181 drivers/staging/greybus/uart.c gb_tty->credits -= incoming_credits; gb_tty 184 drivers/staging/greybus/uart.c spin_unlock_irqrestore(&gb_tty->write_lock, flags); gb_tty 187 drivers/staging/greybus/uart.c dev_err(&gb_tty->gbphy_dev->dev, gb_tty 193 drivers/staging/greybus/uart.c if (!gb_tty->close_pending) gb_tty 194 drivers/staging/greybus/uart.c schedule_work(&gb_tty->tx_work); gb_tty 199 drivers/staging/greybus/uart.c tty_port_tty_wakeup(&gb_tty->port); gb_tty 201 drivers/staging/greybus/uart.c if (gb_tty->credits == GB_UART_FIRMWARE_CREDITS) gb_tty 202 drivers/staging/greybus/uart.c complete(&gb_tty->credits_complete); gb_tty 210 drivers/staging/greybus/uart.c struct gb_tty *gb_tty = gb_connection_get_data(connection); gb_tty 225 drivers/staging/greybus/uart.c dev_err(&gb_tty->gbphy_dev->dev, gb_tty 236 drivers/staging/greybus/uart.c struct gb_tty *gb_tty; gb_tty 241 drivers/staging/greybus/uart.c gb_tty = container_of(work, struct gb_tty, tx_work); gb_tty 242 drivers/staging/greybus/uart.c request = gb_tty->buffer; gb_tty 245 drivers/staging/greybus/uart.c if (gb_tty->close_pending) gb_tty 248 drivers/staging/greybus/uart.c spin_lock_irqsave(&gb_tty->write_lock, flags); gb_tty 249 drivers/staging/greybus/uart.c send_size = gb_tty->buffer_payload_max; gb_tty 250 drivers/staging/greybus/uart.c if (send_size > gb_tty->credits) gb_tty 251 drivers/staging/greybus/uart.c send_size = gb_tty->credits; gb_tty 253 drivers/staging/greybus/uart.c send_size = kfifo_out_peek(&gb_tty->write_fifo, gb_tty 257 drivers/staging/greybus/uart.c spin_unlock_irqrestore(&gb_tty->write_lock, flags); gb_tty 261 drivers/staging/greybus/uart.c gb_tty->credits -= send_size; gb_tty 262 drivers/staging/greybus/uart.c spin_unlock_irqrestore(&gb_tty->write_lock, flags); gb_tty 265 drivers/staging/greybus/uart.c ret = gb_operation_sync(gb_tty->connection, gb_tty 270 drivers/staging/greybus/uart.c dev_err(&gb_tty->gbphy_dev->dev, gb_tty 272 drivers/staging/greybus/uart.c spin_lock_irqsave(&gb_tty->write_lock, flags); gb_tty 273 drivers/staging/greybus/uart.c gb_tty->credits += send_size; gb_tty 274 drivers/staging/greybus/uart.c spin_unlock_irqrestore(&gb_tty->write_lock, flags); gb_tty 275 drivers/staging/greybus/uart.c if (!gb_tty->close_pending) gb_tty 280 drivers/staging/greybus/uart.c spin_lock_irqsave(&gb_tty->write_lock, flags); gb_tty 281 drivers/staging/greybus/uart.c ret = kfifo_out(&gb_tty->write_fifo, &request->data[0], gb_tty 283 drivers/staging/greybus/uart.c spin_unlock_irqrestore(&gb_tty->write_lock, flags); gb_tty 285 drivers/staging/greybus/uart.c tty_port_tty_wakeup(&gb_tty->port); gb_tty 289 drivers/staging/greybus/uart.c static int send_line_coding(struct gb_tty *tty) gb_tty 299 drivers/staging/greybus/uart.c static int send_control(struct gb_tty *gb_tty, u8 control) gb_tty 304 drivers/staging/greybus/uart.c return gb_operation_sync(gb_tty->connection, gb_tty 309 drivers/staging/greybus/uart.c static int send_break(struct gb_tty *gb_tty, u8 state) gb_tty 314 drivers/staging/greybus/uart.c dev_err(&gb_tty->gbphy_dev->dev, gb_tty 320 drivers/staging/greybus/uart.c return gb_operation_sync(gb_tty->connection, GB_UART_TYPE_SEND_BREAK, gb_tty 324 drivers/staging/greybus/uart.c static int gb_uart_wait_for_all_credits(struct gb_tty *gb_tty) gb_tty 328 drivers/staging/greybus/uart.c if (gb_tty->credits == GB_UART_FIRMWARE_CREDITS) gb_tty 331 drivers/staging/greybus/uart.c ret = wait_for_completion_timeout(&gb_tty->credits_complete, gb_tty 334 drivers/staging/greybus/uart.c dev_err(&gb_tty->gbphy_dev->dev, gb_tty 342 drivers/staging/greybus/uart.c static int gb_uart_flush(struct gb_tty *gb_tty, u8 flags) gb_tty 347 drivers/staging/greybus/uart.c return gb_operation_sync(gb_tty->connection, GB_UART_TYPE_FLUSH_FIFOS, gb_tty 351 drivers/staging/greybus/uart.c static struct gb_tty *get_gb_by_minor(unsigned int minor) gb_tty 353 drivers/staging/greybus/uart.c struct gb_tty *gb_tty; gb_tty 356 drivers/staging/greybus/uart.c gb_tty = idr_find(&tty_minors, minor); gb_tty 357 drivers/staging/greybus/uart.c if (gb_tty) { gb_tty 358 drivers/staging/greybus/uart.c mutex_lock(&gb_tty->mutex); gb_tty 359 drivers/staging/greybus/uart.c if (gb_tty->disconnected) { gb_tty 360 drivers/staging/greybus/uart.c mutex_unlock(&gb_tty->mutex); gb_tty 361 drivers/staging/greybus/uart.c gb_tty = NULL; gb_tty 363 drivers/staging/greybus/uart.c tty_port_get(&gb_tty->port); gb_tty 364 drivers/staging/greybus/uart.c mutex_unlock(&gb_tty->mutex); gb_tty 368 drivers/staging/greybus/uart.c return gb_tty; gb_tty 371 drivers/staging/greybus/uart.c static int alloc_minor(struct gb_tty *gb_tty) gb_tty 376 drivers/staging/greybus/uart.c minor = idr_alloc(&tty_minors, gb_tty, 0, GB_NUM_MINORS, GFP_KERNEL); gb_tty 379 drivers/staging/greybus/uart.c gb_tty->minor = minor; gb_tty 383 drivers/staging/greybus/uart.c static void release_minor(struct gb_tty *gb_tty) gb_tty 385 drivers/staging/greybus/uart.c int minor = gb_tty->minor; gb_tty 387 drivers/staging/greybus/uart.c gb_tty->minor = 0; /* Maybe should use an invalid value instead */ gb_tty 395 drivers/staging/greybus/uart.c struct gb_tty *gb_tty; gb_tty 398 drivers/staging/greybus/uart.c gb_tty = get_gb_by_minor(tty->index); gb_tty 399 drivers/staging/greybus/uart.c if (!gb_tty) gb_tty 406 drivers/staging/greybus/uart.c tty->driver_data = gb_tty; gb_tty 409 drivers/staging/greybus/uart.c tty_port_put(&gb_tty->port); gb_tty 415 drivers/staging/greybus/uart.c struct gb_tty *gb_tty = tty->driver_data; gb_tty 417 drivers/staging/greybus/uart.c return tty_port_open(&gb_tty->port, tty, file); gb_tty 422 drivers/staging/greybus/uart.c struct gb_tty *gb_tty = tty->driver_data; gb_tty 424 drivers/staging/greybus/uart.c tty_port_close(&gb_tty->port, tty, file); gb_tty 429 drivers/staging/greybus/uart.c struct gb_tty *gb_tty = tty->driver_data; gb_tty 431 drivers/staging/greybus/uart.c tty_port_put(&gb_tty->port); gb_tty 436 drivers/staging/greybus/uart.c struct gb_tty *gb_tty = tty->driver_data; gb_tty 438 drivers/staging/greybus/uart.c tty_port_hangup(&gb_tty->port); gb_tty 444 drivers/staging/greybus/uart.c struct gb_tty *gb_tty = tty->driver_data; gb_tty 446 drivers/staging/greybus/uart.c count = kfifo_in_spinlocked(&gb_tty->write_fifo, buf, count, gb_tty 447 drivers/staging/greybus/uart.c &gb_tty->write_lock); gb_tty 448 drivers/staging/greybus/uart.c if (count && !gb_tty->close_pending) gb_tty 449 drivers/staging/greybus/uart.c schedule_work(&gb_tty->tx_work); gb_tty 456 drivers/staging/greybus/uart.c struct gb_tty *gb_tty = tty->driver_data; gb_tty 460 drivers/staging/greybus/uart.c spin_lock_irqsave(&gb_tty->write_lock, flags); gb_tty 461 drivers/staging/greybus/uart.c room = kfifo_avail(&gb_tty->write_fifo); gb_tty 462 drivers/staging/greybus/uart.c spin_unlock_irqrestore(&gb_tty->write_lock, flags); gb_tty 473 drivers/staging/greybus/uart.c struct gb_tty *gb_tty = tty->driver_data; gb_tty 477 drivers/staging/greybus/uart.c spin_lock_irqsave(&gb_tty->write_lock, flags); gb_tty 478 drivers/staging/greybus/uart.c chars = kfifo_len(&gb_tty->write_fifo); gb_tty 479 drivers/staging/greybus/uart.c if (gb_tty->credits < GB_UART_FIRMWARE_CREDITS) gb_tty 480 drivers/staging/greybus/uart.c chars += GB_UART_FIRMWARE_CREDITS - gb_tty->credits; gb_tty 481 drivers/staging/greybus/uart.c spin_unlock_irqrestore(&gb_tty->write_lock, flags); gb_tty 488 drivers/staging/greybus/uart.c struct gb_tty *gb_tty = tty->driver_data; gb_tty 490 drivers/staging/greybus/uart.c return send_break(gb_tty, state ? 1 : 0); gb_tty 496 drivers/staging/greybus/uart.c struct gb_tty *gb_tty = tty->driver_data; gb_tty 499 drivers/staging/greybus/uart.c u8 newctrl = gb_tty->ctrlout; gb_tty 525 drivers/staging/greybus/uart.c gb_tty->clocal = ((termios->c_cflag & CLOCAL) != 0); gb_tty 528 drivers/staging/greybus/uart.c newline.rate = gb_tty->line_coding.rate; gb_tty 534 drivers/staging/greybus/uart.c if (newctrl != gb_tty->ctrlout) { gb_tty 535 drivers/staging/greybus/uart.c gb_tty->ctrlout = newctrl; gb_tty 536 drivers/staging/greybus/uart.c send_control(gb_tty, newctrl); gb_tty 544 drivers/staging/greybus/uart.c if (memcmp(&gb_tty->line_coding, &newline, sizeof(newline))) { gb_tty 545 drivers/staging/greybus/uart.c memcpy(&gb_tty->line_coding, &newline, sizeof(newline)); gb_tty 546 drivers/staging/greybus/uart.c send_line_coding(gb_tty); gb_tty 552 drivers/staging/greybus/uart.c struct gb_tty *gb_tty = tty->driver_data; gb_tty 554 drivers/staging/greybus/uart.c return (gb_tty->ctrlout & GB_UART_CTRL_DTR ? TIOCM_DTR : 0) | gb_tty 555 drivers/staging/greybus/uart.c (gb_tty->ctrlout & GB_UART_CTRL_RTS ? TIOCM_RTS : 0) | gb_tty 556 drivers/staging/greybus/uart.c (gb_tty->ctrlin & GB_UART_CTRL_DSR ? TIOCM_DSR : 0) | gb_tty 557 drivers/staging/greybus/uart.c (gb_tty->ctrlin & GB_UART_CTRL_RI ? TIOCM_RI : 0) | gb_tty 558 drivers/staging/greybus/uart.c (gb_tty->ctrlin & GB_UART_CTRL_DCD ? TIOCM_CD : 0) | gb_tty 565 drivers/staging/greybus/uart.c struct gb_tty *gb_tty = tty->driver_data; gb_tty 566 drivers/staging/greybus/uart.c u8 newctrl = gb_tty->ctrlout; gb_tty 574 drivers/staging/greybus/uart.c if (gb_tty->ctrlout == newctrl) gb_tty 577 drivers/staging/greybus/uart.c gb_tty->ctrlout = newctrl; gb_tty 578 drivers/staging/greybus/uart.c return send_control(gb_tty, newctrl); gb_tty 583 drivers/staging/greybus/uart.c struct gb_tty *gb_tty = tty->driver_data; gb_tty 595 drivers/staging/greybus/uart.c gb_tty->ctrlout &= ~GB_UART_CTRL_RTS; gb_tty 596 drivers/staging/greybus/uart.c retval = send_control(gb_tty, gb_tty->ctrlout); gb_tty 602 drivers/staging/greybus/uart.c struct gb_tty *gb_tty = tty->driver_data; gb_tty 614 drivers/staging/greybus/uart.c gb_tty->ctrlout |= GB_UART_CTRL_RTS; gb_tty 615 drivers/staging/greybus/uart.c retval = send_control(gb_tty, gb_tty->ctrlout); gb_tty 622 drivers/staging/greybus/uart.c struct gb_tty *gb_tty = tty->driver_data; gb_tty 625 drivers/staging/greybus/uart.c ss->line = gb_tty->minor; gb_tty 628 drivers/staging/greybus/uart.c ss->close_delay = gb_tty->port.close_delay / 10; gb_tty 630 drivers/staging/greybus/uart.c gb_tty->port.closing_wait == ASYNC_CLOSING_WAIT_NONE ? gb_tty 631 drivers/staging/greybus/uart.c ASYNC_CLOSING_WAIT_NONE : gb_tty->port.closing_wait / 10; gb_tty 638 drivers/staging/greybus/uart.c struct gb_tty *gb_tty = tty->driver_data; gb_tty 647 drivers/staging/greybus/uart.c mutex_lock(&gb_tty->port.mutex); gb_tty 649 drivers/staging/greybus/uart.c if ((close_delay != gb_tty->port.close_delay) || gb_tty 650 drivers/staging/greybus/uart.c (closing_wait != gb_tty->port.closing_wait)) gb_tty 655 drivers/staging/greybus/uart.c gb_tty->port.close_delay = close_delay; gb_tty 656 drivers/staging/greybus/uart.c gb_tty->port.closing_wait = closing_wait; gb_tty 658 drivers/staging/greybus/uart.c mutex_unlock(&gb_tty->port.mutex); gb_tty 662 drivers/staging/greybus/uart.c static int wait_serial_change(struct gb_tty *gb_tty, unsigned long arg) gb_tty 673 drivers/staging/greybus/uart.c spin_lock_irq(&gb_tty->read_lock); gb_tty 674 drivers/staging/greybus/uart.c old = gb_tty->oldcount; gb_tty 675 drivers/staging/greybus/uart.c new = gb_tty->iocount; gb_tty 676 drivers/staging/greybus/uart.c gb_tty->oldcount = new; gb_tty 677 drivers/staging/greybus/uart.c spin_unlock_irq(&gb_tty->read_lock); gb_tty 686 drivers/staging/greybus/uart.c add_wait_queue(&gb_tty->wioctl, &wait); gb_tty 689 drivers/staging/greybus/uart.c remove_wait_queue(&gb_tty->wioctl, &wait); gb_tty 690 drivers/staging/greybus/uart.c if (gb_tty->disconnected) { gb_tty 705 drivers/staging/greybus/uart.c struct gb_tty *gb_tty = tty->driver_data; gb_tty 707 drivers/staging/greybus/uart.c icount->dsr = gb_tty->iocount.dsr; gb_tty 708 drivers/staging/greybus/uart.c icount->rng = gb_tty->iocount.rng; gb_tty 709 drivers/staging/greybus/uart.c icount->dcd = gb_tty->iocount.dcd; gb_tty 710 drivers/staging/greybus/uart.c icount->frame = gb_tty->iocount.frame; gb_tty 711 drivers/staging/greybus/uart.c icount->overrun = gb_tty->iocount.overrun; gb_tty 712 drivers/staging/greybus/uart.c icount->parity = gb_tty->iocount.parity; gb_tty 713 drivers/staging/greybus/uart.c icount->brk = gb_tty->iocount.brk; gb_tty 721 drivers/staging/greybus/uart.c struct gb_tty *gb_tty = tty->driver_data; gb_tty 725 drivers/staging/greybus/uart.c return wait_serial_change(gb_tty, arg); gb_tty 733 drivers/staging/greybus/uart.c struct gb_tty *gb_tty; gb_tty 736 drivers/staging/greybus/uart.c gb_tty = container_of(port, struct gb_tty, port); gb_tty 737 drivers/staging/greybus/uart.c newctrl = gb_tty->ctrlout; gb_tty 744 drivers/staging/greybus/uart.c gb_tty->ctrlout = newctrl; gb_tty 745 drivers/staging/greybus/uart.c send_control(gb_tty, newctrl); gb_tty 751 drivers/staging/greybus/uart.c struct gb_tty *gb_tty; gb_tty 753 drivers/staging/greybus/uart.c gb_tty = container_of(port, struct gb_tty, port); gb_tty 755 drivers/staging/greybus/uart.c return gbphy_runtime_get_sync(gb_tty->gbphy_dev); gb_tty 760 drivers/staging/greybus/uart.c struct gb_tty *gb_tty; gb_tty 764 drivers/staging/greybus/uart.c gb_tty = container_of(port, struct gb_tty, port); gb_tty 766 drivers/staging/greybus/uart.c gb_tty->close_pending = true; gb_tty 768 drivers/staging/greybus/uart.c cancel_work_sync(&gb_tty->tx_work); gb_tty 770 drivers/staging/greybus/uart.c spin_lock_irqsave(&gb_tty->write_lock, flags); gb_tty 771 drivers/staging/greybus/uart.c kfifo_reset_out(&gb_tty->write_fifo); gb_tty 772 drivers/staging/greybus/uart.c spin_unlock_irqrestore(&gb_tty->write_lock, flags); gb_tty 774 drivers/staging/greybus/uart.c if (gb_tty->credits == GB_UART_FIRMWARE_CREDITS) gb_tty 777 drivers/staging/greybus/uart.c ret = gb_uart_flush(gb_tty, GB_SERIAL_FLAG_FLUSH_TRANSMITTER); gb_tty 779 drivers/staging/greybus/uart.c dev_err(&gb_tty->gbphy_dev->dev, gb_tty 783 drivers/staging/greybus/uart.c gb_uart_wait_for_all_credits(gb_tty); gb_tty 786 drivers/staging/greybus/uart.c gb_tty->close_pending = false; gb_tty 788 drivers/staging/greybus/uart.c gbphy_runtime_put_autosuspend(gb_tty->gbphy_dev); gb_tty 823 drivers/staging/greybus/uart.c struct gb_tty *gb_tty; gb_tty 828 drivers/staging/greybus/uart.c gb_tty = kzalloc(sizeof(*gb_tty), GFP_KERNEL); gb_tty 829 drivers/staging/greybus/uart.c if (!gb_tty) gb_tty 846 drivers/staging/greybus/uart.c gb_tty->buffer_payload_max = max_payload - gb_tty 849 drivers/staging/greybus/uart.c gb_tty->buffer = kzalloc(gb_tty->buffer_payload_max, GFP_KERNEL); gb_tty 850 drivers/staging/greybus/uart.c if (!gb_tty->buffer) { gb_tty 855 drivers/staging/greybus/uart.c INIT_WORK(&gb_tty->tx_work, gb_uart_tx_write_work); gb_tty 857 drivers/staging/greybus/uart.c retval = kfifo_alloc(&gb_tty->write_fifo, GB_UART_WRITE_FIFO_SIZE, gb_tty 862 drivers/staging/greybus/uart.c gb_tty->credits = GB_UART_FIRMWARE_CREDITS; gb_tty 863 drivers/staging/greybus/uart.c init_completion(&gb_tty->credits_complete); gb_tty 865 drivers/staging/greybus/uart.c minor = alloc_minor(gb_tty); gb_tty 877 drivers/staging/greybus/uart.c gb_tty->minor = minor; gb_tty 878 drivers/staging/greybus/uart.c spin_lock_init(&gb_tty->write_lock); gb_tty 879 drivers/staging/greybus/uart.c spin_lock_init(&gb_tty->read_lock); gb_tty 880 drivers/staging/greybus/uart.c init_waitqueue_head(&gb_tty->wioctl); gb_tty 881 drivers/staging/greybus/uart.c mutex_init(&gb_tty->mutex); gb_tty 883 drivers/staging/greybus/uart.c tty_port_init(&gb_tty->port); gb_tty 884 drivers/staging/greybus/uart.c gb_tty->port.ops = &gb_port_ops; gb_tty 886 drivers/staging/greybus/uart.c gb_tty->connection = connection; gb_tty 887 drivers/staging/greybus/uart.c gb_tty->gbphy_dev = gbphy_dev; gb_tty 888 drivers/staging/greybus/uart.c gb_connection_set_data(connection, gb_tty); gb_tty 889 drivers/staging/greybus/uart.c gb_gbphy_set_data(gbphy_dev, gb_tty); gb_tty 895 drivers/staging/greybus/uart.c send_control(gb_tty, gb_tty->ctrlout); gb_tty 898 drivers/staging/greybus/uart.c gb_tty->line_coding.rate = cpu_to_le32(9600); gb_tty 899 drivers/staging/greybus/uart.c gb_tty->line_coding.format = GB_SERIAL_1_STOP_BITS; gb_tty 900 drivers/staging/greybus/uart.c gb_tty->line_coding.parity = GB_SERIAL_NO_PARITY; gb_tty 901 drivers/staging/greybus/uart.c gb_tty->line_coding.data_bits = 8; gb_tty 902 drivers/staging/greybus/uart.c send_line_coding(gb_tty); gb_tty 908 drivers/staging/greybus/uart.c tty_dev = tty_port_register_device(&gb_tty->port, gb_tty_driver, minor, gb_tty 921 drivers/staging/greybus/uart.c release_minor(gb_tty); gb_tty 923 drivers/staging/greybus/uart.c kfifo_free(&gb_tty->write_fifo); gb_tty 925 drivers/staging/greybus/uart.c kfree(gb_tty->buffer); gb_tty 929 drivers/staging/greybus/uart.c kfree(gb_tty); gb_tty 936 drivers/staging/greybus/uart.c struct gb_tty *gb_tty = gb_gbphy_get_data(gbphy_dev); gb_tty 937 drivers/staging/greybus/uart.c struct gb_connection *connection = gb_tty->connection; gb_tty 945 drivers/staging/greybus/uart.c mutex_lock(&gb_tty->mutex); gb_tty 946 drivers/staging/greybus/uart.c gb_tty->disconnected = true; gb_tty 948 drivers/staging/greybus/uart.c wake_up_all(&gb_tty->wioctl); gb_tty 949 drivers/staging/greybus/uart.c mutex_unlock(&gb_tty->mutex); gb_tty 951 drivers/staging/greybus/uart.c tty = tty_port_tty_get(&gb_tty->port); gb_tty 958 drivers/staging/greybus/uart.c tty_unregister_device(gb_tty_driver, gb_tty->minor); gb_tty 963 drivers/staging/greybus/uart.c tty_port_destroy(&gb_tty->port); gb_tty 965 drivers/staging/greybus/uart.c release_minor(gb_tty); gb_tty 966 drivers/staging/greybus/uart.c kfifo_free(&gb_tty->write_fifo); gb_tty 967 drivers/staging/greybus/uart.c kfree(gb_tty->buffer); gb_tty 968 drivers/staging/greybus/uart.c kfree(gb_tty);