[U-Boot] [PATCH] tegra20: tamonten: Fix the early gpio init

Stephen Warren swarren at wwwdotorg.org
Thu Oct 2 20:39:00 CEST 2014


On 10/02/2014 10:12 AM, Alban Bedel wrote:
> On Thu, 02 Oct 2014 09:42:18 -0600
> Stephen Warren <swarren at wwwdotorg.org> wrote:
>
>> On 10/02/2014 09:14 AM, Alban Bedel wrote:
>>> To set gpio during the early init we now need to use
>>> tegra_spl_gpio_direction_output(), copied from seaboard.
>>>
>>> Change-Id: Id0aadb17a71b78e75e8c3f8de374102b3eab767b
>>
>> That shouldn't be present on upstream patches.
>
> Sorry about this.
>
>>> Signed-off-by: Alban Bedel <alban.bedel at avionic-design.de>
>>> ---
>>>    board/avionic-design/common/tamonten.c | 4 +++-
>>>    1 file changed, 3 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/board/avionic-design/common/tamonten.c b/board/avionic-design/common/tamonten.c
>>> index 9c86779..ea2425a 100644
>>> --- a/board/avionic-design/common/tamonten.c
>>> +++ b/board/avionic-design/common/tamonten.c
>>> @@ -23,8 +23,10 @@
>>>    #ifdef CONFIG_BOARD_EARLY_INIT_F
>>>    void gpio_early_init(void)
>>>    {
>>> +#ifndef CONFIG_SPL_BUILD
>>>    	gpio_request(GPIO_PI4, NULL);
>>> -	gpio_direction_output(GPIO_PI4, 1);
>>> +#endif
>>> +	tegra_spl_gpio_direction_output(GPIO_PI4, 1);
>>>    }
>>
>> Surely you only want to call tegra_spl_*() from SPL, and not from
>> non-SPL code? In other words, don't you need something more like:
>>
>> #ifdef CONFIG_SPL_BUILD
>> 	tegra_spl_gpio_direction_output(GPIO_PI4, 1);
>> #else
>> 	gpio_request(GPIO_PI4, NULL);
>> 	gpio_direction_output(GPIO_PI4, 1);
>> #endif
>
> Sadly not, at this point the gpio driver isn't available yet, that's
> why one need to use tegra_spl_gpio_direction_output(). As mentioned in
> the commit log I copied this from seaboard, assuming it would be
> correct.
>
> AFAICT the gpio_request() could be removed too, it doesn't work at this
> point anyway.

Hmm. CC Simon to comment on which GPIO drivers are available in 
SPL/non-SPL, and why the above ifdef doesn't work.

>> ... although perhaps the SPL and non-SPL code should simply be separated
>> into separate files, so that there's no need for ifdefs, and it's
>> obvious if SPL and non-SPL code are duplicating the same work?
>
> Actually none of the code from tamonten.c is needed for the SPL, a
> build with both function under #ifndef CONFIG_SPL_BUILD works just fine.

Indeed, if manipulating the GPIO in SPL isn't even necessary, then just 
wrapping the whole code in #ifndef CONFIG_SPL_BUILD makes sense to me.

> Any pointer on how I can get tamonten.c out of the SPL build?

I'm not sure now that the Makefile structure has changed to Kbuild. It 
might be as simple as:

obj-$(CONFIG_SPL_BUILD) += foo.o

(but using whatever the opposite of CONFIG_SPL_BUILD is.


More information about the U-Boot mailing list