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)