Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v2.6.38-rc4 129 lines 3.3 kB view raw
1/**************************************************************************** 2 * 3 * Driver for the IFX spi modem. 4 * 5 * Copyright (C) 2009, 2010 Intel Corp 6 * Jim Stanley <jim.stanley@intel.com> 7 * 8 * 9 * This program is free software; you can redistribute it and/or modify 10 * it under the terms of the GNU General Public License version 2 as 11 * published by the Free Software Foundation. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 * 18 * You should have received a copy of the GNU General Public License 19 * along with this program; if not, write to the Free Software 20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 21 * USA 22 * 23 * 24 * 25 *****************************************************************************/ 26#ifndef _IFX6X60_H 27#define _IFX6X60_H 28 29#define DRVNAME "ifx6x60" 30#define TTYNAME "ttyIFX" 31 32/* #define IFX_THROTTLE_CODE */ 33 34#define IFX_SPI_MAX_MINORS 1 35#define IFX_SPI_TRANSFER_SIZE 2048 36#define IFX_SPI_FIFO_SIZE 4096 37 38#define IFX_SPI_HEADER_OVERHEAD 4 39#define IFX_RESET_TIMEOUT msecs_to_jiffies(50) 40 41/* device flags bitfield definitions */ 42#define IFX_SPI_STATE_PRESENT 0 43#define IFX_SPI_STATE_IO_IN_PROGRESS 1 44#define IFX_SPI_STATE_IO_READY 2 45#define IFX_SPI_STATE_TIMER_PENDING 3 46 47/* flow control bitfields */ 48#define IFX_SPI_DCD 0 49#define IFX_SPI_CTS 1 50#define IFX_SPI_DSR 2 51#define IFX_SPI_RI 3 52#define IFX_SPI_DTR 4 53#define IFX_SPI_RTS 5 54#define IFX_SPI_TX_FC 6 55#define IFX_SPI_RX_FC 7 56#define IFX_SPI_UPDATE 8 57 58#define IFX_SPI_PAYLOAD_SIZE (IFX_SPI_TRANSFER_SIZE - \ 59 IFX_SPI_HEADER_OVERHEAD) 60 61#define IFX_SPI_IRQ_TYPE DETECT_EDGE_RISING 62#define IFX_SPI_GPIO_TARGET 0 63#define IFX_SPI_GPIO0 0x105 64 65#define IFX_SPI_STATUS_TIMEOUT (2000*HZ) 66 67/* values for bits in power status byte */ 68#define IFX_SPI_POWER_DATA_PENDING 1 69#define IFX_SPI_POWER_SRDY 2 70 71struct ifx_spi_device { 72 /* Our SPI device */ 73 struct spi_device *spi_dev; 74 75 /* Port specific data */ 76 struct kfifo tx_fifo; 77 spinlock_t fifo_lock; 78 unsigned long signal_state; 79 80 /* TTY Layer logic */ 81 struct tty_port tty_port; 82 struct device *tty_dev; 83 int minor; 84 85 /* Low level I/O work */ 86 struct tasklet_struct io_work_tasklet; 87 unsigned long flags; 88 dma_addr_t rx_dma; 89 dma_addr_t tx_dma; 90 91 int is_6160; /* Modem type */ 92 93 spinlock_t write_lock; 94 int write_pending; 95 spinlock_t power_lock; 96 unsigned char power_status; 97 98 unsigned char *rx_buffer; 99 unsigned char *tx_buffer; 100 dma_addr_t rx_bus; 101 dma_addr_t tx_bus; 102 unsigned char spi_more; 103 unsigned char spi_slave_cts; 104 105 struct timer_list spi_timer; 106 107 struct spi_message spi_msg; 108 struct spi_transfer spi_xfer; 109 110 struct { 111 /* gpio lines */ 112 unsigned short srdy; /* slave-ready gpio */ 113 unsigned short mrdy; /* master-ready gpio */ 114 unsigned short reset; /* modem-reset gpio */ 115 unsigned short po; /* modem-on gpio */ 116 unsigned short reset_out; /* modem-in-reset gpio */ 117 /* state/stats */ 118 int unack_srdy_int_nb; 119 } gpio; 120 121 /* modem reset */ 122 unsigned long mdm_reset_state; 123#define MR_START 0 124#define MR_INPROGRESS 1 125#define MR_COMPLETE 2 126 wait_queue_head_t mdm_reset_wait; 127}; 128 129#endif /* _IFX6X60_H */