hc
2023-11-06 9df731a176aab8e03b984b681b1bea01ccff6644
u-boot/drivers/spi/soft_spi.c
....@@ -201,10 +201,8 @@
201201 static int soft_spi_ofdata_to_platdata(struct udevice *dev)
202202 {
203203 struct soft_spi_platdata *plat = dev->platdata;
204
- const void *blob = gd->fdt_blob;
205
- int node = dev_of_offset(dev);
206204
207
- plat->spi_delay_us = fdtdec_get_int(blob, node, "spi-delay-us", 0);
205
+ plat->spi_delay_us = dev_read_u32_default(dev, "spi-delay-us", 0);
208206
209207 return 0;
210208 }
....@@ -216,24 +214,34 @@
216214 int cs_flags, clk_flags;
217215 int ret;
218216
219
- cs_flags = (slave->mode & SPI_CS_HIGH) ? 0 : GPIOD_ACTIVE_LOW;
220
- clk_flags = (slave->mode & SPI_CPOL) ? GPIOD_ACTIVE_LOW : 0;
217
+ if (slave) {
218
+ cs_flags = (slave->mode & SPI_CS_HIGH) ? 0 : GPIOD_ACTIVE_LOW;
219
+ clk_flags = (slave->mode & SPI_CPOL) ? GPIOD_ACTIVE_LOW : 0;
220
+ } else {
221
+ cs_flags = GPIOD_ACTIVE_LOW;
222
+ clk_flags = 0;
223
+ }
221224
222
- if (gpio_request_by_name(dev, "cs-gpios", 0, &plat->cs,
223
- GPIOD_IS_OUT | cs_flags) ||
224
- gpio_request_by_name(dev, "gpio-sck", 0, &plat->sclk,
225
- GPIOD_IS_OUT | clk_flags))
225
+ if (gpio_request_by_name(dev, "cs-gpios", 0, &plat->cs, GPIOD_IS_OUT | cs_flags) ||
226
+ (gpio_request_by_name(dev, "gpio-sck", 0, &plat->sclk, GPIOD_IS_OUT | clk_flags) &&
227
+ gpio_request_by_name(dev, "sck-gpios", 0, &plat->sclk, GPIOD_IS_OUT | clk_flags)))
226228 return -EINVAL;
227229
228230 ret = gpio_request_by_name(dev, "gpio-mosi", 0, &plat->mosi,
229231 GPIOD_IS_OUT | GPIOD_IS_OUT_ACTIVE);
230
- if (ret)
231
- plat->flags |= SPI_MASTER_NO_TX;
232
+ if (ret) {
233
+ if (gpio_request_by_name(dev, "mosi-gpios", 0, &plat->mosi,
234
+ GPIOD_IS_OUT | GPIOD_IS_OUT_ACTIVE))
235
+ plat->flags |= SPI_MASTER_NO_TX;
236
+ }
232237
233238 ret = gpio_request_by_name(dev, "gpio-miso", 0, &plat->miso,
234239 GPIOD_IS_IN);
235
- if (ret)
236
- plat->flags |= SPI_MASTER_NO_RX;
240
+ if (ret) {
241
+ if (gpio_request_by_name(dev, "miso-gpios", 0, &plat->miso,
242
+ GPIOD_IS_IN))
243
+ plat->flags |= SPI_MASTER_NO_RX;
244
+ }
237245
238246 if ((plat->flags & (SPI_MASTER_NO_RX | SPI_MASTER_NO_TX)) ==
239247 (SPI_MASTER_NO_RX | SPI_MASTER_NO_TX))