Lines Matching refs:bs

154 static inline u8 bcm_spi_readb(struct bcm63xx_spi *bs,
157 return readb(bs->regs + bs->reg_offsets[offset]);
160 static inline u16 bcm_spi_readw(struct bcm63xx_spi *bs,
164 return ioread16be(bs->regs + bs->reg_offsets[offset]);
166 return readw(bs->regs + bs->reg_offsets[offset]);
170 static inline void bcm_spi_writeb(struct bcm63xx_spi *bs,
173 writeb(value, bs->regs + bs->reg_offsets[offset]);
176 static inline void bcm_spi_writew(struct bcm63xx_spi *bs,
180 iowrite16be(value, bs->regs + bs->reg_offsets[offset]);
182 writew(value, bs->regs + bs->reg_offsets[offset]);
199 struct bcm63xx_spi *bs = spi_master_get_devdata(spi->master);
215 reg = bcm_spi_readb(bs, SPI_CLK_CFG);
219 bcm_spi_writeb(bs, reg, SPI_CLK_CFG);
230 struct bcm63xx_spi *bs = spi_master_get_devdata(spi->master);
239 bcm_spi_writeb(bs, 0, SPI_INT_MASK);
251 memcpy_toio(bs->tx_io + len, t->tx_buf, t->len);
271 reinit_completion(&bs->done);
277 msg_ctl |= (SPI_FD_RW << bs->msg_type_shift);
279 msg_ctl |= (SPI_HD_R << bs->msg_type_shift);
281 msg_ctl |= (SPI_HD_W << bs->msg_type_shift);
283 switch (bs->msg_ctl_width) {
285 bcm_spi_writeb(bs, msg_ctl, SPI_MSG_CTL);
288 bcm_spi_writew(bs, msg_ctl, SPI_MSG_CTL);
296 bcm_spi_writew(bs, cmd, SPI_CMD);
299 bcm_spi_writeb(bs, SPI_INTR_CMD_DONE, SPI_INT_MASK);
301 timeout = wait_for_completion_timeout(&bs->done, HZ);
313 memcpy_fromio(t->rx_buf, bs->rx_io + len, t->len);
328 struct bcm63xx_spi *bs = spi_master_get_devdata(master);
356 total_len > (bs->fifo_size + BCM63XX_SPI_MAX_PREPEND)) ||
357 (!can_use_prepend && total_len > bs->fifo_size)) {
359 total_len, bs->fifo_size);
409 struct bcm63xx_spi *bs = spi_master_get_devdata(master);
413 intr = bcm_spi_readb(bs, SPI_INT_STATUS);
414 bcm_spi_writeb(bs, SPI_INTR_CLEAR_ALL, SPI_INT_STATUS);
415 bcm_spi_writeb(bs, 0, SPI_INT_MASK);
419 complete(&bs->done);
426 struct bcm63xx_spi *bs = spi_master_get_devdata(spi->master);
428 return bs->fifo_size;
494 struct bcm63xx_spi *bs;
538 master = spi_alloc_master(dev, sizeof(*bs));
544 bs = spi_master_get_devdata(master);
545 init_completion(&bs->done);
548 bs->pdev = pdev;
551 bs->regs = devm_ioremap_resource(&pdev->dev, r);
552 if (IS_ERR(bs->regs)) {
553 ret = PTR_ERR(bs->regs);
557 bs->irq = irq;
558 bs->clk = clk;
559 bs->reg_offsets = bcm63xx_spireg;
560 bs->fifo_size = bs->reg_offsets[SPI_MSG_DATA_SIZE];
578 bs->msg_type_shift = bs->reg_offsets[SPI_MSG_TYPE_SHIFT];
579 bs->msg_ctl_width = bs->reg_offsets[SPI_MSG_CTL_WIDTH];
580 bs->tx_io = (u8 *)(bs->regs + bs->reg_offsets[SPI_MSG_DATA]);
581 bs->rx_io = (const u8 *)(bs->regs + bs->reg_offsets[SPI_RX_DATA]);
584 ret = clk_prepare_enable(bs->clk);
594 bcm_spi_writeb(bs, SPI_INTR_CLEAR_ALL, SPI_INT_STATUS);
604 r, irq, bs->fifo_size);
618 struct bcm63xx_spi *bs = spi_master_get_devdata(master);
621 bcm_spi_writeb(bs, 0, SPI_INT_MASK);
624 clk_disable_unprepare(bs->clk);
633 struct bcm63xx_spi *bs = spi_master_get_devdata(master);
637 clk_disable_unprepare(bs->clk);
645 struct bcm63xx_spi *bs = spi_master_get_devdata(master);
648 ret = clk_prepare_enable(bs->clk);