drivers: spi_xlnx_axi_quadspi: initialize all cs gpios during init
In case when we have multiple devices connected to the one SPI interface the initial state of CS gpios after MCU reset is floating and it might be low that prevents us from communicating between particular devices. Fix that by initializing all provided cs gpios and setting them as inactive. Signed-off-by: Bartosz Bilas <bartosz.bilas@hotmail.com>
This commit is contained in:
parent
258f2d85f7
commit
7ba48aa7a9
1 changed files with 7 additions and 4 deletions
|
@ -214,10 +214,6 @@ static int xlnx_quadspi_configure(const struct device *dev,
|
||||||
|
|
||||||
ctx->config = spi_cfg;
|
ctx->config = spi_cfg;
|
||||||
|
|
||||||
if (!IS_ENABLED(CONFIG_SPI_SLAVE) || !spi_context_is_slave(ctx)) {
|
|
||||||
spi_context_cs_configure(ctx);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -436,6 +432,7 @@ static void xlnx_quadspi_isr(const struct device *dev)
|
||||||
|
|
||||||
static int xlnx_quadspi_init(const struct device *dev)
|
static int xlnx_quadspi_init(const struct device *dev)
|
||||||
{
|
{
|
||||||
|
int err;
|
||||||
const struct xlnx_quadspi_config *config = dev->config;
|
const struct xlnx_quadspi_config *config = dev->config;
|
||||||
struct xlnx_quadspi_data *data = dev->data;
|
struct xlnx_quadspi_data *data = dev->data;
|
||||||
|
|
||||||
|
@ -448,6 +445,11 @@ static int xlnx_quadspi_init(const struct device *dev)
|
||||||
xlnx_quadspi_write32(dev, IPIXR_DTR_EMPTY, IPIER_OFFSET);
|
xlnx_quadspi_write32(dev, IPIXR_DTR_EMPTY, IPIER_OFFSET);
|
||||||
xlnx_quadspi_write32(dev, DGIER_GIE, DGIER_OFFSET);
|
xlnx_quadspi_write32(dev, DGIER_GIE, DGIER_OFFSET);
|
||||||
|
|
||||||
|
err = spi_context_cs_configure_all(&data->ctx);
|
||||||
|
if (err < 0) {
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
spi_context_unlock_unconditionally(&data->ctx);
|
spi_context_unlock_unconditionally(&data->ctx);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -475,6 +477,7 @@ static const struct spi_driver_api xlnx_quadspi_driver_api = {
|
||||||
static struct xlnx_quadspi_data xlnx_quadspi_data_##n = { \
|
static struct xlnx_quadspi_data xlnx_quadspi_data_##n = { \
|
||||||
SPI_CONTEXT_INIT_LOCK(xlnx_quadspi_data_##n, ctx), \
|
SPI_CONTEXT_INIT_LOCK(xlnx_quadspi_data_##n, ctx), \
|
||||||
SPI_CONTEXT_INIT_SYNC(xlnx_quadspi_data_##n, ctx), \
|
SPI_CONTEXT_INIT_SYNC(xlnx_quadspi_data_##n, ctx), \
|
||||||
|
SPI_CONTEXT_CS_GPIOS_INITIALIZE(DT_DRV_INST(n), ctx) \
|
||||||
}; \
|
}; \
|
||||||
\
|
\
|
||||||
DEVICE_DT_INST_DEFINE(n, &xlnx_quadspi_init, \
|
DEVICE_DT_INST_DEFINE(n, &xlnx_quadspi_init, \
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue