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

Simon Glass sjg at chromium.org
Thu Oct 2 21:09:03 CEST 2014


Hi Stephen,

On 2 October 2014 12:39, Stephen Warren <swarren at wwwdotorg.org> wrote:
> 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.

See my previous reply.

>
>>> ... 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.

I think this will drop the message. But I should have mentioned in my
other reply that we don't really need to call gpio_early_init_uart()
from board_early_init_f() if we are already calling it from
spl_board_init(). Separate issue to this patch of course.

>
>
> 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.

Regards,
Simon


More information about the U-Boot mailing list