8
8
#include <zephyr/drivers/spi/rtio.h>
9
9
#include <zephyr/drivers/pinctrl.h>
10
10
#include <zephyr/drivers/clock_control.h>
11
+ #include <zephyr/sys/__assert.h>
11
12
#include <zephyr/irq.h>
12
13
13
14
#include "../spi_context.h"
16
17
#include <zephyr/drivers/mfd/nxp_lp_flexcomm.h>
17
18
#endif
18
19
19
- #include <fsl_lpspi.h>
20
-
21
20
/* If any hardware revisions change this, make it into a DT property.
22
21
* DONT'T make #ifdefs here by platform.
23
22
*/
30
29
#define DEV_CFG (_dev ) ((const struct spi_mcux_config *)(_dev)->config)
31
30
#define DEV_DATA (_dev ) ((struct spi_mcux_data *)(_dev)->data)
32
31
33
- /* flag for SDK API for master transfers */
34
- #define LPSPI_MASTER_XFER_CFG_FLAGS (slave ) \
35
- kLPSPI_MasterPcsContinuous | (slave << LPSPI_MASTER_PCS_SHIFT)
36
-
37
32
struct spi_mcux_config {
38
33
DEVICE_MMIO_NAMED_ROM (reg_base );
39
34
const struct device * clock_dev ;
@@ -43,8 +38,8 @@ struct spi_mcux_config {
43
38
uint32_t sck_pcs_delay ;
44
39
uint32_t transfer_delay ;
45
40
const struct pinctrl_dev_config * pincfg ;
46
- lpspi_pin_config_t data_pin_config ;
47
- bool output_config ;
41
+ uint8_t data_pin_config ;
42
+ bool tristate_output ;
48
43
uint8_t tx_fifo_size ;
49
44
uint8_t rx_fifo_size ;
50
45
uint8_t irqn ;
@@ -58,7 +53,7 @@ struct spi_mcux_data {
58
53
size_t transfer_len ;
59
54
};
60
55
61
- /* common configure function that verifies spi_cfg validity and set up configuration parameters */
56
+ /* verifies spi_cfg validity and set up configuration of hardware for xfer */
62
57
int spi_mcux_configure (const struct device * dev , const struct spi_config * spi_cfg );
63
58
64
59
/* Does these things:
@@ -75,9 +70,6 @@ int spi_mcux_release(const struct device *dev, const struct spi_config *spi_cfg)
75
70
76
71
void lpspi_wait_tx_fifo_empty (const struct device * dev );
77
72
78
- /* Argument to MCUX SDK IRQ handler */
79
- #define LPSPI_IRQ_HANDLE_ARG COND_CODE_1(CONFIG_NXP_LP_FLEXCOMM, (LPSPI_GetInstance(base)), (base))
80
-
81
73
#define SPI_MCUX_LPSPI_IRQ_FUNC_LP_FLEXCOMM (n ) \
82
74
nxp_lp_flexcomm_setirqhandler(DEVICE_DT_GET(DT_INST_PARENT(n)), DEVICE_DT_INST_GET(n), \
83
75
LP_FLEXCOMM_PERIPH_LPSPI, lpspi_isr);
@@ -108,8 +100,8 @@ void lpspi_wait_tx_fifo_empty(const struct device *dev);
108
100
.transfer_delay = UTIL_AND(DT_INST_NODE_HAS_PROP(n, transfer_delay), \
109
101
DT_INST_PROP(n, transfer_delay)), \
110
102
.pincfg = PINCTRL_DT_INST_DEV_CONFIG_GET(n), \
111
- .data_pin_config = DT_INST_ENUM_IDX(n, data_pin_config), \
112
- .output_config = DT_INST_PROP(n, tristate_output), \
103
+ .data_pin_config = (uint8_t) DT_INST_ENUM_IDX(n, data_pin_config), \
104
+ .tristate_output = DT_INST_PROP(n, tristate_output), \
113
105
.rx_fifo_size = (uint8_t)DT_INST_PROP(n, rx_fifo_size), \
114
106
.tx_fifo_size = (uint8_t)DT_INST_PROP(n, tx_fifo_size), \
115
107
.irqn = (uint8_t)LPSPI_IRQN(n), \
0 commit comments