Message ID | 20180704070806.5759-1-manu@freebsd.org |
---|---|
State | Changes Requested, archived |
Delegated to: | Alexander Graf |
Headers | show |
Series | [U-Boot] rpi: Set the default mmc max device to 2 | expand |
On 07/04/2018 09:08 AM, Emmanuel Vadot wrote: > When running with special configuration (OF_BOARD and mmc overlay) > RPI have the SD card as id 1. > This make device enumeration fails when using the API. > > Signed-off-by: Emmanuel Vadot <manu@freebsd.org> Could you please elaborate a bit? From the commit message I don't fully understand which problem you're trying to solve. Thanks, Alex > --- > include/configs/rpi.h | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/include/configs/rpi.h b/include/configs/rpi.h > index a97550b732..26fc9b9d95 100644 > --- a/include/configs/rpi.h > +++ b/include/configs/rpi.h > @@ -69,6 +69,8 @@ > #define CONFIG_MISC_INIT_R > #endif > > +#define CONFIG_SYS_MMC_MAX_DEVICE 2 > + > /* Console configuration */ > #define CONFIG_SYS_CBSIZE 1024 >
On Wed, 4 Jul 2018 09:25:16 +0200 Alexander Graf <agraf@suse.de> wrote: > On 07/04/2018 09:08 AM, Emmanuel Vadot wrote: > > When running with special configuration (OF_BOARD and mmc overlay) > > RPI have the SD card as id 1. > > This make device enumeration fails when using the API. > > > > Signed-off-by: Emmanuel Vadot <manu@freebsd.org> > > Could you please elaborate a bit? From the commit message I don't fully > understand which problem you're trying to solve. > > > Thanks, > > Alex Sure, When using the dtb from the rpi fundation and the mmc overlay (which switch back the sd card to use the SDHCI controller and not the SDHOST one) and using OF_BOARD so u-boot uses it/pass it to the OS the device id for the sd is 1 : U-Boot> mmc list mmc@7e300000: 1 This cause the API (see api/api_storage.c) code to never expose this device to the consumer as the default value for CONFIG_SYS_MMC_MAX_DEVICE is 1. If it's more clear I'll send a v2 with those words. Cheers, > > --- > > include/configs/rpi.h | 2 ++ > > 1 file changed, 2 insertions(+) > > > > diff --git a/include/configs/rpi.h b/include/configs/rpi.h > > index a97550b732..26fc9b9d95 100644 > > --- a/include/configs/rpi.h > > +++ b/include/configs/rpi.h > > @@ -69,6 +69,8 @@ > > #define CONFIG_MISC_INIT_R > > #endif > > > > +#define CONFIG_SYS_MMC_MAX_DEVICE 2 > > + > > /* Console configuration */ > > #define CONFIG_SYS_CBSIZE 1024 > >
On 07/04/2018 09:34 AM, Emmanuel Vadot wrote: > On Wed, 4 Jul 2018 09:25:16 +0200 > Alexander Graf <agraf@suse.de> wrote: > >> On 07/04/2018 09:08 AM, Emmanuel Vadot wrote: >>> When running with special configuration (OF_BOARD and mmc overlay) >>> RPI have the SD card as id 1. >>> This make device enumeration fails when using the API. >>> >>> Signed-off-by: Emmanuel Vadot <manu@freebsd.org> >> Could you please elaborate a bit? From the commit message I don't fully >> understand which problem you're trying to solve. >> >> >> Thanks, >> >> Alex > Sure, > > When using the dtb from the rpi fundation and the mmc overlay (which > switch back the sd card to use the SDHCI controller and not the SDHOST > one) and using OF_BOARD so u-boot uses it/pass it to the OS the device > id for the sd is 1 : > U-Boot> mmc list > mmc@7e300000: 1 > > This cause the API (see api/api_storage.c) code to never expose this > device to the consumer as the default value for > CONFIG_SYS_MMC_MAX_DEVICE is 1. Ouch, that whole file assumes that you know the number of devices present in your system. That's terrible. I think the real fix would be to convert api_storage.c to instead use dm native routines to loop through all available devices and not explicitly depend on any maximum number of possible devices. Simon, do you potentially have a patch lying around for that in a branch already? Alex
Hi Alex, On 4 July 2018 at 00:48, Alexander Graf <agraf@suse.de> wrote: > On 07/04/2018 09:34 AM, Emmanuel Vadot wrote: >> >> On Wed, 4 Jul 2018 09:25:16 +0200 >> Alexander Graf <agraf@suse.de> wrote: >> >>> On 07/04/2018 09:08 AM, Emmanuel Vadot wrote: >>>> >>>> When running with special configuration (OF_BOARD and mmc overlay) >>>> RPI have the SD card as id 1. >>>> This make device enumeration fails when using the API. >>>> >>>> Signed-off-by: Emmanuel Vadot <manu@freebsd.org> >>> >>> Could you please elaborate a bit? From the commit message I don't fully >>> understand which problem you're trying to solve. >>> >>> >>> Thanks, >>> >>> Alex >> >> Sure, >> >> When using the dtb from the rpi fundation and the mmc overlay (which >> switch back the sd card to use the SDHCI controller and not the SDHOST >> one) and using OF_BOARD so u-boot uses it/pass it to the OS the device >> id for the sd is 1 : >> U-Boot> mmc list >> mmc@7e300000: 1 >> >> This cause the API (see api/api_storage.c) code to never expose this >> device to the consumer as the default value for >> CONFIG_SYS_MMC_MAX_DEVICE is 1. > > > Ouch, that whole file assumes that you know the number of devices present in > your system. That's terrible. > > I think the real fix would be to convert api_storage.c to instead use dm > native routines to loop through all available devices and not explicitly > depend on any maximum number of possible devices. > > Simon, do you potentially have a patch lying around for that in a branch > already? No sorry I don't. The API could use another look for DM. Regards, Simon
On 04.07.18 09:34, Emmanuel Vadot wrote: > On Wed, 4 Jul 2018 09:25:16 +0200 > Alexander Graf <agraf@suse.de> wrote: > >> On 07/04/2018 09:08 AM, Emmanuel Vadot wrote: >>> When running with special configuration (OF_BOARD and mmc overlay) >>> RPI have the SD card as id 1. >>> This make device enumeration fails when using the API. >>> >>> Signed-off-by: Emmanuel Vadot <manu@freebsd.org> >> >> Could you please elaborate a bit? From the commit message I don't fully >> understand which problem you're trying to solve. >> >> >> Thanks, >> >> Alex > > Sure, > > When using the dtb from the rpi fundation and the mmc overlay (which > switch back the sd card to use the SDHCI controller and not the SDHOST > one) and using OF_BOARD so u-boot uses it/pass it to the OS the device > id for the sd is 1 : > U-Boot> mmc list > mmc@7e300000: 1 > > This cause the API (see api/api_storage.c) code to never expose this > device to the consumer as the default value for > CONFIG_SYS_MMC_MAX_DEVICE is 1. > > If it's more clear I'll send a v2 with those words. Please send a v2 with reworked wording or - if you have the time - rework the storage api to no require this change at all with DM :). Alex
diff --git a/include/configs/rpi.h b/include/configs/rpi.h index a97550b732..26fc9b9d95 100644 --- a/include/configs/rpi.h +++ b/include/configs/rpi.h @@ -69,6 +69,8 @@ #define CONFIG_MISC_INIT_R #endif +#define CONFIG_SYS_MMC_MAX_DEVICE 2 + /* Console configuration */ #define CONFIG_SYS_CBSIZE 1024
When running with special configuration (OF_BOARD and mmc overlay) RPI have the SD card as id 1. This make device enumeration fails when using the API. Signed-off-by: Emmanuel Vadot <manu@freebsd.org> --- include/configs/rpi.h | 2 ++ 1 file changed, 2 insertions(+)