Message ID | 20220801215842.4972-1-pali@kernel.org |
---|---|
State | Accepted |
Commit | 7cd67018dd7f754c66cf08a76397bbee254b32aa |
Delegated to: | Stefan Roese |
Headers | show |
Series | arm: mvebu: turris_omnia: Remove hardcoded spi-nor device tree path | expand |
On 01.08.22 23:58, Pali Rohár wrote: > Linux kernel DTS files renamed spi-nor@0 node to flash@0 which effectively > broke U-Boot to boot new Linux kernel versions correctly. > > So remove hardcoded spi-nor device tree path from Turris Omnia board code > and replace it by searching for mtd node by compatible string. > > Signed-off-by: Pali Rohár <pali@kernel.org> Reviewed-by: Stefan Roese <sr@denx.de> Thanks, Stefan > --- > board/CZ.NIC/turris_omnia/turris_omnia.c | 16 +++++++++++----- > 1 file changed, 11 insertions(+), 5 deletions(-) > > diff --git a/board/CZ.NIC/turris_omnia/turris_omnia.c b/board/CZ.NIC/turris_omnia/turris_omnia.c > index 108d160f486d..9d7e63865f14 100644 > --- a/board/CZ.NIC/turris_omnia/turris_omnia.c > +++ b/board/CZ.NIC/turris_omnia/turris_omnia.c > @@ -32,8 +32,6 @@ > > DECLARE_GLOBAL_DATA_PTR; > > -#define OMNIA_SPI_NOR_PATH "/soc/spi@10600/spi-nor@0" > - > #define OMNIA_I2C_BUS_NAME "i2c@11000->i2cmux@70->i2c@0" > > #define OMNIA_I2C_MCU_CHIP_ADDR 0x2a > @@ -1030,14 +1028,22 @@ static bool fixup_mtd_partitions(void *blob, int offset, struct mtd_info *mtd) > > static void fixup_spi_nor_partitions(void *blob) > { > - struct mtd_info *mtd; > + struct mtd_info *mtd = NULL; > + char mtd_path[64]; > int node; > > - mtd = get_mtd_device_nm(OMNIA_SPI_NOR_PATH); > + node = fdt_node_offset_by_compatible(gd->fdt_blob, -1, "jedec,spi-nor"); > + if (node < 0) > + goto fail; > + > + if (fdt_get_path(gd->fdt_blob, node, mtd_path, sizeof(mtd_path)) < 0) > + goto fail; > + > + mtd = get_mtd_device_nm(mtd_path); > if (IS_ERR_OR_NULL(mtd)) > goto fail; > > - node = fdt_path_offset(blob, OMNIA_SPI_NOR_PATH); > + node = fdt_node_offset_by_compatible(blob, -1, "jedec,spi-nor"); > if (node < 0) > goto fail; > Viele Grüße, Stefan Roese
On 01.08.22 23:58, Pali Rohár wrote: > Linux kernel DTS files renamed spi-nor@0 node to flash@0 which effectively > broke U-Boot to boot new Linux kernel versions correctly. > > So remove hardcoded spi-nor device tree path from Turris Omnia board code > and replace it by searching for mtd node by compatible string. > > Signed-off-by: Pali Rohár <pali@kernel.org> Applied to u-boot-marvell/master Thanks, Stefan > --- > board/CZ.NIC/turris_omnia/turris_omnia.c | 16 +++++++++++----- > 1 file changed, 11 insertions(+), 5 deletions(-) > > diff --git a/board/CZ.NIC/turris_omnia/turris_omnia.c b/board/CZ.NIC/turris_omnia/turris_omnia.c > index 108d160f486d..9d7e63865f14 100644 > --- a/board/CZ.NIC/turris_omnia/turris_omnia.c > +++ b/board/CZ.NIC/turris_omnia/turris_omnia.c > @@ -32,8 +32,6 @@ > > DECLARE_GLOBAL_DATA_PTR; > > -#define OMNIA_SPI_NOR_PATH "/soc/spi@10600/spi-nor@0" > - > #define OMNIA_I2C_BUS_NAME "i2c@11000->i2cmux@70->i2c@0" > > #define OMNIA_I2C_MCU_CHIP_ADDR 0x2a > @@ -1030,14 +1028,22 @@ static bool fixup_mtd_partitions(void *blob, int offset, struct mtd_info *mtd) > > static void fixup_spi_nor_partitions(void *blob) > { > - struct mtd_info *mtd; > + struct mtd_info *mtd = NULL; > + char mtd_path[64]; > int node; > > - mtd = get_mtd_device_nm(OMNIA_SPI_NOR_PATH); > + node = fdt_node_offset_by_compatible(gd->fdt_blob, -1, "jedec,spi-nor"); > + if (node < 0) > + goto fail; > + > + if (fdt_get_path(gd->fdt_blob, node, mtd_path, sizeof(mtd_path)) < 0) > + goto fail; > + > + mtd = get_mtd_device_nm(mtd_path); > if (IS_ERR_OR_NULL(mtd)) > goto fail; > > - node = fdt_path_offset(blob, OMNIA_SPI_NOR_PATH); > + node = fdt_node_offset_by_compatible(blob, -1, "jedec,spi-nor"); > if (node < 0) > goto fail; > Viele Grüße, Stefan Roese
diff --git a/board/CZ.NIC/turris_omnia/turris_omnia.c b/board/CZ.NIC/turris_omnia/turris_omnia.c index 108d160f486d..9d7e63865f14 100644 --- a/board/CZ.NIC/turris_omnia/turris_omnia.c +++ b/board/CZ.NIC/turris_omnia/turris_omnia.c @@ -32,8 +32,6 @@ DECLARE_GLOBAL_DATA_PTR; -#define OMNIA_SPI_NOR_PATH "/soc/spi@10600/spi-nor@0" - #define OMNIA_I2C_BUS_NAME "i2c@11000->i2cmux@70->i2c@0" #define OMNIA_I2C_MCU_CHIP_ADDR 0x2a @@ -1030,14 +1028,22 @@ static bool fixup_mtd_partitions(void *blob, int offset, struct mtd_info *mtd) static void fixup_spi_nor_partitions(void *blob) { - struct mtd_info *mtd; + struct mtd_info *mtd = NULL; + char mtd_path[64]; int node; - mtd = get_mtd_device_nm(OMNIA_SPI_NOR_PATH); + node = fdt_node_offset_by_compatible(gd->fdt_blob, -1, "jedec,spi-nor"); + if (node < 0) + goto fail; + + if (fdt_get_path(gd->fdt_blob, node, mtd_path, sizeof(mtd_path)) < 0) + goto fail; + + mtd = get_mtd_device_nm(mtd_path); if (IS_ERR_OR_NULL(mtd)) goto fail; - node = fdt_path_offset(blob, OMNIA_SPI_NOR_PATH); + node = fdt_node_offset_by_compatible(blob, -1, "jedec,spi-nor"); if (node < 0) goto fail;
Linux kernel DTS files renamed spi-nor@0 node to flash@0 which effectively broke U-Boot to boot new Linux kernel versions correctly. So remove hardcoded spi-nor device tree path from Turris Omnia board code and replace it by searching for mtd node by compatible string. Signed-off-by: Pali Rohár <pali@kernel.org> --- board/CZ.NIC/turris_omnia/turris_omnia.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-)