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

Kever Yang kever.yang at rock-chips.com
Wed May 24 02:35:04 UTC 2017


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


Thanks,
- Kever
[0] 
http://lists.infradead.org/pipermail/linux-rockchip/2016-August/011209.html
>
> Regards,
> Simon
>




More information about the U-Boot mailing list