Hi Niklas, Linus,
On Tue, Jul 3, 2018 at 5:20 PM Niklas Söderlund
<[email protected]> wrote:
> The datasheet does not document any registers to control drive strength,
> and no drive strength registers are for this reason described for this
> SoC. The flags indicating that drive strength can be controlled are
> however set for some pins in the driver.
>
> This leads to a NULL pointer dereference when the sh-pfc core tries to
> access the struct describing the drive strength registers, for example
> when reading the sysfs file pinconf-pins.
>
> Fix this by removing the SH_PFC_PIN_CFG_DRIVE_STRENGTH from all pins.
>
> Fixes: b92ac66a1819602b ("pinctrl: sh-pfc: Add R8A77970 PFC support")
> Signed-off-by: Niklas Söderlund <[email protected]>
> Reviewed-by: Simon Horman <[email protected]>
> Reviewed-by: Sergei Shtylyov <[email protected]>
> Reviewed-by: Geert Uytterhoeven <[email protected]>
>
> ---
>
> * Changes since v1
> - Fix spelling in commit message.
> - Add fixes tag.
> - Collect review tags.
Linus: As this fixes a bug (crash), can you please take this directly,
and queue it
for v4.18?
Thanks!
> ---
> drivers/pinctrl/sh-pfc/pfc-r8a77970.c | 14 ++++++--------
> 1 file changed, 6 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/pinctrl/sh-pfc/pfc-r8a77970.c
> b/drivers/pinctrl/sh-pfc/pfc-r8a77970.c
> index b02caf31671186d9..eeb58b3bbc9a0cef 100644
> --- a/drivers/pinctrl/sh-pfc/pfc-r8a77970.c
> +++ b/drivers/pinctrl/sh-pfc/pfc-r8a77970.c
> @@ -21,15 +21,13 @@
> #include "core.h"
> #include "sh_pfc.h"
>
> -#define CFG_FLAGS SH_PFC_PIN_CFG_DRIVE_STRENGTH
> -
> #define CPU_ALL_PORT(fn, sfx) \
> - PORT_GP_CFG_22(0, fn, sfx, CFG_FLAGS | SH_PFC_PIN_CFG_IO_VOLTAGE), \
> - PORT_GP_CFG_28(1, fn, sfx, CFG_FLAGS), \
> - PORT_GP_CFG_17(2, fn, sfx, CFG_FLAGS | SH_PFC_PIN_CFG_IO_VOLTAGE), \
> - PORT_GP_CFG_17(3, fn, sfx, CFG_FLAGS | SH_PFC_PIN_CFG_IO_VOLTAGE), \
> - PORT_GP_CFG_6(4, fn, sfx, CFG_FLAGS), \
> - PORT_GP_CFG_15(5, fn, sfx, CFG_FLAGS)
> + PORT_GP_CFG_22(0, fn, sfx, SH_PFC_PIN_CFG_IO_VOLTAGE), \
> + PORT_GP_28(1, fn, sfx), \
> + PORT_GP_CFG_17(2, fn, sfx, SH_PFC_PIN_CFG_IO_VOLTAGE), \
> + PORT_GP_CFG_17(3, fn, sfx, SH_PFC_PIN_CFG_IO_VOLTAGE), \
> + PORT_GP_6(4, fn, sfx), \
> + PORT_GP_15(5, fn, sfx)
> /*
> * F_() : just information
> * FM() : macro for FN_xxx / xxx_MARK
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds