From: Emil Renner Berthing <emil.renner.berthing@xxxxxxxxxxxxx>func can be NULL after calling pinmux_generic_get_function
Add pinctrl driver for the T-Head TH1520 RISC-V SoC.
Tested-by: Thomas Bonnefille <thomas.bonnefille@xxxxxxxxxxx>
Signed-off-by: Emil Renner Berthing <emil.renner.berthing@xxxxxxxxxxxxx>
[dfustini: use thead,pad-group to identify the pin controller instance]
Signed-off-by: Drew Fustini <dfustini@xxxxxxxxxxxxxxx>
---
MAINTAINERS | 1 +
drivers/pinctrl/Kconfig | 13 +
drivers/pinctrl/Makefile | 1 +
drivers/pinctrl/pinctrl-th1520.c | 907 +++++++++++++++++++++++++++++++++++++++
4 files changed, 922 insertions(+)
[...]
+static int th1520_pinmux_set_mux(struct pinctrl_dev *pctldev,
+ unsigned int fsel, unsigned int gsel)
+{
+ struct th1520_pinctrl *thp = pinctrl_dev_get_drvdata(pctldev);
+ const struct function_desc *func = pinmux_generic_get_function(pctldev, fsel);
+
+ return th1520_pinmux_set(thp, thp->desc.pins[gsel].number,
+ (uintptr_t)thp->desc.pins[gsel].drv_data & TH1520_PAD_MUXDATA,
+ (uintptr_t)func->data);
+}
+