drivers/pinmux: stm32: Get remap functions visible across family
Move pinctrl remap functions out of stm32f1 definition in order to get it available to all series. Allows use of more IS_ENABLED macros in calling drivers and make code more readable. Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
This commit is contained in:
parent
0143b5e3de
commit
f44e931b0c
6 changed files with 62 additions and 51 deletions
|
@ -412,9 +412,10 @@ static int can_stm32_init(const struct device *dev)
|
||||||
|
|
||||||
/* configure pinmux */
|
/* configure pinmux */
|
||||||
if (cfg->pinctrl_len != 0U) {
|
if (cfg->pinctrl_len != 0U) {
|
||||||
#if DT_HAS_COMPAT_STATUS_OKAY(st_stm32f1_pinctrl)
|
|
||||||
|
if (IS_ENABLED(DT_HAS_COMPAT_STATUS_OKAY(st_stm32f1_pinctrl))) {
|
||||||
int remap;
|
int remap;
|
||||||
/* Check that remap configuration is coherent across pins */
|
/* Check remap configuration is coherent across pins */
|
||||||
remap = stm32_dt_pinctrl_remap_check(cfg->pinctrl,
|
remap = stm32_dt_pinctrl_remap_check(cfg->pinctrl,
|
||||||
cfg->pinctrl_len);
|
cfg->pinctrl_len);
|
||||||
if (remap < 0) {
|
if (remap < 0) {
|
||||||
|
@ -422,7 +423,7 @@ static int can_stm32_init(const struct device *dev)
|
||||||
}
|
}
|
||||||
|
|
||||||
stm32_dt_pinctrl_remap_set((uint32_t)cfg->can, remap);
|
stm32_dt_pinctrl_remap_set((uint32_t)cfg->can, remap);
|
||||||
#endif /* DT_HAS_COMPAT_STATUS_OKAY(st_stm32f1_pinctrl) */
|
}
|
||||||
|
|
||||||
stm32_dt_pinctrl_configure(cfg->pinctrl, cfg->pinctrl_len);
|
stm32_dt_pinctrl_configure(cfg->pinctrl, cfg->pinctrl_len);
|
||||||
}
|
}
|
||||||
|
|
|
@ -189,9 +189,10 @@ static int i2c_stm32_init(const struct device *dev)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (cfg->pinctrl_list_size != 0) {
|
if (cfg->pinctrl_list_size != 0) {
|
||||||
#if DT_HAS_COMPAT_STATUS_OKAY(st_stm32f1_pinctrl)
|
|
||||||
|
if (IS_ENABLED(DT_HAS_COMPAT_STATUS_OKAY(st_stm32f1_pinctrl))) {
|
||||||
int remap;
|
int remap;
|
||||||
/* Check that remap configuration is coherent across pins */
|
/* Check remap configuration is coherent across pins */
|
||||||
remap = stm32_dt_pinctrl_remap_check(cfg->pinctrl_list,
|
remap = stm32_dt_pinctrl_remap_check(cfg->pinctrl_list,
|
||||||
cfg->pinctrl_list_size);
|
cfg->pinctrl_list_size);
|
||||||
if (remap < 0) {
|
if (remap < 0) {
|
||||||
|
@ -199,7 +200,7 @@ static int i2c_stm32_init(const struct device *dev)
|
||||||
}
|
}
|
||||||
|
|
||||||
stm32_dt_pinctrl_remap_set((uint32_t)cfg->i2c, remap);
|
stm32_dt_pinctrl_remap_set((uint32_t)cfg->i2c, remap);
|
||||||
#endif /* DT_HAS_COMPAT_STATUS_OKAY(st_stm32f1_pinctrl) */
|
}
|
||||||
|
|
||||||
stm32_dt_pinctrl_configure(cfg->pinctrl_list,
|
stm32_dt_pinctrl_configure(cfg->pinctrl_list,
|
||||||
cfg->pinctrl_list_size);
|
cfg->pinctrl_list_size);
|
||||||
|
|
|
@ -180,7 +180,6 @@ void stm32_dt_pinctrl_configure(const struct soc_gpio_pinctrl *pinctrl,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if DT_HAS_COMPAT_STATUS_OKAY(st_stm32f1_pinctrl)
|
|
||||||
/**
|
/**
|
||||||
* @brief Helper function to check provided pinctrl remap configuration (Pin
|
* @brief Helper function to check provided pinctrl remap configuration (Pin
|
||||||
* remapping configuration should be the same on all pins)
|
* remapping configuration should be the same on all pins)
|
||||||
|
@ -194,6 +193,7 @@ void stm32_dt_pinctrl_configure(const struct soc_gpio_pinctrl *pinctrl,
|
||||||
int stm32_dt_pinctrl_remap_check(const struct soc_gpio_pinctrl *pinctrl,
|
int stm32_dt_pinctrl_remap_check(const struct soc_gpio_pinctrl *pinctrl,
|
||||||
size_t list_size)
|
size_t list_size)
|
||||||
{
|
{
|
||||||
|
#if DT_HAS_COMPAT_STATUS_OKAY(st_stm32f1_pinctrl)
|
||||||
int remap;
|
int remap;
|
||||||
uint32_t mux;
|
uint32_t mux;
|
||||||
|
|
||||||
|
@ -210,10 +210,14 @@ int stm32_dt_pinctrl_remap_check(const struct soc_gpio_pinctrl *pinctrl,
|
||||||
}
|
}
|
||||||
|
|
||||||
return remap;
|
return remap;
|
||||||
|
#else
|
||||||
|
return 0;
|
||||||
|
#endif /* DT_HAS_COMPAT_STATUS_OKAY(st_stm32f1_pinctrl) */
|
||||||
}
|
}
|
||||||
|
|
||||||
void stm32_dt_pinctrl_remap_set(uint32_t base, int remap)
|
void stm32_dt_pinctrl_remap_set(uint32_t base, int remap)
|
||||||
{
|
{
|
||||||
|
#if DT_HAS_COMPAT_STATUS_OKAY(st_stm32f1_pinctrl)
|
||||||
|
|
||||||
/* A valid remapping configuration is provided */
|
/* A valid remapping configuration is provided */
|
||||||
/* Apply remapping before proceeding with pin configuration */
|
/* Apply remapping before proceeding with pin configuration */
|
||||||
|
@ -420,6 +424,7 @@ void stm32_dt_pinctrl_remap_set(uint32_t base, int remap)
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* DT_HAS_COMPAT_STATUS_OKAY(st_stm32f1_pinctrl) */
|
#endif /* DT_HAS_COMPAT_STATUS_OKAY(st_stm32f1_pinctrl) */
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief pin setup
|
* @brief pin setup
|
||||||
|
|
|
@ -283,19 +283,20 @@ static int pwm_stm32_init(const struct device *dev)
|
||||||
|
|
||||||
/* configure pinmux */
|
/* configure pinmux */
|
||||||
if (cfg->pinctrl_len != 0U) {
|
if (cfg->pinctrl_len != 0U) {
|
||||||
#if DT_HAS_COMPAT_STATUS_OKAY(st_stm32f1_pinctrl)
|
|
||||||
/* apply F1 series remaps */
|
if (IS_ENABLED(DT_HAS_COMPAT_STATUS_OKAY(st_stm32f1_pinctrl))) {
|
||||||
int remap;
|
int remap;
|
||||||
|
|
||||||
remap = stm32_dt_pinctrl_remap_check(cfg->pinctrl,
|
remap = stm32_dt_pinctrl_remap_check(cfg->pinctrl,
|
||||||
cfg->pinctrl_len);
|
cfg->pinctrl_len);
|
||||||
if (remap < 0) {
|
if (remap < 0) {
|
||||||
LOG_ERR("pinctrl remap check failed (%d)", remap);
|
LOG_ERR("pinctrl remap check failed (%d)",
|
||||||
|
remap);
|
||||||
return remap;
|
return remap;
|
||||||
}
|
}
|
||||||
|
|
||||||
stm32_dt_pinctrl_remap_set((uint32_t)cfg->timer, remap);
|
stm32_dt_pinctrl_remap_set((uint32_t)cfg->timer, remap);
|
||||||
#endif /* DT_HAS_COMPAT_STATUS_OKAY(st_stm32f1_pinctrl) */
|
}
|
||||||
|
|
||||||
stm32_dt_pinctrl_configure(cfg->pinctrl, cfg->pinctrl_len);
|
stm32_dt_pinctrl_configure(cfg->pinctrl, cfg->pinctrl_len);
|
||||||
}
|
}
|
||||||
|
|
|
@ -680,17 +680,19 @@ static int uart_stm32_init(const struct device *dev)
|
||||||
|
|
||||||
/* Configure dt provided device signals when available */
|
/* Configure dt provided device signals when available */
|
||||||
if (config->pinctrl_list_size != 0) {
|
if (config->pinctrl_list_size != 0) {
|
||||||
#if DT_HAS_COMPAT_STATUS_OKAY(st_stm32f1_pinctrl)
|
if (IS_ENABLED(DT_HAS_COMPAT_STATUS_OKAY(st_stm32f1_pinctrl))) {
|
||||||
int remap;
|
int remap;
|
||||||
/* Check that remap configuration is coherent across pins */
|
/* Check remap configuration is coherent across pins */
|
||||||
remap = stm32_dt_pinctrl_remap_check(config->pinctrl_list,
|
remap = stm32_dt_pinctrl_remap_check(
|
||||||
|
config->pinctrl_list,
|
||||||
config->pinctrl_list_size);
|
config->pinctrl_list_size);
|
||||||
if (remap < 0) {
|
if (remap < 0) {
|
||||||
return remap;
|
return remap;
|
||||||
}
|
}
|
||||||
|
|
||||||
stm32_dt_pinctrl_remap_set((uint32_t)UART_STRUCT(dev), remap);
|
stm32_dt_pinctrl_remap_set((uint32_t)UART_STRUCT(dev),
|
||||||
#endif /* DT_HAS_COMPAT_STATUS_OKAY(st_stm32f1_pinctrl) */
|
remap);
|
||||||
|
}
|
||||||
|
|
||||||
stm32_dt_pinctrl_configure(config->pinctrl_list,
|
stm32_dt_pinctrl_configure(config->pinctrl_list,
|
||||||
config->pinctrl_list_size);
|
config->pinctrl_list_size);
|
||||||
|
|
|
@ -800,9 +800,10 @@ static int spi_stm32_init(const struct device *dev)
|
||||||
|
|
||||||
/* Configure dt provided device signals when available */
|
/* Configure dt provided device signals when available */
|
||||||
if (cfg->pinctrl_list_size != 0) {
|
if (cfg->pinctrl_list_size != 0) {
|
||||||
#if DT_HAS_COMPAT_STATUS_OKAY(st_stm32f1_pinctrl)
|
|
||||||
|
if (IS_ENABLED(DT_HAS_COMPAT_STATUS_OKAY(st_stm32f1_pinctrl))) {
|
||||||
int remap;
|
int remap;
|
||||||
/* Check that remap configuration is coherent across pins */
|
/* Check remap configuration is coherent across pins */
|
||||||
remap = stm32_dt_pinctrl_remap_check(cfg->pinctrl_list,
|
remap = stm32_dt_pinctrl_remap_check(cfg->pinctrl_list,
|
||||||
cfg->pinctrl_list_size);
|
cfg->pinctrl_list_size);
|
||||||
if (remap < 0) {
|
if (remap < 0) {
|
||||||
|
@ -810,7 +811,7 @@ static int spi_stm32_init(const struct device *dev)
|
||||||
}
|
}
|
||||||
|
|
||||||
stm32_dt_pinctrl_remap_set((uint32_t)cfg->spi, remap);
|
stm32_dt_pinctrl_remap_set((uint32_t)cfg->spi, remap);
|
||||||
#endif /* DT_HAS_COMPAT_STATUS_OKAY(st_stm32f1_pinctrl) */
|
}
|
||||||
|
|
||||||
stm32_dt_pinctrl_configure(cfg->pinctrl_list,
|
stm32_dt_pinctrl_configure(cfg->pinctrl_list,
|
||||||
cfg->pinctrl_list_size);
|
cfg->pinctrl_list_size);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue