Lines Matching full:mps
78 struct mpc52xx_psc_spi *mps = spi_master_get_devdata(spi->master); in mpc52xx_psc_spi_activate_cs() local
79 struct mpc52xx_psc __iomem *psc = mps->psc; in mpc52xx_psc_spi_activate_cs()
112 mps->bits_per_word = cs->bits_per_word; in mpc52xx_psc_spi_activate_cs()
114 if (mps->cs_control) in mpc52xx_psc_spi_activate_cs()
115 mps->cs_control(spi, (spi->mode & SPI_CS_HIGH) ? 1 : 0); in mpc52xx_psc_spi_activate_cs()
120 struct mpc52xx_psc_spi *mps = spi_master_get_devdata(spi->master); in mpc52xx_psc_spi_deactivate_cs() local
122 if (mps->cs_control) in mpc52xx_psc_spi_deactivate_cs()
123 mps->cs_control(spi, (spi->mode & SPI_CS_HIGH) ? 0 : 1); in mpc52xx_psc_spi_deactivate_cs()
133 struct mpc52xx_psc_spi *mps = spi_master_get_devdata(spi->master); in mpc52xx_psc_spi_transfer_rxtx() local
134 struct mpc52xx_psc __iomem *psc = mps->psc; in mpc52xx_psc_spi_transfer_rxtx()
135 struct mpc52xx_psc_fifo __iomem *fifo = mps->fifo; in mpc52xx_psc_spi_transfer_rxtx()
185 wait_for_completion(&mps->done); in mpc52xx_psc_spi_transfer_rxtx()
206 struct mpc52xx_psc_spi *mps = in mpc52xx_psc_spi_work() local
209 spin_lock_irq(&mps->lock); in mpc52xx_psc_spi_work()
210 mps->busy = 1; in mpc52xx_psc_spi_work()
211 while (!list_empty(&mps->queue)) { in mpc52xx_psc_spi_work()
218 m = container_of(mps->queue.next, struct spi_message, queue); in mpc52xx_psc_spi_work()
220 spin_unlock_irq(&mps->lock); in mpc52xx_psc_spi_work()
257 spin_lock_irq(&mps->lock); in mpc52xx_psc_spi_work()
259 mps->busy = 0; in mpc52xx_psc_spi_work()
260 spin_unlock_irq(&mps->lock); in mpc52xx_psc_spi_work()
265 struct mpc52xx_psc_spi *mps = spi_master_get_devdata(spi->master); in mpc52xx_psc_spi_setup() local
282 spin_lock_irqsave(&mps->lock, flags); in mpc52xx_psc_spi_setup()
283 if (!mps->busy) in mpc52xx_psc_spi_setup()
285 spin_unlock_irqrestore(&mps->lock, flags); in mpc52xx_psc_spi_setup()
293 struct mpc52xx_psc_spi *mps = spi_master_get_devdata(spi->master); in mpc52xx_psc_spi_transfer() local
299 spin_lock_irqsave(&mps->lock, flags); in mpc52xx_psc_spi_transfer()
300 list_add_tail(&m->queue, &mps->queue); in mpc52xx_psc_spi_transfer()
301 schedule_work(&mps->work); in mpc52xx_psc_spi_transfer()
302 spin_unlock_irqrestore(&mps->lock, flags); in mpc52xx_psc_spi_transfer()
312 static int mpc52xx_psc_spi_port_config(int psc_id, struct mpc52xx_psc_spi *mps) in mpc52xx_psc_spi_port_config() argument
314 struct mpc52xx_psc __iomem *psc = mps->psc; in mpc52xx_psc_spi_port_config()
315 struct mpc52xx_psc_fifo __iomem *fifo = mps->fifo; in mpc52xx_psc_spi_port_config()
320 mclken_div = (mps->sysclk ? mps->sysclk : 512000000) / MCLK; in mpc52xx_psc_spi_port_config()
345 mps->bits_per_word = 8; in mpc52xx_psc_spi_port_config()
352 struct mpc52xx_psc_spi *mps = (struct mpc52xx_psc_spi *)dev_id; in mpc52xx_psc_spi_isr() local
353 struct mpc52xx_psc __iomem *psc = mps->psc; in mpc52xx_psc_spi_isr()
358 complete(&mps->done); in mpc52xx_psc_spi_isr()
369 struct mpc52xx_psc_spi *mps; in mpc52xx_psc_spi_do_probe() local
373 master = spi_alloc_master(dev, sizeof *mps); in mpc52xx_psc_spi_do_probe()
378 mps = spi_master_get_devdata(master); in mpc52xx_psc_spi_do_probe()
383 mps->irq = irq; in mpc52xx_psc_spi_do_probe()
387 mps->cs_control = NULL; in mpc52xx_psc_spi_do_probe()
388 mps->sysclk = 0; in mpc52xx_psc_spi_do_probe()
392 mps->cs_control = pdata->cs_control; in mpc52xx_psc_spi_do_probe()
393 mps->sysclk = pdata->sysclk; in mpc52xx_psc_spi_do_probe()
402 mps->psc = ioremap(regaddr, size); in mpc52xx_psc_spi_do_probe()
403 if (!mps->psc) { in mpc52xx_psc_spi_do_probe()
409 mps->fifo = ((void __iomem *)mps->psc) + sizeof(struct mpc52xx_psc); in mpc52xx_psc_spi_do_probe()
411 ret = request_irq(mps->irq, mpc52xx_psc_spi_isr, 0, "mpc52xx-psc-spi", in mpc52xx_psc_spi_do_probe()
412 mps); in mpc52xx_psc_spi_do_probe()
416 ret = mpc52xx_psc_spi_port_config(master->bus_num, mps); in mpc52xx_psc_spi_do_probe()
422 spin_lock_init(&mps->lock); in mpc52xx_psc_spi_do_probe()
423 init_completion(&mps->done); in mpc52xx_psc_spi_do_probe()
424 INIT_WORK(&mps->work, mpc52xx_psc_spi_work); in mpc52xx_psc_spi_do_probe()
425 INIT_LIST_HEAD(&mps->queue); in mpc52xx_psc_spi_do_probe()
434 free_irq(mps->irq, mps); in mpc52xx_psc_spi_do_probe()
436 if (mps->psc) in mpc52xx_psc_spi_do_probe()
437 iounmap(mps->psc); in mpc52xx_psc_spi_do_probe()
475 struct mpc52xx_psc_spi *mps = spi_master_get_devdata(master); in mpc52xx_psc_spi_of_remove() local
477 flush_work(&mps->work); in mpc52xx_psc_spi_of_remove()
479 free_irq(mps->irq, mps); in mpc52xx_psc_spi_of_remove()
480 if (mps->psc) in mpc52xx_psc_spi_of_remove()
481 iounmap(mps->psc); in mpc52xx_psc_spi_of_remove()