On 10/28/2018 10:24 PM, Wolfram Sang wrote: > Documentation says that some bits in TDSEL must be set (ch 5.3.39 in R-Car H2 > v0.91). However, the reset value of the register is 0, so software has to do > it. Add this to the kernel driver to ensure this is really done independent of > firmware versions. > > This is needed for some SD cards supporting SDR104 transfer mode. For > me, TDSEL was not initialized by the firmware and I had problems with > the card when re-inserting it. > > Signed-off-by: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx> Reviewed-by: Marek Vasut <marek.vasut@xxxxxxxxx> > --- > drivers/pinctrl/sh-pfc/pfc-r8a7790.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/drivers/pinctrl/sh-pfc/pfc-r8a7790.c b/drivers/pinctrl/sh-pfc/pfc-r8a7790.c > index ab7a35392cd8..c0e679105df9 100644 > --- a/drivers/pinctrl/sh-pfc/pfc-r8a7790.c > +++ b/drivers/pinctrl/sh-pfc/pfc-r8a7790.c > @@ -11,6 +11,7 @@ > #include <linux/io.h> > #include <linux/kernel.h> > > +#include "core.h" > #include "sh_pfc.h" > > /* > @@ -5691,7 +5692,16 @@ static int r8a7790_pin_to_pocctrl(struct sh_pfc *pfc, unsigned int pin, u32 *poc > return 31 - (pin & 0x1f); > } > > +static int r8a7790_pinmux_soc_init(struct sh_pfc *pfc) > +{ > + /* Initialize TDSEL according to datasheet */ > + sh_pfc_write(pfc, 0xe6060088, 0x00155554); > + > + return 0; > +} > + > static const struct sh_pfc_soc_operations r8a7790_pinmux_ops = { > + .init = r8a7790_pinmux_soc_init, > .pin_to_pocctrl = r8a7790_pin_to_pocctrl, > }; > > -- Best regards, Marek Vasut