mtd: Use default mtdparts/mtids when not defined in the environment
PATCH v2 1/5 mtd: Use default mtdparts/mtids when not defined in the environment
U-boot provides a mean to define default values for mtdids and mtdparts when they're not defined in the environment. Patch mtd_probe_devices() to use those default values when env_get("mtdparts") or env_get("mtdids") return NULL.
This implementation is based on the logic found in cmd/mtdparts.c.
---
Changes in v2:
- none
--- drivers/mtd/mtd_uboot.c | 62 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 60 insertions(+), 2 deletions(-)
drivers/mtd/mtd_uboot.c +60 -2
@@ -92,12 +92,70 @@ static void mtd_probe_uclass_mtd_devs(void) { }#endif #if defined(CONFIG_MTD_PARTITIONS ) +extern void board_mtdparts_default (const char **mtdids, +const char **mtdparts); + +static const char *get_mtdids (void ) +{ +__maybe_unused const char *mtdparts =NULL ; +const char *mtdids =env_get ("mtdids" ); + +if (mtdids) +return mtdids; + +#if defined(CONFIG_SYS_MTDPARTS_RUNTIME ) +board_mtdparts_default (&mtdids, &mtdparts); +#elif defined(MTDIDS_DEFAULT ) + mtdids =MTDIDS_DEFAULT ; +#elif defined(CONFIG_MTDIDS_DEFAULT ) + mtdids =CONFIG_MTDIDS_DEFAULT ; +#endif + +if (mtdids) +env_set ("mtdids" , mtdids); + +return mtdids; +} + +#define MTDPARTS_MAXLEN 512 + +static const char *get_mtdparts (void ) +{ +__maybe_unused const char *mtdids =NULL ; +static char tmp_parts[MTDPARTS_MAXLEN ]; +static bool use_defaults = true; +const char *mtdparts =NULL ; + +if (gd->flags &GD_FLG_ENV_READY ) + mtdparts =env_get ("mtdparts" ); +else if (env_get_f ("mtdparts" , tmp_parts,sizeof (tmp_parts) !=-1 )) + mtdparts = tmp_parts; + +if (mtdparts || !use_defaults) +return mtdparts; + +#if defined(CONFIG_SYS_MTDPARTS_RUNTIME ) +board_mtdparts_default (&mtdids, &mtdparts); +#elif defined(MTDPARTS_DEFAULT ) + mtdparts =MTDPARTS_DEFAULT ; +#elif defined(CONFIG_MTDPARTS_DEFAULT ) + mtdparts =CONFIG_MTDPARTS_DEFAULT ; +#endif + +if (mtdparts) +env_set ("mtdparts" , mtdparts); + + use_defaults = false; + +return mtdparts; +} +int mtd_probe_devices (void ) {static char *old_mtdparts;static char *old_mtdids; -const char *mtdparts =env_get ("mtdparts" ); -const char *mtdids =env_get ("mtdids" ); +const char *mtdparts =get_mtdparts (); +const char *mtdids =get_mtdids ();bool remaining_partitions = true;struct mtd_info *mtd;
Signature · 1 line
2.17.1
PATCH v2 2/5 dfu: nand: Add missing dependency on CMD_MTDPARTS
dfu_fill_entity_nand() uses find_dev_and_part() and mtdparts_init() which are provided by cmd/mtdparts.c.
Add the dependency to avoid build failures when CMD_MTDPARTS is not selected.
---
Changes in v2:
- Moved ealier in the series to avoid introducing a build failure
--- drivers/dfu/Kconfig | 1 + 1 file changed, 1 insertion(+)
drivers/dfu/Kconfig +1 -0
@@ -30,6 +30,7 @@ config DFU_MMC config DFU_NAND bool "NAND back end for DFU" + depends on CMD_MTDPARTS help This option enables using DFU to read and write to NAND based storage.
Signature · 1 line
2.17.1
PATCH v2 2/5 dfu: nand: Add missing dependency on CMD_MTDPARTS
Hi Boris,
Quoted 27 lines
dfu_fill_entity_nand()usesfind_dev_and_part()andmtdparts_init()which are provided bycmd/mtdparts.c.Add the dependency to avoid build failures when
CMD_MTDPARTSis not selected.Reported-by Jagan Teki <[email protected]>Fixes 6828e602b722d ("dfu: Migrate to Kconfig")Signed-off-by Boris Brezillon <[email protected]>---
Changes in v2:
- Moved ealier in the series to avoid introducing a build failure--- drivers/dfu/Kconfig | 1 + 1 file changed, 1 insertion(+)drivers/dfu/Kconfig +1
-0@@ -30,6 +30,7 @@ config DFU_MMC config DFU_NAND bool "NAND back end for DFU" + depends on CMD_MTDPARTS help This option enables using DFU to read and write to NAND
Quoted 1 line
based storage.
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de -------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20181112/b4066807/attachment.sig>
PATCH v2 3/5 mtd: Make {MTDIDS, MTDPARTS}_DEFAULT visible when MTD_PARTITIONS is selected
In reply to Boris Brezillongwventana configs are relying on CMD_UBI to select CMD_MTDPARTS, which is then making {MTDIDS,MTDPARTS}_DEFAULT options available.
We are about to remove the 'select CMD_MTDPARTS' statement in the CMD_UBI entry, but if we do that without first making sure {MTDIDS,MTDPARTS}_DEFAULT are visible, we end up with a build failure when building gwventana configs.
Address that by adding a depends on MTD_PARTITIONS to {MTDIDS,MTDPARTS}_DEFAULT which does the trick since CMD_UBI selects MTD_UBI which in turn selects MTD_PARTITIONS.
We also get rid of the depends on CMD_MTD, since CMD_MTD also selects MTD_PARTITIONS.
---
Changes in v2:
- Moved ealier in the series to avoid introducing a build failure
--- cmd/Kconfig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
cmd/Kconfig +2 -2
@@ -1728,14 +1728,14 @@ config CMD_MTDPARTS config MTDIDS_DEFAULT string "Default MTD IDs" - depends on CMD_MTD || CMD_MTDPARTS || CMD_NAND || CMD_FLASH + depends on MTD_PARTITIONS || CMD_MTDPARTS || CMD_NAND || CMD_FLASH help Defines a default MTD IDs list for use with MTD partitions in the Linux MTD command line partitions format. config MTDPARTS_DEFAULT string "Default MTD partition scheme" - depends on CMD_MTD || CMD_MTDPARTS || CMD_NAND || CMD_FLASH + depends on MTD_PARTITIONS || CMD_MTDPARTS || CMD_NAND || CMD_FLASH help Defines a default MTD partitioning scheme in the Linux MTD command line partitions format
Signature · 1 line
2.17.1
PATCH v2 3/5 mtd: Make {MTDIDS, MTDPARTS}_DEFAULT visible when MTD_PARTITIONS is selected
Quoted 42 lines · On Mon, 12 Nov 2018 09:28:07 +0100 Boris Brezillon…
gwventana configs are relying on
CMD_UBIto selectCMD_MTDPARTS, which is then making {MTDIDS,MTDPARTS}_DEFAULT options available.We are about to remove the 'select
CMD_MTDPARTS' statement in theCMD_UBIentry, but if we do that without first making sure {MTDIDS,MTDPARTS}_DEFAULT are visible, we end up with a build failure when building gwventana configs.Address that by adding a depends on
MTD_PARTITIONSto {MTDIDS,MTDPARTS}_DEFAULT which does the trick sinceCMD_UBIselectsMTD_UBIwhich in turn selectsMTD_PARTITIONS.We also get rid of the depends on
CMD_MTD, sinceCMD_MTDalso selectsMTD_PARTITIONS.Reported-by Jagan Teki <[email protected]>Signed-off-by Boris Brezillon <[email protected]>---
Changes in v2:
- Moved ealier in the series to avoid introducing a build failure--- cmd/Kconfig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)cmd/Kconfig +1
-1@@ -1728,14 +1728,14 @@ config CMD_MTDPARTS config MTDIDS_DEFAULT string "Default MTD IDs" - depends on CMD_MTD || CMD_MTDPARTS || CMD_NAND || CMD_FLASH + depends on MTD_PARTITIONS || CMD_MTDPARTS || CMD_NAND ||
CMD_FLASHhelp
Defines a default MTD IDs list for use with MTD partitions
in the Linux MTD command line partitions format.config
MTDPARTS_DEFAULTcmd/Kconfig +1
-1string "Default MTD partition scheme" - depends on CMD_MTD || CMD_MTDPARTS || CMD_NAND || CMD_FLASH + depends on MTD_PARTITIONS || CMD_MTDPARTS || CMD_NAND ||
Quoted 3 lines
CMD_FLASHhelp
Defines a default MTD partitioning scheme in the Linux MTD
command line partitions format
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de -------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20181112/1dcad793/attachment.sig>
PATCH v2 4/5 cmd: ubi: Remove useless call to mtdparts_init()
In reply to Boris BrezillonCommit c58fb2cdb3e4 ("cmd: ubi: clean the partition handling") introduced a call to mtd_probe_devices() in the ubi_attach() path and this function takes care of parsing mtdparts/mtdids and creating/registering the associated mtd partitions.
The mtdparts_init() call in the ubi_detach() path is not only unnecessary but can sometimes print error messages even when things work properly (that's the case with SPI NAND devices that have not been probed with 'mtd list'), which is misleading.
Remove this call to mtdparts_init() and drop the dependency on CMD_MTDPARTS.
---
Changes in v2:
- Moved after the patches reworking the Kconfig deps
--- cmd/Kconfig | 1 - cmd/ubi.c | 5 ----- 2 files changed, 6 deletions(-)
cmd/Kconfig +0 -1
@@ -1856,7 +1856,6 @@ endmenu config CMD_UBI tristate "Enable UBI - Unsorted block images commands" - select CMD_MTDPARTS select CRC32 select MTD_UBI help
cmd/ubi.c +0 -5
@@ -417,11 +417,6 @@ static int ubi_dev_scan(struct mtd_info *info, const char *vid_header_offset)int ubi_detach (void ) { -if (mtdparts_init () !=0 ) { -printf ("Error initializing mtdparts!\n" ); -return 1 ; - } -#ifdef CONFIG_CMD_UBIFS /* * Automatically unmount UBIFS partition when user
Signature · 1 line
2.17.1
PATCH v2 4/5 cmd: ubi: Remove useless call to mtdparts_init()
Quoted 43 lines · On Mon, 12 Nov 2018 09:28:08 +0100 Boris Brezillon…
Commit
c58fb2cdb3e4("cmd: ubi: clean the partition handling") introduced a call tomtd_probe_devices()in theubi_attach()path and this function takes care of parsing mtdparts/mtdids and creating/registering the associated mtd partitions.The
mtdparts_init()call in theubi_detach()path is not only unnecessary but can sometimes print error messages even when things work properly (that's the case with SPI NAND devices that have not been probed with 'mtd list'), which is misleading.Remove this call to
mtdparts_init()and drop the dependency onCMD_MTDPARTS.Fixes c58fb2cdb3e4 ("cmd: ubi: clean the partition handling")Reported-by Stefan Roese <[email protected]>Signed-off-by Boris Brezillon <[email protected]>Tested-by Stefan Roese <[email protected]>---
Changes in v2:
- Moved after the patches reworking theKconfigdeps--- cmd/Kconfig | 1 - cmd/ubi.c | 5 ----- 2 files changed, 6 deletions(-)cmd/Kconfig +0
-1@@ -1856,7 +1856,6 @@ endmenu config CMD_UBI tristate "Enable UBI - Unsorted block images commands" - select CMD_MTDPARTS select CRC32 select MTD_UBI helpcmd/ubi.c +0
-0@@ -417,11 +417,6 @@ static int ubi_dev_scan(struct mtd_info *info, const char *vid_header_offset)
cmd/ubi.c static int ubi_dev_scan(struct mtd_info *info, · line 422
Quoted 10 lines
cmd/ubi.c +0
-5int ubi_detach (void ) { -if (mtdparts_init () !=0 ) { -printf ("Error initializing mtdparts!\n" ); -return 1 ; - } -#ifdef CONFIG_CMD_UBIFS /* * Automatically unmount UBIFS partition when user
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de -------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20181112/6993aa82/attachment.sig>
PATCH v2 5/5 mtd: Drop duplicate MTD_PARTITIONS Kconfig option
In reply to Boris BrezillonCommit 9c5b00973bce ("Convert CONFIG_MTD_PARTITIONS et al to Kconfig") introduced a publicly visible Kconfig entry for the CONFIG_MTD_PARTITIONS option, while the rework on MTD partitioning was in progress, and we somehow did not notice that the same Kconfig entry was added by commit 4048a5c519a8 ("mtd: declare MTD_PARTITIONS symbol in Kconfig"), but this time as an invisible entry (this can only be selected by other options).
Keep the non-visible version of this symbol, since MTD_PARTITIONS is not something the user should be able to enable/disable directly.
---
Changes in v2:
- Moved after the patches reworking the Kconfig deps
--- drivers/mtd/Kconfig | 6 ------ 1 file changed, 6 deletions(-)
drivers/mtd/Kconfig +0 -6
@@ -22,12 +22,6 @@ config MTD_DEVICE Adds the MTD device infrastructure from the Linux kernel. Needed for mtdparts command support. -config MTD_PARTITIONS - bool "Add MTD Partioning infrastructure" - help - Adds the MTD partitioning infrastructure from the Linux - kernel. Needed for UBI support. - config FLASH_CFI_DRIVER bool "Enable CFI Flash driver" help
Signature · 1 line
2.17.1
PATCH v2 5/5 mtd: Drop duplicate MTD_PARTITIONS Kconfig option
Quoted 27 lines · On Mon, 12 Nov 2018 09:28:09 +0100 Boris Brezillon…
Commit
9c5b00973bce("ConvertCONFIG_MTD_PARTITIONSet al toKconfig") introduced a publicly visibleKconfigentry for theCONFIG_MTD_PARTITIONSoption, while the rework on MTD partitioning was in progress, and we somehow did not notice that the sameKconfigentry was added by commit4048a5c519a8("mtd: declareMTD_PARTITIONSsymbol inKconfig"), but this time as an invisible entry (this can only be selected by other options).Keep the non-visible version of this symbol, since
MTD_PARTITIONSis not something the user should be able to enable/disable directly.Fixes 4048a5c519a8 ("mtd: declare MTD_PARTITIONS symbol in Kconfig")Signed-off-by Boris Brezillon <[email protected]>---
Changes in v2:
- Moved after the patches reworking theKconfigdeps--- drivers/mtd/Kconfig | 6 ------ 1 file changed, 6 deletions(-)drivers/mtd/Kconfig +0
-0@@ -22,12 +22,6 @@ config MTD_DEVICE Adds the MTD device infrastructure from the Linux kernel. Needed for mtdparts command support.
drivers/mtd/Kconfig config MTD_DEVICE · line 27
Quoted 10 lines
drivers/mtd/Kconfig +0
-6-config MTD_PARTITIONS - bool "Add MTD Partioning infrastructure" - help - Adds the MTD partitioning infrastructure from the Linux - kernel. Needed for UBI support. - config FLASH_CFI_DRIVER bool "Enable CFI Flash driver" help
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de -------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20181112/f6238be3/attachment.sig>
Miquel Raynal
maintainerPATCH v2 1/5 mtd: Use default mtdparts/mtids when not defined in the environment
In reply to Boris BrezillonHi Boris, Tom,
Boris Brezillon <[email protected]> wrote on Mon, 12 Nov 2018 09:28:05 +0100:
Quoted 5 lines
U-boot provides a mean to define default values for mtdids and mtdparts when they're not defined in the environment. Patch
mtd_probe_devices()to use those default values whenenv_get("mtdparts")orenv_get("mtdids")return NULL.
Quoted 7 lines
This implementation is based on the logic found in
cmd/mtdparts.c.Fixes 5db66b3aee6f ("cmd: mtd: add 'mtd' command")Reported-by Stefan Roese <[email protected]>Signed-off-by Boris Brezillon <[email protected]>Tested-by Stefan Roese <[email protected]>---
For the whole series:
This should be (if possible) in 2018.11, otherwise the release will be buggy with certain configurations. Maybe we should sometimes send PR directly to Tom as MTD is orphaned to avoid latencies between developers/maintainers and reach mainline quickly (at least for the fixes)?
Thanks,
Miquèl
PATCH v2 1/5 mtd: Use default mtdparts/mtids when not defined in the environment
Quoted 21 lines · Miquel Raynal
Hi Boris, Tom,
Boris Brezillon <[email protected]> wrote on Mon, 12 Nov 2018 09:28:05 +0100:
Quoted 5 lines
U-boot provides a mean to define default values for mtdids and mtdparts when they're not defined in the environment. Patch
mtd_probe_devices()to use those default values whenenv_get("mtdparts")orenv_get("mtdids")return NULL.Quoted 7 lines
This implementation is based on the logic found in
cmd/mtdparts.c.Fixes 5db66b3aee6f ("cmd: mtd: add 'mtd' command")Reported-by Stefan Roese <[email protected]>Signed-off-by Boris Brezillon <[email protected]>Tested-by Stefan Roese <[email protected]>---
For the whole series:
Quoted 7 lines
Reviewed-by Miquel Raynal <[email protected]>This should be (if possible) in 2018.11, otherwise the release will be buggy with certain configurations. Maybe we should sometimes send PR directly to Tom as MTD is orphaned to avoid latencies between developers/maintainers and reach mainline quickly (at least for the fixes)?
ie one of the reason I requesting travis-ci build before sending the generic changes.
Miquel Raynal
maintainerPATCH v2 1/5 mtd: Use default mtdparts/mtids when not defined in the environment
Hi Jagan,
Jagan Teki <[email protected]> wrote on Mon, 12 Nov 2018 15:39:20 +0530:
Quoted 24 lines · Miquel Raynal
Quoted 23 lines
Hi Boris, Tom,
Boris Brezillon <[email protected]> wrote on Mon, 12 Nov 2018 09:28:05 +0100:
Quoted 5 lines
U-boot provides a mean to define default values for mtdids and mtdparts when they're not defined in the environment. Patch
mtd_probe_devices()to use those default values whenenv_get("mtdparts")orenv_get("mtdids")return NULL.Quoted 7 lines
This implementation is based on the logic found in
cmd/mtdparts.c.Fixes 5db66b3aee6f ("cmd: mtd: add 'mtd' command")Reported-by Stefan Roese <[email protected]>Signed-off-by Boris Brezillon <[email protected]>Tested-by Stefan Roese <[email protected]>---
For the whole series:
Reviewed-by Miquel Raynal <[email protected]>
Quoted 8 lines
Quoted 5 lines
This should be (if possible) in 2018.11, otherwise the release will be buggy with certain configurations. Maybe we should sometimes send PR directly to Tom as MTD is orphaned to avoid latencies between developers/maintainers and reach mainline quickly (at least for the fixes)?
ie one of the reason I requesting travis-ci build before sending the generic changes.
Yes, we should have run a CI test first. I am not complaining at all about the time between having the series posted and you testing it. I understand this delay and really, I can't blame you for that. I'm just saying that this is the second time we (almost?) miss a release because of the additional delays between us, which are, IMHO, not really needed while there is no actual code review as long as we do run Travis.
Thanks,
Miquèl
PATCH v2 1/5 mtd: Use default mtdparts/mtids when not defined in the environment
In reply to Boris BrezillonQuoted 8 lines · Boris Brezillon
U-boot provides a mean to define default values for mtdids and mtdparts when they're not defined in the environment. Patch
mtd_probe_devices()to use those default values whenenv_get("mtdparts")orenv_get("mtdids")return NULL.This implementation is based on the logic found in
cmd/mtdparts.c.
Quoted 7 lines
Fixes 5db66b3aee6f ("cmd: mtd: add 'mtd' command")Reported-by Stefan Roese <[email protected]>Signed-off-by Boris Brezillon <[email protected]>Tested-by Stefan Roese <[email protected]>---
Changes in v2:
- none
Trigger travis-ci [1], will send v2 PR once all built fine.
PATCH v2 1/5 mtd: Use default mtdparts/mtids when not defined in the environment
Quoted 18 lines · On Mon, 12 Nov 2018 15:55:18 +0530 Jagan Teki <[email protected]>…
Quoted 8 lines · Boris Brezillon
U-boot provides a mean to define default values for mtdids and mtdparts when they're not defined in the environment. Patch
mtd_probe_devices()to use those default values whenenv_get("mtdparts")orenv_get("mtdids")return NULL.This implementation is based on the logic found in
cmd/mtdparts.c.Quoted 7 lines
Fixes 5db66b3aee6f ("cmd: mtd: add 'mtd' command")Reported-by Stefan Roese <[email protected]>Signed-off-by Boris Brezillon <[email protected]>Tested-by Stefan Roese <[email protected]>---
Changes in v2:
- none
Quoted 3 lines
Trigger travis-ci [1], will send v2 PR once all built fine.
Looks like mine is all green [1] ;-). And yes, now I have travis-ci set up to track my u-boot repo, so hopefully I won't end up submitting patches that regress the tests described in .travis.yaml in the future. Still, I'd like to insist on that this test result shouldn't replace human review, which I think is still valuable to spot subtle issues.
Also, I'd like to point that some of the failures caused by the spi-nand patchset are actually coming from the weird way MTD related config options are selected/defined in u-boot. This should probably be simplified somehow, but that's a different story.
PATCH v2 1/5 mtd: Use default mtdparts/mtids when not defined in the environment
In reply to Boris BrezillonHi Boris,
Quoted 87 lines
U-boot provides a mean to define default values for mtdids and mtdparts when they're not defined in the environment. Patch
mtd_probe_devices()to use those default values whenenv_get("mtdparts")orenv_get("mtdids")return NULL.This implementation is based on the logic found in
cmd/mtdparts.c.Fixes 5db66b3aee6f ("cmd: mtd: add 'mtd' command")Reported-by Stefan Roese <[email protected]>Signed-off-by Boris Brezillon <[email protected]>Tested-by Stefan Roese <[email protected]>---
Changes in v2:
- none--- drivers/mtd/mtd_uboot.c | 62+++++++++++++++++++++++++++++++++++++++-- 1 file changed, 60 insertions(+), 2 deletions(-)
drivers/mtd/mtd_uboot.c +58
-0@@ -92,12 +92,70 @@ static void mtd_probe_uclass_mtd_devs(void) { }#endif #if defined(CONFIG_MTD_PARTITIONS ) +extern void board_mtdparts_default (const char **mtdids, +const char **mtdparts); + +static const char *get_mtdids (void ) +{ +__maybe_unused const char *mtdparts =NULL ; +const char *mtdids =env_get ("mtdids" ); + +if (mtdids) +return mtdids; + +#if defined(CONFIG_SYS_MTDPARTS_RUNTIME ) +board_mtdparts_default (&mtdids, &mtdparts); +#elif defined(MTDIDS_DEFAULT ) + mtdids =MTDIDS_DEFAULT ; +#elif defined(CONFIG_MTDIDS_DEFAULT ) + mtdids =CONFIG_MTDIDS_DEFAULT ; +#endif + +if (mtdids) +env_set ("mtdids" , mtdids); + +return mtdids; +} + +#define MTDPARTS_MAXLEN 512 + +static const char *get_mtdparts (void ) +{ +__maybe_unused const char *mtdids =NULL ; +static char tmp_parts[MTDPARTS_MAXLEN ]; +static bool use_defaults = true; +const char *mtdparts =NULL ; + +if (gd->flags &GD_FLG_ENV_READY ) + mtdparts =env_get ("mtdparts" ); +else if (env_get_f ("mtdparts" , tmp_parts,sizeof (tmp_parts) !=-1 )) + mtdparts = tmp_parts; + +if (mtdparts || !use_defaults) +return mtdparts; + +#if defined(CONFIG_SYS_MTDPARTS_RUNTIME ) +board_mtdparts_default (&mtdids, &mtdparts); +#elif defined(MTDPARTS_DEFAULT ) + mtdparts =MTDPARTS_DEFAULT ; +#elif defined(CONFIG_MTDPARTS_DEFAULT ) + mtdparts =CONFIG_MTDPARTS_DEFAULT ; +#endif + +if (mtdparts) +env_set ("mtdparts" , mtdparts); + + use_defaults = false; + +return mtdparts; +} +
drivers/mtd/mtd_uboot.c static void mtd_probe_uclass_mtd_devs(void) { } · line 161
Quoted 10 lines
drivers/mtd/mtd_uboot.c +2
-2int mtd_probe_devices (void ) {static char *old_mtdparts;static char *old_mtdids; -const char *mtdparts =env_get ("mtdparts" ); -const char *mtdids =env_get ("mtdids" ); +const char *mtdparts =get_mtdparts (); +const char *mtdids =get_mtdids ();bool remaining_partitions = true;struct mtd_info *mtd;
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de -------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20181112/ef5f2d89/attachment.sig>
PATCH v2 1/5 mtd: Use default mtdparts/mtids when not defined in the environment
In reply to Boris BrezillonQuoted 53 lines · Boris Brezillon
U-boot provides a mean to define default values for mtdids and mtdparts when they're not defined in the environment. Patch
mtd_probe_devices()to use those default values whenenv_get("mtdparts")orenv_get("mtdids")return NULL.This implementation is based on the logic found in
cmd/mtdparts.c.Fixes 5db66b3aee6f ("cmd: mtd: add 'mtd' command")Reported-by Stefan Roese <[email protected]>Signed-off-by Boris Brezillon <[email protected]>Tested-by Stefan Roese <[email protected]>---
Changes in v2:
- none--- drivers/mtd/mtd_uboot.c | 62 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 60 insertions(+), 2 deletions(-)drivers/mtd/mtd_uboot.c +27
-0@@ -92,12 +92,70 @@ static void mtd_probe_uclass_mtd_devs(void) { }#endif #if defined(CONFIG_MTD_PARTITIONS ) +extern void board_mtdparts_default (const char **mtdids, +const char **mtdparts); + +static const char *get_mtdids (void ) +{ +__maybe_unused const char *mtdparts =NULL ; +const char *mtdids =env_get ("mtdids" ); + +if (mtdids) +return mtdids; + +#if defined(CONFIG_SYS_MTDPARTS_RUNTIME ) +board_mtdparts_default (&mtdids, &mtdparts); +#elif defined(MTDIDS_DEFAULT ) + mtdids =MTDIDS_DEFAULT ; +#elif defined(CONFIG_MTDIDS_DEFAULT ) + mtdids =CONFIG_MTDIDS_DEFAULT ; +#endif + +if (mtdids) +env_set ("mtdids" , mtdids); + +return mtdids; +} + +#define MTDPARTS_MAXLEN 512 +
drivers/mtd/mtd_uboot.c static void mtd_probe_uclass_mtd_devs(void) { } · line 131
Quoted 10 lines
drivers/mtd/mtd_uboot.c +10
-0+static const char *get_mtdparts (void ) +{ +__maybe_unused const char *mtdids =NULL ; +static char tmp_parts[MTDPARTS_MAXLEN ]; +static bool use_defaults = true; +const char *mtdparts =NULL ; + +if (gd->flags &GD_FLG_ENV_READY ) + mtdparts =env_get ("mtdparts" ); +else if (env_get_f ("mtdparts" , tmp_parts,sizeof (tmp_parts) !=-1 ))
sizeof(tmp_parts) != -1 is always true, the parenthesis are misplaced.
Also, include/common.h says that
* env_get_f() - Look up the value of an environment variable (early)
...
* @return value of variable, or NULL if not found
So the -1 is likely wrong too ?
Signature · 2 lines
Best regards, Marek Vasut
PATCH v2 1/5 mtd: Use default mtdparts/mtids when not defined in the environment
Quoted 66 lines · On Tue, 13 Nov 2018 12:01:06 +0100 Marek Vasut <[email protected]> wrote:
Quoted 53 lines · Boris Brezillon
U-boot provides a mean to define default values for mtdids and mtdparts when they're not defined in the environment. Patch
mtd_probe_devices()to use those default values whenenv_get("mtdparts")orenv_get("mtdids")return NULL.This implementation is based on the logic found in
cmd/mtdparts.c.Fixes 5db66b3aee6f ("cmd: mtd: add 'mtd' command")Reported-by Stefan Roese <[email protected]>Signed-off-by Boris Brezillon <[email protected]>Tested-by Stefan Roese <[email protected]>---
Changes in v2:
- none--- drivers/mtd/mtd_uboot.c | 62 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 60 insertions(+), 2 deletions(-)drivers/mtd/mtd_uboot.c +27
-0@@ -92,12 +92,70 @@ static void mtd_probe_uclass_mtd_devs(void) { }#endif #if defined(CONFIG_MTD_PARTITIONS ) +extern void board_mtdparts_default (const char **mtdids, +const char **mtdparts); + +static const char *get_mtdids (void ) +{ +__maybe_unused const char *mtdparts =NULL ; +const char *mtdids =env_get ("mtdids" ); + +if (mtdids) +return mtdids; + +#if defined(CONFIG_SYS_MTDPARTS_RUNTIME ) +board_mtdparts_default (&mtdids, &mtdparts); +#elif defined(MTDIDS_DEFAULT ) + mtdids =MTDIDS_DEFAULT ; +#elif defined(CONFIG_MTDIDS_DEFAULT ) + mtdids =CONFIG_MTDIDS_DEFAULT ; +#endif + +if (mtdids) +env_set ("mtdids" , mtdids); + +return mtdids; +} + +#define MTDPARTS_MAXLEN 512 +drivers/mtd/mtd_uboot.c static void mtd_probe_uclass_mtd_devs(void) { } · line 131
Quoted 10 lines
drivers/mtd/mtd_uboot.c +10
-0+static const char *get_mtdparts (void ) +{ +__maybe_unused const char *mtdids =NULL ; +static char tmp_parts[MTDPARTS_MAXLEN ]; +static bool use_defaults = true; +const char *mtdparts =NULL ; + +if (gd->flags &GD_FLG_ENV_READY ) + mtdparts =env_get ("mtdparts" ); +else if (env_get_f ("mtdparts" , tmp_parts,sizeof (tmp_parts) !=-1 ))
sizeof(tmp_parts)!= -1 is always true, the parenthesis are misplaced.
Quoted 4 lines
Also,
include/common.hsays that
*env_get_f()- Look up the value of an environment variable (early)
...
* @return value of variable, or NULL if not found
That's clearly not matching the implementation [1].
[1]https://elixir.bootlin.com/u-boot/v2018.11-rc3/source/cmd/nvedit.c#L680
PATCH v2 1/5 mtd: Use default mtdparts/mtids when not defined in the environment
Quoted 69 lines · Boris Brezillon
Quoted 66 lines · On Tue, 13 Nov 2018 12:01:06 +0100 Marek Vasut <[email protected]> wrote:
Quoted 53 lines · Boris Brezillon
U-boot provides a mean to define default values for mtdids and mtdparts when they're not defined in the environment. Patch
mtd_probe_devices()to use those default values whenenv_get("mtdparts")orenv_get("mtdids")return NULL.This implementation is based on the logic found in
cmd/mtdparts.c.Fixes 5db66b3aee6f ("cmd: mtd: add 'mtd' command")Reported-by Stefan Roese <[email protected]>Signed-off-by Boris Brezillon <[email protected]>Tested-by Stefan Roese <[email protected]>---
Changes in v2:
- none--- drivers/mtd/mtd_uboot.c | 62 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 60 insertions(+), 2 deletions(-)drivers/mtd/mtd_uboot.c +27
-0@@ -92,12 +92,70 @@ static void mtd_probe_uclass_mtd_devs(void) { }#endif #if defined(CONFIG_MTD_PARTITIONS ) +extern void board_mtdparts_default (const char **mtdids, +const char **mtdparts); + +static const char *get_mtdids (void ) +{ +__maybe_unused const char *mtdparts =NULL ; +const char *mtdids =env_get ("mtdids" ); + +if (mtdids) +return mtdids; + +#if defined(CONFIG_SYS_MTDPARTS_RUNTIME ) +board_mtdparts_default (&mtdids, &mtdparts); +#elif defined(MTDIDS_DEFAULT ) + mtdids =MTDIDS_DEFAULT ; +#elif defined(CONFIG_MTDIDS_DEFAULT ) + mtdids =CONFIG_MTDIDS_DEFAULT ; +#endif + +if (mtdids) +env_set ("mtdids" , mtdids); + +return mtdids; +} + +#define MTDPARTS_MAXLEN 512 +drivers/mtd/mtd_uboot.c static void mtd_probe_uclass_mtd_devs(void) { } · line 131
Quoted 10 lines
drivers/mtd/mtd_uboot.c +10
-0+static const char *get_mtdparts (void ) +{ +__maybe_unused const char *mtdids =NULL ; +static char tmp_parts[MTDPARTS_MAXLEN ]; +static bool use_defaults = true; +const char *mtdparts =NULL ; + +if (gd->flags &GD_FLG_ENV_READY ) + mtdparts =env_get ("mtdparts" ); +else if (env_get_f ("mtdparts" , tmp_parts,sizeof (tmp_parts) !=-1 ))
sizeof(tmp_parts)!= -1 is always true, the parenthesis are misplaced.
Quoted 8 lines
Quoted 4 lines
Also,
include/common.hsays that
*env_get_f()- Look up the value of an environment variable (early)
...
* @return value of variable, or NULL if not foundThat's clearly not matching the implementation [1].
[1]https://elixir.bootlin.com/u-boot/v2018.11-rc3/source/cmd/nvedit.c#L680
Another thing to fix ...
Signature · 2 lines
Best regards, Marek Vasut