[U-Boot] [PATCH 3/6] rockchip: evb-rk3328: set uart2 and sdmmc io routing

Simon Glass sjg at chromium.org
Fri Jun 9 12:27:18 UTC 2017


Hi Kever,

On 6 June 2017 at 21:28, Kever Yang <kever.yang at rock-chips.com> wrote:
> Simon,
>
>
>
> On 06/01/2017 11:10 AM, Simon Glass wrote:
>>
>> Hi Kever,
>>
>> On 23 May 2017 at 20:35, Kever Yang <kever.yang at rock-chips.com> wrote:
>>>
>>> Hi Simon,
>>>
>>>
>>>
>>> On 05/20/2017 10:29 AM, Simon Glass wrote:
>>>>
>>>> Hi Kever,
>>>>
>>>> On 16 May 2017 at 21:44, Kever Yang <kever.yang at rock-chips.com> wrote:
>>>>>
>>>>> In rk3328, some function pin may have more than one choice, and muxed
>>>>> with more than one IO, for example, the UART2 controller IO,
>>>>> TX and RX, have 3 choice(setting in com_iomux):
>>>>> - M0 which mux with GPIO1A0/GPIO1A1
>>>>> - M1 which mux with GPIO2A0/GPIO2A1
>>>>> - usb2phy which mux with USB2.0 DP/DM pin.
>>>>>
>>>>> We should set these IO routing in board file.
>>>>>
>>>>> Signed-off-by: Kever Yang <kever.yang at rock-chips.com>
>>>>> ---
>>>>>
>>>>>    board/rockchip/evb_rk3328/evb-rk3328.c | 12 ++++++++++++
>>>>>    1 file changed, 12 insertions(+)
>>>>>
>>>>> diff --git a/board/rockchip/evb_rk3328/evb-rk3328.c
>>>>> b/board/rockchip/evb_rk3328/evb-rk3328.c
>>>>> index a7895cb..d9dc782 100644
>>>>> --- a/board/rockchip/evb_rk3328/evb-rk3328.c
>>>>> +++ b/board/rockchip/evb_rk3328/evb-rk3328.c
>>>>> @@ -5,7 +5,10 @@
>>>>>     */
>>>>>
>>>>>    #include <common.h>
>>>>> +#include <asm/arch/hardware.h>
>>>>> +#include <asm/arch/grf_rk3328.h>
>>>>>    #include <asm/armv8/mmu.h>
>>>>> +#include <asm/io.h>
>>>>>    #include <dwc3-uboot.h>
>>>>>    #include <usb.h>
>>>>>
>>>>> @@ -13,6 +16,15 @@ DECLARE_GLOBAL_DATA_PTR;
>>>>>
>>>>>    int board_init(void)
>>>>>    {
>>>>> +#define GRF_BASE       0xff100000
>>>>> +       struct rk3328_grf_regs * const grf = (void *)GRF_BASE;
>>>>> +
>>>>> +       /* uart2 select m1, sdcard select m1*/
>>>>> +       rk_clrsetreg(&grf->com_iomux,
>>>>> +                    IOMUX_SEL_UART2_MASK | IOMUX_SEL_SDMMC_MASK,
>>>>> +                    IOMUX_SEL_UART2_M1 << IOMUX_SEL_UART2_SHIFT |
>>>>> +                    IOMUX_SEL_SDMMC_M1 << IOMUX_SEL_SDMMC_SHIFT);
>>>>> +
>>>>>           return 0;
>>>>>    }
>>>>
>>>> This needs to be done via a call to some sort of driver. The above
>>>> hack is OK in SPL but not in U-Boot proper.
>>>
>>>
>>> Yes, SPL also needs this. I thinks here should be the right place
>>> before there is a SPL for rk3328.
>>
>> But if you are booting from an SD card, how can you need a mux to
>> select it? Surely the boot ROM must set it up or you would not be able
>> to boot from MMC?
>
>
> If we need to boot from SD card, then we need to follow the boot ROM
> setting,
> and hardware also need to follow it.
> There is another case, the default SD card pin is used for other function in
> hardware,
> then we use the alternative pin mux, we can't boot from SD card in bootrom,
> but we still can use SD card in later stage like U-Boot and kernel.
>

OK, understood, thanks. Can you put it in the pinctrl driver?

- Simon

> Thanks,
> - Kever
>
>>
>> When will there be SPL for rk3328?
>>
>>>>
>>>> See my comments elsewhere about using a misc driver with an IOCTL
>>>> interface to do this sort of thing. Although here I wonder why you
>>>> cannot use pinctrl?
>>>
>>>
>>> This is different from traditional pinctrl, kernel also still not have
>>> final solution on this, see [0], and some people think it should be
>>> done in boot loader.
>>
>> How about putting it in grf syscon driver?
>>
>>>
>>> Thanks,
>>> - Kever
>>> [0]
>>>
>>> http://lists.infradead.org/pipermail/linux-rockchip/2016-August/011209.html
>>>>
>>>>
>>>> Regards,
>>>> Simon
>>>>
>>>
>
>


More information about the U-Boot mailing list