Earliest possible GPIO toggle on i.mx6

Lucas Stach l.stach at pengutronix.de
Wed Jul 5 05:51:37 PDT 2017


Am Mittwoch, den 05.07.2017, 12:41 +0000 schrieb Mayur Nande:
> Hello all,
> 
> I have a question regarding the earliest possible GPIO toggle with
> barebox on imx6. We use boards with imx6 quad core processor (from
> Phytec). In our hardware design we have a push button controller which
> has a "KILL" pin attached to one of the GPIO pins on i.mx6. The
> requirement is that this pin should be set to 1 within 400 ms of power
> on. I tried setting this at various places in barebox with incremental
> improvements starting from the init script, board.c, lowlevel.c and
> then DCD/lowlevel.c combination. 
> 
> The best performance I got was by setting the iomux registers
> (IOMUXC_SW_MUX_CTL_PAD and IOMUXC_SW_PAD_CTL_PAD) in DCD and the GPIO
> direction and value registers in lowlevel.c (since GPIO controller
> registers are not accessible with DCD). Even with this, I get the GPIO
> set in around 460-475ms at the best. I understand that some of the
> time here is used by the hardware for voltage regulation/crystal
> stabilization which probably we can't do anything about.

If lowlevel.c is too late already, the only chance to make this work is
setting the DCD padctl to configure a pull-up/down to satisfy the KILL
pin. Then in the board file set up the GPIO and switch the padctl to
neutral state.

Still 400ms sound like a awfully long time to reach lowlevel init. What
is your boot source, i.e. where is the barebox binary stored?

Regards,
Lucas




More information about the barebox mailing list