diff mbox

[U-Boot] detect and setup solidrun hummingboard2

Message ID 20170824153412.24086-1-dennis@ausil.us
State Not Applicable
Delegated to: Stefano Babic
Headers show

Commit Message

Dennis Gilmore Aug. 24, 2017, 3:34 p.m. UTC
The hummingboard2 is slightly different to the cubox i and to the
hummingboard. The GPIO pin info to probe came from solidruns
for of u-boot on github.
https://github.com/SolidRun/u-boot-imx6/blob/imx6/board/solidrun/mx6_cubox-i/mx6_cubox-i.c#L569-L589
I have tested on a hummingboard-edge witha  imx6 solo and 512mb of
ram.

Signed-off-by: Dennis Gilmore <dgilmore@redhat.com>
---
 board/solidrun/mx6cuboxi/mx6cuboxi.c | 33 ++++++++++++++++++++++++++++++++-
 include/configs/mx6cuboxi.h          |  4 ++++
 2 files changed, 36 insertions(+), 1 deletion(-)

Comments

Fabio Estevam Aug. 24, 2017, 3:45 p.m. UTC | #1
Hi Dennis,

On Thu, Aug 24, 2017 at 12:34 PM, Dennis Gilmore <dennis@ausil.us> wrote:

>         "findfdt="\
> +               "if test $board_name = HUMMINGBOARD2 && test $board_rev = MX6Q ; then " \
> +                       "setenv fdtfile imx6q-hummingboard2.dtb; fi; " \
> +               "if test $board_name = HUMMINGBOARD2 && test $board_rev = MX6DL ; then " \
> +                       "setenv fdtfile imx6dl-hummingboard2.dtb; fi; " \

Patch looks good, but I do not see any hummingboard2 device tree in
the mainline kernel.

Is there anyone working on sending them upstream?

Thanks
Fabio Estevam Aug. 24, 2017, 3:55 p.m. UTC | #2
On Thu, Aug 24, 2017 at 12:34 PM, Dennis Gilmore <dennis@ausil.us> wrote:

> +static bool is_hummingboard2(void)
> +{
> +       int val1;
> +
> +       SETUP_IOMUX_PADS(hb_cbi_sense);

hb_cbi_sense configures pins GPIO4_9 and GPIO3_4, which are used for
the previous version of the board and not GPIO2_8, which is used to
detect Hummingboard2.

Even though GPIO2_8 comes up as GPIO by default, it would be better to
explicitly configure GPIO2_8 as GPIO inside this function.
Dennis Gilmore Aug. 24, 2017, 5:05 p.m. UTC | #3
El jue, 24-08-2017 a las 12:45 -0300, Fabio Estevam escribió:
> Hi Dennis,
> 
> On Thu, Aug 24, 2017 at 12:34 PM, Dennis Gilmore <dennis@ausil.us>
> wrote:
> 
> >         "findfdt="\
> > +               "if test $board_name = HUMMINGBOARD2 && test
> > $board_rev = MX6Q ; then " \
> > +                       "setenv fdtfile imx6q-hummingboard2.dtb;
> > fi; " \
> > +               "if test $board_name = HUMMINGBOARD2 && test
> > $board_rev = MX6DL ; then " \
> > +                       "setenv fdtfile imx6dl-hummingboard2.dtb;
> > fi; " \
> 
> Patch looks good, but I do not see any hummingboard2 device tree in
> the mainline kernel.
> 
> Is there anyone working on sending them upstream?

https://patchwork.kernel.org/patch/9515739/ is the patch fedora is
carrying that has the dtb files. Hopefully Jon can provide some info on
current status to upstream it

Dennis
Peter Robinson Aug. 24, 2017, 9:40 p.m. UTC | #4
On Thu, Aug 24, 2017 at 4:45 PM, Fabio Estevam <festevam@gmail.com> wrote:
> Hi Dennis,
>
> On Thu, Aug 24, 2017 at 12:34 PM, Dennis Gilmore <dennis@ausil.us> wrote:
>
>>         "findfdt="\
>> +               "if test $board_name = HUMMINGBOARD2 && test $board_rev = MX6Q ; then " \
>> +                       "setenv fdtfile imx6q-hummingboard2.dtb; fi; " \
>> +               "if test $board_name = HUMMINGBOARD2 && test $board_rev = MX6DL ; then " \
>> +                       "setenv fdtfile imx6dl-hummingboard2.dtb; fi; " \
>
> Patch looks good, but I do not see any hummingboard2 device tree in
> the mainline kernel.
>
> Is there anyone working on sending them upstream?

RMK posted a RFC [1] but I've not seen then go anywhere and I didn't
get a response from him when I emailed him but I'm not sure that's
unusual.

Peter

[1] https://www.spinics.net/lists/arm-kernel/msg554183.html
diff mbox

Patch

diff --git a/board/solidrun/mx6cuboxi/mx6cuboxi.c b/board/solidrun/mx6cuboxi/mx6cuboxi.c
index 7e59fb259e..43a7a52978 100644
--- a/board/solidrun/mx6cuboxi/mx6cuboxi.c
+++ b/board/solidrun/mx6cuboxi/mx6cuboxi.c
@@ -349,6 +349,7 @@  static bool is_hummingboard(void)
 	 * Machine selection -
 	 * Machine        val1, val2
 	 * -------------------------
+	 * HB2            x     x
 	 * HB rev 3.x     x     0
 	 * CBi            0     1
 	 * HB             1     1
@@ -362,9 +363,37 @@  static bool is_hummingboard(void)
 		return true;
 }
 
