[U-Boot] OMAP3 Beagle Pin Mux initialization issue

Bob Feretich bob.feretich at prodigy.net
Tue Feb 22 02:51:36 CET 2011


The BeagleBoard beagle.c file contains:
  242         /* Configure GPIOs to output */
  243         writel(~(GPIO23 | GPIO10 | GPIO8 | GPIO2 | GPIO1), 
&gpio6_base->oe);
  244         writel(~(GPIO31 | GPIO30 | GPIO29 | GPIO28 | GPIO22 | GPIO21 |
  245                 GPIO15 | GPIO14 | GPIO13 | GPIO12), &gpio5_base->oe);
  246
  247         /* Set GPIOs */
  248         writel(GPIO23 | GPIO10 | GPIO8 | GPIO2 | GPIO1,
  249 &gpio6_base->setdataout);
  250         writel(GPIO31 | GPIO30 | GPIO29 | GPIO28 | GPIO22 | GPIO21 |
  251                 GPIO15 | GPIO14 | GPIO13 | GPIO12, 
&gpio5_base->setdataout);

It first sets some pins as outputs and then initializes their values. 
This can cause narrow glitches on the output pins.

To prevent the glitches the order should be reversed. First Set the 
GPIOs, then Configure them as outputs.

Also, I have observed the discussion regarding moving Pin Mux control to 
the kernel. This is fine except for pins that need to be configured ASAP 
after power-on. (The system could sit at the u-boot command prompt 
indefinitely, so the kernel pin mux configuration can be significantly 
delayed.). Please leave the hook so that u-boot customizers can 
configure their critical pins muxes.

Regards,
Bob Feretich





More information about the U-Boot mailing list