Skip to content

Commit 845308e

Browse files
committed
[nrf fromtree] drivers: mspi_dw: Add support for slave mode
MSPI slave mode is selected through devicetree using the op-mode property. Mode selected by SSIISMST bit in the CTRLR0 register. EXMIF can only be Master (controller). Signed-off-by: David Jewsbury <[email protected]> (cherry picked from commit a18fd95)
1 parent 87cd7d7 commit 845308e

File tree

3 files changed

+11
-2
lines changed

3 files changed

+11
-2
lines changed

drivers/mspi/mspi_dw.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ struct mspi_dw_config {
114114
uint8_t rx_fifo_threshold;
115115
DECLARE_REG_ACCESS();
116116
bool sw_multi_periph;
117+
enum mspi_op_mode op_mode;
117118
};
118119

119120
/* Register access helpers. */
@@ -1748,6 +1749,7 @@ static int dev_pm_action_cb(const struct device *dev,
17481749

17491750
static int dev_init(const struct device *dev)
17501751
{
1752+
struct mspi_dw_data *dev_data = dev->data;
17511753
const struct mspi_dw_config *dev_config = dev->config;
17521754
const struct gpio_dt_spec *ce_gpio;
17531755
int rc;
@@ -1756,11 +1758,12 @@ static int dev_init(const struct device *dev)
17561758

17571759
vendor_specific_init(dev);
17581760

1761+
dev_data->ctrlr0 |= FIELD_PREP(CTRLR0_SSI_IS_MST_BIT,
1762+
dev_config->op_mode == MSPI_OP_MODE_CONTROLLER);
1763+
17591764
dev_config->irq_config();
17601765

17611766
#if defined(CONFIG_MULTITHREADING)
1762-
struct mspi_dw_data *dev_data = dev->data;
1763-
17641767
dev_data->dev = dev;
17651768
k_sem_init(&dev_data->finished, 0, 1);
17661769
k_sem_init(&dev_data->cfg_lock, 1, 1);
@@ -1885,6 +1888,7 @@ static DEVICE_API(mspi, drv_api) = {
18851888
DEFINE_REG_ACCESS(inst) \
18861889
.sw_multi_periph = \
18871890
DT_INST_PROP(inst, software_multiperipheral), \
1891+
.op_mode = DT_INST_STRING_TOKEN(inst, op_mode), \
18881892
}; \
18891893
DEVICE_DT_INST_DEFINE(inst, \
18901894
dev_init, PM_DEVICE_DT_INST_GET(inst), \

drivers/mspi/mspi_dw.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
*/
2020

2121
/* CTRLR0 - Control Register 0 */
22+
#define CTRLR0_SSI_IS_MST_BIT BIT(31)
2223
#define CTRLR0_SPI_FRF_MASK COND_CODE_1(SSI_VERSION_2, GENMASK(22, 21), GENMASK(23, 22))
2324
#define CTRLR0_SPI_FRF_STANDARD 0UL
2425
#define CTRLR0_SPI_FRF_DUAL 1UL

dts/bindings/mspi/nordic,nrf-exmif.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,7 @@ description: Nordic External Memory Interface (EXMIF)
66
compatible: "nordic,nrf-exmif"
77

88
include: snps,designware-ssi.yaml
9+
10+
properties:
11+
op-mode:
12+
default: "MSPI_OP_MODE_CONTROLLER"

0 commit comments

Comments
 (0)