Lines Matching refs:mps
79 struct mpc52xx_psc_spi *mps = spi_master_get_devdata(spi->master); in mpc52xx_psc_spi_activate_cs() local
80 struct mpc52xx_psc __iomem *psc = mps->psc; in mpc52xx_psc_spi_activate_cs()
113 mps->bits_per_word = cs->bits_per_word; in mpc52xx_psc_spi_activate_cs()
115 if (mps->cs_control) in mpc52xx_psc_spi_activate_cs()
116 mps->cs_control(spi, (spi->mode & SPI_CS_HIGH) ? 1 : 0); in mpc52xx_psc_spi_activate_cs()
121 struct mpc52xx_psc_spi *mps = spi_master_get_devdata(spi->master); in mpc52xx_psc_spi_deactivate_cs() local
123 if (mps->cs_control) in mpc52xx_psc_spi_deactivate_cs()
124 mps->cs_control(spi, (spi->mode & SPI_CS_HIGH) ? 0 : 1); in mpc52xx_psc_spi_deactivate_cs()
134 struct mpc52xx_psc_spi *mps = spi_master_get_devdata(spi->master); in mpc52xx_psc_spi_transfer_rxtx() local
135 struct mpc52xx_psc __iomem *psc = mps->psc; in mpc52xx_psc_spi_transfer_rxtx()
136 struct mpc52xx_psc_fifo __iomem *fifo = mps->fifo; in mpc52xx_psc_spi_transfer_rxtx()
186 wait_for_completion(&mps->done); in mpc52xx_psc_spi_transfer_rxtx()
207 struct mpc52xx_psc_spi *mps = in mpc52xx_psc_spi_work() local
210 spin_lock_irq(&mps->lock); in mpc52xx_psc_spi_work()
211 mps->busy = 1; in mpc52xx_psc_spi_work()
212 while (!list_empty(&mps->queue)) { in mpc52xx_psc_spi_work()
219 m = container_of(mps->queue.next, struct spi_message, queue); in mpc52xx_psc_spi_work()
221 spin_unlock_irq(&mps->lock); in mpc52xx_psc_spi_work()
258 spin_lock_irq(&mps->lock); in mpc52xx_psc_spi_work()
260 mps->busy = 0; in mpc52xx_psc_spi_work()
261 spin_unlock_irq(&mps->lock); in mpc52xx_psc_spi_work()
266 struct mpc52xx_psc_spi *mps = spi_master_get_devdata(spi->master); in mpc52xx_psc_spi_setup() local
283 spin_lock_irqsave(&mps->lock, flags); in mpc52xx_psc_spi_setup()
284 if (!mps->busy) in mpc52xx_psc_spi_setup()
286 spin_unlock_irqrestore(&mps->lock, flags); in mpc52xx_psc_spi_setup()
294 struct mpc52xx_psc_spi *mps = spi_master_get_devdata(spi->master); in mpc52xx_psc_spi_transfer() local
300 spin_lock_irqsave(&mps->lock, flags); in mpc52xx_psc_spi_transfer()
301 list_add_tail(&m->queue, &mps->queue); in mpc52xx_psc_spi_transfer()
302 queue_work(mps->workqueue, &mps->work); in mpc52xx_psc_spi_transfer()
303 spin_unlock_irqrestore(&mps->lock, flags); in mpc52xx_psc_spi_transfer()
313 static int mpc52xx_psc_spi_port_config(int psc_id, struct mpc52xx_psc_spi *mps) in mpc52xx_psc_spi_port_config() argument
315 struct mpc52xx_psc __iomem *psc = mps->psc; in mpc52xx_psc_spi_port_config()
316 struct mpc52xx_psc_fifo __iomem *fifo = mps->fifo; in mpc52xx_psc_spi_port_config()
321 mclken_div = (mps->sysclk ? mps->sysclk : 512000000) / MCLK; in mpc52xx_psc_spi_port_config()
346 mps->bits_per_word = 8; in mpc52xx_psc_spi_port_config()
353 struct mpc52xx_psc_spi *mps = (struct mpc52xx_psc_spi *)dev_id; in mpc52xx_psc_spi_isr() local
354 struct mpc52xx_psc __iomem *psc = mps->psc; in mpc52xx_psc_spi_isr()
359 complete(&mps->done); in mpc52xx_psc_spi_isr()
370 struct mpc52xx_psc_spi *mps; in mpc52xx_psc_spi_do_probe() local
374 master = spi_alloc_master(dev, sizeof *mps); in mpc52xx_psc_spi_do_probe()
379 mps = spi_master_get_devdata(master); in mpc52xx_psc_spi_do_probe()
384 mps->irq = irq; in mpc52xx_psc_spi_do_probe()
388 mps->cs_control = NULL; in mpc52xx_psc_spi_do_probe()
389 mps->sysclk = 0; in mpc52xx_psc_spi_do_probe()
393 mps->cs_control = pdata->cs_control; in mpc52xx_psc_spi_do_probe()
394 mps->sysclk = pdata->sysclk; in mpc52xx_psc_spi_do_probe()
403 mps->psc = ioremap(regaddr, size); in mpc52xx_psc_spi_do_probe()
404 if (!mps->psc) { in mpc52xx_psc_spi_do_probe()
410 mps->fifo = ((void __iomem *)mps->psc) + sizeof(struct mpc52xx_psc); in mpc52xx_psc_spi_do_probe()
412 ret = request_irq(mps->irq, mpc52xx_psc_spi_isr, 0, "mpc52xx-psc-spi", in mpc52xx_psc_spi_do_probe()
413 mps); in mpc52xx_psc_spi_do_probe()
417 ret = mpc52xx_psc_spi_port_config(master->bus_num, mps); in mpc52xx_psc_spi_do_probe()
423 spin_lock_init(&mps->lock); in mpc52xx_psc_spi_do_probe()
424 init_completion(&mps->done); in mpc52xx_psc_spi_do_probe()
425 INIT_WORK(&mps->work, mpc52xx_psc_spi_work); in mpc52xx_psc_spi_do_probe()
426 INIT_LIST_HEAD(&mps->queue); in mpc52xx_psc_spi_do_probe()
428 mps->workqueue = create_singlethread_workqueue( in mpc52xx_psc_spi_do_probe()
430 if (mps->workqueue == NULL) { in mpc52xx_psc_spi_do_probe()
442 destroy_workqueue(mps->workqueue); in mpc52xx_psc_spi_do_probe()
444 free_irq(mps->irq, mps); in mpc52xx_psc_spi_do_probe()
446 if (mps->psc) in mpc52xx_psc_spi_do_probe()
447 iounmap(mps->psc); in mpc52xx_psc_spi_do_probe()
485 struct mpc52xx_psc_spi *mps = spi_master_get_devdata(master); in mpc52xx_psc_spi_of_remove() local
487 flush_workqueue(mps->workqueue); in mpc52xx_psc_spi_of_remove()
488 destroy_workqueue(mps->workqueue); in mpc52xx_psc_spi_of_remove()
490 free_irq(mps->irq, mps); in mpc52xx_psc_spi_of_remove()
491 if (mps->psc) in mpc52xx_psc_spi_of_remove()
492 iounmap(mps->psc); in mpc52xx_psc_spi_of_remove()