Lines Matching +full:spi +full:- +full:slave
2 * LPC32xx SSP interface (SPI mode)
5 * Written-by: Albert ARIBAUD <albert.aribaud@3adev.fr>
7 * SPDX-License-Identifier: GPL-2.0+
14 #include <spi.h>
39 /* lpc32xx spi slave */
41 struct spi_slave slave; member
46 struct spi_slave *slave) in to_lpc32xx_spi_slave() argument
48 return container_of(slave, struct lpc32xx_spi_slave, slave); in to_lpc32xx_spi_slave()
69 pr_err("3-wire mode not supported"); in spi_setup_slave()
74 pr_err("slave mode not supported\n"); in spi_setup_slave()
89 lslave->regs = (struct ssp_regs *)SSP0_BASE; in spi_setup_slave()
92 * 8 bit frame, SPI fmt, 500kbps -> clock divider is 26. in spi_setup_slave()
96 writel(0x7, &lslave->regs->cr0); /* 8-bit chunks, SPI, 1 clk/bit */ in spi_setup_slave()
97 writel(26, &lslave->regs->cpsr); /* SSP clock = HCLK/26 = 500kbps */ in spi_setup_slave()
98 writel(0, &lslave->regs->imsc); /* do not raise any interrupts */ in spi_setup_slave()
99 writel(0, &lslave->regs->icr); /* clear any pending interrupt */ in spi_setup_slave()
100 writel(0, &lslave->regs->dmacr); /* do not do DMAs */ in spi_setup_slave()
101 writel(SSP_CR1_SSP_ENABLE, &lslave->regs->cr1); /* enable SSP0 */ in spi_setup_slave()
102 return &lslave->slave; in spi_setup_slave()
105 void spi_free_slave(struct spi_slave *slave) in spi_free_slave() argument
107 struct lpc32xx_spi_slave *lslave = to_lpc32xx_spi_slave(slave); in spi_free_slave()
113 int spi_claim_bus(struct spi_slave *slave) in spi_claim_bus() argument
115 /* only one bus and slave so far, always available */ in spi_claim_bus()
119 int spi_xfer(struct spi_slave *slave, unsigned int bitlen, in spi_xfer() argument
122 struct lpc32xx_spi_slave *lslave = to_lpc32xx_spi_slave(slave); in spi_xfer()
130 int status = readl(&lslave->regs->sr); in spi_xfer()
132 writel(((u8 *)dout)[idx_out++], &lslave->regs->data); in spi_xfer()
134 ((u8 *)din)[idx_in++] = readl(&lslave->regs->data); in spi_xfer()
136 return -1; in spi_xfer()
141 void spi_release_bus(struct spi_slave *slave) in spi_release_bus() argument