Hi, On Sun, Dec 23, 2012 at 08:58:13PM +0000, Paul Walmsley wrote: > > In this specific case the pin is connected to nCONFIG of a FPGA. The > > FPGA is commanded to start configuration from a SPI flash in the > > bootloader, so it can happen in parallel with kernel > > load/uncompress/startup, but as the kernel resets the gpio during > > initialization this doesn't work. > > > > Digging a bit into it, I see the hwmod of the gpio controller is > > configured to reset at startup, and it works correctly (E.G. the pin is > > left asserted) if I change it to HWMOD_INIT_NO_RESET: > > > > --- a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c > > +++ b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c > > @@ -992,7 +992,7 @@ static struct omap_hwmod am33xx_gpio1_hwmod = { > > .name = "gpio2", > > .class = &am33xx_gpio_hwmod_class, > > .clkdm_name = "l4ls_clkdm", > > - .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET, > > + .flags = (HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET), > > .mpu_irqs = am33xx_gpio1_irqs, > > .main_clk = "l4ls_gclk", > > .prcm = { > > > > Now the question is why is this configured like this? > > This behavior is intended to decouple the kernel from the bootloader, or > previously-booted operating system (e.g., the kexec case). The original > goal was to place the system in an known safe state as soon as possible > after the kernel starts. This is to prevent misconfigured or there is one "issue" with this. At least on AM335x starter kit, GPIO0_7 is used as DDR power pin. If we reset that GPIO bank, DDR looses power and "for obscure reasons" (:-)) the board doesn't boot. In this case, we cannot reset that bank, otherwise Starter Kit will never boot in mainline. Bad PCB design, I know, but it's not something we can change now :-) cheers -- balbi
Attachment:
signature.asc
Description: Digital signature