mcfqspi 68 drivers/spi/spi-coldfire-qspi.c static void mcfqspi_wr_qmr(struct mcfqspi *mcfqspi, u16 val) mcfqspi 70 drivers/spi/spi-coldfire-qspi.c writew(val, mcfqspi->iobase + MCFQSPI_QMR); mcfqspi 73 drivers/spi/spi-coldfire-qspi.c static void mcfqspi_wr_qdlyr(struct mcfqspi *mcfqspi, u16 val) mcfqspi 75 drivers/spi/spi-coldfire-qspi.c writew(val, mcfqspi->iobase + MCFQSPI_QDLYR); mcfqspi 78 drivers/spi/spi-coldfire-qspi.c static u16 mcfqspi_rd_qdlyr(struct mcfqspi *mcfqspi) mcfqspi 80 drivers/spi/spi-coldfire-qspi.c return readw(mcfqspi->iobase + MCFQSPI_QDLYR); mcfqspi 83 drivers/spi/spi-coldfire-qspi.c static void mcfqspi_wr_qwr(struct mcfqspi *mcfqspi, u16 val) mcfqspi 85 drivers/spi/spi-coldfire-qspi.c writew(val, mcfqspi->iobase + MCFQSPI_QWR); mcfqspi 88 drivers/spi/spi-coldfire-qspi.c static void mcfqspi_wr_qir(struct mcfqspi *mcfqspi, u16 val) mcfqspi 90 drivers/spi/spi-coldfire-qspi.c writew(val, mcfqspi->iobase + MCFQSPI_QIR); mcfqspi 93 drivers/spi/spi-coldfire-qspi.c static void mcfqspi_wr_qar(struct mcfqspi *mcfqspi, u16 val) mcfqspi 95 drivers/spi/spi-coldfire-qspi.c writew(val, mcfqspi->iobase + MCFQSPI_QAR); mcfqspi 98 drivers/spi/spi-coldfire-qspi.c static void mcfqspi_wr_qdr(struct mcfqspi *mcfqspi, u16 val) mcfqspi 100 drivers/spi/spi-coldfire-qspi.c writew(val, mcfqspi->iobase + MCFQSPI_QDR); mcfqspi 103 drivers/spi/spi-coldfire-qspi.c static u16 mcfqspi_rd_qdr(struct mcfqspi *mcfqspi) mcfqspi 105 drivers/spi/spi-coldfire-qspi.c return readw(mcfqspi->iobase + MCFQSPI_QDR); mcfqspi 108 drivers/spi/spi-coldfire-qspi.c static void mcfqspi_cs_select(struct mcfqspi *mcfqspi, u8 chip_select, mcfqspi 111 drivers/spi/spi-coldfire-qspi.c mcfqspi->cs_control->select(mcfqspi->cs_control, chip_select, cs_high); mcfqspi 114 drivers/spi/spi-coldfire-qspi.c static void mcfqspi_cs_deselect(struct mcfqspi *mcfqspi, u8 chip_select, mcfqspi 117 drivers/spi/spi-coldfire-qspi.c mcfqspi->cs_control->deselect(mcfqspi->cs_control, chip_select, cs_high); mcfqspi 120 drivers/spi/spi-coldfire-qspi.c static int mcfqspi_cs_setup(struct mcfqspi *mcfqspi) mcfqspi 122 drivers/spi/spi-coldfire-qspi.c return (mcfqspi->cs_control->setup) ? mcfqspi 123 drivers/spi/spi-coldfire-qspi.c mcfqspi->cs_control->setup(mcfqspi->cs_control) : 0; mcfqspi 126 drivers/spi/spi-coldfire-qspi.c static void mcfqspi_cs_teardown(struct mcfqspi *mcfqspi) mcfqspi 128 drivers/spi/spi-coldfire-qspi.c if (mcfqspi->cs_control->teardown) mcfqspi 129 drivers/spi/spi-coldfire-qspi.c mcfqspi->cs_control->teardown(mcfqspi->cs_control); mcfqspi 137 drivers/spi/spi-coldfire-qspi.c static bool mcfqspi_qdlyr_spe(struct mcfqspi *mcfqspi) mcfqspi 139 drivers/spi/spi-coldfire-qspi.c return mcfqspi_rd_qdlyr(mcfqspi) & MCFQSPI_QDLYR_SPE; mcfqspi 144 drivers/spi/spi-coldfire-qspi.c struct mcfqspi *mcfqspi = dev_id; mcfqspi 147 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qir(mcfqspi, MCFQSPI_QIR_SPIFE | MCFQSPI_QIR_SPIF); mcfqspi 148 drivers/spi/spi-coldfire-qspi.c wake_up(&mcfqspi->waitq); mcfqspi 153 drivers/spi/spi-coldfire-qspi.c static void mcfqspi_transfer_msg8(struct mcfqspi *mcfqspi, unsigned count, mcfqspi 160 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qar(mcfqspi, MCFQSPI_QAR_CMDBUF); mcfqspi 162 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qdr(mcfqspi, MCFQSPI_QCR_BITSE); mcfqspi 164 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qar(mcfqspi, MCFQSPI_QAR_TXBUF); mcfqspi 167 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qdr(mcfqspi, *txbuf++); mcfqspi 170 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qdr(mcfqspi, 0); mcfqspi 175 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qwr(mcfqspi, 0x700); mcfqspi 176 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qdlyr(mcfqspi, MCFQSPI_QDLYR_SPE); mcfqspi 179 drivers/spi/spi-coldfire-qspi.c wait_event(mcfqspi->waitq, !mcfqspi_qdlyr_spe(mcfqspi)); mcfqspi 180 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qwr(mcfqspi, qwr); mcfqspi 181 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qdlyr(mcfqspi, MCFQSPI_QDLYR_SPE); mcfqspi 183 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qar(mcfqspi, mcfqspi 186 drivers/spi/spi-coldfire-qspi.c *rxbuf++ = mcfqspi_rd_qdr(mcfqspi); mcfqspi 190 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qar(mcfqspi, mcfqspi 193 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qdr(mcfqspi, *txbuf++); mcfqspi 199 drivers/spi/spi-coldfire-qspi.c wait_event(mcfqspi->waitq, !mcfqspi_qdlyr_spe(mcfqspi)); mcfqspi 200 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qwr(mcfqspi, qwr); mcfqspi 201 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qdlyr(mcfqspi, MCFQSPI_QDLYR_SPE); mcfqspi 203 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qar(mcfqspi, MCFQSPI_QAR_RXBUF + offset); mcfqspi 205 drivers/spi/spi-coldfire-qspi.c *rxbuf++ = mcfqspi_rd_qdr(mcfqspi); mcfqspi 209 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qwr(mcfqspi, (n - 1) << 8); mcfqspi 210 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qdlyr(mcfqspi, MCFQSPI_QDLYR_SPE); mcfqspi 212 drivers/spi/spi-coldfire-qspi.c wait_event(mcfqspi->waitq, !mcfqspi_qdlyr_spe(mcfqspi)); mcfqspi 214 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qar(mcfqspi, MCFQSPI_QAR_RXBUF + offset); mcfqspi 216 drivers/spi/spi-coldfire-qspi.c *rxbuf++ = mcfqspi_rd_qdr(mcfqspi); mcfqspi 220 drivers/spi/spi-coldfire-qspi.c static void mcfqspi_transfer_msg16(struct mcfqspi *mcfqspi, unsigned count, mcfqspi 227 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qar(mcfqspi, MCFQSPI_QAR_CMDBUF); mcfqspi 229 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qdr(mcfqspi, MCFQSPI_QCR_BITSE); mcfqspi 231 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qar(mcfqspi, MCFQSPI_QAR_TXBUF); mcfqspi 234 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qdr(mcfqspi, *txbuf++); mcfqspi 237 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qdr(mcfqspi, 0); mcfqspi 242 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qwr(mcfqspi, 0x700); mcfqspi 243 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qdlyr(mcfqspi, MCFQSPI_QDLYR_SPE); mcfqspi 246 drivers/spi/spi-coldfire-qspi.c wait_event(mcfqspi->waitq, !mcfqspi_qdlyr_spe(mcfqspi)); mcfqspi 247 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qwr(mcfqspi, qwr); mcfqspi 248 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qdlyr(mcfqspi, MCFQSPI_QDLYR_SPE); mcfqspi 250 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qar(mcfqspi, mcfqspi 253 drivers/spi/spi-coldfire-qspi.c *rxbuf++ = mcfqspi_rd_qdr(mcfqspi); mcfqspi 257 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qar(mcfqspi, mcfqspi 260 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qdr(mcfqspi, *txbuf++); mcfqspi 266 drivers/spi/spi-coldfire-qspi.c wait_event(mcfqspi->waitq, !mcfqspi_qdlyr_spe(mcfqspi)); mcfqspi 267 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qwr(mcfqspi, qwr); mcfqspi 268 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qdlyr(mcfqspi, MCFQSPI_QDLYR_SPE); mcfqspi 270 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qar(mcfqspi, MCFQSPI_QAR_RXBUF + offset); mcfqspi 272 drivers/spi/spi-coldfire-qspi.c *rxbuf++ = mcfqspi_rd_qdr(mcfqspi); mcfqspi 276 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qwr(mcfqspi, (n - 1) << 8); mcfqspi 277 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qdlyr(mcfqspi, MCFQSPI_QDLYR_SPE); mcfqspi 279 drivers/spi/spi-coldfire-qspi.c wait_event(mcfqspi->waitq, !mcfqspi_qdlyr_spe(mcfqspi)); mcfqspi 281 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qar(mcfqspi, MCFQSPI_QAR_RXBUF + offset); mcfqspi 283 drivers/spi/spi-coldfire-qspi.c *rxbuf++ = mcfqspi_rd_qdr(mcfqspi); mcfqspi 289 drivers/spi/spi-coldfire-qspi.c struct mcfqspi *mcfqspi = spi_master_get_devdata(spi->master); mcfqspi 293 drivers/spi/spi-coldfire-qspi.c mcfqspi_cs_select(mcfqspi, spi->chip_select, cs_high); mcfqspi 295 drivers/spi/spi-coldfire-qspi.c mcfqspi_cs_deselect(mcfqspi, spi->chip_select, cs_high); mcfqspi 302 drivers/spi/spi-coldfire-qspi.c struct mcfqspi *mcfqspi = spi_master_get_devdata(master); mcfqspi 311 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qmr(mcfqspi, qmr); mcfqspi 313 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qir(mcfqspi, MCFQSPI_QIR_SPIFE); mcfqspi 315 drivers/spi/spi-coldfire-qspi.c mcfqspi_transfer_msg8(mcfqspi, t->len, t->tx_buf, t->rx_buf); mcfqspi 317 drivers/spi/spi-coldfire-qspi.c mcfqspi_transfer_msg16(mcfqspi, t->len / 2, t->tx_buf, mcfqspi 319 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qir(mcfqspi, 0); mcfqspi 341 drivers/spi/spi-coldfire-qspi.c struct mcfqspi *mcfqspi; mcfqspi 356 drivers/spi/spi-coldfire-qspi.c master = spi_alloc_master(&pdev->dev, sizeof(*mcfqspi)); mcfqspi 362 drivers/spi/spi-coldfire-qspi.c mcfqspi = spi_master_get_devdata(master); mcfqspi 364 drivers/spi/spi-coldfire-qspi.c mcfqspi->iobase = devm_platform_ioremap_resource(pdev, 0); mcfqspi 365 drivers/spi/spi-coldfire-qspi.c if (IS_ERR(mcfqspi->iobase)) { mcfqspi 366 drivers/spi/spi-coldfire-qspi.c status = PTR_ERR(mcfqspi->iobase); mcfqspi 370 drivers/spi/spi-coldfire-qspi.c mcfqspi->irq = platform_get_irq(pdev, 0); mcfqspi 371 drivers/spi/spi-coldfire-qspi.c if (mcfqspi->irq < 0) { mcfqspi 377 drivers/spi/spi-coldfire-qspi.c status = devm_request_irq(&pdev->dev, mcfqspi->irq, mcfqspi_irq_handler, mcfqspi 378 drivers/spi/spi-coldfire-qspi.c 0, pdev->name, mcfqspi); mcfqspi 384 drivers/spi/spi-coldfire-qspi.c mcfqspi->clk = devm_clk_get(&pdev->dev, "qspi_clk"); mcfqspi 385 drivers/spi/spi-coldfire-qspi.c if (IS_ERR(mcfqspi->clk)) { mcfqspi 387 drivers/spi/spi-coldfire-qspi.c status = PTR_ERR(mcfqspi->clk); mcfqspi 390 drivers/spi/spi-coldfire-qspi.c clk_enable(mcfqspi->clk); mcfqspi 395 drivers/spi/spi-coldfire-qspi.c mcfqspi->cs_control = pdata->cs_control; mcfqspi 396 drivers/spi/spi-coldfire-qspi.c status = mcfqspi_cs_setup(mcfqspi); mcfqspi 402 drivers/spi/spi-coldfire-qspi.c init_waitqueue_head(&mcfqspi->waitq); mcfqspi 426 drivers/spi/spi-coldfire-qspi.c mcfqspi_cs_teardown(mcfqspi); mcfqspi 428 drivers/spi/spi-coldfire-qspi.c clk_disable(mcfqspi->clk); mcfqspi 440 drivers/spi/spi-coldfire-qspi.c struct mcfqspi *mcfqspi = spi_master_get_devdata(master); mcfqspi 444 drivers/spi/spi-coldfire-qspi.c mcfqspi_wr_qmr(mcfqspi, MCFQSPI_QMR_MSTR); mcfqspi 446 drivers/spi/spi-coldfire-qspi.c mcfqspi_cs_teardown(mcfqspi); mcfqspi 447 drivers/spi/spi-coldfire-qspi.c clk_disable(mcfqspi->clk); mcfqspi 456 drivers/spi/spi-coldfire-qspi.c struct mcfqspi *mcfqspi = spi_master_get_devdata(master); mcfqspi 463 drivers/spi/spi-coldfire-qspi.c clk_disable(mcfqspi->clk); mcfqspi 471 drivers/spi/spi-coldfire-qspi.c struct mcfqspi *mcfqspi = spi_master_get_devdata(master); mcfqspi 473 drivers/spi/spi-coldfire-qspi.c clk_enable(mcfqspi->clk); mcfqspi 483 drivers/spi/spi-coldfire-qspi.c struct mcfqspi *mcfqspi = spi_master_get_devdata(master); mcfqspi 485 drivers/spi/spi-coldfire-qspi.c clk_disable(mcfqspi->clk); mcfqspi 493 drivers/spi/spi-coldfire-qspi.c struct mcfqspi *mcfqspi = spi_master_get_devdata(master); mcfqspi 495 drivers/spi/spi-coldfire-qspi.c clk_enable(mcfqspi->clk);