Lines Matching +full:cs +full:- +full:out
4 * SPDX-License-Identifier: GPL-2.0+
48 debug("ctrl0: \t\t0x%08x\n", readl(®s->ctrlr0)); in rkspi_dump_regs()
49 debug("ctrl1: \t\t0x%08x\n", readl(®s->ctrlr1)); in rkspi_dump_regs()
50 debug("ssienr: \t\t0x%08x\n", readl(®s->enr)); in rkspi_dump_regs()
51 debug("ser: \t\t0x%08x\n", readl(®s->ser)); in rkspi_dump_regs()
52 debug("baudr: \t\t0x%08x\n", readl(®s->baudr)); in rkspi_dump_regs()
53 debug("txftlr: \t\t0x%08x\n", readl(®s->txftlr)); in rkspi_dump_regs()
54 debug("rxftlr: \t\t0x%08x\n", readl(®s->rxftlr)); in rkspi_dump_regs()
55 debug("txflr: \t\t0x%08x\n", readl(®s->txflr)); in rkspi_dump_regs()
56 debug("rxflr: \t\t0x%08x\n", readl(®s->rxflr)); in rkspi_dump_regs()
57 debug("sr: \t\t0x%08x\n", readl(®s->sr)); in rkspi_dump_regs()
58 debug("imr: \t\t0x%08x\n", readl(®s->imr)); in rkspi_dump_regs()
59 debug("isr: \t\t0x%08x\n", readl(®s->isr)); in rkspi_dump_regs()
60 debug("dmacr: \t\t0x%08x\n", readl(®s->dmacr)); in rkspi_dump_regs()
61 debug("dmatdlr: \t0x%08x\n", readl(®s->dmatdlr)); in rkspi_dump_regs()
62 debug("dmardlr: \t0x%08x\n", readl(®s->dmardlr)); in rkspi_dump_regs()
67 writel(enable ? 1 : 0, ®s->enr); in rkspi_enable_chip()
72 writel(clk_div, &priv->regs->baudr); in rkspi_set_baudr()
80 while (readl(®s->sr) & SR_BUSY) { in rkspi_wait_till_not_busy()
83 return -ETIMEDOUT; in rkspi_wait_till_not_busy()
90 static void spi_cs_activate(u8 bus, u8 cs) in spi_cs_activate() argument
93 struct rockchip_spi *regs = priv->regs; in spi_cs_activate()
95 debug("activate cs%u\n", cs); in spi_cs_activate()
96 writel(1 << cs, ®s->ser); in spi_cs_activate()
99 static void spi_cs_deactivate(u8 bus, u8 cs) in spi_cs_deactivate() argument
102 struct rockchip_spi *regs = priv->regs; in spi_cs_deactivate()
104 debug("deactivate cs%u\n", cs); in spi_cs_deactivate()
105 writel(0, ®s->ser); in spi_cs_deactivate()
113 printf("%s bus %d is out of max num(%d)\n", __func__, bus, RK_SPI_BUS_MAX); in rockchip_spi_probe()
114 return -1; in rockchip_spi_probe()
121 priv->regs = (struct rockchip_spi *)base_addr; in rockchip_spi_probe()
122 priv->rsd = rsd; in rockchip_spi_probe()
123 priv->mode = mode; in rockchip_spi_probe()
127 return -1; in rockchip_spi_probe()
129 priv->clock_div = clock_div; in rockchip_spi_probe()
130 priv->bits_per_word = 8; in rockchip_spi_probe()
138 struct rockchip_spi *regs = priv->regs; in rockchip_spi_claim_bus()
145 switch (priv->bits_per_word) { in rockchip_spi_claim_bus()
147 priv->n_bytes = 1; in rockchip_spi_claim_bus()
152 priv->n_bytes = 2; in rockchip_spi_claim_bus()
158 priv->bits_per_word); in rockchip_spi_claim_bus()
159 return -EPROTONOSUPPORT; in rockchip_spi_claim_bus()
162 rkspi_set_baudr(priv, priv->clock_div); in rockchip_spi_claim_bus()
171 if (priv->mode & SPI_CPOL) in rockchip_spi_claim_bus()
173 if (priv->mode & SPI_CPHA) in rockchip_spi_claim_bus()
192 ctrlr0 |= priv->rsd << RXDSD_SHIFT; in rockchip_spi_claim_bus()
198 priv->cr0 = ctrlr0; in rockchip_spi_claim_bus()
200 writel(ctrlr0, ®s->ctrlr0); in rockchip_spi_claim_bus()
207 struct rockchip_spi *regs = priv->regs; in rockchip_spi_config()
208 uint ctrlr0 = priv->cr0; in rockchip_spi_config()
217 writel(ctrlr0, ®s->ctrlr0); in rockchip_spi_config()
226 rkspi_enable_chip(priv->regs, false); in rockchip_spi_release_bus()
229 int rockchip_spi_xfer(u8 bus, u8 cs, unsigned int bitlen, const void *dout, void *din, unsigned lon… in rockchip_spi_xfer() argument
232 struct rockchip_spi *regs = priv->regs; in rockchip_spi_xfer()
234 const u8 *out = dout; in rockchip_spi_xfer() local
246 /* Assert CS before transfer */ in rockchip_spi_xfer()
248 spi_cs_activate(bus, cs); in rockchip_spi_xfer()
254 writel(todo - 1, ®s->ctrlr1); in rockchip_spi_xfer()
260 u32 status = readl(®s->sr); in rockchip_spi_xfer()
263 if (out) in rockchip_spi_xfer()
264 writel(out ? *out++ : 0, regs->txdr); in rockchip_spi_xfer()
265 towrite--; in rockchip_spi_xfer()
268 u32 byte = readl(regs->rxdr); in rockchip_spi_xfer()
272 toread--; in rockchip_spi_xfer()
278 len -= todo; in rockchip_spi_xfer()
281 /* Deassert CS after transfer */ in rockchip_spi_xfer()
283 spi_cs_deactivate(bus, cs); in rockchip_spi_xfer()
290 int rockchip_spi_write_then_read(u8 bus, u8 cs, const u8 *opcode, in rockchip_spi_write_then_read() argument
300 ret = rockchip_spi_xfer(bus, cs, n_opcode * 8, opcode, NULL, flags); in rockchip_spi_write_then_read()
305 ret = rockchip_spi_xfer(bus, cs, n_buf * 8, txbuf, rxbuf, SPI_XFER_END); in rockchip_spi_write_then_read()
356 printf("Actual U-Boot ABI version %d\n", (int)get_version()); in main()
372 u8 bus, cs; in main() local
385 return -1; in main()
392 cs = 0; in main()
402 ret = rockchip_spi_xfer(bus, cs, test_size * 8, pwrite, NULL, SPI_XFER_ONCE); in main()
412 rockchip_spi_xfer(bus, cs, test_size * 8, NULL, pread, SPI_XFER_ONCE); in main()
423 rockchip_spi_xfer(bus, cs, test_size * 8, pwrite, pread, SPI_XFER_ONCE); in main()
434 rockchip_spi_write_then_read(bus, cs, pwrite, 1, NULL, pread, test_size); in main()