From 6537a867e3da118a2d7ff5424da0fc1a7a49f443 Mon Sep 17 00:00:00 2001 From: Daniel DeGrasse Date: Mon, 7 Mar 2022 10:37:14 -0600 Subject: [PATCH] drivers: pwm: Enable pinctrl for kinetis ftm PWM driver Enable pinctrl for kinetis ftm PWM driver Signed-off-by: Daniel DeGrasse --- drivers/pwm/Kconfig.mcux_ftm | 1 + drivers/pwm/pwm_mcux_ftm.c | 10 ++++++++++ dts/bindings/pwm/nxp,kinetis-ftm-pwm.yaml | 2 +- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/pwm/Kconfig.mcux_ftm b/drivers/pwm/Kconfig.mcux_ftm index febd0c349f4..1db289f82b6 100644 --- a/drivers/pwm/Kconfig.mcux_ftm +++ b/drivers/pwm/Kconfig.mcux_ftm @@ -6,6 +6,7 @@ config PWM_MCUX_FTM bool "MCUX FTM PWM driver" depends on HAS_MCUX_FTM + select PINCTRL help Enable support for mcux ftm pwm driver. diff --git a/drivers/pwm/pwm_mcux_ftm.c b/drivers/pwm/pwm_mcux_ftm.c index b8748d1eb6f..da9aad91eec 100644 --- a/drivers/pwm/pwm_mcux_ftm.c +++ b/drivers/pwm/pwm_mcux_ftm.c @@ -13,6 +13,7 @@ #include #include #include +#include #define LOG_LEVEL CONFIG_PWM_LOG_LEVEL #include @@ -36,6 +37,7 @@ struct mcux_ftm_config { #ifdef CONFIG_PWM_CAPTURE void (*irq_config_func)(const struct device *dev); #endif /* CONFIG_PWM_CAPTURE */ + const struct pinctrl_dev_config *pincfg; }; struct mcux_ftm_capture_data { @@ -390,6 +392,12 @@ static int mcux_ftm_init(const struct device *dev) ftm_chnl_pwm_config_param_t *channel = data->channel; ftm_config_t ftm_config; int i; + int err; + + err = pinctrl_apply_state(config->pincfg, PINCTRL_STATE_DEFAULT); + if (err != 0) { + return err; + } if (config->channel_count > ARRAY_SIZE(data->channel)) { LOG_ERR("Invalid channel count"); @@ -469,10 +477,12 @@ static const struct mcux_ftm_config mcux_ftm_config_##n = { \ .channel_count = FSL_FEATURE_FTM_CHANNEL_COUNTn((FTM_Type *) \ DT_INST_REG_ADDR(n)), \ .mode = kFTM_EdgeAlignedPwm, \ + .pincfg = PINCTRL_DT_INST_DEV_CONFIG_GET(n), \ CAPTURE_INIT \ } #define FTM_DEVICE(n) \ + PINCTRL_DT_INST_DEFINE(n); \ static struct mcux_ftm_data mcux_ftm_data_##n; \ static const struct mcux_ftm_config mcux_ftm_config_##n; \ DEVICE_DT_INST_DEFINE(n, &mcux_ftm_init, \ diff --git a/dts/bindings/pwm/nxp,kinetis-ftm-pwm.yaml b/dts/bindings/pwm/nxp,kinetis-ftm-pwm.yaml index 091cc430cc7..4732436f972 100644 --- a/dts/bindings/pwm/nxp,kinetis-ftm-pwm.yaml +++ b/dts/bindings/pwm/nxp,kinetis-ftm-pwm.yaml @@ -5,7 +5,7 @@ description: Kinetis FTM PWM compatible: "nxp,kinetis-ftm-pwm" -include: [pwm-controller.yaml, "nxp,kinetis-ftm.yaml"] +include: [pwm-controller.yaml, "nxp,kinetis-ftm.yaml", "pinctrl-device.yaml"] properties: "#pwm-cells":