+static bool is_hummingboard2(void)
+{
+	int val1;
+
+	SETUP_IOMUX_PADS(hb_cbi_sense);
+
+	gpio_direction_input(IMX_GPIO_NR(2, 8));
+
+        val1 = gpio_get_value(IMX_GPIO_NR(2, 8));
+
+	/*
+	 * Machine selection -
+	 * Machine        val1
+	 * -------------------
+	 * HB2            0
+	 * HB rev 3.x     x
+	 * CBi            x
+	 * HB             x
+	 */
+
+	if (val1 == 0)
+		return true;
+	else
+		return false;
+}
+
 int checkboard(void)
 {
-	if (is_hummingboard())
+	if (is_hummingboard2())
+		puts("Board: MX6 Hummingboard2\n");
+	else if (is_hummingboard())
 		puts("Board: MX6 Hummingboard\n");
 	else
 		puts("Board: MX6 Cubox-i\n");
@@ -376,6 +405,8 @@  int board_late_init(void)
 {
 #ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
 	if (is_hummingboard())
+		env_set("board_name", "HUMMINGBOARD2");
+	else if (is_hummingboard())
 		env_set("board_name", "HUMMINGBOARD");
 	else
 		env_set("board_name", "CUBOXI");
diff --git a/include/configs/mx6cuboxi.h b/include/configs/mx6cuboxi.h
index 5930f591cb..ce9b5469ee 100644
--- a/include/configs/mx6cuboxi.h
+++ b/include/configs/mx6cuboxi.h
@@ -108,6 +108,10 @@ 
 			"fi; "	\
 		"fi\0" \
 	"findfdt="\
+		"if test $board_name = HUMMINGBOARD2 && test $board_rev = MX6Q ; then " \
+			"setenv fdtfile imx6q-hummingboard2.dtb; fi; " \
+		"if test $board_name = HUMMINGBOARD2 && test $board_rev = MX6DL ; then " \
+			"setenv fdtfile imx6dl-hummingboard2.dtb; fi; " \
 		"if test $board_name = HUMMINGBOARD && test $board_rev = MX6Q ; then " \
 			"setenv fdtfile imx6q-hummingboard.dtb; fi; " \
 		"if test $board_name = HUMMINGBOARD && test $board_rev = MX6DL ; then " \