Skip to content

Commit ddee8d7

Browse files
danieldegrassedleach02
authored andcommitted
drivers: pwm_imx: add pin control support
Add pin control support to pwm_imx driver. Signed-off-by: Daniel DeGrasse <[email protected]>
1 parent 7299a29 commit ddee8d7

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

drivers/pwm/pwm_imx.c

+11
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include <zephyr/drivers/pwm.h>
99
#include <soc.h>
1010
#include <device_imx.h>
11+
#include <drivers/pinctrl.h>
1112

1213
#define LOG_LEVEL CONFIG_PWM_LOG_LEVEL
1314
#include <zephyr/logging/log.h>
@@ -24,6 +25,7 @@ LOG_MODULE_REGISTER(pwm_imx);
2425
struct imx_pwm_config {
2526
PWM_Type *base;
2627
uint16_t prescaler;
28+
const struct pinctrl_dev_config *pincfg;
2729
};
2830

2931
struct imx_pwm_data {
@@ -140,9 +142,16 @@ static int imx_pwm_set_cycles(const struct device *dev, uint32_t channel,
140142

141143
static int imx_pwm_init(const struct device *dev)
142144
{
145+
const struct imx_pwm_config *config = dev->config;
143146
struct imx_pwm_data *data = dev->data;
147+
int err;
144148
PWM_Type *base = DEV_BASE(dev);
145149

150+
err = pinctrl_apply_state(config->pincfg, PINCTRL_STATE_DEFAULT);
151+
if (err) {
152+
return err;
153+
}
154+
146155
PWM_PWMPR_REG(base) = data->period_cycles;
147156

148157
return 0;
@@ -154,9 +163,11 @@ static const struct pwm_driver_api imx_pwm_driver_api = {
154163
};
155164

156165
#define PWM_IMX_INIT(n) \
166+
PINCTRL_DT_INST_DEFINE(n); \
157167
static const struct imx_pwm_config imx_pwm_config_##n = { \
158168
.base = (PWM_Type *)DT_INST_REG_ADDR(n), \
159169
.prescaler = DT_INST_PROP(n, prescaler), \
170+
.pincfg = PINCTRL_DT_INST_DEV_CONFIG_GET(n), \
160171
}; \
161172
\
162173
static struct imx_pwm_data imx_pwm_data_##n; \

dts/bindings/pwm/fsl,imx27-pwm.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ description: |
1010
1111
compatible: "fsl,imx27-pwm"
1212

13-
include: [pwm-controller.yaml, base.yaml]
13+
include: [pwm-controller.yaml, pinctrl-device.yaml, base.yaml]
1414

1515
properties:
1616
reg:

0 commit comments

Comments
 (0)