drivers: pwm: add pinctrl support for mcux PWT driver
Enable pinctrl support for mcux pwm capture pwt driver Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
This commit is contained in:
parent
9c8ced789e
commit
9b9450d8f3
4 changed files with 14 additions and 1 deletions
|
@ -6,5 +6,6 @@
|
||||||
config PWM_MCUX_PWT
|
config PWM_MCUX_PWT
|
||||||
bool "MCUX PWT PWM capture driver"
|
bool "MCUX PWT PWM capture driver"
|
||||||
depends on HAS_MCUX_PWT && CLOCK_CONTROL && PWM_CAPTURE
|
depends on HAS_MCUX_PWT && CLOCK_CONTROL && PWM_CAPTURE
|
||||||
|
select PINCTRL
|
||||||
help
|
help
|
||||||
Enable the MCUX Pulse Width Timer (PWT) PWM capture driver.
|
Enable the MCUX Pulse Width Timer (PWT) PWM capture driver.
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
#include <soc.h>
|
#include <soc.h>
|
||||||
#include <fsl_pwt.h>
|
#include <fsl_pwt.h>
|
||||||
#include <fsl_clock.h>
|
#include <fsl_clock.h>
|
||||||
|
#include <drivers/pinctrl.h>
|
||||||
|
|
||||||
#include <logging/log.h>
|
#include <logging/log.h>
|
||||||
LOG_MODULE_REGISTER(pwm_mcux_pwt, CONFIG_PWM_LOG_LEVEL);
|
LOG_MODULE_REGISTER(pwm_mcux_pwt, CONFIG_PWM_LOG_LEVEL);
|
||||||
|
@ -26,6 +27,7 @@ struct mcux_pwt_config {
|
||||||
pwt_clock_source_t pwt_clock_source;
|
pwt_clock_source_t pwt_clock_source;
|
||||||
pwt_clock_prescale_t prescale;
|
pwt_clock_prescale_t prescale;
|
||||||
void (*irq_config_func)(const struct device *dev);
|
void (*irq_config_func)(const struct device *dev);
|
||||||
|
const struct pinctrl_dev_config *pincfg;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct mcux_pwt_data {
|
struct mcux_pwt_data {
|
||||||
|
@ -279,6 +281,7 @@ static int mcux_pwt_init(const struct device *dev)
|
||||||
const struct mcux_pwt_config *config = dev->config;
|
const struct mcux_pwt_config *config = dev->config;
|
||||||
struct mcux_pwt_data *data = dev->data;
|
struct mcux_pwt_data *data = dev->data;
|
||||||
pwt_config_t *pwt_config = &data->pwt_config;
|
pwt_config_t *pwt_config = &data->pwt_config;
|
||||||
|
int err;
|
||||||
|
|
||||||
if (clock_control_get_rate(config->clock_dev, config->clock_subsys,
|
if (clock_control_get_rate(config->clock_dev, config->clock_subsys,
|
||||||
&data->clock_freq)) {
|
&data->clock_freq)) {
|
||||||
|
@ -292,6 +295,11 @@ static int mcux_pwt_init(const struct device *dev)
|
||||||
pwt_config->enableFirstCounterLoad = true;
|
pwt_config->enableFirstCounterLoad = true;
|
||||||
PWT_Init(config->base, pwt_config);
|
PWT_Init(config->base, pwt_config);
|
||||||
|
|
||||||
|
err = pinctrl_apply_state(config->pincfg, PINCTRL_STATE_DEFAULT);
|
||||||
|
if (err) {
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
config->irq_config_func(dev);
|
config->irq_config_func(dev);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -310,6 +318,8 @@ static const struct pwm_driver_api mcux_pwt_driver_api = {
|
||||||
#define PWT_DEVICE(n) \
|
#define PWT_DEVICE(n) \
|
||||||
static void mcux_pwt_config_func_##n(const struct device *dev); \
|
static void mcux_pwt_config_func_##n(const struct device *dev); \
|
||||||
\
|
\
|
||||||
|
PINCTRL_DT_INST_DEFINE(n); \
|
||||||
|
\
|
||||||
static const struct mcux_pwt_config mcux_pwt_config_##n = { \
|
static const struct mcux_pwt_config mcux_pwt_config_##n = { \
|
||||||
.base = (PWT_Type *)DT_INST_REG_ADDR(n), \
|
.base = (PWT_Type *)DT_INST_REG_ADDR(n), \
|
||||||
.clock_dev = DEVICE_DT_GET(DT_INST_CLOCKS_CTLR(n)), \
|
.clock_dev = DEVICE_DT_GET(DT_INST_CLOCKS_CTLR(n)), \
|
||||||
|
@ -319,6 +329,7 @@ static const struct pwm_driver_api mcux_pwt_driver_api = {
|
||||||
.prescale = \
|
.prescale = \
|
||||||
TO_PWT_PRESCALE_DIVIDE(DT_INST_PROP(n, prescaler)), \
|
TO_PWT_PRESCALE_DIVIDE(DT_INST_PROP(n, prescaler)), \
|
||||||
.irq_config_func = mcux_pwt_config_func_##n, \
|
.irq_config_func = mcux_pwt_config_func_##n, \
|
||||||
|
.pincfg = PINCTRL_DT_INST_DEV_CONFIG_GET(n), \
|
||||||
}; \
|
}; \
|
||||||
\
|
\
|
||||||
static struct mcux_pwt_data mcux_pwt_data_##n; \
|
static struct mcux_pwt_data mcux_pwt_data_##n; \
|
||||||
|
|
|
@ -5,7 +5,7 @@ description: Kinetis PWT PWM Capture
|
||||||
|
|
||||||
compatible: "nxp,kinetis-pwt"
|
compatible: "nxp,kinetis-pwt"
|
||||||
|
|
||||||
include: [pwm-controller.yaml, base.yaml]
|
include: [pwm-controller.yaml, base.yaml, pinctrl-device.yaml]
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
reg:
|
reg:
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
status = "okay";
|
status = "okay";
|
||||||
prescaler = <32>;
|
prescaler = <32>;
|
||||||
pinctrl-0 = <&pwt_default>;
|
pinctrl-0 = <&pwt_default>;
|
||||||
|
pinctrl-names = "default";
|
||||||
};
|
};
|
||||||
|
|
||||||
&ftm2 {
|
&ftm2 {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue