ifx_dev 67 drivers/tty/serial/ifx6x60.c static void ifx_spi_handle_srdy(struct ifx_spi_device *ifx_dev); ifx_dev 70 drivers/tty/serial/ifx6x60.c static int ifx_modem_power_off(struct ifx_spi_device *ifx_dev); ifx_dev 82 drivers/tty/serial/ifx6x60.c static int ifx_modem_power_off(struct ifx_spi_device *ifx_dev) ifx_dev 131 drivers/tty/serial/ifx6x60.c ifx_spi_power_state_set(struct ifx_spi_device *ifx_dev, unsigned char val) ifx_dev 135 drivers/tty/serial/ifx6x60.c spin_lock_irqsave(&ifx_dev->power_lock, flags); ifx_dev 141 drivers/tty/serial/ifx6x60.c if (!ifx_dev->power_status) ifx_dev 142 drivers/tty/serial/ifx6x60.c pm_runtime_get(&ifx_dev->spi_dev->dev); ifx_dev 143 drivers/tty/serial/ifx6x60.c ifx_dev->power_status |= val; ifx_dev 145 drivers/tty/serial/ifx6x60.c spin_unlock_irqrestore(&ifx_dev->power_lock, flags); ifx_dev 156 drivers/tty/serial/ifx6x60.c ifx_spi_power_state_clear(struct ifx_spi_device *ifx_dev, unsigned char val) ifx_dev 160 drivers/tty/serial/ifx6x60.c spin_lock_irqsave(&ifx_dev->power_lock, flags); ifx_dev 162 drivers/tty/serial/ifx6x60.c if (ifx_dev->power_status) { ifx_dev 163 drivers/tty/serial/ifx6x60.c ifx_dev->power_status &= ~val; ifx_dev 164 drivers/tty/serial/ifx6x60.c if (!ifx_dev->power_status) ifx_dev 165 drivers/tty/serial/ifx6x60.c pm_runtime_put(&ifx_dev->spi_dev->dev); ifx_dev 168 drivers/tty/serial/ifx6x60.c spin_unlock_irqrestore(&ifx_dev->power_lock, flags); ifx_dev 245 drivers/tty/serial/ifx6x60.c static void mrdy_assert(struct ifx_spi_device *ifx_dev) ifx_dev 247 drivers/tty/serial/ifx6x60.c int val = gpio_get_value(ifx_dev->gpio.srdy); ifx_dev 250 drivers/tty/serial/ifx6x60.c &ifx_dev->flags)) { ifx_dev 251 drivers/tty/serial/ifx6x60.c mod_timer(&ifx_dev->spi_timer,jiffies + IFX_SPI_TIMEOUT_SEC*HZ); ifx_dev 255 drivers/tty/serial/ifx6x60.c ifx_spi_power_state_set(ifx_dev, IFX_SPI_POWER_DATA_PENDING); ifx_dev 256 drivers/tty/serial/ifx6x60.c mrdy_set_high(ifx_dev); ifx_dev 268 drivers/tty/serial/ifx6x60.c struct ifx_spi_device *ifx_dev = from_timer(ifx_dev, t, spi_timer); ifx_dev 270 drivers/tty/serial/ifx6x60.c dev_warn(&ifx_dev->spi_dev->dev, "*** SPI Timeout ***"); ifx_dev 271 drivers/tty/serial/ifx6x60.c tty_port_tty_hangup(&ifx_dev->tty_port, false); ifx_dev 272 drivers/tty/serial/ifx6x60.c mrdy_set_low(ifx_dev); ifx_dev 273 drivers/tty/serial/ifx6x60.c clear_bit(IFX_SPI_STATE_TIMER_PENDING, &ifx_dev->flags); ifx_dev 289 drivers/tty/serial/ifx6x60.c struct ifx_spi_device *ifx_dev = tty->driver_data; ifx_dev 292 drivers/tty/serial/ifx6x60.c (test_bit(IFX_SPI_RTS, &ifx_dev->signal_state) ? TIOCM_RTS : 0) | ifx_dev 293 drivers/tty/serial/ifx6x60.c (test_bit(IFX_SPI_DTR, &ifx_dev->signal_state) ? TIOCM_DTR : 0) | ifx_dev 294 drivers/tty/serial/ifx6x60.c (test_bit(IFX_SPI_CTS, &ifx_dev->signal_state) ? TIOCM_CTS : 0) | ifx_dev 295 drivers/tty/serial/ifx6x60.c (test_bit(IFX_SPI_DSR, &ifx_dev->signal_state) ? TIOCM_DSR : 0) | ifx_dev 296 drivers/tty/serial/ifx6x60.c (test_bit(IFX_SPI_DCD, &ifx_dev->signal_state) ? TIOCM_CAR : 0) | ifx_dev 297 drivers/tty/serial/ifx6x60.c (test_bit(IFX_SPI_RI, &ifx_dev->signal_state) ? TIOCM_RNG : 0); ifx_dev 315 drivers/tty/serial/ifx6x60.c struct ifx_spi_device *ifx_dev = tty->driver_data; ifx_dev 318 drivers/tty/serial/ifx6x60.c set_bit(IFX_SPI_RTS, &ifx_dev->signal_state); ifx_dev 320 drivers/tty/serial/ifx6x60.c set_bit(IFX_SPI_DTR, &ifx_dev->signal_state); ifx_dev 322 drivers/tty/serial/ifx6x60.c clear_bit(IFX_SPI_RTS, &ifx_dev->signal_state); ifx_dev 324 drivers/tty/serial/ifx6x60.c clear_bit(IFX_SPI_DTR, &ifx_dev->signal_state); ifx_dev 326 drivers/tty/serial/ifx6x60.c set_bit(IFX_SPI_UPDATE, &ifx_dev->signal_state); ifx_dev 355 drivers/tty/serial/ifx6x60.c struct ifx_spi_device *ifx_dev = tty->driver_data; ifx_dev 356 drivers/tty/serial/ifx6x60.c tty_port_close(&ifx_dev->tty_port, tty, filp); ifx_dev 429 drivers/tty/serial/ifx6x60.c static int ifx_spi_prepare_tx_buffer(struct ifx_spi_device *ifx_dev) ifx_dev 436 drivers/tty/serial/ifx6x60.c tx_buffer = ifx_dev->tx_buffer; ifx_dev 444 drivers/tty/serial/ifx6x60.c ifx_dev->spi_more = 0; ifx_dev 447 drivers/tty/serial/ifx6x60.c if (!ifx_dev->spi_slave_cts) { ifx_dev 449 drivers/tty/serial/ifx6x60.c queue_length = kfifo_len(&ifx_dev->tx_fifo); ifx_dev 453 drivers/tty/serial/ifx6x60.c temp_count = kfifo_out_locked(&ifx_dev->tx_fifo, ifx_dev 455 drivers/tty/serial/ifx6x60.c &ifx_dev->fifo_lock); ifx_dev 462 drivers/tty/serial/ifx6x60.c tty_port_tty_wakeup(&ifx_dev->tty_port); ifx_dev 464 drivers/tty/serial/ifx6x60.c ifx_dev->spi_more = 1; ifx_dev 469 drivers/tty/serial/ifx6x60.c ifx_spi_setup_spi_header(ifx_dev->tx_buffer, ifx_dev 471 drivers/tty/serial/ifx6x60.c ifx_dev->spi_more); ifx_dev 473 drivers/tty/serial/ifx6x60.c ifx_dev->swap_buf((ifx_dev->tx_buffer), tx_count, ifx_dev 474 drivers/tty/serial/ifx6x60.c &ifx_dev->tx_buffer[IFX_SPI_TRANSFER_SIZE]); ifx_dev 491 drivers/tty/serial/ifx6x60.c struct ifx_spi_device *ifx_dev = tty->driver_data; ifx_dev 497 drivers/tty/serial/ifx6x60.c spin_lock_irqsave(&ifx_dev->fifo_lock, flags); ifx_dev 498 drivers/tty/serial/ifx6x60.c is_fifo_empty = kfifo_is_empty(&ifx_dev->tx_fifo); ifx_dev 499 drivers/tty/serial/ifx6x60.c tx_count = kfifo_in(&ifx_dev->tx_fifo, tmp_buf, count); ifx_dev 500 drivers/tty/serial/ifx6x60.c spin_unlock_irqrestore(&ifx_dev->fifo_lock, flags); ifx_dev 502 drivers/tty/serial/ifx6x60.c mrdy_assert(ifx_dev); ifx_dev 516 drivers/tty/serial/ifx6x60.c struct ifx_spi_device *ifx_dev = tty->driver_data; ifx_dev 517 drivers/tty/serial/ifx6x60.c return IFX_SPI_FIFO_SIZE - kfifo_len(&ifx_dev->tx_fifo); ifx_dev 529 drivers/tty/serial/ifx6x60.c struct ifx_spi_device *ifx_dev = tty->driver_data; ifx_dev 530 drivers/tty/serial/ifx6x60.c return kfifo_len(&ifx_dev->tx_fifo); ifx_dev 543 drivers/tty/serial/ifx6x60.c struct ifx_spi_device *ifx_dev = tty->driver_data; ifx_dev 544 drivers/tty/serial/ifx6x60.c tty_port_hangup(&ifx_dev->tty_port); ifx_dev 556 drivers/tty/serial/ifx6x60.c struct ifx_spi_device *ifx_dev = ifx_dev 560 drivers/tty/serial/ifx6x60.c kfifo_reset(&ifx_dev->tx_fifo); ifx_dev 563 drivers/tty/serial/ifx6x60.c clear_bit(IFX_SPI_STATE_IO_IN_PROGRESS, &ifx_dev->flags); ifx_dev 564 drivers/tty/serial/ifx6x60.c clear_bit(IFX_SPI_STATE_IO_READY, &ifx_dev->flags); ifx_dev 567 drivers/tty/serial/ifx6x60.c tty->driver_data = ifx_dev; ifx_dev 573 drivers/tty/serial/ifx6x60.c set_bit(IFX_SPI_STATE_IO_AVAILABLE, &ifx_dev->flags); ifx_dev 587 drivers/tty/serial/ifx6x60.c struct ifx_spi_device *ifx_dev = ifx_dev 590 drivers/tty/serial/ifx6x60.c clear_bit(IFX_SPI_STATE_IO_AVAILABLE, &ifx_dev->flags); ifx_dev 591 drivers/tty/serial/ifx6x60.c mrdy_set_low(ifx_dev); ifx_dev 592 drivers/tty/serial/ifx6x60.c del_timer(&ifx_dev->spi_timer); ifx_dev 593 drivers/tty/serial/ifx6x60.c clear_bit(IFX_SPI_STATE_TIMER_PENDING, &ifx_dev->flags); ifx_dev 594 drivers/tty/serial/ifx6x60.c tasklet_kill(&ifx_dev->io_work_tasklet); ifx_dev 622 drivers/tty/serial/ifx6x60.c static void ifx_spi_insert_flip_string(struct ifx_spi_device *ifx_dev, ifx_dev 625 drivers/tty/serial/ifx6x60.c tty_insert_flip_string(&ifx_dev->tty_port, chars, size); ifx_dev 626 drivers/tty/serial/ifx6x60.c tty_flip_buffer_push(&ifx_dev->tty_port); ifx_dev 638 drivers/tty/serial/ifx6x60.c struct ifx_spi_device *ifx_dev = ctx; ifx_dev 648 drivers/tty/serial/ifx6x60.c mrdy_set_low(ifx_dev); ifx_dev 650 drivers/tty/serial/ifx6x60.c if (!ifx_dev->spi_msg.status) { ifx_dev 652 drivers/tty/serial/ifx6x60.c ifx_dev->swap_buf(ifx_dev->rx_buffer, IFX_SPI_HEADER_OVERHEAD, ifx_dev 653 drivers/tty/serial/ifx6x60.c &ifx_dev->rx_buffer[IFX_SPI_HEADER_OVERHEAD]); ifx_dev 654 drivers/tty/serial/ifx6x60.c decode_result = ifx_spi_decode_spi_header(ifx_dev->rx_buffer, ifx_dev 657 drivers/tty/serial/ifx6x60.c dev_dbg(&ifx_dev->spi_dev->dev, ifx_dev 659 drivers/tty/serial/ifx6x60.c ifx_dev->spi_slave_cts = 0; ifx_dev 662 drivers/tty/serial/ifx6x60.c dev_dbg(&ifx_dev->spi_dev->dev, ifx_dev 667 drivers/tty/serial/ifx6x60.c ifx_dev->spi_slave_cts = cts; ifx_dev 670 drivers/tty/serial/ifx6x60.c ifx_dev->spi_msg.actual_length); ifx_dev 671 drivers/tty/serial/ifx6x60.c ifx_dev->swap_buf( ifx_dev 672 drivers/tty/serial/ifx6x60.c (ifx_dev->rx_buffer + IFX_SPI_HEADER_OVERHEAD), ifx_dev 674 drivers/tty/serial/ifx6x60.c &ifx_dev->rx_buffer[IFX_SPI_TRANSFER_SIZE]); ifx_dev 676 drivers/tty/serial/ifx6x60.c ifx_dev, ifx_dev 677 drivers/tty/serial/ifx6x60.c ifx_dev->rx_buffer + IFX_SPI_HEADER_OVERHEAD, ifx_dev 681 drivers/tty/serial/ifx6x60.c dev_dbg(&ifx_dev->spi_dev->dev, "SPI transfer error %d", ifx_dev 682 drivers/tty/serial/ifx6x60.c ifx_dev->spi_msg.status); ifx_dev 686 drivers/tty/serial/ifx6x60.c if (ifx_dev->write_pending) { ifx_dev 687 drivers/tty/serial/ifx6x60.c ifx_dev->write_pending = 0; ifx_dev 691 drivers/tty/serial/ifx6x60.c clear_bit(IFX_SPI_STATE_IO_IN_PROGRESS, &(ifx_dev->flags)); ifx_dev 693 drivers/tty/serial/ifx6x60.c queue_length = kfifo_len(&ifx_dev->tx_fifo); ifx_dev 694 drivers/tty/serial/ifx6x60.c srdy = gpio_get_value(ifx_dev->gpio.srdy); ifx_dev 696 drivers/tty/serial/ifx6x60.c ifx_spi_power_state_clear(ifx_dev, IFX_SPI_POWER_SRDY); ifx_dev 699 drivers/tty/serial/ifx6x60.c if (test_and_clear_bit(IFX_SPI_STATE_IO_READY, &ifx_dev->flags)) ifx_dev 700 drivers/tty/serial/ifx6x60.c tasklet_schedule(&ifx_dev->io_work_tasklet); ifx_dev 702 drivers/tty/serial/ifx6x60.c if (more || ifx_dev->spi_more || queue_length > 0 || ifx_dev 704 drivers/tty/serial/ifx6x60.c if (ifx_dev->spi_slave_cts) { ifx_dev 706 drivers/tty/serial/ifx6x60.c mrdy_assert(ifx_dev); ifx_dev 708 drivers/tty/serial/ifx6x60.c mrdy_assert(ifx_dev); ifx_dev 715 drivers/tty/serial/ifx6x60.c ifx_spi_power_state_clear(ifx_dev, ifx_dev 717 drivers/tty/serial/ifx6x60.c tty_port_tty_wakeup(&ifx_dev->tty_port); ifx_dev 732 drivers/tty/serial/ifx6x60.c struct ifx_spi_device *ifx_dev = (struct ifx_spi_device *) data; ifx_dev 734 drivers/tty/serial/ifx6x60.c if (!test_and_set_bit(IFX_SPI_STATE_IO_IN_PROGRESS, &ifx_dev->flags) && ifx_dev 735 drivers/tty/serial/ifx6x60.c test_bit(IFX_SPI_STATE_IO_AVAILABLE, &ifx_dev->flags)) { ifx_dev 736 drivers/tty/serial/ifx6x60.c if (ifx_dev->gpio.unack_srdy_int_nb > 0) ifx_dev 737 drivers/tty/serial/ifx6x60.c ifx_dev->gpio.unack_srdy_int_nb--; ifx_dev 739 drivers/tty/serial/ifx6x60.c ifx_spi_prepare_tx_buffer(ifx_dev); ifx_dev 741 drivers/tty/serial/ifx6x60.c spi_message_init(&ifx_dev->spi_msg); ifx_dev 742 drivers/tty/serial/ifx6x60.c INIT_LIST_HEAD(&ifx_dev->spi_msg.queue); ifx_dev 744 drivers/tty/serial/ifx6x60.c ifx_dev->spi_msg.context = ifx_dev; ifx_dev 745 drivers/tty/serial/ifx6x60.c ifx_dev->spi_msg.complete = ifx_spi_complete; ifx_dev 749 drivers/tty/serial/ifx6x60.c ifx_dev->spi_xfer.len = IFX_SPI_TRANSFER_SIZE; ifx_dev 750 drivers/tty/serial/ifx6x60.c ifx_dev->spi_xfer.cs_change = 0; ifx_dev 751 drivers/tty/serial/ifx6x60.c ifx_dev->spi_xfer.speed_hz = ifx_dev->spi_dev->max_speed_hz; ifx_dev 753 drivers/tty/serial/ifx6x60.c ifx_dev->spi_xfer.bits_per_word = ifx_dev 754 drivers/tty/serial/ifx6x60.c ifx_dev->spi_dev->bits_per_word; ifx_dev 756 drivers/tty/serial/ifx6x60.c ifx_dev->spi_xfer.tx_buf = ifx_dev->tx_buffer; ifx_dev 757 drivers/tty/serial/ifx6x60.c ifx_dev->spi_xfer.rx_buf = ifx_dev->rx_buffer; ifx_dev 762 drivers/tty/serial/ifx6x60.c if (ifx_dev->use_dma) { ifx_dev 763 drivers/tty/serial/ifx6x60.c ifx_dev->spi_msg.is_dma_mapped = 1; ifx_dev 764 drivers/tty/serial/ifx6x60.c ifx_dev->tx_dma = ifx_dev->tx_bus; ifx_dev 765 drivers/tty/serial/ifx6x60.c ifx_dev->rx_dma = ifx_dev->rx_bus; ifx_dev 766 drivers/tty/serial/ifx6x60.c ifx_dev->spi_xfer.tx_dma = ifx_dev->tx_dma; ifx_dev 767 drivers/tty/serial/ifx6x60.c ifx_dev->spi_xfer.rx_dma = ifx_dev->rx_dma; ifx_dev 769 drivers/tty/serial/ifx6x60.c ifx_dev->spi_msg.is_dma_mapped = 0; ifx_dev 770 drivers/tty/serial/ifx6x60.c ifx_dev->tx_dma = (dma_addr_t)0; ifx_dev 771 drivers/tty/serial/ifx6x60.c ifx_dev->rx_dma = (dma_addr_t)0; ifx_dev 772 drivers/tty/serial/ifx6x60.c ifx_dev->spi_xfer.tx_dma = (dma_addr_t)0; ifx_dev 773 drivers/tty/serial/ifx6x60.c ifx_dev->spi_xfer.rx_dma = (dma_addr_t)0; ifx_dev 776 drivers/tty/serial/ifx6x60.c spi_message_add_tail(&ifx_dev->spi_xfer, &ifx_dev->spi_msg); ifx_dev 781 drivers/tty/serial/ifx6x60.c mrdy_assert(ifx_dev); ifx_dev 783 drivers/tty/serial/ifx6x60.c retval = spi_async(ifx_dev->spi_dev, &ifx_dev->spi_msg); ifx_dev 786 drivers/tty/serial/ifx6x60.c &ifx_dev->flags); ifx_dev 787 drivers/tty/serial/ifx6x60.c tasklet_schedule(&ifx_dev->io_work_tasklet); ifx_dev 791 drivers/tty/serial/ifx6x60.c ifx_dev->write_pending = 1; ifx_dev 800 drivers/tty/serial/ifx6x60.c static void ifx_spi_free_port(struct ifx_spi_device *ifx_dev) ifx_dev 802 drivers/tty/serial/ifx6x60.c if (ifx_dev->tty_dev) ifx_dev 803 drivers/tty/serial/ifx6x60.c tty_unregister_device(tty_drv, ifx_dev->minor); ifx_dev 804 drivers/tty/serial/ifx6x60.c tty_port_destroy(&ifx_dev->tty_port); ifx_dev 805 drivers/tty/serial/ifx6x60.c kfifo_free(&ifx_dev->tx_fifo); ifx_dev 815 drivers/tty/serial/ifx6x60.c static int ifx_spi_create_port(struct ifx_spi_device *ifx_dev) ifx_dev 818 drivers/tty/serial/ifx6x60.c struct tty_port *pport = &ifx_dev->tty_port; ifx_dev 820 drivers/tty/serial/ifx6x60.c spin_lock_init(&ifx_dev->fifo_lock); ifx_dev 821 drivers/tty/serial/ifx6x60.c lockdep_set_class_and_subclass(&ifx_dev->fifo_lock, ifx_dev 824 drivers/tty/serial/ifx6x60.c if (kfifo_alloc(&ifx_dev->tx_fifo, IFX_SPI_FIFO_SIZE, GFP_KERNEL)) { ifx_dev 831 drivers/tty/serial/ifx6x60.c ifx_dev->minor = IFX_SPI_TTY_ID; ifx_dev 832 drivers/tty/serial/ifx6x60.c ifx_dev->tty_dev = tty_port_register_device(pport, tty_drv, ifx_dev 833 drivers/tty/serial/ifx6x60.c ifx_dev->minor, &ifx_dev->spi_dev->dev); ifx_dev 834 drivers/tty/serial/ifx6x60.c if (IS_ERR(ifx_dev->tty_dev)) { ifx_dev 835 drivers/tty/serial/ifx6x60.c dev_dbg(&ifx_dev->spi_dev->dev, ifx_dev 837 drivers/tty/serial/ifx6x60.c ret = PTR_ERR(ifx_dev->tty_dev); ifx_dev 845 drivers/tty/serial/ifx6x60.c ifx_spi_free_port(ifx_dev); ifx_dev 857 drivers/tty/serial/ifx6x60.c static void ifx_spi_handle_srdy(struct ifx_spi_device *ifx_dev) ifx_dev 859 drivers/tty/serial/ifx6x60.c if (test_bit(IFX_SPI_STATE_TIMER_PENDING, &ifx_dev->flags)) { ifx_dev 860 drivers/tty/serial/ifx6x60.c del_timer(&ifx_dev->spi_timer); ifx_dev 861 drivers/tty/serial/ifx6x60.c clear_bit(IFX_SPI_STATE_TIMER_PENDING, &ifx_dev->flags); ifx_dev 864 drivers/tty/serial/ifx6x60.c ifx_spi_power_state_set(ifx_dev, IFX_SPI_POWER_SRDY); ifx_dev 866 drivers/tty/serial/ifx6x60.c if (!test_bit(IFX_SPI_STATE_IO_IN_PROGRESS, &ifx_dev->flags)) ifx_dev 867 drivers/tty/serial/ifx6x60.c tasklet_schedule(&ifx_dev->io_work_tasklet); ifx_dev 869 drivers/tty/serial/ifx6x60.c set_bit(IFX_SPI_STATE_IO_READY, &ifx_dev->flags); ifx_dev 881 drivers/tty/serial/ifx6x60.c struct ifx_spi_device *ifx_dev = dev; ifx_dev 882 drivers/tty/serial/ifx6x60.c ifx_dev->gpio.unack_srdy_int_nb++; ifx_dev 883 drivers/tty/serial/ifx6x60.c ifx_spi_handle_srdy(ifx_dev); ifx_dev 900 drivers/tty/serial/ifx6x60.c struct ifx_spi_device *ifx_dev = dev; ifx_dev 901 drivers/tty/serial/ifx6x60.c int val = gpio_get_value(ifx_dev->gpio.reset_out); ifx_dev 902 drivers/tty/serial/ifx6x60.c int solreset = test_bit(MR_START, &ifx_dev->mdm_reset_state); ifx_dev 906 drivers/tty/serial/ifx6x60.c set_bit(MR_INPROGRESS, &ifx_dev->mdm_reset_state); ifx_dev 909 drivers/tty/serial/ifx6x60.c tty_port_tty_hangup(&ifx_dev->tty_port, false); ifx_dev 913 drivers/tty/serial/ifx6x60.c clear_bit(MR_INPROGRESS, &ifx_dev->mdm_reset_state); ifx_dev 915 drivers/tty/serial/ifx6x60.c set_bit(MR_COMPLETE, &ifx_dev->mdm_reset_state); ifx_dev 916 drivers/tty/serial/ifx6x60.c wake_up(&ifx_dev->mdm_reset_wait); ifx_dev 928 drivers/tty/serial/ifx6x60.c static void ifx_spi_free_device(struct ifx_spi_device *ifx_dev) ifx_dev 930 drivers/tty/serial/ifx6x60.c ifx_spi_free_port(ifx_dev); ifx_dev 931 drivers/tty/serial/ifx6x60.c dma_free_coherent(&ifx_dev->spi_dev->dev, ifx_dev 933 drivers/tty/serial/ifx6x60.c ifx_dev->tx_buffer, ifx_dev 934 drivers/tty/serial/ifx6x60.c ifx_dev->tx_bus); ifx_dev 935 drivers/tty/serial/ifx6x60.c dma_free_coherent(&ifx_dev->spi_dev->dev, ifx_dev 937 drivers/tty/serial/ifx6x60.c ifx_dev->rx_buffer, ifx_dev 938 drivers/tty/serial/ifx6x60.c ifx_dev->rx_bus); ifx_dev 947 drivers/tty/serial/ifx6x60.c static int ifx_spi_reset(struct ifx_spi_device *ifx_dev) ifx_dev 956 drivers/tty/serial/ifx6x60.c set_bit(MR_START, &ifx_dev->mdm_reset_state); ifx_dev 957 drivers/tty/serial/ifx6x60.c gpio_set_value(ifx_dev->gpio.po, 0); ifx_dev 958 drivers/tty/serial/ifx6x60.c gpio_set_value(ifx_dev->gpio.reset, 0); ifx_dev 960 drivers/tty/serial/ifx6x60.c gpio_set_value(ifx_dev->gpio.reset, 1); ifx_dev 962 drivers/tty/serial/ifx6x60.c gpio_set_value(ifx_dev->gpio.po, 1); ifx_dev 964 drivers/tty/serial/ifx6x60.c gpio_set_value(ifx_dev->gpio.po, 0); ifx_dev 965 drivers/tty/serial/ifx6x60.c ret = wait_event_timeout(ifx_dev->mdm_reset_wait, ifx_dev 967 drivers/tty/serial/ifx6x60.c &ifx_dev->mdm_reset_state), ifx_dev 970 drivers/tty/serial/ifx6x60.c dev_warn(&ifx_dev->spi_dev->dev, "Modem reset timeout: (state:%lx)", ifx_dev 971 drivers/tty/serial/ifx6x60.c ifx_dev->mdm_reset_state); ifx_dev 973 drivers/tty/serial/ifx6x60.c ifx_dev->mdm_reset_state = 0; ifx_dev 994 drivers/tty/serial/ifx6x60.c struct ifx_spi_device *ifx_dev; ifx_dev 1008 drivers/tty/serial/ifx6x60.c ifx_dev = kzalloc(sizeof(struct ifx_spi_device), GFP_KERNEL); ifx_dev 1009 drivers/tty/serial/ifx6x60.c if (!ifx_dev) { ifx_dev 1013 drivers/tty/serial/ifx6x60.c saved_ifx_dev = ifx_dev; ifx_dev 1014 drivers/tty/serial/ifx6x60.c ifx_dev->spi_dev = spi; ifx_dev 1015 drivers/tty/serial/ifx6x60.c clear_bit(IFX_SPI_STATE_IO_IN_PROGRESS, &ifx_dev->flags); ifx_dev 1016 drivers/tty/serial/ifx6x60.c spin_lock_init(&ifx_dev->write_lock); ifx_dev 1017 drivers/tty/serial/ifx6x60.c spin_lock_init(&ifx_dev->power_lock); ifx_dev 1018 drivers/tty/serial/ifx6x60.c ifx_dev->power_status = 0; ifx_dev 1019 drivers/tty/serial/ifx6x60.c timer_setup(&ifx_dev->spi_timer, ifx_spi_timeout, 0); ifx_dev 1020 drivers/tty/serial/ifx6x60.c ifx_dev->modem = pl_data->modem_type; ifx_dev 1021 drivers/tty/serial/ifx6x60.c ifx_dev->use_dma = pl_data->use_dma; ifx_dev 1022 drivers/tty/serial/ifx6x60.c ifx_dev->max_hz = pl_data->max_hz; ifx_dev 1024 drivers/tty/serial/ifx6x60.c spi->max_speed_hz = ifx_dev->max_hz; ifx_dev 1030 drivers/tty/serial/ifx6x60.c kfree(ifx_dev); ifx_dev 1036 drivers/tty/serial/ifx6x60.c ifx_dev->swap_buf = swap_buf_32; ifx_dev 1038 drivers/tty/serial/ifx6x60.c ifx_dev->swap_buf = swap_buf_16; ifx_dev 1040 drivers/tty/serial/ifx6x60.c ifx_dev->swap_buf = swap_buf_8; ifx_dev 1043 drivers/tty/serial/ifx6x60.c ifx_dev->spi_more = 0; ifx_dev 1044 drivers/tty/serial/ifx6x60.c ifx_dev->spi_slave_cts = 0; ifx_dev 1047 drivers/tty/serial/ifx6x60.c ifx_dev->tx_buffer = dma_alloc_coherent(ifx_dev->spi_dev->dev.parent, ifx_dev 1049 drivers/tty/serial/ifx6x60.c &ifx_dev->tx_bus, ifx_dev 1051 drivers/tty/serial/ifx6x60.c if (!ifx_dev->tx_buffer) { ifx_dev 1056 drivers/tty/serial/ifx6x60.c ifx_dev->rx_buffer = dma_alloc_coherent(ifx_dev->spi_dev->dev.parent, ifx_dev 1058 drivers/tty/serial/ifx6x60.c &ifx_dev->rx_bus, ifx_dev 1060 drivers/tty/serial/ifx6x60.c if (!ifx_dev->rx_buffer) { ifx_dev 1067 drivers/tty/serial/ifx6x60.c init_waitqueue_head(&ifx_dev->mdm_reset_wait); ifx_dev 1069 drivers/tty/serial/ifx6x60.c spi_set_drvdata(spi, ifx_dev); ifx_dev 1070 drivers/tty/serial/ifx6x60.c tasklet_init(&ifx_dev->io_work_tasklet, ifx_spi_io, ifx_dev 1071 drivers/tty/serial/ifx6x60.c (unsigned long)ifx_dev); ifx_dev 1073 drivers/tty/serial/ifx6x60.c set_bit(IFX_SPI_STATE_PRESENT, &ifx_dev->flags); ifx_dev 1076 drivers/tty/serial/ifx6x60.c ret = ifx_spi_create_port(ifx_dev); ifx_dev 1082 drivers/tty/serial/ifx6x60.c ifx_dev->gpio.reset = pl_data->rst_pmu; ifx_dev 1083 drivers/tty/serial/ifx6x60.c ifx_dev->gpio.po = pl_data->pwr_on; ifx_dev 1084 drivers/tty/serial/ifx6x60.c ifx_dev->gpio.mrdy = pl_data->mrdy; ifx_dev 1085 drivers/tty/serial/ifx6x60.c ifx_dev->gpio.srdy = pl_data->srdy; ifx_dev 1086 drivers/tty/serial/ifx6x60.c ifx_dev->gpio.reset_out = pl_data->rst_out; ifx_dev 1089 drivers/tty/serial/ifx6x60.c ifx_dev->gpio.reset, ifx_dev->gpio.po, ifx_dev->gpio.mrdy, ifx_dev 1090 drivers/tty/serial/ifx6x60.c ifx_dev->gpio.srdy, ifx_dev->gpio.reset_out); ifx_dev 1093 drivers/tty/serial/ifx6x60.c ret = gpio_request(ifx_dev->gpio.reset, "ifxModem"); ifx_dev 1096 drivers/tty/serial/ifx6x60.c ifx_dev->gpio.reset); ifx_dev 1099 drivers/tty/serial/ifx6x60.c ret += gpio_direction_output(ifx_dev->gpio.reset, 0); ifx_dev 1100 drivers/tty/serial/ifx6x60.c ret += gpio_export(ifx_dev->gpio.reset, 1); ifx_dev 1103 drivers/tty/serial/ifx6x60.c ifx_dev->gpio.reset); ifx_dev 1108 drivers/tty/serial/ifx6x60.c ret = gpio_request(ifx_dev->gpio.po, "ifxModem"); ifx_dev 1109 drivers/tty/serial/ifx6x60.c ret += gpio_direction_output(ifx_dev->gpio.po, 0); ifx_dev 1110 drivers/tty/serial/ifx6x60.c ret += gpio_export(ifx_dev->gpio.po, 1); ifx_dev 1113 drivers/tty/serial/ifx6x60.c ifx_dev->gpio.po); ifx_dev 1118 drivers/tty/serial/ifx6x60.c ret = gpio_request(ifx_dev->gpio.mrdy, "ifxModem"); ifx_dev 1121 drivers/tty/serial/ifx6x60.c ifx_dev->gpio.mrdy); ifx_dev 1124 drivers/tty/serial/ifx6x60.c ret += gpio_export(ifx_dev->gpio.mrdy, 1); ifx_dev 1125 drivers/tty/serial/ifx6x60.c ret += gpio_direction_output(ifx_dev->gpio.mrdy, 0); ifx_dev 1128 drivers/tty/serial/ifx6x60.c ifx_dev->gpio.mrdy); ifx_dev 1133 drivers/tty/serial/ifx6x60.c ret = gpio_request(ifx_dev->gpio.srdy, "ifxModem"); ifx_dev 1136 drivers/tty/serial/ifx6x60.c ifx_dev->gpio.srdy); ifx_dev 1140 drivers/tty/serial/ifx6x60.c ret += gpio_export(ifx_dev->gpio.srdy, 1); ifx_dev 1141 drivers/tty/serial/ifx6x60.c ret += gpio_direction_input(ifx_dev->gpio.srdy); ifx_dev 1144 drivers/tty/serial/ifx6x60.c ifx_dev->gpio.srdy); ifx_dev 1149 drivers/tty/serial/ifx6x60.c ret = gpio_request(ifx_dev->gpio.reset_out, "ifxModem"); ifx_dev 1152 drivers/tty/serial/ifx6x60.c ifx_dev->gpio.reset_out); ifx_dev 1155 drivers/tty/serial/ifx6x60.c ret += gpio_export(ifx_dev->gpio.reset_out, 1); ifx_dev 1156 drivers/tty/serial/ifx6x60.c ret += gpio_direction_input(ifx_dev->gpio.reset_out); ifx_dev 1159 drivers/tty/serial/ifx6x60.c ifx_dev->gpio.reset_out); ifx_dev 1164 drivers/tty/serial/ifx6x60.c ret = request_irq(gpio_to_irq(ifx_dev->gpio.reset_out), ifx_dev 1167 drivers/tty/serial/ifx6x60.c ifx_dev); ifx_dev 1170 drivers/tty/serial/ifx6x60.c gpio_to_irq(ifx_dev->gpio.reset_out)); ifx_dev 1174 drivers/tty/serial/ifx6x60.c ret = ifx_spi_reset(ifx_dev); ifx_dev 1176 drivers/tty/serial/ifx6x60.c ret = request_irq(gpio_to_irq(ifx_dev->gpio.srdy), ifx_dev 1178 drivers/tty/serial/ifx6x60.c ifx_dev); ifx_dev 1181 drivers/tty/serial/ifx6x60.c gpio_to_irq(ifx_dev->gpio.srdy)); ifx_dev 1193 drivers/tty/serial/ifx6x60.c srdy = gpio_get_value(ifx_dev->gpio.srdy); ifx_dev 1196 drivers/tty/serial/ifx6x60.c mrdy_assert(ifx_dev); ifx_dev 1197 drivers/tty/serial/ifx6x60.c ifx_spi_handle_srdy(ifx_dev); ifx_dev 1199 drivers/tty/serial/ifx6x60.c mrdy_set_low(ifx_dev); ifx_dev 1203 drivers/tty/serial/ifx6x60.c free_irq(gpio_to_irq(ifx_dev->gpio.reset_out), ifx_dev); ifx_dev 1205 drivers/tty/serial/ifx6x60.c gpio_free(ifx_dev->gpio.srdy); ifx_dev 1207 drivers/tty/serial/ifx6x60.c gpio_free(ifx_dev->gpio.mrdy); ifx_dev 1209 drivers/tty/serial/ifx6x60.c gpio_free(ifx_dev->gpio.reset); ifx_dev 1211 drivers/tty/serial/ifx6x60.c gpio_free(ifx_dev->gpio.po); ifx_dev 1213 drivers/tty/serial/ifx6x60.c gpio_free(ifx_dev->gpio.reset_out); ifx_dev 1215 drivers/tty/serial/ifx6x60.c ifx_spi_free_device(ifx_dev); ifx_dev 1230 drivers/tty/serial/ifx6x60.c struct ifx_spi_device *ifx_dev = spi_get_drvdata(spi); ifx_dev 1232 drivers/tty/serial/ifx6x60.c tasklet_kill(&ifx_dev->io_work_tasklet); ifx_dev 1237 drivers/tty/serial/ifx6x60.c free_irq(gpio_to_irq(ifx_dev->gpio.reset_out), ifx_dev); ifx_dev 1238 drivers/tty/serial/ifx6x60.c free_irq(gpio_to_irq(ifx_dev->gpio.srdy), ifx_dev); ifx_dev 1240 drivers/tty/serial/ifx6x60.c gpio_free(ifx_dev->gpio.srdy); ifx_dev 1241 drivers/tty/serial/ifx6x60.c gpio_free(ifx_dev->gpio.mrdy); ifx_dev 1242 drivers/tty/serial/ifx6x60.c gpio_free(ifx_dev->gpio.reset); ifx_dev 1243 drivers/tty/serial/ifx6x60.c gpio_free(ifx_dev->gpio.po); ifx_dev 1244 drivers/tty/serial/ifx6x60.c gpio_free(ifx_dev->gpio.reset_out); ifx_dev 1247 drivers/tty/serial/ifx6x60.c ifx_spi_free_device(ifx_dev); ifx_dev 1262 drivers/tty/serial/ifx6x60.c struct ifx_spi_device *ifx_dev = spi_get_drvdata(spi); ifx_dev 1264 drivers/tty/serial/ifx6x60.c ifx_modem_power_off(ifx_dev); ifx_dev 1329 drivers/tty/serial/ifx6x60.c struct ifx_spi_device *ifx_dev = spi_get_drvdata(spi); ifx_dev 1331 drivers/tty/serial/ifx6x60.c if (!ifx_dev->power_status)