Lines Matching +full:rx +full:- +full:inst +full:- +full:mode
4 * SPDX-License-Identifier: Apache-2.0
41 if (spi_context_configured(&spi->ctx, config)) { in spi_oc_simple_configure()
46 if (config->operation & SPI_HALF_DUPLEX) { in spi_oc_simple_configure()
47 LOG_ERR("Half-duplex not supported"); in spi_oc_simple_configure()
48 return -ENOTSUP; in spi_oc_simple_configure()
51 /* Simple SPI only supports master mode */ in spi_oc_simple_configure()
52 if (spi_context_is_slave(&spi->ctx)) { in spi_oc_simple_configure()
53 LOG_ERR("Slave mode not supported"); in spi_oc_simple_configure()
54 return -ENOTSUP; in spi_oc_simple_configure()
57 if ((config->operation & (SPI_MODE_LOOP | SPI_TRANSFER_LSB)) || in spi_oc_simple_configure()
59 (config->operation & in spi_oc_simple_configure()
62 return -EINVAL; in spi_oc_simple_configure()
65 /* SPI mode */ in spi_oc_simple_configure()
66 if (SPI_MODE_GET(config->operation) & SPI_MODE_CPOL) { in spi_oc_simple_configure()
70 if (SPI_MODE_GET(config->operation) & SPI_MODE_CPHA) { in spi_oc_simple_configure()
76 if ((config->frequency << (i + 1)) > in spi_oc_simple_configure()
88 spi->ctx.config = config; in spi_oc_simple_configure()
98 const struct spi_oc_simple_cfg *info = dev->config; in spi_oc_simple_transceive()
100 struct spi_context *ctx = &spi->ctx; in spi_oc_simple_transceive()
114 spi_context_cs_control(&spi->ctx, true); in spi_oc_simple_transceive()
116 sys_write8(1 << config->slave, SPI_OC_SIMPLE_SPSS(info)); in spi_oc_simple_transceive()
128 sys_write8(*ctx->tx_buf, in spi_oc_simple_transceive()
135 /* Wait for rx FIFO empty flag to clear */ in spi_oc_simple_transceive()
142 /* Store received byte if rx buffer is on */ in spi_oc_simple_transceive()
144 *ctx->rx_buf = rx_byte; in spi_oc_simple_transceive()
150 /* Clear chip-select */ in spi_oc_simple_transceive()
152 spi_context_cs_control(&spi->ctx, false); in spi_oc_simple_transceive()
154 sys_write8(0 << config->slave, SPI_OC_SIMPLE_SPSS(info)); in spi_oc_simple_transceive()
172 return -ENOTSUP; in spi_oc_simple_transceive_async()
179 spi_context_unlock_unconditionally(&SPI_OC_SIMPLE_DATA(dev)->ctx); in spi_oc_simple_release()
198 const struct spi_oc_simple_cfg *info = dev->config; in spi_oc_simple_init()
199 struct spi_oc_simple_data *data = dev->data; in spi_oc_simple_init()
204 err = spi_context_cs_configure_all(&data->ctx); in spi_oc_simple_init()
210 spi_context_unlock_unconditionally(&SPI_OC_SIMPLE_DATA(dev)->ctx); in spi_oc_simple_init()
223 #define SPI_OC_INIT(inst) \ argument
224 static struct spi_oc_simple_cfg spi_oc_simple_cfg_##inst = { \
225 .base = DT_INST_REG_ADDR_BY_NAME(inst, control), \
228 static struct spi_oc_simple_data spi_oc_simple_data_##inst = { \
229 SPI_CONTEXT_INIT_LOCK(spi_oc_simple_data_##inst, ctx), \
230 SPI_CONTEXT_INIT_SYNC(spi_oc_simple_data_##inst, ctx), \
231 SPI_CONTEXT_CS_GPIOS_INITIALIZE(DT_DRV_INST(inst), ctx) \
234 SPI_DEVICE_DT_INST_DEFINE(inst, \
237 &spi_oc_simple_data_##inst, \
238 &spi_oc_simple_cfg_##inst, \