From 121d68f379002d4338c79b9a4125fff96c8de7b1 Mon Sep 17 00:00:00 2001 From: Erwan Gouriou Date: Wed, 21 Nov 2018 13:54:21 +0100 Subject: [PATCH] drivers/spi: stm32: Use device tree for device clock configuration Use DT generated symbols to configure clock bus/bits of STM32 SPI devices. Fixes #10447 Signed-off-by: Erwan Gouriou --- drivers/spi/spi_ll_stm32.c | 17 ++++++----------- soc/arm/st_stm32/stm32f0/dts_fixup.h | 5 +++++ soc/arm/st_stm32/stm32f1/dts_fixup.h | 4 ++++ soc/arm/st_stm32/stm32f3/dts_fixup.h | 8 ++++++++ soc/arm/st_stm32/stm32f4/dts_fixup.h | 12 ++++++++++++ soc/arm/st_stm32/stm32f7/dts_fixup.h | 12 ++++++++++++ soc/arm/st_stm32/stm32l0/dts_fixup.h | 4 ++++ soc/arm/st_stm32/stm32l4/dts_fixup.h | 6 ++++++ 8 files changed, 57 insertions(+), 11 deletions(-) diff --git a/drivers/spi/spi_ll_stm32.c b/drivers/spi/spi_ll_stm32.c index 581f05f8fee..3d70d4391d6 100644 --- a/drivers/spi/spi_ll_stm32.c +++ b/drivers/spi/spi_ll_stm32.c @@ -486,13 +486,8 @@ static void spi_stm32_irq_config_func_1(struct device *port); static const struct spi_stm32_config spi_stm32_cfg_1 = { .spi = (SPI_TypeDef *) DT_SPI_1_BASE_ADDRESS, .pclken = { -#ifdef CONFIG_SOC_SERIES_STM32F0X - .enr = LL_APB1_GRP2_PERIPH_SPI1, - .bus = STM32_CLOCK_BUS_APB1_2 -#else - .enr = LL_APB2_GRP1_PERIPH_SPI1, - .bus = STM32_CLOCK_BUS_APB2 -#endif + .enr = DT_SPI_1_CLOCK_BITS, + .bus = DT_SPI_1_CLOCK_BUS }, #ifdef CONFIG_SPI_STM32_INTERRUPT .irq_config = spi_stm32_irq_config_func_1, @@ -529,8 +524,8 @@ static void spi_stm32_irq_config_func_2(struct device *port); static const struct spi_stm32_config spi_stm32_cfg_2 = { .spi = (SPI_TypeDef *) DT_SPI_2_BASE_ADDRESS, .pclken = { - .enr = LL_APB1_GRP1_PERIPH_SPI2, - .bus = STM32_CLOCK_BUS_APB1 + .enr = DT_SPI_2_CLOCK_BITS, + .bus = DT_SPI_2_CLOCK_BUS }, #ifdef CONFIG_SPI_STM32_INTERRUPT .irq_config = spi_stm32_irq_config_func_2, @@ -567,8 +562,8 @@ static void spi_stm32_irq_config_func_3(struct device *port); static const struct spi_stm32_config spi_stm32_cfg_3 = { .spi = (SPI_TypeDef *) DT_SPI_3_BASE_ADDRESS, .pclken = { - .enr = LL_APB1_GRP1_PERIPH_SPI3, - .bus = STM32_CLOCK_BUS_APB1 + .enr = DT_SPI_3_CLOCK_BITS, + .bus = DT_SPI_3_CLOCK_BUS }, #ifdef CONFIG_SPI_STM32_INTERRUPT .irq_config = spi_stm32_irq_config_func_3, diff --git a/soc/arm/st_stm32/stm32f0/dts_fixup.h b/soc/arm/st_stm32/stm32f0/dts_fixup.h index df96d350284..0dded75d843 100644 --- a/soc/arm/st_stm32/stm32f0/dts_fixup.h +++ b/soc/arm/st_stm32/stm32f0/dts_fixup.h @@ -92,11 +92,16 @@ #define DT_SPI_1_IRQ_PRI DT_ST_STM32_SPI_FIFO_40013000_IRQ_0_PRIORITY #define DT_SPI_1_NAME DT_ST_STM32_SPI_FIFO_40013000_LABEL #define DT_SPI_1_IRQ DT_ST_STM32_SPI_FIFO_40013000_IRQ_0 +#define DT_SPI_1_CLOCK_BITS DT_ST_STM32_SPI_FIFO_40013000_CLOCK_BITS +#define DT_SPI_1_CLOCK_BUS DT_ST_STM32_SPI_FIFO_40013000_CLOCK_BUS + #define DT_SPI_2_BASE_ADDRESS DT_ST_STM32_SPI_FIFO_40003800_BASE_ADDRESS #define DT_SPI_2_IRQ_PRI DT_ST_STM32_SPI_FIFO_40003800_IRQ_0_PRIORITY #define DT_SPI_2_NAME DT_ST_STM32_SPI_FIFO_40003800_LABEL #define DT_SPI_2_IRQ DT_ST_STM32_SPI_FIFO_40003800_IRQ_0 +#define DT_SPI_2_CLOCK_BITS DT_ST_STM32_SPI_FIFO_40003800_CLOCK_BITS +#define DT_SPI_2_CLOCK_BUS DT_ST_STM32_SPI_FIFO_40003800_CLOCK_BUS #define DT_CAN_1_BASE_ADDRESS DT_ST_STM32_CAN_40006400_BASE_ADDRESS #define DT_CAN_1_BUS_SPEED DT_ST_STM32_CAN_40006400_BUS_SPEED diff --git a/soc/arm/st_stm32/stm32f1/dts_fixup.h b/soc/arm/st_stm32/stm32f1/dts_fixup.h index 92897aa3ba8..e159c5c3bcb 100644 --- a/soc/arm/st_stm32/stm32f1/dts_fixup.h +++ b/soc/arm/st_stm32/stm32f1/dts_fixup.h @@ -121,11 +121,15 @@ #define DT_SPI_1_IRQ_PRI DT_ST_STM32_SPI_40013000_IRQ_0_PRIORITY #define DT_SPI_1_NAME DT_ST_STM32_SPI_40013000_LABEL #define DT_SPI_1_IRQ DT_ST_STM32_SPI_40013000_IRQ_0 +#define DT_SPI_1_CLOCK_BITS DT_ST_STM32_SPI_40013000_CLOCK_BITS +#define DT_SPI_1_CLOCK_BUS DT_ST_STM32_SPI_40013000_CLOCK_BUS #define DT_SPI_2_BASE_ADDRESS DT_ST_STM32_SPI_40003800_BASE_ADDRESS #define DT_SPI_2_IRQ_PRI DT_ST_STM32_SPI_40003800_IRQ_0_PRIORITY #define DT_SPI_2_NAME DT_ST_STM32_SPI_40003800_LABEL #define DT_SPI_2_IRQ DT_ST_STM32_SPI_40003800_IRQ_0 +#define DT_SPI_2_CLOCK_BITS DT_ST_STM32_SPI_40003800_CLOCK_BITS +#define DT_SPI_2_CLOCK_BUS DT_ST_STM32_SPI_40003800_CLOCK_BUS #define DT_SPI_3_BASE_ADDRESS DT_ST_STM32_SPI_40003C00_BASE_ADDRESS #define DT_SPI_3_IRQ_PRI DT_ST_STM32_SPI_40003C00_IRQ_0_PRIORITY diff --git a/soc/arm/st_stm32/stm32f3/dts_fixup.h b/soc/arm/st_stm32/stm32f3/dts_fixup.h index a6149601a48..9d2bbbc52d8 100644 --- a/soc/arm/st_stm32/stm32f3/dts_fixup.h +++ b/soc/arm/st_stm32/stm32f3/dts_fixup.h @@ -114,21 +114,29 @@ #define DT_SPI_1_IRQ_PRI DT_ST_STM32_SPI_FIFO_40013000_IRQ_0_PRIORITY #define DT_SPI_1_NAME DT_ST_STM32_SPI_FIFO_40013000_LABEL #define DT_SPI_1_IRQ DT_ST_STM32_SPI_FIFO_40013000_IRQ_0 +#define DT_SPI_1_CLOCK_BITS DT_ST_STM32_SPI_FIFO_40013000_CLOCK_BITS +#define DT_SPI_1_CLOCK_BUS DT_ST_STM32_SPI_FIFO_40013000_CLOCK_BUS #define DT_SPI_2_BASE_ADDRESS DT_ST_STM32_SPI_FIFO_40003800_BASE_ADDRESS #define DT_SPI_2_IRQ_PRI DT_ST_STM32_SPI_FIFO_40003800_IRQ_0_PRIORITY #define DT_SPI_2_NAME DT_ST_STM32_SPI_FIFO_40003800_LABEL #define DT_SPI_2_IRQ DT_ST_STM32_SPI_FIFO_40003800_IRQ_0 +#define DT_SPI_2_CLOCK_BITS DT_ST_STM32_SPI_FIFO_40003800_CLOCK_BITS +#define DT_SPI_2_CLOCK_BUS DT_ST_STM32_SPI_FIFO_40003800_CLOCK_BUS #define DT_SPI_3_BASE_ADDRESS DT_ST_STM32_SPI_FIFO_40003C00_BASE_ADDRESS #define DT_SPI_3_IRQ_PRI DT_ST_STM32_SPI_FIFO_40003C00_IRQ_0_PRIORITY #define DT_SPI_3_NAME DT_ST_STM32_SPI_FIFO_40003C00_LABEL #define DT_SPI_3_IRQ DT_ST_STM32_SPI_FIFO_40003C00_IRQ_0 +#define DT_SPI_3_CLOCK_BITS DT_ST_STM32_SPI_FIFO_40003C00_CLOCK_BITS +#define DT_SPI_3_CLOCK_BUS DT_ST_STM32_SPI_FIFO_40003C00_CLOCK_BUS #define DT_SPI_4_BASE_ADDRESS DT_ST_STM32_SPI_FIFO_40013C00_BASE_ADDRESS #define DT_SPI_4_IRQ_PRI DT_ST_STM32_SPI_FIFO_40013C00_IRQ_0_PRIORITY #define DT_SPI_4_NAME DT_ST_STM32_SPI_FIFO_40013C00_LABEL #define DT_SPI_4_IRQ DT_ST_STM32_SPI_FIFO_40013C00_IRQ_0 +#define DT_SPI_4_CLOCK_BITS DT_ST_STM32_SPI_FIFO_40013C00_CLOCK_BITS +#define DT_SPI_4_CLOCK_BUS DT_ST_STM32_SPI_FIFO_40013C00_CLOCK_BUS #define DT_FLASH_DEV_BASE_ADDRESS DT_ST_STM32F3_FLASH_CONTROLLER_40022000_BASE_ADDRESS #define DT_FLASH_DEV_NAME DT_ST_STM32F3_FLASH_CONTROLLER_40022000_LABEL diff --git a/soc/arm/st_stm32/stm32f4/dts_fixup.h b/soc/arm/st_stm32/stm32f4/dts_fixup.h index 999e2aa4f14..1a9febf6499 100644 --- a/soc/arm/st_stm32/stm32f4/dts_fixup.h +++ b/soc/arm/st_stm32/stm32f4/dts_fixup.h @@ -167,31 +167,43 @@ #define DT_SPI_1_IRQ_PRI DT_ST_STM32_SPI_40013000_IRQ_0_PRIORITY #define DT_SPI_1_NAME DT_ST_STM32_SPI_40013000_LABEL #define DT_SPI_1_IRQ DT_ST_STM32_SPI_40013000_IRQ_0 +#define DT_SPI_1_CLOCK_BITS DT_ST_STM32_SPI_40013000_CLOCK_BITS +#define DT_SPI_1_CLOCK_BUS DT_ST_STM32_SPI_40013000_CLOCK_BUS #define DT_SPI_2_BASE_ADDRESS DT_ST_STM32_SPI_40003800_BASE_ADDRESS #define DT_SPI_2_IRQ_PRI DT_ST_STM32_SPI_40003800_IRQ_0_PRIORITY #define DT_SPI_2_NAME DT_ST_STM32_SPI_40003800_LABEL #define DT_SPI_2_IRQ DT_ST_STM32_SPI_40003800_IRQ_0 +#define DT_SPI_2_CLOCK_BITS DT_ST_STM32_SPI_40003800_CLOCK_BITS +#define DT_SPI_2_CLOCK_BUS DT_ST_STM32_SPI_40003800_CLOCK_BUS #define DT_SPI_3_BASE_ADDRESS DT_ST_STM32_SPI_40003C00_BASE_ADDRESS #define DT_SPI_3_IRQ_PRI DT_ST_STM32_SPI_40003C00_IRQ_0_PRIORITY #define DT_SPI_3_NAME DT_ST_STM32_SPI_40003C00_LABEL #define DT_SPI_3_IRQ DT_ST_STM32_SPI_40003C00_IRQ_0 +#define DT_SPI_3_CLOCK_BITS DT_ST_STM32_SPI_40003C00_CLOCK_BITS +#define DT_SPI_3_CLOCK_BUS DT_ST_STM32_SPI_40003C00_CLOCK_BUS #define DT_SPI_4_BASE_ADDRESS DT_ST_STM32_SPI_40013400_BASE_ADDRESS #define DT_SPI_4_IRQ_PRI DT_ST_STM32_SPI_40013400_IRQ_0_PRIORITY #define DT_SPI_4_NAME DT_ST_STM32_SPI_40013400_LABEL #define DT_SPI_4_IRQ DT_ST_STM32_SPI_40013400_IRQ_0 +#define DT_SPI_4_CLOCK_BITS DT_ST_STM32_SPI_40013400_CLOCK_BITS +#define DT_SPI_4_CLOCK_BUS DT_ST_STM32_SPI_40013400_CLOCK_BUS #define DT_SPI_5_BASE_ADDRESS DT_ST_STM32_SPI_40015000_BASE_ADDRESS #define DT_SPI_5_IRQ_PRI DT_ST_STM32_SPI_40015000_IRQ_0_PRIORITY #define DT_SPI_5_NAME DT_ST_STM32_SPI_40015000_LABEL #define DT_SPI_5_IRQ DT_ST_STM32_SPI_40015000_IRQ_0 +#define DT_SPI_5_CLOCK_BITS DT_ST_STM32_SPI_40015000_CLOCK_BITS +#define DT_SPI_5_CLOCK_BUS DT_ST_STM32_SPI_40015000_CLOCK_BUS #define DT_SPI_6_BASE_ADDRESS DT_ST_STM32_SPI_40015400_BASE_ADDRESS #define DT_SPI_6_IRQ_PRI DT_ST_STM32_SPI_40015400_IRQ_0_PRIORITY #define DT_SPI_6_NAME DT_ST_STM32_SPI_40015400_LABEL #define DT_SPI_6_IRQ DT_ST_STM32_SPI_40015400_IRQ_0 +#define DT_SPI_6_CLOCK_BITS DT_ST_STM32_SPI_40015400_CLOCK_BITS +#define DT_SPI_6_CLOCK_BUS DT_ST_STM32_SPI_40015400_CLOCK_BUS #define DT_I2S_1_BASE_ADDRESS DT_ST_STM32_I2S_40013000_BASE_ADDRESS #define DT_I2S_1_IRQ_PRI DT_ST_STM32_I2S_40013000_IRQ_0_PRIORITY diff --git a/soc/arm/st_stm32/stm32f7/dts_fixup.h b/soc/arm/st_stm32/stm32f7/dts_fixup.h index 013f53355c0..b97942c5a2a 100644 --- a/soc/arm/st_stm32/stm32f7/dts_fixup.h +++ b/soc/arm/st_stm32/stm32f7/dts_fixup.h @@ -199,31 +199,43 @@ #define DT_SPI_1_IRQ_PRI DT_ST_STM32_SPI_40013000_IRQ_0_PRIORITY #define DT_SPI_1_NAME DT_ST_STM32_SPI_40013000_LABEL #define DT_SPI_1_IRQ DT_ST_STM32_SPI_40013000_IRQ_0 +#define DT_SPI_1_CLOCK_BITS DT_ST_STM32_SPI_40013000_CLOCK_BITS +#define DT_SPI_1_CLOCK_BUS DT_ST_STM32_SPI_40013000_CLOCK_BUS #define DT_SPI_2_BASE_ADDRESS DT_ST_STM32_SPI_40003800_BASE_ADDRESS #define DT_SPI_2_IRQ_PRI DT_ST_STM32_SPI_40003800_IRQ_0_PRIORITY #define DT_SPI_2_NAME DT_ST_STM32_SPI_40003800_LABEL #define DT_SPI_2_IRQ DT_ST_STM32_SPI_40003800_IRQ_0 +#define DT_SPI_2_CLOCK_BITS DT_ST_STM32_SPI_40003800_CLOCK_BITS +#define DT_SPI_2_CLOCK_BUS DT_ST_STM32_SPI_40003800_CLOCK_BUS #define DT_SPI_3_BASE_ADDRESS DT_ST_STM32_SPI_40003C00_BASE_ADDRESS #define DT_SPI_3_IRQ_PRI DT_ST_STM32_SPI_40003C00_IRQ_0_PRIORITY #define DT_SPI_3_NAME DT_ST_STM32_SPI_40003C00_LABEL #define DT_SPI_3_IRQ DT_ST_STM32_SPI_40003C00_IRQ_0 +#define DT_SPI_3_CLOCK_BITS DT_ST_STM32_SPI_40003C00_CLOCK_BITS +#define DT_SPI_3_CLOCK_BUS DT_ST_STM32_SPI_40003C00_CLOCK_BUS #define DT_SPI_4_BASE_ADDRESS DT_ST_STM32_SPI_40013400_BASE_ADDRESS #define DT_SPI_4_IRQ_PRI DT_ST_STM32_SPI_40013400_IRQ_0_PRIORITY #define DT_SPI_4_NAME DT_ST_STM32_SPI_40013400_LABEL #define DT_SPI_4_IRQ DT_ST_STM32_SPI_40013400_IRQ_0 +#define DT_SPI_4_CLOCK_BITS DT_ST_STM32_SPI_40013400_CLOCK_BITS +#define DT_SPI_4_CLOCK_BUS DT_ST_STM32_SPI_40013400_CLOCK_BUS #define DT_SPI_5_BASE_ADDRESS DT_ST_STM32_SPI_40015000_BASE_ADDRESS #define DT_SPI_5_IRQ_PRI DT_ST_STM32_SPI_40015000_IRQ_0_PRIORITY #define DT_SPI_5_NAME DT_ST_STM32_SPI_40015000_LABEL #define DT_SPI_5_IRQ DT_ST_STM32_SPI_40015000_IRQ_0 +#define DT_SPI_5_CLOCK_BITS DT_ST_STM32_SPI_40015000_CLOCK_BITS +#define DT_SPI_5_CLOCK_BUS DT_ST_STM32_SPI_40015000_CLOCK_BUS #define DT_SPI_6_BASE_ADDRESS DT_ST_STM32_SPI_40015400_BASE_ADDRESS #define DT_SPI_6_IRQ_PRI DT_ST_STM32_SPI_40015400_IRQ_0_PRIORITY #define DT_SPI_6_NAME DT_ST_STM32_SPI_40015400_LABEL #define DT_SPI_6_IRQ DT_ST_STM32_SPI_40015400_IRQ_0 +#define DT_SPI_6_CLOCK_BITS DT_ST_STM32_SPI_40015400_CLOCK_BITS +#define DT_SPI_6_CLOCK_BUS DT_ST_STM32_SPI_40015400_CLOCK_BUS #ifdef DT_ST_STM32_OTGFS_50000000_BASE_ADDRESS #define DT_USB_BASE_ADDRESS DT_ST_STM32_OTGFS_50000000_BASE_ADDRESS diff --git a/soc/arm/st_stm32/stm32l0/dts_fixup.h b/soc/arm/st_stm32/stm32l0/dts_fixup.h index da6a6e1c318..4e7f0eac052 100644 --- a/soc/arm/st_stm32/stm32l0/dts_fixup.h +++ b/soc/arm/st_stm32/stm32l0/dts_fixup.h @@ -110,11 +110,15 @@ #define DT_SPI_1_IRQ_PRI DT_ST_STM32_SPI_40013000_IRQ_0_PRIORITY #define DT_SPI_1_NAME DT_ST_STM32_SPI_40013000_LABEL #define DT_SPI_1_IRQ DT_ST_STM32_SPI_40013000_IRQ_0 +#define DT_SPI_1_CLOCK_BITS DT_ST_STM32_SPI_40013000_CLOCK_BITS +#define DT_SPI_1_CLOCK_BUS DT_ST_STM32_SPI_40013000_CLOCK_BUS #define DT_SPI_2_BASE_ADDRESS DT_ST_STM32_SPI_40003800_BASE_ADDRESS #define DT_SPI_2_IRQ_PRI DT_ST_STM32_SPI_40003800_IRQ_0_PRIORITY #define DT_SPI_2_NAME DT_ST_STM32_SPI_40003800_LABEL #define DT_SPI_2_IRQ DT_ST_STM32_SPI_40003800_IRQ_0 +#define DT_SPI_2_CLOCK_BITS DT_ST_STM32_SPI_40003800_CLOCK_BITS +#define DT_SPI_2_CLOCK_BUS DT_ST_STM32_SPI_40003800_CLOCK_BUS #define DT_USB_BASE_ADDRESS DT_ST_STM32_USB_40005C00_BASE_ADDRESS #define DT_USB_IRQ DT_ST_STM32_USB_40005C00_IRQ_USB diff --git a/soc/arm/st_stm32/stm32l4/dts_fixup.h b/soc/arm/st_stm32/stm32l4/dts_fixup.h index 26f91a62101..ace8834ef11 100644 --- a/soc/arm/st_stm32/stm32l4/dts_fixup.h +++ b/soc/arm/st_stm32/stm32l4/dts_fixup.h @@ -181,16 +181,22 @@ #define DT_SPI_1_IRQ_PRI DT_ST_STM32_SPI_FIFO_40013000_IRQ_0_PRIORITY #define DT_SPI_1_NAME DT_ST_STM32_SPI_FIFO_40013000_LABEL #define DT_SPI_1_IRQ DT_ST_STM32_SPI_FIFO_40013000_IRQ_0 +#define DT_SPI_1_CLOCK_BITS DT_ST_STM32_SPI_FIFO_40013000_CLOCK_BITS +#define DT_SPI_1_CLOCK_BUS DT_ST_STM32_SPI_FIFO_40013000_CLOCK_BUS #define DT_SPI_2_BASE_ADDRESS DT_ST_STM32_SPI_FIFO_40003800_BASE_ADDRESS #define DT_SPI_2_IRQ_PRI DT_ST_STM32_SPI_FIFO_40003800_IRQ_0_PRIORITY #define DT_SPI_2_NAME DT_ST_STM32_SPI_FIFO_40003800_LABEL #define DT_SPI_2_IRQ DT_ST_STM32_SPI_FIFO_40003800_IRQ_0 +#define DT_SPI_2_CLOCK_BITS DT_ST_STM32_SPI_FIFO_40003800_CLOCK_BITS +#define DT_SPI_2_CLOCK_BUS DT_ST_STM32_SPI_FIFO_40003800_CLOCK_BUS #define DT_SPI_3_BASE_ADDRESS DT_ST_STM32_SPI_FIFO_40003C00_BASE_ADDRESS #define DT_SPI_3_IRQ_PRI DT_ST_STM32_SPI_FIFO_40003C00_IRQ_0_PRIORITY #define DT_SPI_3_NAME DT_ST_STM32_SPI_FIFO_40003C00_LABEL #define DT_SPI_3_IRQ DT_ST_STM32_SPI_FIFO_40003C00_IRQ_0 +#define DT_SPI_3_CLOCK_BITS DT_ST_STM32_SPI_FIFO_40003C00_CLOCK_BITS +#define DT_SPI_3_CLOCK_BUS DT_ST_STM32_SPI_FIFO_40003C00_CLOCK_BUS #define DT_FLASH_DEV_BASE_ADDRESS DT_ST_STM32L4_FLASH_CONTROLLER_40022000_BASE_ADDRESS #define DT_FLASH_DEV_NAME DT_ST_STM32L4_FLASH_CONTROLLER_40022000_LABEL