[PATCH 1/5] wandboard: Fix detection for mx6q/mx6dl revD1 revariants

The detection of the revD1 version is based on the presence of the PMIC.
Currently revb1 device trees are used for mx6q/mx6dl variants, which do not have the PMIC nodes.
This causes revD1 boards to be incorrectly be detected as revB1.
Use the revd1 device trees, so that the PMIC node can be found and then the PMIC can be detected by reading its register ID.
Reported-by: Heiko Schocher hs@denx.de Reported-by: Derek Atkins derek@ihtfp.com Signed-off-by: Fabio Estevam festevam@gmail.com --- Hi Heiko,
Could you please try this on your mx6dl wandboard revD1 board?
I recall you reported this issue sometime ago.
Derek tested this on his mx6q wandboard revD1 board and it worked fine.
I have also tested it on a revB1 and the version is properly detected.
Thanks
arch/arm/dts/Makefile | 4 ++-- ...{imx6dl-wandboard-revb1.dts => imx6dl-wandboard-revd1.dts} | 4 ++-- .../{imx6q-wandboard-revb1.dts => imx6q-wandboard-revd1.dts} | 4 ++-- configs/wandboard_defconfig | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) rename arch/arm/dts/{imx6dl-wandboard-revb1.dts => imx6dl-wandboard-revd1.dts} (78%) rename arch/arm/dts/{imx6q-wandboard-revb1.dts => imx6q-wandboard-revd1.dts} (80%)
diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile index 820ee9733a..2a71917c92 100644 --- a/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile @@ -622,7 +622,7 @@ dtb-y += \ imx6dl-pico.dtb \ imx6dl-sabreauto.dtb \ imx6dl-sabresd.dtb \ - imx6dl-wandboard-revb1.dtb \ + imx6dl-wandboard-revd1.dtb \
endif
@@ -654,7 +654,7 @@ dtb-y += \ imx6q-sabrelite.dtb \ imx6q-sabresd.dtb \ imx6q-tbs2910.dtb \ - imx6q-wandboard-revb1.dtb \ + imx6q-wandboard-revd1.dtb \ imx6qp-sabreauto.dtb \ imx6qp-sabresd.dtb \ imx6qp-wandboard-revd1.dtb \ diff --git a/arch/arm/dts/imx6dl-wandboard-revb1.dts b/arch/arm/dts/imx6dl-wandboard-revd1.dts similarity index 78% rename from arch/arm/dts/imx6dl-wandboard-revb1.dts rename to arch/arm/dts/imx6dl-wandboard-revd1.dts index c2946fbaa0..6d1d863c2e 100644 --- a/arch/arm/dts/imx6dl-wandboard-revb1.dts +++ b/arch/arm/dts/imx6dl-wandboard-revd1.dts @@ -6,10 +6,10 @@ */ /dts-v1/; #include "imx6dl.dtsi" -#include "imx6qdl-wandboard-revb1.dtsi" +#include "imx6qdl-wandboard-revd1.dtsi"
/ { - model = "Wandboard i.MX6 Dual Lite Board rev B1"; + model = "Wandboard i.MX6 Dual Lite Board revD1"; compatible = "wand,imx6dl-wandboard", "fsl,imx6dl";
memory@10000000 { diff --git a/arch/arm/dts/imx6q-wandboard-revb1.dts b/arch/arm/dts/imx6q-wandboard-revd1.dts similarity index 80% rename from arch/arm/dts/imx6q-wandboard-revb1.dts rename to arch/arm/dts/imx6q-wandboard-revd1.dts index f6ccbecff9..55331021d8 100644 --- a/arch/arm/dts/imx6q-wandboard-revb1.dts +++ b/arch/arm/dts/imx6q-wandboard-revd1.dts @@ -6,10 +6,10 @@ */ /dts-v1/; #include "imx6q.dtsi" -#include "imx6qdl-wandboard-revb1.dtsi" +#include "imx6qdl-wandboard-revd1.dtsi"
/ { - model = "Wandboard i.MX6 Quad Board rev B1"; + model = "Wandboard i.MX6 Quad Board revD1"; compatible = "wand,imx6q-wandboard", "fsl,imx6q";
memory@10000000 { diff --git a/configs/wandboard_defconfig b/configs/wandboard_defconfig index 82e517b90f..ee70758f3a 100644 --- a/configs/wandboard_defconfig +++ b/configs/wandboard_defconfig @@ -46,8 +46,8 @@ CONFIG_CMD_BMP=y CONFIG_CMD_CACHE=y CONFIG_CMD_EXT4_WRITE=y CONFIG_OF_CONTROL=y -CONFIG_DEFAULT_DEVICE_TREE="imx6dl-wandboard-revb1" -CONFIG_OF_LIST="imx6q-wandboard-revb1 imx6qp-wandboard-revd1 imx6dl-wandboard-revb1" +CONFIG_DEFAULT_DEVICE_TREE="imx6dl-wandboard-revd1" +CONFIG_OF_LIST="imx6q-wandboard-revd1 imx6qp-wandboard-revd1 imx6dl-wandboard-revd1" CONFIG_MULTI_DTB_FIT=y CONFIG_ENV_IS_IN_MMC=y CONFIG_SYS_RELOC_GD_ENV_ADDR=y

On systems that can run on multiple board variants, such as wandboard, which versions with and without the PMIC populated, it is not useful to get PMIC error on systems that do not have the PMIC populated.
Change error message level to debug instead.
Signed-off-by: Fabio Estevam festevam@gmail.com --- drivers/power/pmic/pfuze100.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/power/pmic/pfuze100.c b/drivers/power/pmic/pfuze100.c index 6cf5f35f0f..db630f3ad0 100644 --- a/drivers/power/pmic/pfuze100.c +++ b/drivers/power/pmic/pfuze100.c @@ -41,7 +41,7 @@ static int pfuze100_write(struct udevice *dev, uint reg, const uint8_t *buff, static int pfuze100_read(struct udevice *dev, uint reg, uint8_t *buff, int len) { if (dm_i2c_read(dev, reg, buff, len)) { - pr_err("read error from device: %p register: %#x!\n", dev, reg); + debug("read error from device: %p register: %#x!\n", dev, reg); return -EIO; }

After the conversion to DM_PMIC the following output is seen:
PMIC: PMIC: PFUZE100 ID=0x10
Remove the unnecessary PMIC string from the board file to avoid the repetead string.
Signed-off-by: Fabio Estevam festevam@gmail.com --- Changes since v2: - None
board/wandboard/wandboard.c | 2 -- 1 file changed, 2 deletions(-)
diff --git a/board/wandboard/wandboard.c b/board/wandboard/wandboard.c index 7209cc8211..e386ad2cc1 100644 --- a/board/wandboard/wandboard.c +++ b/board/wandboard/wandboard.c @@ -361,8 +361,6 @@ int power_init_board(void) struct udevice *dev; int reg, ret;
- puts("PMIC: "); - ret = pmic_get("pfuze100@8", &dev); if (ret < 0) { printf("pmic_get() ret %d\n", ret);

Since we are using revD1 device tree for all board revisions, the following can be seen on a revB1 board:
Model: Wandboard i.MX6 Quad Board revD1 Board: Wandboard rev B1
To avoid such confusing messages, disable CONFIG_DISPLAY_BOARDINFO_LATE.
Signed-off-by: Fabio Estevam festevam@gmail.com --- configs/wandboard_defconfig | 1 - 1 file changed, 1 deletion(-)
diff --git a/configs/wandboard_defconfig b/configs/wandboard_defconfig index ee70758f3a..f9a5fe479b 100644 --- a/configs/wandboard_defconfig +++ b/configs/wandboard_defconfig @@ -29,7 +29,6 @@ CONFIG_BOOTCOMMAND="run findfdt; run finduuid; run distro_bootcmd" CONFIG_SYS_CONSOLE_IS_IN_ENV=y CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y # CONFIG_DISPLAY_BOARDINFO is not set -CONFIG_DISPLAY_BOARDINFO_LATE=y CONFIG_BOUNCE_BUFFER=y CONFIG_BOARD_EARLY_INIT_F=y CONFIG_SPL_SEPARATE_BSS=y

Since the variant revision is no longer show, simply get rid of checkboard().
Move the gpio_request() prior to its usage.
Signed-off-by: Fabio Estevam festevam@gmail.com --- board/wandboard/wandboard.c | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-)
diff --git a/board/wandboard/wandboard.c b/board/wandboard/wandboard.c index df454d8f17..bb1ffd87e1 100644 --- a/board/wandboard/wandboard.c +++ b/board/wandboard/wandboard.c @@ -404,6 +404,7 @@ static const struct boot_mode board_boot_modes[] = { static bool is_revc1(void) { SETUP_IOMUX_PADS(rev_detection_pad); + gpio_request(REV_DETECTION, "REV_DETECT"); gpio_direction_input(REV_DETECTION);
if (gpio_get_value(REV_DETECTION)) @@ -466,20 +467,6 @@ int board_init(void) return 0; }
-int checkboard(void) -{ - gpio_request(REV_DETECTION, "REV_DETECT"); - - if (is_revd1()) - puts("Board: Wandboard rev D1\n"); - else if (is_revc1()) - puts("Board: Wandboard rev C1\n"); - else - puts("Board: Wandboard rev B1\n"); - - return 0; -} - #ifdef CONFIG_SPL_LOAD_FIT int board_fit_config_name_match(const char *name) {

Sorry for sending this twice.
The first submission had the wrong patch 3/5.
On Thu, Apr 16, 2020 at 9:10 PM Fabio Estevam festevam@gmail.com wrote:
The detection of the revD1 version is based on the presence of the PMIC.
Currently revb1 device trees are used for mx6q/mx6dl variants, which do not have the PMIC nodes.
This causes revD1 boards to be incorrectly be detected as revB1.
Use the revd1 device trees, so that the PMIC node can be found and then the PMIC can be detected by reading its register ID.
Reported-by: Heiko Schocher hs@denx.de Reported-by: Derek Atkins derek@ihtfp.com Signed-off-by: Fabio Estevam festevam@gmail.com
Hi Heiko,
Could you please try this on your mx6dl wandboard revD1 board?
I recall you reported this issue sometime ago.
Derek tested this on his mx6q wandboard revD1 board and it worked fine.
I have also tested it on a revB1 and the version is properly detected.
Thanks
arch/arm/dts/Makefile | 4 ++-- ...{imx6dl-wandboard-revb1.dts => imx6dl-wandboard-revd1.dts} | 4 ++-- .../{imx6q-wandboard-revb1.dts => imx6q-wandboard-revd1.dts} | 4 ++-- configs/wandboard_defconfig | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) rename arch/arm/dts/{imx6dl-wandboard-revb1.dts => imx6dl-wandboard-revd1.dts} (78%) rename arch/arm/dts/{imx6q-wandboard-revb1.dts => imx6q-wandboard-revd1.dts} (80%)
diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile index 820ee9733a..2a71917c92 100644 --- a/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile @@ -622,7 +622,7 @@ dtb-y += \ imx6dl-pico.dtb \ imx6dl-sabreauto.dtb \ imx6dl-sabresd.dtb \
imx6dl-wandboard-revb1.dtb \
imx6dl-wandboard-revd1.dtb \
endif
@@ -654,7 +654,7 @@ dtb-y += \ imx6q-sabrelite.dtb \ imx6q-sabresd.dtb \ imx6q-tbs2910.dtb \
imx6q-wandboard-revb1.dtb \
imx6q-wandboard-revd1.dtb \ imx6qp-sabreauto.dtb \ imx6qp-sabresd.dtb \ imx6qp-wandboard-revd1.dtb \
diff --git a/arch/arm/dts/imx6dl-wandboard-revb1.dts b/arch/arm/dts/imx6dl-wandboard-revd1.dts similarity index 78% rename from arch/arm/dts/imx6dl-wandboard-revb1.dts rename to arch/arm/dts/imx6dl-wandboard-revd1.dts index c2946fbaa0..6d1d863c2e 100644 --- a/arch/arm/dts/imx6dl-wandboard-revb1.dts +++ b/arch/arm/dts/imx6dl-wandboard-revd1.dts @@ -6,10 +6,10 @@ */ /dts-v1/; #include "imx6dl.dtsi" -#include "imx6qdl-wandboard-revb1.dtsi" +#include "imx6qdl-wandboard-revd1.dtsi"
/ {
model = "Wandboard i.MX6 Dual Lite Board rev B1";
model = "Wandboard i.MX6 Dual Lite Board revD1"; compatible = "wand,imx6dl-wandboard", "fsl,imx6dl"; memory@10000000 {
diff --git a/arch/arm/dts/imx6q-wandboard-revb1.dts b/arch/arm/dts/imx6q-wandboard-revd1.dts similarity index 80% rename from arch/arm/dts/imx6q-wandboard-revb1.dts rename to arch/arm/dts/imx6q-wandboard-revd1.dts index f6ccbecff9..55331021d8 100644 --- a/arch/arm/dts/imx6q-wandboard-revb1.dts +++ b/arch/arm/dts/imx6q-wandboard-revd1.dts @@ -6,10 +6,10 @@ */ /dts-v1/; #include "imx6q.dtsi" -#include "imx6qdl-wandboard-revb1.dtsi" +#include "imx6qdl-wandboard-revd1.dtsi"
/ {
model = "Wandboard i.MX6 Quad Board rev B1";
model = "Wandboard i.MX6 Quad Board revD1"; compatible = "wand,imx6q-wandboard", "fsl,imx6q"; memory@10000000 {
diff --git a/configs/wandboard_defconfig b/configs/wandboard_defconfig index 82e517b90f..ee70758f3a 100644 --- a/configs/wandboard_defconfig +++ b/configs/wandboard_defconfig @@ -46,8 +46,8 @@ CONFIG_CMD_BMP=y CONFIG_CMD_CACHE=y CONFIG_CMD_EXT4_WRITE=y CONFIG_OF_CONTROL=y -CONFIG_DEFAULT_DEVICE_TREE="imx6dl-wandboard-revb1" -CONFIG_OF_LIST="imx6q-wandboard-revb1 imx6qp-wandboard-revd1 imx6dl-wandboard-revb1" +CONFIG_DEFAULT_DEVICE_TREE="imx6dl-wandboard-revd1" +CONFIG_OF_LIST="imx6q-wandboard-revd1 imx6qp-wandboard-revd1 imx6dl-wandboard-revd1" CONFIG_MULTI_DTB_FIT=y CONFIG_ENV_IS_IN_MMC=y CONFIG_SYS_RELOC_GD_ENV_ADDR=y -- 2.17.1
participants (1)
-
Fabio Estevam