@@ -160,49 +160,25 @@ static int spi_mcux_configure(const struct device *dev, const struct spi_config
160
160
const struct spi_mcux_config * config = dev -> config ;
161
161
struct spi_mcux_data * data = dev -> data ;
162
162
LPSPI_Type * base = (LPSPI_Type * )DEVICE_MMIO_NAMED_GET (dev , reg_base );
163
+ uint32_t word_size = SPI_WORD_SIZE_GET (spi_cfg -> operation );
163
164
lpspi_master_config_t master_config ;
164
165
uint32_t clock_freq ;
165
- uint32_t word_size ;
166
166
167
167
if (spi_cfg -> operation & SPI_HALF_DUPLEX ) {
168
168
LOG_ERR ("Half-duplex not supported" );
169
169
return - ENOTSUP ;
170
170
}
171
171
172
- LPSPI_MasterGetDefaultConfig (& master_config );
173
-
174
172
if (spi_cfg -> slave > CHIP_SELECT_COUNT ) {
175
173
LOG_ERR ("Slave %d is greater than %d" , spi_cfg -> slave , CHIP_SELECT_COUNT );
176
174
return - EINVAL ;
177
175
}
178
176
179
- word_size = SPI_WORD_SIZE_GET (spi_cfg -> operation );
180
177
if (word_size > MAX_DATA_WIDTH ) {
181
178
LOG_ERR ("Word size %d is greater than %d" , word_size , MAX_DATA_WIDTH );
182
179
return - EINVAL ;
183
180
}
184
181
185
- master_config .bitsPerFrame = word_size ;
186
-
187
- master_config .cpol = (SPI_MODE_GET (spi_cfg -> operation ) & SPI_MODE_CPOL )
188
- ? kLPSPI_ClockPolarityActiveLow
189
- : kLPSPI_ClockPolarityActiveHigh ;
190
-
191
- master_config .cpha = (SPI_MODE_GET (spi_cfg -> operation ) & SPI_MODE_CPHA )
192
- ? kLPSPI_ClockPhaseSecondEdge
193
- : kLPSPI_ClockPhaseFirstEdge ;
194
-
195
- master_config .direction =
196
- (spi_cfg -> operation & SPI_TRANSFER_LSB ) ? kLPSPI_LsbFirst : kLPSPI_MsbFirst ;
197
-
198
- master_config .baudRate = spi_cfg -> frequency ;
199
-
200
- master_config .pcsToSckDelayInNanoSec = config -> pcs_sck_delay ;
201
- master_config .lastSckToPcsDelayInNanoSec = config -> sck_pcs_delay ;
202
- master_config .betweenTransferDelayInNanoSec = config -> transfer_delay ;
203
-
204
- master_config .pinCfg = config -> data_pin_config ;
205
-
206
182
if (!device_is_ready (config -> clock_dev )) {
207
183
LOG_ERR ("clock control device not ready" );
208
184
return - ENODEV ;
@@ -226,17 +202,32 @@ static int spi_mcux_configure(const struct device *dev, const struct spi_config
226
202
}
227
203
}
228
204
229
- LPSPI_MasterInit (base , & master_config , clock_freq );
230
-
231
205
if (IS_ENABLED (CONFIG_DEBUG )) {
232
206
base -> CR |= LPSPI_CR_DBGEN_MASK ;
233
207
}
234
208
235
- LPSPI_MasterTransferCreateHandle ( base , & data -> handle , spi_mcux_master_callback , data ) ;
209
+ data -> ctx . config = spi_cfg ;
236
210
237
- LPSPI_SetDummyData ( base , 0 );
211
+ LPSPI_MasterGetDefaultConfig ( & master_config );
238
212
239
- data -> ctx .config = spi_cfg ;
213
+ master_config .bitsPerFrame = word_size ;
214
+ master_config .cpol = (SPI_MODE_GET (spi_cfg -> operation ) & SPI_MODE_CPOL )
215
+ ? kLPSPI_ClockPolarityActiveLow
216
+ : kLPSPI_ClockPolarityActiveHigh ;
217
+ master_config .cpha = (SPI_MODE_GET (spi_cfg -> operation ) & SPI_MODE_CPHA )
218
+ ? kLPSPI_ClockPhaseSecondEdge
219
+ : kLPSPI_ClockPhaseFirstEdge ;
220
+ master_config .direction =
221
+ (spi_cfg -> operation & SPI_TRANSFER_LSB ) ? kLPSPI_LsbFirst : kLPSPI_MsbFirst ;
222
+ master_config .baudRate = spi_cfg -> frequency ;
223
+ master_config .pcsToSckDelayInNanoSec = config -> pcs_sck_delay ;
224
+ master_config .lastSckToPcsDelayInNanoSec = config -> sck_pcs_delay ;
225
+ master_config .betweenTransferDelayInNanoSec = config -> transfer_delay ;
226
+ master_config .pinCfg = config -> data_pin_config ;
227
+
228
+ LPSPI_MasterInit (base , & master_config , clock_freq );
229
+ LPSPI_MasterTransferCreateHandle (base , & data -> handle , spi_mcux_master_callback , data );
230
+ LPSPI_SetDummyData (base , 0 );
240
231
241
232
return 0 ;
242
233
}
0 commit comments