mbox series

[0/2] pinctrl: sh-pfc: gen2: initialize TDSEL register

Message ID 20181028212457.1017-1-wsa+renesas@sang-engineering.com
Headers show
Series pinctrl: sh-pfc: gen2: initialize TDSEL register | expand

Message

Wolfram Sang Oct. 28, 2018, 9:24 p.m. UTC
During our SDHI hackathon, we found that Lager was the only Gen2 board
having issues with a stubborn SD card. The issue went away when setting
TDSEL to the expected value mentioned in the H2 documentation which is
sadly not the default value. M2-W, M2-N, and V2H have an expected value
of 0 for TDSEL, so this is why they likely work out of the box (V2H has
non-zero drive strength bit, though). I can't verify those SoCs here, no
boards. E2 has a non-zero expected value as well, so we fix it in this
patch series as well (although on my board the bootloader prepares TDSEL
correctly, but let's not rely on that).

Based on an RFC patch for H2 sent two years ago.


Wolfram Sang (2):
  pinctrl: sh-pfc: r8a7790: initialize TDSEL register
  pinctrl: sh-pfc: r8a7794: initialize TDSEL register

 drivers/pinctrl/sh-pfc/pfc-r8a7790.c | 10 ++++++++++
 drivers/pinctrl/sh-pfc/pfc-r8a7794.c |  9 +++++++++
 2 files changed, 19 insertions(+)

Comments

Geert Uytterhoeven Nov. 8, 2018, 8 p.m. UTC | #1
Hi Wolfram,

CC Chris Paterson

On Sun, Oct 28, 2018 at 10:25 PM Wolfram Sang
<wsa+renesas@sang-engineering.com> wrote:
> During our SDHI hackathon, we found that Lager was the only Gen2 board
> having issues with a stubborn SD card. The issue went away when setting
> TDSEL to the expected value mentioned in the H2 documentation which is
> sadly not the default value. M2-W, M2-N, and V2H have an expected value
> of 0 for TDSEL, so this is why they likely work out of the box (V2H has
> non-zero drive strength bit, though). I can't verify those SoCs here, no

But the default non-zero drive strength bit does match the required value
on V2H.

> boards. E2 has a non-zero expected value as well, so we fix it in this
> patch series as well (although on my board the bootloader prepares TDSEL
> correctly, but let's not rely on that).

Probably we should program TDSEL regardless, to avoid any dependency on
reset state or boot loader.

Note that all RZ/G1 SoCs requires zero TDSEL values, except for RZ/G1C
(which doesn't document required values, just the initial values).
So we need some soc_device_match() handling to obtain the required value.

Gr{oetje,eeting}s,

                        Geert