imxrt_flexpwm independent output B support added
This commit is contained in:
parent
2005076345
commit
1d7383d4a1
@ -629,9 +629,14 @@ config IMXRT_FLEXPWM1_MOD1
|
|||||||
|
|
||||||
if IMXRT_FLEXPWM1_MOD1
|
if IMXRT_FLEXPWM1_MOD1
|
||||||
|
|
||||||
|
config IMXRT_FLEXPWM1_MOD1_USE_OUT_B
|
||||||
|
bool "Use output B"
|
||||||
|
default n
|
||||||
|
|
||||||
config IMXRT_FLEXPWM1_MOD1_COMP
|
config IMXRT_FLEXPWM1_MOD1_COMP
|
||||||
bool "Use complementary output"
|
bool "Use complementary output"
|
||||||
default n
|
default n
|
||||||
|
depends on IMXRT_FLEXPWM1_MOD1_USE_OUT_B
|
||||||
|
|
||||||
config IMXRT_FLEXPWM1_MOD1_TRIG
|
config IMXRT_FLEXPWM1_MOD1_TRIG
|
||||||
bool "Enable trigger generation"
|
bool "Enable trigger generation"
|
||||||
@ -679,9 +684,14 @@ config IMXRT_FLEXPWM1_MOD2
|
|||||||
|
|
||||||
if IMXRT_FLEXPWM1_MOD2
|
if IMXRT_FLEXPWM1_MOD2
|
||||||
|
|
||||||
|
config IMXRT_FLEXPWM1_MOD2_USE_OUT_B
|
||||||
|
bool "Use output B"
|
||||||
|
default n
|
||||||
|
|
||||||
config IMXRT_FLEXPWM1_MOD2_COMP
|
config IMXRT_FLEXPWM1_MOD2_COMP
|
||||||
bool "Use complementary output"
|
bool "Use complementary output"
|
||||||
default n
|
default n
|
||||||
|
depends on IMXRT_FLEXPWM1_MOD2_USE_OUT_B
|
||||||
|
|
||||||
config IMXRT_FLEXPWM1_MOD2_TRIG
|
config IMXRT_FLEXPWM1_MOD2_TRIG
|
||||||
bool "Enable trigger generation"
|
bool "Enable trigger generation"
|
||||||
@ -729,9 +739,14 @@ config IMXRT_FLEXPWM1_MOD3
|
|||||||
|
|
||||||
if IMXRT_FLEXPWM1_MOD3
|
if IMXRT_FLEXPWM1_MOD3
|
||||||
|
|
||||||
|
config IMXRT_FLEXPWM1_MOD3_USE_OUT_B
|
||||||
|
bool "Use output B"
|
||||||
|
default n
|
||||||
|
|
||||||
config IMXRT_FLEXPWM1_MOD3_COMP
|
config IMXRT_FLEXPWM1_MOD3_COMP
|
||||||
bool "Use complementary output"
|
bool "Use complementary output"
|
||||||
default n
|
default n
|
||||||
|
depends on IMXRT_FLEXPWM1_MOD3_USE_OUT_B
|
||||||
|
|
||||||
config IMXRT_FLEXPWM1_MOD3_TRIG
|
config IMXRT_FLEXPWM1_MOD3_TRIG
|
||||||
bool "Enable trigger generation"
|
bool "Enable trigger generation"
|
||||||
@ -779,9 +794,14 @@ config IMXRT_FLEXPWM1_MOD4
|
|||||||
|
|
||||||
if IMXRT_FLEXPWM1_MOD4
|
if IMXRT_FLEXPWM1_MOD4
|
||||||
|
|
||||||
|
config IMXRT_FLEXPWM1_MOD4_USE_OUT_B
|
||||||
|
bool "Use output B"
|
||||||
|
default n
|
||||||
|
|
||||||
config IMXRT_FLEXPWM1_MOD4_COMP
|
config IMXRT_FLEXPWM1_MOD4_COMP
|
||||||
bool "Use complementary output"
|
bool "Use complementary output"
|
||||||
default n
|
default n
|
||||||
|
depends on IMXRT_FLEXPWM1_MOD4_USE_OUT_B
|
||||||
|
|
||||||
config IMXRT_FLEXPWM1_MOD4_TRIG
|
config IMXRT_FLEXPWM1_MOD4_TRIG
|
||||||
bool "Enable trigger generation"
|
bool "Enable trigger generation"
|
||||||
@ -834,9 +854,14 @@ config IMXRT_FLEXPWM2_MOD1
|
|||||||
|
|
||||||
if IMXRT_FLEXPWM2_MOD1
|
if IMXRT_FLEXPWM2_MOD1
|
||||||
|
|
||||||
|
config IMXRT_FLEXPWM2_MOD1_USE_OUT_B
|
||||||
|
bool "Use output B"
|
||||||
|
default n
|
||||||
|
|
||||||
config IMXRT_FLEXPWM2_MOD1_COMP
|
config IMXRT_FLEXPWM2_MOD1_COMP
|
||||||
bool "Use complementary output"
|
bool "Use complementary output"
|
||||||
default n
|
default n
|
||||||
|
depends on IMXRT_FLEXPWM2_MOD1_USE_OUT_B
|
||||||
|
|
||||||
config IMXRT_FLEXPWM2_MOD1_TRIG
|
config IMXRT_FLEXPWM2_MOD1_TRIG
|
||||||
bool "Enable trigger generation"
|
bool "Enable trigger generation"
|
||||||
@ -884,9 +909,14 @@ config IMXRT_FLEXPWM2_MOD2
|
|||||||
|
|
||||||
if IMXRT_FLEXPWM2_MOD2
|
if IMXRT_FLEXPWM2_MOD2
|
||||||
|
|
||||||
|
config IMXRT_FLEXPWM2_MOD2_USE_OUT_B
|
||||||
|
bool "Use output B"
|
||||||
|
default n
|
||||||
|
|
||||||
config IMXRT_FLEXPWM2_MOD2_COMP
|
config IMXRT_FLEXPWM2_MOD2_COMP
|
||||||
bool "Use complementary output"
|
bool "Use complementary output"
|
||||||
default n
|
default n
|
||||||
|
depends on IMXRT_FLEXPWM2_MOD2_USE_OUT_B
|
||||||
|
|
||||||
config IMXRT_FLEXPWM2_MOD2_TRIG
|
config IMXRT_FLEXPWM2_MOD2_TRIG
|
||||||
bool "Enable trigger generation"
|
bool "Enable trigger generation"
|
||||||
@ -934,9 +964,14 @@ config IMXRT_FLEXPWM2_MOD3
|
|||||||
|
|
||||||
if IMXRT_FLEXPWM2_MOD3
|
if IMXRT_FLEXPWM2_MOD3
|
||||||
|
|
||||||
|
config IMXRT_FLEXPWM2_MOD3_USE_OUT_B
|
||||||
|
bool "Use output B"
|
||||||
|
default n
|
||||||
|
|
||||||
config IMXRT_FLEXPWM2_MOD3_COMP
|
config IMXRT_FLEXPWM2_MOD3_COMP
|
||||||
bool "Use complementary output"
|
bool "Use complementary output"
|
||||||
default n
|
default n
|
||||||
|
depends on IMXRT_FLEXPWM2_MOD3_USE_OUT_B
|
||||||
|
|
||||||
config IMXRT_FLEXPWM2_MOD3_TRIG
|
config IMXRT_FLEXPWM2_MOD3_TRIG
|
||||||
bool "Enable trigger generation"
|
bool "Enable trigger generation"
|
||||||
@ -984,9 +1019,14 @@ config IMXRT_FLEXPWM2_MOD4
|
|||||||
|
|
||||||
if IMXRT_FLEXPWM2_MOD4
|
if IMXRT_FLEXPWM2_MOD4
|
||||||
|
|
||||||
|
config IMXRT_FLEXPWM2_MOD4_USE_OUT_B
|
||||||
|
bool "Use output B"
|
||||||
|
default n
|
||||||
|
|
||||||
config IMXRT_FLEXPWM2_MOD4_COMP
|
config IMXRT_FLEXPWM2_MOD4_COMP
|
||||||
bool "Use complementary output"
|
bool "Use complementary output"
|
||||||
default n
|
default n
|
||||||
|
depends on IMXRT_FLEXPWM2_MOD4_USE_OUT_B
|
||||||
|
|
||||||
config IMXRT_FLEXPWM2_MOD4_TRIG
|
config IMXRT_FLEXPWM2_MOD4_TRIG
|
||||||
bool "Enable trigger generation"
|
bool "Enable trigger generation"
|
||||||
@ -1039,9 +1079,14 @@ config IMXRT_FLEXPWM3_MOD1
|
|||||||
|
|
||||||
if IMXRT_FLEXPWM3_MOD1
|
if IMXRT_FLEXPWM3_MOD1
|
||||||
|
|
||||||
|
config IMXRT_FLEXPWM3_MOD1_USE_OUT_B
|
||||||
|
bool "Use output B"
|
||||||
|
default n
|
||||||
|
|
||||||
config IMXRT_FLEXPWM3_MOD1_COMP
|
config IMXRT_FLEXPWM3_MOD1_COMP
|
||||||
bool "Use complementary output"
|
bool "Use complementary output"
|
||||||
default n
|
default n
|
||||||
|
depends on IMXRT_FLEXPWM3_MOD1_USE_OUT_B
|
||||||
|
|
||||||
config IMXRT_FLEXPWM3_MOD1_TRIG
|
config IMXRT_FLEXPWM3_MOD1_TRIG
|
||||||
bool "Enable trigger generation"
|
bool "Enable trigger generation"
|
||||||
@ -1089,9 +1134,14 @@ config IMXRT_FLEXPWM3_MOD2
|
|||||||
|
|
||||||
if IMXRT_FLEXPWM3_MOD2
|
if IMXRT_FLEXPWM3_MOD2
|
||||||
|
|
||||||
|
config IMXRT_FLEXPWM3_MOD2_USE_OUT_B
|
||||||
|
bool "Use output B"
|
||||||
|
default n
|
||||||
|
|
||||||
config IMXRT_FLEXPWM3_MOD2_COMP
|
config IMXRT_FLEXPWM3_MOD2_COMP
|
||||||
bool "Use complementary output"
|
bool "Use complementary output"
|
||||||
default n
|
default n
|
||||||
|
depends on IMXRT_FLEXPWM3_MOD2_USE_OUT_B
|
||||||
|
|
||||||
config IMXRT_FLEXPWM3_MOD2_TRIG
|
config IMXRT_FLEXPWM3_MOD2_TRIG
|
||||||
bool "Enable trigger generation"
|
bool "Enable trigger generation"
|
||||||
@ -1139,9 +1189,14 @@ config IMXRT_FLEXPWM3_MOD3
|
|||||||
|
|
||||||
if IMXRT_FLEXPWM3_MOD3
|
if IMXRT_FLEXPWM3_MOD3
|
||||||
|
|
||||||
|
config IMXRT_FLEXPWM3_MOD3_USE_OUT_B
|
||||||
|
bool "Use output B"
|
||||||
|
default n
|
||||||
|
|
||||||
config IMXRT_FLEXPWM3_MOD3_COMP
|
config IMXRT_FLEXPWM3_MOD3_COMP
|
||||||
bool "Use complementary output"
|
bool "Use complementary output"
|
||||||
default n
|
default n
|
||||||
|
depends on IMXRT_FLEXPWM3_MOD3_USE_OUT_B
|
||||||
|
|
||||||
config IMXRT_FLEXPWM3_MOD3_TRIG
|
config IMXRT_FLEXPWM3_MOD3_TRIG
|
||||||
bool "Enable trigger generation"
|
bool "Enable trigger generation"
|
||||||
@ -1189,9 +1244,14 @@ config IMXRT_FLEXPWM3_MOD4
|
|||||||
|
|
||||||
if IMXRT_FLEXPWM3_MOD4
|
if IMXRT_FLEXPWM3_MOD4
|
||||||
|
|
||||||
|
config IMXRT_FLEXPWM3_MOD4_USE_OUT_B
|
||||||
|
bool "Use output B"
|
||||||
|
default n
|
||||||
|
|
||||||
config IMXRT_FLEXPWM3_MOD4_COMP
|
config IMXRT_FLEXPWM3_MOD4_COMP
|
||||||
bool "Use complementary output"
|
bool "Use complementary output"
|
||||||
default n
|
default n
|
||||||
|
depends on IMXRT_FLEXPWM3_MOD4_USE_OUT_B
|
||||||
|
|
||||||
config IMXRT_FLEXPWM3_MOD4_TRIG
|
config IMXRT_FLEXPWM3_MOD4_TRIG
|
||||||
bool "Enable trigger generation"
|
bool "Enable trigger generation"
|
||||||
@ -1244,9 +1304,14 @@ config IMXRT_FLEXPWM4_MOD1
|
|||||||
|
|
||||||
if IMXRT_FLEXPWM4_MOD1
|
if IMXRT_FLEXPWM4_MOD1
|
||||||
|
|
||||||
|
config IMXRT_FLEXPWM4_MOD1_USE_OUT_B
|
||||||
|
bool "Use output B"
|
||||||
|
default n
|
||||||
|
|
||||||
config IMXRT_FLEXPWM4_MOD1_COMP
|
config IMXRT_FLEXPWM4_MOD1_COMP
|
||||||
bool "Use complementary output"
|
bool "Use complementary output"
|
||||||
default n
|
default n
|
||||||
|
depends on IMXRT_FLEXPWM4_MOD1_USE_OUT_B
|
||||||
|
|
||||||
config IMXRT_FLEXPWM4_MOD1_TRIG
|
config IMXRT_FLEXPWM4_MOD1_TRIG
|
||||||
bool "Enable trigger generation"
|
bool "Enable trigger generation"
|
||||||
@ -1294,9 +1359,14 @@ config IMXRT_FLEXPWM4_MOD2
|
|||||||
|
|
||||||
if IMXRT_FLEXPWM4_MOD2
|
if IMXRT_FLEXPWM4_MOD2
|
||||||
|
|
||||||
|
config IMXRT_FLEXPWM4_MOD2_USE_OUT_B
|
||||||
|
bool "Use output B"
|
||||||
|
default n
|
||||||
|
|
||||||
config IMXRT_FLEXPWM4_MOD2_COMP
|
config IMXRT_FLEXPWM4_MOD2_COMP
|
||||||
bool "Use complementary output"
|
bool "Use complementary output"
|
||||||
default n
|
default n
|
||||||
|
depends on IMXRT_FLEXPWM4_MOD2_USE_OUT_B
|
||||||
|
|
||||||
config IMXRT_FLEXPWM4_MOD2_TRIG
|
config IMXRT_FLEXPWM4_MOD2_TRIG
|
||||||
bool "Enable trigger generation"
|
bool "Enable trigger generation"
|
||||||
@ -1344,9 +1414,14 @@ config IMXRT_FLEXPWM4_MOD3
|
|||||||
|
|
||||||
if IMXRT_FLEXPWM4_MOD3
|
if IMXRT_FLEXPWM4_MOD3
|
||||||
|
|
||||||
|
config IMXRT_FLEXPWM4_MOD3_USE_OUT_B
|
||||||
|
bool "Use output B"
|
||||||
|
default n
|
||||||
|
|
||||||
config IMXRT_FLEXPWM4_MOD3_COMP
|
config IMXRT_FLEXPWM4_MOD3_COMP
|
||||||
bool "Use complementary output"
|
bool "Use complementary output"
|
||||||
default n
|
default n
|
||||||
|
depends on IMXRT_FLEXPWM4_MOD3_USE_OUT_B
|
||||||
|
|
||||||
config IMXRT_FLEXPWM4_MOD3_TRIG
|
config IMXRT_FLEXPWM4_MOD3_TRIG
|
||||||
bool "Enable trigger generation"
|
bool "Enable trigger generation"
|
||||||
@ -1394,9 +1469,14 @@ config IMXRT_FLEXPWM4_MOD4
|
|||||||
|
|
||||||
if IMXRT_FLEXPWM4_MOD4
|
if IMXRT_FLEXPWM4_MOD4
|
||||||
|
|
||||||
|
config IMXRT_FLEXPWM4_MOD4_USE_OUT_B
|
||||||
|
bool "Use output B"
|
||||||
|
default n
|
||||||
|
|
||||||
config IMXRT_FLEXPWM4_MOD4_COMP
|
config IMXRT_FLEXPWM4_MOD4_COMP
|
||||||
bool "Use complementary output"
|
bool "Use complementary output"
|
||||||
default n
|
default n
|
||||||
|
depends on IMXRT_FLEXPWM4_MOD4_USE_OUT_B
|
||||||
|
|
||||||
config IMXRT_FLEXPWM4_MOD4_TRIG
|
config IMXRT_FLEXPWM4_MOD4_TRIG
|
||||||
bool "Enable trigger generation"
|
bool "Enable trigger generation"
|
||||||
|
@ -72,7 +72,7 @@
|
|||||||
struct imxrt_flexpwm_out_s
|
struct imxrt_flexpwm_out_s
|
||||||
{
|
{
|
||||||
bool used;
|
bool used;
|
||||||
uint32_t pin; /* Output pin */
|
uint32_t pin; /* Output pin */
|
||||||
};
|
};
|
||||||
|
|
||||||
struct imxrt_flexpwm_module_s
|
struct imxrt_flexpwm_module_s
|
||||||
@ -90,11 +90,11 @@ struct imxrt_flexpwm_module_s
|
|||||||
|
|
||||||
struct imxrt_flexpwm_s
|
struct imxrt_flexpwm_s
|
||||||
{
|
{
|
||||||
const struct pwm_ops_s *ops; /* PWM operations */
|
const struct pwm_ops_s *ops; /* PWM operations */
|
||||||
struct imxrt_flexpwm_module_s *modules;
|
struct imxrt_flexpwm_module_s *modules;
|
||||||
uint8_t modules_num; /* Number of modules */
|
uint8_t modules_num; /* Number of modules */
|
||||||
uint32_t frequency; /* PWM frequency */
|
uint32_t frequency; /* PWM frequency */
|
||||||
uint32_t base; /* Base address of peripheral register */
|
uint32_t base; /* Base address of peripheral register */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* PWM driver methods */
|
/* PWM driver methods */
|
||||||
@ -154,12 +154,14 @@ static struct imxrt_flexpwm_module_s g_pwm1_modules[] =
|
|||||||
.used = true,
|
.used = true,
|
||||||
.pin = GPIO_FLEXPWM1_MOD1_A
|
.pin = GPIO_FLEXPWM1_MOD1_A
|
||||||
},
|
},
|
||||||
#ifdef CONFIG_IMXRT_FLEXPWM1_MOD1_COMP
|
#ifdef CONFIG_IMXRT_FLEXPWM1_MOD1_USE_OUT_B
|
||||||
.out_b =
|
.out_b =
|
||||||
{
|
{
|
||||||
.used = true,
|
.used = true,
|
||||||
.pin = GPIO_FLEXPWM1_MOD1_B
|
.pin = GPIO_FLEXPWM1_MOD1_B
|
||||||
},
|
},
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_IMXRT_FLEXPWM1_MOD1_COMP
|
||||||
.complementary = true,
|
.complementary = true,
|
||||||
#else
|
#else
|
||||||
.complementary = false,
|
.complementary = false,
|
||||||
@ -188,12 +190,14 @@ static struct imxrt_flexpwm_module_s g_pwm1_modules[] =
|
|||||||
.used = true,
|
.used = true,
|
||||||
.pin = GPIO_FLEXPWM1_MOD2_A
|
.pin = GPIO_FLEXPWM1_MOD2_A
|
||||||
},
|
},
|
||||||
#ifdef CONFIG_IMXRT_FLEXPWM1_MOD2_COMP
|
#ifdef CONFIG_IMXRT_FLEXPWM1_MOD2_USE_OUT_B
|
||||||
.out_b =
|
.out_b =
|
||||||
{
|
{
|
||||||
.used = true,
|
.used = true,
|
||||||
.pin = GPIO_FLEXPWM1_MOD2_B
|
.pin = GPIO_FLEXPWM1_MOD2_B
|
||||||
},
|
},
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_IMXRT_FLEXPWM1_MOD2_COMP
|
||||||
.complementary = true,
|
.complementary = true,
|
||||||
#else
|
#else
|
||||||
.complementary = false,
|
.complementary = false,
|
||||||
@ -222,12 +226,14 @@ static struct imxrt_flexpwm_module_s g_pwm1_modules[] =
|
|||||||
.used = true,
|
.used = true,
|
||||||
.pin = GPIO_FLEXPWM1_MOD3_A
|
.pin = GPIO_FLEXPWM1_MOD3_A
|
||||||
},
|
},
|
||||||
#ifdef CONFIG_IMXRT_FLEXPWM1_MOD3_COMP
|
#ifdef CONFIG_IMXRT_FLEXPWM1_MOD3_USE_OUT_B
|
||||||
.out_b =
|
.out_b =
|
||||||
{
|
{
|
||||||
.used = true,
|
.used = true,
|
||||||
.pin = GPIO_FLEXPWM1_MOD3_B
|
.pin = GPIO_FLEXPWM1_MOD3_B
|
||||||
},
|
},
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_IMXRT_FLEXPWM1_MOD3_COMP
|
||||||
.complementary = true,
|
.complementary = true,
|
||||||
#else
|
#else
|
||||||
.complementary = false,
|
.complementary = false,
|
||||||
@ -256,12 +262,14 @@ static struct imxrt_flexpwm_module_s g_pwm1_modules[] =
|
|||||||
.used = true,
|
.used = true,
|
||||||
.pin = GPIO_FLEXPWM1_MOD4_A
|
.pin = GPIO_FLEXPWM1_MOD4_A
|
||||||
},
|
},
|
||||||
#ifdef CONFIG_IMXRT_FLEXPWM1_MOD4_COMP
|
#ifdef CONFIG_IMXRT_FLEXPWM1_MOD4_USE_OUT_B
|
||||||
.out_b =
|
.out_b =
|
||||||
{
|
{
|
||||||
.used = true,
|
.used = true,
|
||||||
.pin = GPIO_FLEXPWM1_MOD4_B
|
.pin = GPIO_FLEXPWM1_MOD4_B
|
||||||
},
|
},
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_IMXRT_FLEXPWM1_MOD4_COMP
|
||||||
.complementary = true,
|
.complementary = true,
|
||||||
#else
|
#else
|
||||||
.complementary = false,
|
.complementary = false,
|
||||||
@ -308,12 +316,14 @@ static struct imxrt_flexpwm_module_s g_pwm2_modules[] =
|
|||||||
.used = true,
|
.used = true,
|
||||||
.pin = GPIO_FLEXPWM2_MOD1_A
|
.pin = GPIO_FLEXPWM2_MOD1_A
|
||||||
},
|
},
|
||||||
#ifdef CONFIG_IMXRT_FLEXPWM2_MOD1_COMP
|
#ifdef CONFIG_IMXRT_FLEXPWM2_MOD1_USE_OUT_B
|
||||||
.out_b =
|
.out_b =
|
||||||
{
|
{
|
||||||
.used = true,
|
.used = true,
|
||||||
.pin = GPIO_FLEXPWM2_MOD1_B
|
.pin = GPIO_FLEXPWM2_MOD1_B
|
||||||
},
|
},
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_IMXRT_FLEXPWM2_MOD1_COMP
|
||||||
.complementary = true,
|
.complementary = true,
|
||||||
#else
|
#else
|
||||||
.complementary = false,
|
.complementary = false,
|
||||||
@ -342,12 +352,14 @@ static struct imxrt_flexpwm_module_s g_pwm2_modules[] =
|
|||||||
.used = true,
|
.used = true,
|
||||||
.pin = GPIO_FLEXPWM2_MOD2_A,
|
.pin = GPIO_FLEXPWM2_MOD2_A,
|
||||||
},
|
},
|
||||||
#ifdef CONFIG_IMXRT_FLEXPWM2_MOD2_COMP
|
#ifdef CONFIG_IMXRT_FLEXPWM2_MOD2_USE_OUT_B
|
||||||
.out_b =
|
.out_b =
|
||||||
{
|
{
|
||||||
.used = true,
|
.used = true,
|
||||||
.pin = GPIO_FLEXPWM2_MOD2_B
|
.pin = GPIO_FLEXPWM2_MOD2_B
|
||||||
}
|
},
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_IMXRT_FLEXPWM2_MOD2_COMP
|
||||||
.complementary = true,
|
.complementary = true,
|
||||||
#else
|
#else
|
||||||
.complementary = false,
|
.complementary = false,
|
||||||
@ -376,12 +388,14 @@ static struct imxrt_flexpwm_module_s g_pwm2_modules[] =
|
|||||||
.used = true,
|
.used = true,
|
||||||
.pin = GPIO_FLEXPWM2_MOD3_A
|
.pin = GPIO_FLEXPWM2_MOD3_A
|
||||||
},
|
},
|
||||||
#ifdef CONFIG_IMXRT_FLEXPWM2_MOD3_COMP
|
#ifdef CONFIG_IMXRT_FLEXPWM2_MOD3_USE_OUT_B
|
||||||
.out_b =
|
.out_b =
|
||||||
{
|
{
|
||||||
.used = true,
|
.used = true,
|
||||||
.pin = GPIO_FLEXPWM2_MOD3_B
|
.pin = GPIO_FLEXPWM2_MOD3_B
|
||||||
},
|
},
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_IMXRT_FLEXPWM2_MOD3_COMP
|
||||||
.complementary = true,
|
.complementary = true,
|
||||||
#else
|
#else
|
||||||
.complementary = false,
|
.complementary = false,
|
||||||
@ -410,12 +424,14 @@ static struct imxrt_flexpwm_module_s g_pwm2_modules[] =
|
|||||||
.used = true,
|
.used = true,
|
||||||
.pin = GPIO_FLEXPWM2_MOD4_A
|
.pin = GPIO_FLEXPWM2_MOD4_A
|
||||||
},
|
},
|
||||||
#ifdef CONFIG_IMXRT_FLEXPWM2_MOD4_COMP
|
#ifdef CONFIG_IMXRT_FLEXPWM2_MOD4_USE_OUT_B
|
||||||
.out_b =
|
.out_b =
|
||||||
{
|
{
|
||||||
.used = true,
|
.used = true,
|
||||||
.pin = GPIO_FLEXPWM2_MOD4_B
|
.pin = GPIO_FLEXPWM2_MOD4_B
|
||||||
},
|
},
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_IMXRT_FLEXPWM2_MOD4_COMP
|
||||||
.complementary = true,
|
.complementary = true,
|
||||||
#else
|
#else
|
||||||
.complementary = false,
|
.complementary = false,
|
||||||
@ -462,12 +478,14 @@ static struct imxrt_flexpwm_module_s g_pwm3_modules[] =
|
|||||||
.used = true,
|
.used = true,
|
||||||
.pin = GPIO_FLEXPWM3_MOD1_A
|
.pin = GPIO_FLEXPWM3_MOD1_A
|
||||||
},
|
},
|
||||||
#ifdef CONFIG_IMXRT_FLEXPWM3_MOD1_COMP
|
#ifdef CONFIG_IMXRT_FLEXPWM3_MOD1_USE_OUT_B
|
||||||
.out_b =
|
.out_b =
|
||||||
{
|
{
|
||||||
.used = true,
|
.used = true,
|
||||||
.pin = GPIO_FLEXPWM3_MOD1_B
|
.pin = GPIO_FLEXPWM3_MOD1_B
|
||||||
},
|
},
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_IMXRT_FLEXPWM3_MOD1_COMP
|
||||||
.complementary = true,
|
.complementary = true,
|
||||||
#else
|
#else
|
||||||
.complementary = false,
|
.complementary = false,
|
||||||
@ -496,12 +514,14 @@ static struct imxrt_flexpwm_module_s g_pwm3_modules[] =
|
|||||||
.used = true,
|
.used = true,
|
||||||
.pin = GPIO_FLEXPWM3_MOD2_A
|
.pin = GPIO_FLEXPWM3_MOD2_A
|
||||||
},
|
},
|
||||||
#ifdef CONFIG_IMXRT_FLEXPWM3_MOD2_COMP
|
#ifdef CONFIG_IMXRT_FLEXPWM3_MOD2_USE_OUT_B
|
||||||
.out_b =
|
.out_b =
|
||||||
{
|
{
|
||||||
.used = true,
|
.used = true,
|
||||||
.pin = GPIO_FLEXPWM3_MOD2_B
|
.pin = GPIO_FLEXPWM3_MOD2_B
|
||||||
},
|
},
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_IMXRT_FLEXPWM3_MOD2_COMP
|
||||||
.complementary = true,
|
.complementary = true,
|
||||||
#else
|
#else
|
||||||
.complementary = false,
|
.complementary = false,
|
||||||
@ -530,12 +550,14 @@ static struct imxrt_flexpwm_module_s g_pwm3_modules[] =
|
|||||||
.used = true,
|
.used = true,
|
||||||
.pin = GPIO_FLEXPWM3_MOD3_A
|
.pin = GPIO_FLEXPWM3_MOD3_A
|
||||||
},
|
},
|
||||||
#ifdef CONFIG_IMXRT_FLEXPWM3_MOD3_COMP
|
#ifdef CONFIG_IMXRT_FLEXPWM3_MOD3_USE_OUT_B
|
||||||
.out_b =
|
.out_b =
|
||||||
{
|
{
|
||||||
.used = true,
|
.used = true,
|
||||||
.pin = GPIO_FLEXPWM3_MOD3_B
|
.pin = GPIO_FLEXPWM3_MOD3_B
|
||||||
},
|
},
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_IMXRT_FLEXPWM3_MOD3_COMP
|
||||||
.complementary = true,
|
.complementary = true,
|
||||||
#else
|
#else
|
||||||
.complementary = false,
|
.complementary = false,
|
||||||
@ -564,12 +586,14 @@ static struct imxrt_flexpwm_module_s g_pwm3_modules[] =
|
|||||||
.used = true,
|
.used = true,
|
||||||
.pin = GPIO_FLEXPWM3_MOD4_A
|
.pin = GPIO_FLEXPWM3_MOD4_A
|
||||||
},
|
},
|
||||||
#ifdef CONFIG_IMXRT_FLEXPWM3_MOD4_COMP
|
#ifdef CONFIG_IMXRT_FLEXPWM3_MOD4_USE_OUT_B
|
||||||
.out_b =
|
.out_b =
|
||||||
{
|
{
|
||||||
.used = true,
|
.used = true,
|
||||||
.pin = GPIO_FLEXPWM3_MOD4_B
|
.pin = GPIO_FLEXPWM3_MOD4_B
|
||||||
},
|
},
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_IMXRT_FLEXPWM3_MOD4_COMP
|
||||||
.complementary = true,
|
.complementary = true,
|
||||||
#else
|
#else
|
||||||
.complementary = false,
|
.complementary = false,
|
||||||
@ -616,12 +640,14 @@ static struct imxrt_flexpwm_module_s g_pwm4_modules[] =
|
|||||||
.used = true,
|
.used = true,
|
||||||
.pin = GPIO_FLEXPWM4_MOD1_A
|
.pin = GPIO_FLEXPWM4_MOD1_A
|
||||||
},
|
},
|
||||||
#ifdef CONFIG_IMXRT_FLEXPWM4_MOD1_COMP
|
#ifdef CONFIG_IMXRT_FLEXPWM4_MOD1_USE_OUT_B
|
||||||
.out_b =
|
.out_b =
|
||||||
{
|
{
|
||||||
.used = true,
|
.used = true,
|
||||||
.pin = GPIO_FLEXPWM4_MOD1_B
|
.pin = GPIO_FLEXPWM4_MOD1_B
|
||||||
}
|
},
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_IMXRT_FLEXPWM4_MOD1_COMP
|
||||||
.complementary = true,
|
.complementary = true,
|
||||||
#else
|
#else
|
||||||
.complementary = false,
|
.complementary = false,
|
||||||
@ -650,12 +676,14 @@ static struct imxrt_flexpwm_module_s g_pwm4_modules[] =
|
|||||||
.used = true,
|
.used = true,
|
||||||
.pin = GPIO_FLEXPWM4_MOD2_A
|
.pin = GPIO_FLEXPWM4_MOD2_A
|
||||||
},
|
},
|
||||||
#ifdef CONFIG_IMXRT_FLEXPWM4_MOD2_COMP
|
#ifdef CONFIG_IMXRT_FLEXPWM4_MOD2_USE_OUT_B
|
||||||
.out_b =
|
.out_b =
|
||||||
{
|
{
|
||||||
.used = true,
|
.used = true,
|
||||||
.pin = GPIO_FLEXPWM4_MOD2_B
|
.pin = GPIO_FLEXPWM4_MOD2_B
|
||||||
}
|
},
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_IMXRT_FLEXPWM4_MOD2_COMP
|
||||||
.complementary = true,
|
.complementary = true,
|
||||||
#else
|
#else
|
||||||
.complementary = false,
|
.complementary = false,
|
||||||
@ -684,12 +712,14 @@ static struct imxrt_flexpwm_module_s g_pwm4_modules[] =
|
|||||||
.used = true,
|
.used = true,
|
||||||
.pin = GPIO_FLEXPWM4_MOD3_A
|
.pin = GPIO_FLEXPWM4_MOD3_A
|
||||||
},
|
},
|
||||||
#ifdef CONFIG_IMXRT_FLEXPWM4_MOD3_COMP
|
#ifdef CONFIG_IMXRT_FLEXPWM4_MOD3_USE_OUT_B
|
||||||
.out_b =
|
.out_b =
|
||||||
{
|
{
|
||||||
.used = true,
|
.used = true,
|
||||||
.pin = GPIO_FLEXPWM4_MOD3_B
|
.pin = GPIO_FLEXPWM4_MOD3_B
|
||||||
}
|
},
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_IMXRT_FLEXPWM4_MOD3_COMP
|
||||||
.complementary = true,
|
.complementary = true,
|
||||||
#else
|
#else
|
||||||
.complementary = false,
|
.complementary = false,
|
||||||
@ -718,12 +748,14 @@ static struct imxrt_flexpwm_module_s g_pwm4_modules[] =
|
|||||||
.used = true,
|
.used = true,
|
||||||
.pin = GPIO_FLEXPWM4_MOD4_A
|
.pin = GPIO_FLEXPWM4_MOD4_A
|
||||||
},
|
},
|
||||||
#ifdef CONFIG_IMXRT_FLEXPWM4_MOD3_COMP
|
#ifdef CONFIG_IMXRT_FLEXPWM4_MOD4_USE_OUT_B
|
||||||
.out_b =
|
.out_b =
|
||||||
{
|
{
|
||||||
.used = true,
|
.used = true,
|
||||||
.pin = GPIO_FLEXPWM4_MOD4_B
|
.pin = GPIO_FLEXPWM4_MOD4_B
|
||||||
}
|
},
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_IMXRT_FLEXPWM4_MOD3_COMP
|
||||||
.complementary = true,
|
.complementary = true,
|
||||||
#else
|
#else
|
||||||
.complementary = false,
|
.complementary = false,
|
||||||
@ -774,7 +806,7 @@ static int pwm_change_freq(struct pwm_lowerhalf_s *dev,
|
|||||||
{
|
{
|
||||||
struct imxrt_flexpwm_s *priv = (struct imxrt_flexpwm_s *)dev;
|
struct imxrt_flexpwm_s *priv = (struct imxrt_flexpwm_s *)dev;
|
||||||
#ifdef CONFIG_PWM_MULTICHAN
|
#ifdef CONFIG_PWM_MULTICHAN
|
||||||
uint8_t shift = info->channels[channel].channel - 1;
|
uint8_t shift = (info->channels[channel].channel - 1) >> 1;
|
||||||
#else
|
#else
|
||||||
uint8_t shift = priv->modules[0].module - 1;
|
uint8_t shift = priv->modules[0].module - 1;
|
||||||
#endif
|
#endif
|
||||||
@ -856,7 +888,7 @@ static int pwm_set_output(struct pwm_lowerhalf_s *dev, uint8_t channel,
|
|||||||
uint16_t period;
|
uint16_t period;
|
||||||
uint16_t width;
|
uint16_t width;
|
||||||
uint16_t regval;
|
uint16_t regval;
|
||||||
uint8_t shift = channel - 1; /* Shift submodle offset addresses */
|
uint8_t shift = (channel - 1) >> 1; /* Shift submodule offset addresses */
|
||||||
|
|
||||||
/* Get the period value */
|
/* Get the period value */
|
||||||
|
|
||||||
@ -873,21 +905,38 @@ static int pwm_set_output(struct pwm_lowerhalf_s *dev, uint8_t channel,
|
|||||||
regval |= MCTRL_CLDOK(1 << shift);
|
regval |= MCTRL_CLDOK(1 << shift);
|
||||||
putreg16(regval, priv->base + IMXRT_FLEXPWM_MCTRL_OFFSET);
|
putreg16(regval, priv->base + IMXRT_FLEXPWM_MCTRL_OFFSET);
|
||||||
|
|
||||||
/* Write width to value register 3 and enable output A */
|
if ((channel - 1) % 2)
|
||||||
|
|
||||||
putreg16(width, priv->base + IMXRT_FLEXPWM_SM0VAL3_OFFSET
|
|
||||||
+ MODULE_OFFSET * shift);
|
|
||||||
|
|
||||||
regval = getreg16(priv->base + IMXRT_FLEXPWM_OUTEN_OFFSET);
|
|
||||||
regval |= OUTEN_PWMA_EN(1 << shift);
|
|
||||||
putreg16(regval, priv->base + IMXRT_FLEXPWM_OUTEN_OFFSET);
|
|
||||||
|
|
||||||
/* Enable output B if complementary option is turn on */
|
|
||||||
|
|
||||||
if (priv->modules[shift].complementary)
|
|
||||||
{
|
{
|
||||||
|
for (int i = 0; i < priv->modules_num; i++)
|
||||||
|
{
|
||||||
|
if ((priv->modules[i].module - 1) == shift)
|
||||||
|
{
|
||||||
|
/* Write width to value register 5 and enable output B */
|
||||||
|
|
||||||
|
if (!priv->modules[i].complementary)
|
||||||
|
{
|
||||||
|
putreg16(width, priv->base + IMXRT_FLEXPWM_SM0VAL5_OFFSET
|
||||||
|
+ MODULE_OFFSET * shift);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (priv->modules[i].out_b.used)
|
||||||
|
{
|
||||||
|
regval = getreg16(priv->base + IMXRT_FLEXPWM_OUTEN_OFFSET);
|
||||||
|
regval |= OUTEN_PWMB_EN(1 << shift);
|
||||||
|
putreg16(regval, priv->base + IMXRT_FLEXPWM_OUTEN_OFFSET);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Write width to value register 3 and enable output A */
|
||||||
|
|
||||||
|
putreg16(width, priv->base + IMXRT_FLEXPWM_SM0VAL3_OFFSET
|
||||||
|
+ MODULE_OFFSET * shift);
|
||||||
|
|
||||||
regval = getreg16(priv->base + IMXRT_FLEXPWM_OUTEN_OFFSET);
|
regval = getreg16(priv->base + IMXRT_FLEXPWM_OUTEN_OFFSET);
|
||||||
regval |= OUTEN_PWMB_EN(1 << shift);
|
regval |= OUTEN_PWMA_EN(1 << shift);
|
||||||
putreg16(regval, priv->base + IMXRT_FLEXPWM_OUTEN_OFFSET);
|
putreg16(regval, priv->base + IMXRT_FLEXPWM_OUTEN_OFFSET);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -940,17 +989,14 @@ static int pwm_setup(struct pwm_lowerhalf_s *dev)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Configure PIN_B if complementary option is turn on */
|
/* Configure PIN_B if option is turn on */
|
||||||
|
|
||||||
if (priv->modules[i].complementary)
|
if (priv->modules[i].out_b.used)
|
||||||
{
|
{
|
||||||
if (priv->modules[i].out_b.used)
|
pin = priv->modules[i].out_b.pin;
|
||||||
|
if (pin != 0)
|
||||||
{
|
{
|
||||||
pin = priv->modules[i].out_b.pin;
|
imxrt_config_gpio(pin);
|
||||||
if (pin != 0)
|
|
||||||
{
|
|
||||||
imxrt_config_gpio(pin);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1216,7 +1262,7 @@ static int pwm_start(struct pwm_lowerhalf_s *dev,
|
|||||||
|
|
||||||
/* Remember the channel number in bitmap */
|
/* Remember the channel number in bitmap */
|
||||||
|
|
||||||
ldok_map |= 1 << (info->channels[i].channel - 1);
|
ldok_map |= 1 << ((info->channels[i].channel - 1) >> 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
@ -1375,4 +1421,5 @@ struct pwm_lowerhalf_s *imxrt_pwminitialize(int pwm)
|
|||||||
|
|
||||||
return (struct pwm_lowerhalf_s *)priv;
|
return (struct pwm_lowerhalf_s *)priv;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* CONFIG_IMXRT_FLEXPWM */
|
#endif /* CONFIG_IMXRT_FLEXPWM */
|
||||||
|
Loading…
Reference in New Issue
Block a user