<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jul 30, 2019 at 9:29 PM Gedare Bloom <<a href="mailto:gedare@rtems.org">gedare@rtems.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Tue, Jul 30, 2019 at 12:40 AM Christian Mauderer<br>
<<a href="mailto:christian.mauderer@embedded-brains.de" target="_blank">christian.mauderer@embedded-brains.de</a>> wrote:<br>
><br>
> On 29/07/2019 22:11, Gedare Bloom wrote:<br>
> > We had a GSoC project about GPIO API implemented for RPi.<br>
> ><br>
> > <a href="https://devel.rtems.org/wiki/GSoC/2013/Raspberry_Pi_BSP_Peripherals" rel="noreferrer" target="_blank">https://devel.rtems.org/wiki/GSoC/2013/Raspberry_Pi_BSP_Peripherals</a><br>
><br>
> Hello Gedare,<br>
><br>
> thanks for the hint. It seems that someone used at least the<br>
> <bsp/gpio.h> for BBB too (in bsps/arm/beagle/gpio/bbb-gpio.c). But it<br>
> seems that RPi and BBB are the only BSPs using the API.<br>
><br>
> So it would be necessary to find out in what state the API is (is it<br>
> general enough to theoretically support every BSP; is the support in BBB<br>
> in a usable state) and if yes it would be worth to implement a fdt GPIO<br>
> initialization based on that API.<br>
><br>
> I'll try to take a look at that in the next few days (most likely more<br>
> toward the weekend). Depending on the amount of work, it could be worth<br>
> to just implement it or put it in a future GSoC project.<br>
><br>
I'm sure it could be expanded to a full project by trying to<br>
generalize it, and by mapping for example the arduino wiring APIs over<br>
it.<br>
<br><br></blockquote><div>Hi,</div><div>I came up with a hack to allow the pinmuxing of only the HDMI pins. This can be</div><div>used as a hack for the drivers until we have a clean permanent solution.</div><div><br></div><div>I wrote an overlay to add a field "rtems-pinctrl-0" in the device tree and parsed this</div><div>property from the fdt_pinctrl file, instead of the default property name. This enables</div><div>the initialization of only the tda pins. I have tested this with my sample app and it </div><div>works properly with the screen. <br><br></div><div>the device tree overlay: <a href="https://gist.github.com/thelunatic/dd274cb423ea6d3bfbf4c6b06496126c">https://gist.github.com/thelunatic/dd274cb423ea6d3bfbf4c6b06496126c</a> </div><div><br></div><div>The diff:</div><div>```</div><div>diff --git a/freebsd/sys/dev/fdt/fdt_pinctrl.c b/freebsd/sys/dev/fdt/fdt_pinctrl.c</div>index c2e0c612..515325aa 100644<br>--- a/freebsd/sys/dev/fdt/fdt_pinctrl.c<br>+++ b/freebsd/sys/dev/fdt/fdt_pinctrl.c<br>@@ -131,8 +131,13 @@ pinctrl_configure_children(device_t pinctrl, phandle_t parent)<br>                if (!ofw_bus_node_status_okay(node))<br>                         continue;<br>            pinctrl_configure_children(pinctrl, node);<br>+#ifdef __rtems__<br>+                nconfigs = OF_getencprop_alloc_multi(node, "rtems-pinctrl-0",<br>+                  sizeof(*configs), (void **)&configs);<br>+#else<br>              nconfigs = OF_getencprop_alloc_multi(node, "pinctrl-0",<br>                sizeof(*configs), (void **)&configs);<br>+#endif /* __rtems__ */<br>             if (nconfigs <= 0)<br>                        continue;<br>            if (bootverbose) {<br><div><br></div><div>```</div></div></div>