Lines Matching refs:spi
78 irqreturn_t netup_spi_interrupt(struct netup_spi *spi) in netup_spi_interrupt() argument
83 if (!spi) in netup_spi_interrupt()
86 spin_lock_irqsave(&spi->lock, flags); in netup_spi_interrupt()
87 reg = readw(&spi->regs->control_stat); in netup_spi_interrupt()
89 spin_unlock_irqrestore(&spi->lock, flags); in netup_spi_interrupt()
90 dev_dbg(&spi->master->dev, in netup_spi_interrupt()
94 writew(reg | NETUP_SPI_CTRL_IRQ, &spi->regs->control_stat); in netup_spi_interrupt()
95 reg = readw(&spi->regs->control_stat); in netup_spi_interrupt()
96 writew(reg & ~NETUP_SPI_CTRL_IMASK, &spi->regs->control_stat); in netup_spi_interrupt()
97 spi->state = SPI_STATE_DONE; in netup_spi_interrupt()
98 wake_up(&spi->waitq); in netup_spi_interrupt()
99 spin_unlock_irqrestore(&spi->lock, flags); in netup_spi_interrupt()
100 dev_dbg(&spi->master->dev, in netup_spi_interrupt()
108 struct netup_spi *spi = spi_master_get_devdata(master); in netup_spi_transfer() local
114 writew(NETUP_SPI_CTRL_LAST_CS, &spi->regs->control_stat); in netup_spi_transfer()
115 writew(0, &spi->regs->control_stat); in netup_spi_transfer()
120 u32 frag_size = (tr_size > sizeof(spi->regs->data)) ? in netup_spi_transfer()
121 sizeof(spi->regs->data) : tr_size; in netup_spi_transfer()
130 memcpy_toio(spi->regs->data, in netup_spi_transfer()
134 memset_io(spi->regs->data, in netup_spi_transfer()
137 spi->state = SPI_STATE_START; in netup_spi_transfer()
142 &spi->regs->control_stat); in netup_spi_transfer()
143 dev_dbg(&spi->master->dev, in netup_spi_transfer()
145 __func__, readw(&spi->regs->control_stat)); in netup_spi_transfer()
146 wait_event_timeout(spi->waitq, in netup_spi_transfer()
147 spi->state != SPI_STATE_START, in netup_spi_transfer()
149 if (spi->state == SPI_STATE_DONE) { in netup_spi_transfer()
152 spi->regs->data, frag_size); in netup_spi_transfer()
155 if (spi->state == SPI_STATE_START) { in netup_spi_transfer()
156 dev_dbg(&spi->master->dev, in netup_spi_transfer()
160 dev_dbg(&spi->master->dev, in netup_spi_transfer()
162 __func__, spi->state); in netup_spi_transfer()
177 static int netup_spi_setup(struct spi_device *spi) in netup_spi_setup() argument
206 ndev->spi = nspi; in netup_spi_init()
208 ndev->spi = NULL; in netup_spi_init()
220 ndev->spi = NULL; in netup_spi_init()
233 struct netup_spi *spi = ndev->spi; in netup_spi_release() local
235 if (!spi) in netup_spi_release()
238 spin_lock_irqsave(&spi->lock, flags); in netup_spi_release()
239 reg = readw(&spi->regs->control_stat); in netup_spi_release()
240 writew(reg | NETUP_SPI_CTRL_IRQ, &spi->regs->control_stat); in netup_spi_release()
241 reg = readw(&spi->regs->control_stat); in netup_spi_release()
242 writew(reg & ~NETUP_SPI_CTRL_IMASK, &spi->regs->control_stat); in netup_spi_release()
243 spin_unlock_irqrestore(&spi->lock, flags); in netup_spi_release()
244 spi_unregister_master(spi->master); in netup_spi_release()
245 ndev->spi = NULL; in netup_spi_release()