aboutsummaryrefslogtreecommitdiff
path: root/board/dhelectronics
diff options
context:
space:
mode:
authorPhilip Oberfichtner2022-05-20 10:46:26 +0200
committerStefano Babic2022-05-20 12:36:49 +0200
commitbd8df1f7ddd055b254bfd4af56b5c454bf4c3f11 (patch)
tree13fcf38b3bb2d11025a962e1fedb7d0c9c73ebc0 /board/dhelectronics
parentc5a46943a2b8374d620257d11bede5f75db03827 (diff)
ARM: imx6: Adapt device tree selection in DH board file
Before this commit device tree selection could rely solely on differentiating the iMX6 processor variant Q and DL. After adding two new carrier boards, the DRC02 and the picoITX, the interchangeability of SoMs makes this approach infeasible. It is now required to specify the carrier board (dhcom-drc02, dhcom-picoitx or dhcom-pdk2) at compile time using CONFIG_DEFAULT_DEVICETREE. The SoM is determined at runtime as before. Signed-off-by: Philip Oberfichtner <pro@denx.de>
Diffstat (limited to 'board/dhelectronics')
-rw-r--r--board/dhelectronics/dh_imx6/dh_imx6.c31
1 files changed, 25 insertions, 6 deletions
diff --git a/board/dhelectronics/dh_imx6/dh_imx6.c b/board/dhelectronics/dh_imx6/dh_imx6.c
index 6059f96e806..e8aba83e1ab 100644
--- a/board/dhelectronics/dh_imx6/dh_imx6.c
+++ b/board/dhelectronics/dh_imx6/dh_imx6.c
@@ -225,16 +225,35 @@ int checkboard(void)
}
#ifdef CONFIG_MULTI_DTB_FIT
+static int strcmp_prefix(const char *s1, const char *s2)
+{
+ size_t n;
+
+ n = min(strlen(s1), strlen(s2));
+ return strncmp(s1, s2, n);
+}
+
int board_fit_config_name_match(const char *name)
{
- if (is_mx6dq()) {
- if (!strcmp(name, "imx6q-dhcom-pdk2"))
- return 0;
- } else if (is_mx6sdl()) {
- if (!strcmp(name, "imx6dl-dhcom-pdk2"))
+ char *want;
+ char *have;
+
+ /* Test Board suffix, e.g. -dhcom-drc02 */
+ want = strchr(CONFIG_DEFAULT_DEVICE_TREE, '-');
+ have = strchr(name, '-');
+
+ if (!want || !have || strcmp(want, have))
+ return -EINVAL;
+
+ /* Test SoC prefix */
+ if (is_mx6dq() && !strcmp_prefix(name, "imx6q-"))
+ return 0;
+
+ if (is_mx6sdl()) {
+ if (!strcmp_prefix(name, "imx6s-") || !strcmp_prefix(name, "imx6dl-"))
return 0;
}
- return -1;
+ return -EINVAL;
}
#endif