OMAP3: igep00x0: Enable required clocks for GPIO that are used.
authorEnric Balletbo i Serra <eballetbo@gmail.com>
Sat, 25 Jan 2014 21:52:22 +0000 (22:52 +0100)
committerTom Rini <trini@ti.com>
Thu, 6 Mar 2014 16:21:37 +0000 (11:21 -0500)
commitdd1e8583ee533a349c03ed4d75446898fe8dbac6
treedd14fcfb0ee38e844acd3d2de123ebd8a9a39bcc
parent4b75fd510076f2261c5e21b9b8cf75c9f01ded3c
OMAP3: igep00x0: Enable required clocks for GPIO that are used.

Enable required clocks for GPIO to fix a boot issue introduced by commit
f33b9bd3984fb11e1d8566a866adc5957b1e1c9d (arm: omap3: Enable clocks for
peripherals only if they are used).

Without this patch the u-boot freezes after the following messages

  OMAP36XX/37XX-GP ES1.2, CPU-OPP2, L3-200MHz, Max CPU Clock 1 Ghz
  IGEPv2 + LPDDR/NAND
  I2C:   ready
  DRAM:  512 MiB
  NAND:  512 MiB
  MMC:   OMAP SD/MMC: 0

Diving into the issue, the sequence that produces the u-boot freezes is

  setup_net_chip
   |--> gpio_direction_out
         |--> _set_gpio_dataout
               |--> __raw_writel

To avoid this we just need enable the clocks for GPIOs that are used, but it
would be interesting implement a mechanism to protect these situations and
make sure that the clock is enabled when we request a GPIO.

Signed-off-by: Enric Balletbo i Serra <eballetbo@gmail.com>
include/configs/omap3_igep00x0.h