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

2017-06-09 Thread Simon Glass
Hi Kever,

On 6 June 2017 at 21:28, Kever Yang  wrote:
> Simon,
>
>
>
> On 06/01/2017 11:10 AM, Simon Glass wrote:
>>
>> Hi Kever,
>>
>> On 23 May 2017 at 20:35, Kever Yang  wrote:
>>>
>>> Hi Simon,
>>>
>>>
>>>
>>> On 05/20/2017 10:29 AM, Simon Glass wrote:

 Hi Kever,

 On 16 May 2017 at 21:44, Kever Yang  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 
> ---
>
>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 
> +#include 
> +#include 
>#include 
> +#include 
>#include 
>#include 
>
> @@ -13,6 +16,15 @@ DECLARE_GLOBAL_DATA_PTR;
>
>int board_init(void)
>{
> +#define GRF_BASE   0xff10
> +   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

>>>
>
>
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


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

2017-06-06 Thread Kever Yang

Simon,


On 06/01/2017 11:10 AM, Simon Glass wrote:

Hi Kever,

On 23 May 2017 at 20:35, Kever Yang  wrote:

Hi Simon,



On 05/20/2017 10:29 AM, Simon Glass wrote:

Hi Kever,

On 16 May 2017 at 21:44, Kever Yang  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 
---

   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 
+#include 
+#include 
   #include 
+#include 
   #include 
   #include 

@@ -13,6 +16,15 @@ DECLARE_GLOBAL_DATA_PTR;

   int board_init(void)
   {
+#define GRF_BASE   0xff10
+   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.

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






___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


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

2017-05-31 Thread Simon Glass
Hi Kever,

On 23 May 2017 at 20:35, Kever Yang  wrote:
> Hi Simon,
>
>
>
> On 05/20/2017 10:29 AM, Simon Glass wrote:
>>
>> Hi Kever,
>>
>> On 16 May 2017 at 21:44, Kever Yang  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 
>>> ---
>>>
>>>   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 
>>> +#include 
>>> +#include 
>>>   #include 
>>> +#include 
>>>   #include 
>>>   #include 
>>>
>>> @@ -13,6 +16,15 @@ DECLARE_GLOBAL_DATA_PTR;
>>>
>>>   int board_init(void)
>>>   {
>>> +#define GRF_BASE   0xff10
>>> +   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?

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
>>
>
>
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


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

2017-05-26 Thread Heiko Stuebner
Hi Kever,

Am Mittwoch, 24. Mai 2017, 10:35:04 CEST schrieb Kever Yang:
> On 05/20/2017 10:29 AM, Simon Glass wrote:
> > On 16 May 2017 at 21:44, Kever Yang  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 
> >> ---
> >>
> >>   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 
> >> +#include 
> >> +#include 
> >>   #include 
> >> +#include 
> >>   #include 
> >>   #include 
> >>
> >> @@ -13,6 +16,15 @@ DECLARE_GLOBAL_DATA_PTR;
> >>
> >>   int board_init(void)
> >>   {
> >> +#define GRF_BASE   0xff10
> >> +   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.

Just to point out that thanks to David Wu we now have a solution [1]
on the kernel side I'm pretty happy with - as part of the pinctrl driver.


Heiko


> [0] 
> http://lists.infradead.org/pipermail/linux-rockchip/2016-August/011209.html

[1] https://www.spinics.net/lists/kernel/msg2517794.html

___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


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

2017-05-23 Thread Kever Yang

Hi Simon,


On 05/20/2017 10:29 AM, Simon Glass wrote:

Hi Kever,

On 16 May 2017 at 21:44, Kever Yang  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 
---

  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 
+#include 
+#include 
  #include 
+#include 
  #include 
  #include 

@@ -13,6 +16,15 @@ DECLARE_GLOBAL_DATA_PTR;

  int board_init(void)
  {
+#define GRF_BASE   0xff10
+   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




___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


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

2017-05-19 Thread Simon Glass
Hi Kever,

On 16 May 2017 at 21:44, Kever Yang  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 
> ---
>
>  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 
> +#include 
> +#include 
>  #include 
> +#include 
>  #include 
>  #include 
>
> @@ -13,6 +16,15 @@ DECLARE_GLOBAL_DATA_PTR;
>
>  int board_init(void)
>  {
> +#define GRF_BASE   0xff10
> +   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.

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?

Regards,
Simon
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


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

2017-05-16 Thread Kever Yang
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 
---

 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 
+#include 
+#include 
 #include 
+#include 
 #include 
 #include 
 
@@ -13,6 +16,15 @@ DECLARE_GLOBAL_DATA_PTR;
 
 int board_init(void)
 {
+#define GRF_BASE   0xff10
+   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;
 }
 
-- 
1.9.1

___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot