|
@@ -278,6 +278,7 @@ int spi_get_bus_and_cs(int busnum, int cs, int speed, int mode,
|
|
|
struct udevice **busp, struct spi_slave **devp)
|
|
|
{
|
|
|
struct udevice *bus, *dev;
|
|
|
+ struct dm_spi_slave_platdata *plat;
|
|
|
bool created = false;
|
|
|
int ret;
|
|
|
|
|
@@ -294,8 +295,6 @@ int spi_get_bus_and_cs(int busnum, int cs, int speed, int mode,
|
|
|
* SPI flash chip - we will bind to the correct driver.
|
|
|
*/
|
|
|
if (ret == -ENODEV && drv_name) {
|
|
|
- struct dm_spi_slave_platdata *plat;
|
|
|
-
|
|
|
debug("%s: Binding new device '%s', busnum=%d, cs=%d, driver=%s\n",
|
|
|
__func__, dev_name, busnum, cs, drv_name);
|
|
|
ret = device_bind_driver(bus, drv_name, dev_name, &dev);
|
|
@@ -322,6 +321,11 @@ int spi_get_bus_and_cs(int busnum, int cs, int speed, int mode,
|
|
|
slave->dev = dev;
|
|
|
}
|
|
|
|
|
|
+ plat = dev_get_parent_platdata(dev);
|
|
|
+ if (!speed) {
|
|
|
+ speed = plat->max_hz;
|
|
|
+ mode = plat->mode;
|
|
|
+ }
|
|
|
ret = spi_set_speed_mode(bus, speed, mode);
|
|
|
if (ret)
|
|
|
goto err;
|