Lines Matching refs:bs
88 static inline u32 bcm2835_rd(struct bcm2835_spi *bs, unsigned reg) in bcm2835_rd() argument
90 return readl(bs->regs + reg); in bcm2835_rd()
93 static inline void bcm2835_wr(struct bcm2835_spi *bs, unsigned reg, u32 val) in bcm2835_wr() argument
95 writel(val, bs->regs + reg); in bcm2835_wr()
98 static inline void bcm2835_rd_fifo(struct bcm2835_spi *bs) in bcm2835_rd_fifo() argument
102 while ((bs->rx_len) && in bcm2835_rd_fifo()
103 (bcm2835_rd(bs, BCM2835_SPI_CS) & BCM2835_SPI_CS_RXD)) { in bcm2835_rd_fifo()
104 byte = bcm2835_rd(bs, BCM2835_SPI_FIFO); in bcm2835_rd_fifo()
105 if (bs->rx_buf) in bcm2835_rd_fifo()
106 *bs->rx_buf++ = byte; in bcm2835_rd_fifo()
107 bs->rx_len--; in bcm2835_rd_fifo()
111 static inline void bcm2835_wr_fifo(struct bcm2835_spi *bs) in bcm2835_wr_fifo() argument
115 while ((bs->tx_len) && in bcm2835_wr_fifo()
116 (bcm2835_rd(bs, BCM2835_SPI_CS) & BCM2835_SPI_CS_TXD)) { in bcm2835_wr_fifo()
117 byte = bs->tx_buf ? *bs->tx_buf++ : 0; in bcm2835_wr_fifo()
118 bcm2835_wr(bs, BCM2835_SPI_FIFO, byte); in bcm2835_wr_fifo()
119 bs->tx_len--; in bcm2835_wr_fifo()
125 struct bcm2835_spi *bs = spi_master_get_devdata(master); in bcm2835_spi_reset_hw() local
126 u32 cs = bcm2835_rd(bs, BCM2835_SPI_CS); in bcm2835_spi_reset_hw()
136 bcm2835_wr(bs, BCM2835_SPI_CS, cs); in bcm2835_spi_reset_hw()
142 struct bcm2835_spi *bs = spi_master_get_devdata(master); in bcm2835_spi_interrupt() local
145 bcm2835_rd_fifo(bs); in bcm2835_spi_interrupt()
147 bcm2835_wr_fifo(bs); in bcm2835_spi_interrupt()
150 if (bcm2835_rd(bs, BCM2835_SPI_CS) & BCM2835_SPI_CS_DONE) { in bcm2835_spi_interrupt()
166 struct bcm2835_spi *bs = spi_master_get_devdata(master); in bcm2835_spi_transfer_one_poll() local
171 bcm2835_wr(bs, BCM2835_SPI_CS, cs | BCM2835_SPI_CS_TA); in bcm2835_spi_transfer_one_poll()
174 while (bs->rx_len) { in bcm2835_spi_transfer_one_poll()
176 bcm2835_rd_fifo(bs); in bcm2835_spi_transfer_one_poll()
178 bcm2835_wr_fifo(bs); in bcm2835_spi_transfer_one_poll()
182 if (bs->rx_len && time_after(jiffies, timeout)) { in bcm2835_spi_transfer_one_poll()
201 struct bcm2835_spi *bs = spi_master_get_devdata(master); in bcm2835_spi_transfer_one_irq() local
213 bcm2835_wr(bs, BCM2835_SPI_CS, in bcm2835_spi_transfer_one_irq()
216 bcm2835_wr_fifo(bs); in bcm2835_spi_transfer_one_irq()
226 bcm2835_wr(bs, BCM2835_SPI_CS, cs); in bcm2835_spi_transfer_one_irq()
236 struct bcm2835_spi *bs = spi_master_get_devdata(master); in bcm2835_spi_transfer_one() local
239 u32 cs = bcm2835_rd(bs, BCM2835_SPI_CS); in bcm2835_spi_transfer_one()
243 clk_hz = clk_get_rate(bs->clk); in bcm2835_spi_transfer_one()
258 bcm2835_wr(bs, BCM2835_SPI_CLK, cdiv); in bcm2835_spi_transfer_one()
274 bs->tx_buf = tfr->tx_buf; in bcm2835_spi_transfer_one()
275 bs->rx_buf = tfr->rx_buf; in bcm2835_spi_transfer_one()
276 bs->tx_len = tfr->len; in bcm2835_spi_transfer_one()
277 bs->rx_len = tfr->len; in bcm2835_spi_transfer_one()
296 struct bcm2835_spi *bs = spi_master_get_devdata(master); in bcm2835_spi_prepare_message() local
297 u32 cs = bcm2835_rd(bs, BCM2835_SPI_CS); in bcm2835_spi_prepare_message()
306 bcm2835_wr(bs, BCM2835_SPI_CS, cs); in bcm2835_spi_prepare_message()
330 struct bcm2835_spi *bs = spi_master_get_devdata(master); in bcm2835_spi_set_cs() local
331 u32 cs = bcm2835_rd(bs, BCM2835_SPI_CS); in bcm2835_spi_set_cs()
367 bcm2835_wr(bs, BCM2835_SPI_CS, cs); in bcm2835_spi_set_cs()
430 struct bcm2835_spi *bs; in bcm2835_spi_probe() local
434 master = spi_alloc_master(&pdev->dev, sizeof(*bs)); in bcm2835_spi_probe()
452 bs = spi_master_get_devdata(master); in bcm2835_spi_probe()
455 bs->regs = devm_ioremap_resource(&pdev->dev, res); in bcm2835_spi_probe()
456 if (IS_ERR(bs->regs)) { in bcm2835_spi_probe()
457 err = PTR_ERR(bs->regs); in bcm2835_spi_probe()
461 bs->clk = devm_clk_get(&pdev->dev, NULL); in bcm2835_spi_probe()
462 if (IS_ERR(bs->clk)) { in bcm2835_spi_probe()
463 err = PTR_ERR(bs->clk); in bcm2835_spi_probe()
468 bs->irq = irq_of_parse_and_map(pdev->dev.of_node, 0); in bcm2835_spi_probe()
469 if (bs->irq <= 0) { in bcm2835_spi_probe()
470 dev_err(&pdev->dev, "could not get IRQ: %d\n", bs->irq); in bcm2835_spi_probe()
471 err = bs->irq ? bs->irq : -ENODEV; in bcm2835_spi_probe()
475 clk_prepare_enable(bs->clk); in bcm2835_spi_probe()
477 err = devm_request_irq(&pdev->dev, bs->irq, bcm2835_spi_interrupt, 0, in bcm2835_spi_probe()
485 bcm2835_wr(bs, BCM2835_SPI_CS, in bcm2835_spi_probe()
497 clk_disable_unprepare(bs->clk); in bcm2835_spi_probe()
506 struct bcm2835_spi *bs = spi_master_get_devdata(master); in bcm2835_spi_remove() local
509 bcm2835_wr(bs, BCM2835_SPI_CS, in bcm2835_spi_remove()
512 clk_disable_unprepare(bs->clk); in bcm2835_spi_remove()