.. | .. |
---|
201 | 201 | static int soft_spi_ofdata_to_platdata(struct udevice *dev) |
---|
202 | 202 | { |
---|
203 | 203 | struct soft_spi_platdata *plat = dev->platdata; |
---|
204 | | - const void *blob = gd->fdt_blob; |
---|
205 | | - int node = dev_of_offset(dev); |
---|
206 | 204 | |
---|
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); |
---|
208 | 206 | |
---|
209 | 207 | return 0; |
---|
210 | 208 | } |
---|
.. | .. |
---|
216 | 214 | int cs_flags, clk_flags; |
---|
217 | 215 | int ret; |
---|
218 | 216 | |
---|
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 | + } |
---|
221 | 224 | |
---|
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))) |
---|
226 | 228 | return -EINVAL; |
---|
227 | 229 | |
---|
228 | 230 | ret = gpio_request_by_name(dev, "gpio-mosi", 0, &plat->mosi, |
---|
229 | 231 | 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 | + } |
---|
232 | 237 | |
---|
233 | 238 | ret = gpio_request_by_name(dev, "gpio-miso", 0, &plat->miso, |
---|
234 | 239 | 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 | + } |
---|
237 | 245 | |
---|
238 | 246 | if ((plat->flags & (SPI_MASTER_NO_RX | SPI_MASTER_NO_TX)) == |
---|
239 | 247 | (SPI_MASTER_NO_RX | SPI_MASTER_NO_TX)) |
---|