From 94c5a75998c7968e2960ee83fced212b79e6bf75 Mon Sep 17 00:00:00 2001 From: Maureen Helm Date: Fri, 10 Jan 2020 17:43:12 -0600 Subject: [PATCH] drivers: spi: Refactor mcux dspi driver to use generated dts macros Refactors the mcux dspi driver to use generated device tree macros directly. Removes now unused dts fixup macros from kinetis socs. Signed-off-by: Maureen Helm --- drivers/spi/spi_mcux_dspi.c | 112 ++++++++------------------- soc/arm/nxp_kinetis/k2x/dts_fixup.h | 14 ---- soc/arm/nxp_kinetis/k6x/dts_fixup.h | 21 ----- soc/arm/nxp_kinetis/k8x/dts_fixup.h | 21 ----- soc/arm/nxp_kinetis/kv5x/dts_fixup.h | 21 ----- soc/arm/nxp_kinetis/kwx/dts_fixup.h | 28 ------- 6 files changed, 34 insertions(+), 183 deletions(-) diff --git a/drivers/spi/spi_mcux_dspi.c b/drivers/spi/spi_mcux_dspi.c index e65d371f26d..36202052002 100644 --- a/drivers/spi/spi_mcux_dspi.c +++ b/drivers/spi/spi_mcux_dspi.c @@ -267,89 +267,45 @@ static const struct spi_driver_api spi_mcux_driver_api = { .release = spi_mcux_release, }; +#define SPI_MCUX_DSPI_DEVICE(id) \ + static void spi_mcux_config_func_##id(struct device *dev); \ + static const struct spi_mcux_config spi_mcux_config_##id = { \ + .base = \ + (SPI_Type *)DT_NXP_KINETIS_DSPI_SPI_##id##_BASE_ADDRESS,\ + .clock_name = DT_NXP_KINETIS_DSPI_SPI_##id##_CLOCK_CONTROLLER,\ + .clock_subsys = \ + (clock_control_subsys_t)DT_NXP_KINETIS_DSPI_SPI_##id##_CLOCK_NAME,\ + .irq_config_func = spi_mcux_config_func_##id, \ + }; \ + static struct spi_mcux_data spi_mcux_data_##id = { \ + SPI_CONTEXT_INIT_LOCK(spi_mcux_data_##id, ctx), \ + SPI_CONTEXT_INIT_SYNC(spi_mcux_data_##id, ctx), \ + }; \ + DEVICE_AND_API_INIT(spi_mcux_##id, \ + DT_NXP_KINETIS_DSPI_SPI_##id##_LABEL, \ + &spi_mcux_init, \ + &spi_mcux_data_##id, \ + &spi_mcux_config_##id, \ + POST_KERNEL, \ + CONFIG_KERNEL_INIT_PRIORITY_DEVICE, \ + &spi_mcux_driver_api); \ + static void spi_mcux_config_func_##id(struct device *dev) \ + { \ + IRQ_CONNECT(DT_NXP_KINETIS_DSPI_SPI_##id##_IRQ_0, \ + DT_NXP_KINETIS_DSPI_SPI_##id##_IRQ_0_PRIORITY,\ + spi_mcux_isr, DEVICE_GET(spi_mcux_##id), \ + 0); \ + irq_enable(DT_NXP_KINETIS_DSPI_SPI_##id##_IRQ_0); \ + } + #ifdef CONFIG_SPI_0 -static void spi_mcux_config_func_0(struct device *dev); - -static const struct spi_mcux_config spi_mcux_config_0 = { - .base = (SPI_Type *) DT_SPI_0_BASE_ADDRESS, - .clock_name = DT_SPI_0_CLOCK_NAME, - .clock_subsys = (clock_control_subsys_t) DT_SPI_0_CLOCK_SUBSYS, - .irq_config_func = spi_mcux_config_func_0, -}; - -static struct spi_mcux_data spi_mcux_data_0 = { - SPI_CONTEXT_INIT_LOCK(spi_mcux_data_0, ctx), - SPI_CONTEXT_INIT_SYNC(spi_mcux_data_0, ctx), -}; - -DEVICE_AND_API_INIT(spi_mcux_0, DT_SPI_0_NAME, &spi_mcux_init, - &spi_mcux_data_0, &spi_mcux_config_0, - POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEVICE, - &spi_mcux_driver_api); - -static void spi_mcux_config_func_0(struct device *dev) -{ - IRQ_CONNECT(DT_SPI_0_IRQ, DT_SPI_0_IRQ_PRI, - spi_mcux_isr, DEVICE_GET(spi_mcux_0), 0); - - irq_enable(DT_SPI_0_IRQ); -} +SPI_MCUX_DSPI_DEVICE(0) #endif /* CONFIG_SPI_0 */ #ifdef CONFIG_SPI_1 -static void spi_mcux_config_func_1(struct device *dev); - -static const struct spi_mcux_config spi_mcux_config_1 = { - .base = (SPI_Type *) DT_SPI_1_BASE_ADDRESS, - .clock_name = DT_SPI_1_CLOCK_NAME, - .clock_subsys = (clock_control_subsys_t) DT_SPI_1_CLOCK_SUBSYS, - .irq_config_func = spi_mcux_config_func_1, -}; - -static struct spi_mcux_data spi_mcux_data_1 = { - SPI_CONTEXT_INIT_LOCK(spi_mcux_data_1, ctx), - SPI_CONTEXT_INIT_SYNC(spi_mcux_data_1, ctx), -}; - -DEVICE_AND_API_INIT(spi_mcux_1, DT_SPI_1_NAME, &spi_mcux_init, - &spi_mcux_data_1, &spi_mcux_config_1, - POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEVICE, - &spi_mcux_driver_api); - -static void spi_mcux_config_func_1(struct device *dev) -{ - IRQ_CONNECT(DT_SPI_1_IRQ, DT_SPI_1_IRQ_PRI, - spi_mcux_isr, DEVICE_GET(spi_mcux_1), 0); - - irq_enable(DT_SPI_1_IRQ); -} +SPI_MCUX_DSPI_DEVICE(1) #endif /* CONFIG_SPI_1 */ #ifdef CONFIG_SPI_2 -static void spi_mcux_config_func_2(struct device *dev); - -static const struct spi_mcux_config spi_mcux_config_2 = { - .base = (SPI_Type *) DT_SPI_2_BASE_ADDRESS, - .clock_name = DT_SPI_2_CLOCK_NAME, - .clock_subsys = (clock_control_subsys_t) DT_SPI_2_CLOCK_SUBSYS, - .irq_config_func = spi_mcux_config_func_2, -}; - -static struct spi_mcux_data spi_mcux_data_2 = { - SPI_CONTEXT_INIT_LOCK(spi_mcux_data_2, ctx), - SPI_CONTEXT_INIT_SYNC(spi_mcux_data_2, ctx), -}; - -DEVICE_AND_API_INIT(spi_mcux_2, DT_SPI_2_NAME, &spi_mcux_init, - &spi_mcux_data_2, &spi_mcux_config_2, - POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEVICE, - &spi_mcux_driver_api); - -static void spi_mcux_config_func_2(struct device *dev) -{ - IRQ_CONNECT(DT_SPI_2_IRQ, DT_SPI_2_IRQ_PRI, - spi_mcux_isr, DEVICE_GET(spi_mcux_2), 0); - - irq_enable(DT_SPI_2_IRQ); -} +SPI_MCUX_DSPI_DEVICE(2) #endif /* CONFIG_SPI_2 */ diff --git a/soc/arm/nxp_kinetis/k2x/dts_fixup.h b/soc/arm/nxp_kinetis/k2x/dts_fixup.h index 59c5c8d3a41..de958cfcf4f 100644 --- a/soc/arm/nxp_kinetis/k2x/dts_fixup.h +++ b/soc/arm/nxp_kinetis/k2x/dts_fixup.h @@ -24,20 +24,6 @@ #define DT_WDT_0_CLOCK_NAME DT_NXP_KINETIS_WDOG_40052000_CLOCK_CONTROLLER #define DT_WDT_0_CLOCK_SUBSYS DT_NXP_KINETIS_WDOG_40052000_CLOCK_NAME -#define DT_SPI_0_NAME DT_NXP_KINETIS_DSPI_4002C000_LABEL -#define DT_SPI_0_BASE_ADDRESS DT_NXP_KINETIS_DSPI_4002C000_BASE_ADDRESS -#define DT_SPI_0_IRQ DT_NXP_KINETIS_DSPI_4002C000_IRQ_0 -#define DT_SPI_0_IRQ_PRI DT_NXP_KINETIS_DSPI_4002C000_IRQ_0_PRIORITY -#define DT_SPI_0_CLOCK_NAME DT_NXP_KINETIS_DSPI_4002C000_CLOCK_CONTROLLER -#define DT_SPI_0_CLOCK_SUBSYS DT_NXP_KINETIS_DSPI_4002C000_CLOCK_NAME - -#define DT_SPI_1_NAME DT_NXP_KINETIS_DSPI_4002D000_LABEL -#define DT_SPI_1_BASE_ADDRESS DT_NXP_KINETIS_DSPI_4002D000_BASE_ADDRESS -#define DT_SPI_1_IRQ DT_NXP_KINETIS_DSPI_4002D000_IRQ_0 -#define DT_SPI_1_IRQ_PRI DT_NXP_KINETIS_DSPI_4002D000_IRQ_0_PRIORITY -#define DT_SPI_1_CLOCK_NAME DT_NXP_KINETIS_DSPI_4002D000_CLOCK_CONTROLLER -#define DT_SPI_1_CLOCK_SUBSYS DT_NXP_KINETIS_DSPI_4002D000_CLOCK_NAME - #define DT_USBD_KINETIS_NAME DT_NXP_KINETIS_USBD_40072000_LABEL #define DT_USBD_KINETIS_IRQ DT_NXP_KINETIS_USBD_40072000_IRQ_USB_OTG #define DT_USBD_KINETIS_IRQ_PRI DT_NXP_KINETIS_USBD_40072000_IRQ_USB_OTG_PRIORITY diff --git a/soc/arm/nxp_kinetis/k6x/dts_fixup.h b/soc/arm/nxp_kinetis/k6x/dts_fixup.h index 8b07616b6ca..1eb0b97132e 100644 --- a/soc/arm/nxp_kinetis/k6x/dts_fixup.h +++ b/soc/arm/nxp_kinetis/k6x/dts_fixup.h @@ -27,27 +27,6 @@ #define DT_WDT_0_CLOCK_NAME DT_NXP_KINETIS_WDOG_40052000_CLOCK_CONTROLLER #define DT_WDT_0_CLOCK_SUBSYS DT_NXP_KINETIS_WDOG_40052000_CLOCK_NAME -#define DT_SPI_0_NAME DT_NXP_KINETIS_DSPI_4002C000_LABEL -#define DT_SPI_0_BASE_ADDRESS DT_NXP_KINETIS_DSPI_4002C000_BASE_ADDRESS -#define DT_SPI_0_IRQ DT_NXP_KINETIS_DSPI_4002C000_IRQ_0 -#define DT_SPI_0_IRQ_PRI DT_NXP_KINETIS_DSPI_4002C000_IRQ_0_PRIORITY -#define DT_SPI_0_CLOCK_NAME DT_NXP_KINETIS_DSPI_4002C000_CLOCK_CONTROLLER -#define DT_SPI_0_CLOCK_SUBSYS DT_NXP_KINETIS_DSPI_4002C000_CLOCK_NAME - -#define DT_SPI_1_NAME DT_NXP_KINETIS_DSPI_4002D000_LABEL -#define DT_SPI_1_BASE_ADDRESS DT_NXP_KINETIS_DSPI_4002D000_BASE_ADDRESS -#define DT_SPI_1_IRQ DT_NXP_KINETIS_DSPI_4002D000_IRQ_0 -#define DT_SPI_1_IRQ_PRI DT_NXP_KINETIS_DSPI_4002D000_IRQ_0_PRIORITY -#define DT_SPI_1_CLOCK_NAME DT_NXP_KINETIS_DSPI_4002D000_CLOCK_CONTROLLER -#define DT_SPI_1_CLOCK_SUBSYS DT_NXP_KINETIS_DSPI_4002D000_CLOCK_NAME - -#define DT_SPI_2_NAME DT_NXP_KINETIS_DSPI_400AC000_LABEL -#define DT_SPI_2_BASE_ADDRESS DT_NXP_KINETIS_DSPI_400AC000_BASE_ADDRESS -#define DT_SPI_2_IRQ DT_NXP_KINETIS_DSPI_400AC000_IRQ_0 -#define DT_SPI_2_IRQ_PRI DT_NXP_KINETIS_DSPI_400AC000_IRQ_0_PRIORITY -#define DT_SPI_2_CLOCK_NAME DT_NXP_KINETIS_DSPI_400AC000_CLOCK_CONTROLLER -#define DT_SPI_2_CLOCK_SUBSYS DT_NXP_KINETIS_DSPI_400AC000_CLOCK_NAME - #define DT_USBD_KINETIS_NAME DT_NXP_KINETIS_USBD_40072000_LABEL #define DT_USBD_KINETIS_IRQ DT_NXP_KINETIS_USBD_40072000_IRQ_USB_OTG #define DT_USBD_KINETIS_IRQ_PRI DT_NXP_KINETIS_USBD_40072000_IRQ_USB_OTG_PRIORITY diff --git a/soc/arm/nxp_kinetis/k8x/dts_fixup.h b/soc/arm/nxp_kinetis/k8x/dts_fixup.h index 36e0af50efe..1263909b674 100644 --- a/soc/arm/nxp_kinetis/k8x/dts_fixup.h +++ b/soc/arm/nxp_kinetis/k8x/dts_fixup.h @@ -37,27 +37,6 @@ #define DT_RTC_MCUX_0_IRQ DT_NXP_KINETIS_RTC_4003D000_IRQ_ALARM #define DT_RTC_MCUX_0_IRQ_PRI DT_NXP_KINETIS_RTC_4003D000_IRQ_ALARM_PRIORITY -#define DT_SPI_0_NAME DT_NXP_KINETIS_DSPI_4002C000_LABEL -#define DT_SPI_0_BASE_ADDRESS DT_NXP_KINETIS_DSPI_4002C000_BASE_ADDRESS -#define DT_SPI_0_IRQ DT_NXP_KINETIS_DSPI_4002C000_IRQ_0 -#define DT_SPI_0_IRQ_PRI DT_NXP_KINETIS_DSPI_4002C000_IRQ_0_PRIORITY -#define DT_SPI_0_CLOCK_NAME DT_NXP_KINETIS_DSPI_4002C000_CLOCK_CONTROLLER -#define DT_SPI_0_CLOCK_SUBSYS DT_NXP_KINETIS_DSPI_4002C000_CLOCK_NAME - -#define DT_SPI_1_NAME DT_NXP_KINETIS_DSPI_4002D000_LABEL -#define DT_SPI_1_BASE_ADDRESS DT_NXP_KINETIS_DSPI_4002D000_BASE_ADDRESS -#define DT_SPI_1_IRQ DT_NXP_KINETIS_DSPI_4002D000_IRQ_0 -#define DT_SPI_1_IRQ_PRI DT_NXP_KINETIS_DSPI_4002D000_IRQ_0_PRIORITY -#define DT_SPI_1_CLOCK_NAME DT_NXP_KINETIS_DSPI_4002D000_CLOCK_CONTROLLER -#define DT_SPI_1_CLOCK_SUBSYS DT_NXP_KINETIS_DSPI_4002D000_CLOCK_NAME - -#define DT_SPI_2_NAME DT_NXP_KINETIS_DSPI_400AC000_LABEL -#define DT_SPI_2_BASE_ADDRESS DT_NXP_KINETIS_DSPI_400AC000_BASE_ADDRESS -#define DT_SPI_2_IRQ DT_NXP_KINETIS_DSPI_400AC000_IRQ_0 -#define DT_SPI_2_IRQ_PRI DT_NXP_KINETIS_DSPI_400AC000_IRQ_0_PRIORITY -#define DT_SPI_2_CLOCK_NAME DT_NXP_KINETIS_DSPI_400AC000_CLOCK_CONTROLLER -#define DT_SPI_2_CLOCK_SUBSYS DT_NXP_KINETIS_DSPI_400AC000_CLOCK_NAME - #define DT_USBD_KINETIS_NAME DT_NXP_KINETIS_USBD_40072000_LABEL #define DT_USBD_KINETIS_IRQ DT_NXP_KINETIS_USBD_40072000_IRQ_USB_OTG #define DT_USBD_KINETIS_IRQ_PRI DT_NXP_KINETIS_USBD_40072000_IRQ_USB_OTG_PRIORITY diff --git a/soc/arm/nxp_kinetis/kv5x/dts_fixup.h b/soc/arm/nxp_kinetis/kv5x/dts_fixup.h index bc914f99f07..80c05ab5491 100644 --- a/soc/arm/nxp_kinetis/kv5x/dts_fixup.h +++ b/soc/arm/nxp_kinetis/kv5x/dts_fixup.h @@ -22,24 +22,3 @@ #define DT_ADC_0_IRQ DT_NXP_KINETIS_ADC16_4003B000_IRQ_0 #define DT_ADC_0_IRQ_PRI DT_NXP_KINETIS_ADC16_4003B000_IRQ_0_PRIORITY #define DT_ADC_0_NAME DT_NXP_KINETIS_ADC16_4003B000_LABEL - -#define DT_SPI_0_NAME DT_NXP_KINETIS_DSPI_4002C000_LABEL -#define DT_SPI_0_BASE_ADDRESS DT_NXP_KINETIS_DSPI_4002C000_BASE_ADDRESS -#define DT_SPI_0_IRQ DT_NXP_KINETIS_DSPI_4002C000_IRQ_0 -#define DT_SPI_0_IRQ_PRI DT_NXP_KINETIS_DSPI_4002C000_IRQ_0_PRIORITY -#define DT_SPI_0_CLOCK_NAME DT_NXP_KINETIS_DSPI_4002C000_CLOCK_CONTROLLER -#define DT_SPI_0_CLOCK_SUBSYS DT_NXP_KINETIS_DSPI_4002C000_CLOCK_NAME - -#define DT_SPI_1_NAME DT_NXP_KINETIS_DSPI_4002D000_LABEL -#define DT_SPI_1_BASE_ADDRESS DT_NXP_KINETIS_DSPI_4002D000_BASE_ADDRESS -#define DT_SPI_1_IRQ DT_NXP_KINETIS_DSPI_4002D000_IRQ_0 -#define DT_SPI_1_IRQ_PRI DT_NXP_KINETIS_DSPI_4002D000_IRQ_0_PRIORITY -#define DT_SPI_1_CLOCK_NAME DT_NXP_KINETIS_DSPI_4002D000_CLOCK_CONTROLLER -#define DT_SPI_1_CLOCK_SUBSYS DT_NXP_KINETIS_DSPI_4002D000_CLOCK_NAME - -#define DT_SPI_2_NAME DT_NXP_KINETIS_DSPI_400AC000_LABEL -#define DT_SPI_2_BASE_ADDRESS DT_NXP_KINETIS_DSPI_400AC000_BASE_ADDRESS -#define DT_SPI_2_IRQ DT_NXP_KINETIS_DSPI_400AC000_IRQ_0 -#define DT_SPI_2_IRQ_PRI DT_NXP_KINETIS_DSPI_400AC000_IRQ_0_PRIORITY -#define DT_SPI_2_CLOCK_NAME DT_NXP_KINETIS_DSPI_400AC000_CLOCK_CONTROLLER -#define DT_SPI_2_CLOCK_SUBSYS DT_NXP_KINETIS_DSPI_400AC000_CLOCK_NAME diff --git a/soc/arm/nxp_kinetis/kwx/dts_fixup.h b/soc/arm/nxp_kinetis/kwx/dts_fixup.h index 9d23f2d9e4a..6ea14377304 100644 --- a/soc/arm/nxp_kinetis/kwx/dts_fixup.h +++ b/soc/arm/nxp_kinetis/kwx/dts_fixup.h @@ -29,20 +29,6 @@ #define DT_WDT_0_CLOCK_NAME DT_NXP_KINETIS_WDOG_40052000_CLOCK_CONTROLLER #define DT_WDT_0_CLOCK_SUBSYS DT_NXP_KINETIS_WDOG_40052000_CLOCK_NAME -#define DT_SPI_0_NAME DT_NXP_KINETIS_DSPI_4002C000_LABEL -#define DT_SPI_0_BASE_ADDRESS DT_NXP_KINETIS_DSPI_4002C000_BASE_ADDRESS -#define DT_SPI_0_IRQ DT_NXP_KINETIS_DSPI_4002C000_IRQ_0 -#define DT_SPI_0_IRQ_PRI DT_NXP_KINETIS_DSPI_4002C000_IRQ_0_PRIORITY -#define DT_SPI_0_CLOCK_NAME DT_NXP_KINETIS_DSPI_4002C000_CLOCK_CONTROLLER -#define DT_SPI_0_CLOCK_SUBSYS DT_NXP_KINETIS_DSPI_4002C000_CLOCK_NAME - -#define DT_SPI_1_NAME DT_NXP_KINETIS_DSPI_4002D000_LABEL -#define DT_SPI_1_BASE_ADDRESS DT_NXP_KINETIS_DSPI_4002D000_BASE_ADDRESS -#define DT_SPI_1_IRQ DT_NXP_KINETIS_DSPI_4002D000_IRQ_0 -#define DT_SPI_1_IRQ_PRI DT_NXP_KINETIS_DSPI_4002D000_IRQ_0_PRIORITY -#define DT_SPI_1_CLOCK_NAME DT_NXP_KINETIS_DSPI_4002D000_CLOCK_CONTROLLER -#define DT_SPI_1_CLOCK_SUBSYS DT_NXP_KINETIS_DSPI_4002D000_CLOCK_NAME - #define DT_USBD_KINETIS_NAME DT_NXP_KINETIS_USBD_40072000_LABEL #define DT_USBD_KINETIS_IRQ DT_NXP_KINETIS_USBD_40072000_IRQ_USB_OTG #define DT_USBD_KINETIS_IRQ_PRI DT_NXP_KINETIS_USBD_40072000_IRQ_USB_OTG_PRIORITY @@ -62,20 +48,6 @@ #define DT_FLASH_DEV_BASE_ADDRESS DT_NXP_KINETIS_FTFA_40020000_BASE_ADDRESS #define DT_FLASH_DEV_NAME DT_NXP_KINETIS_FTFA_40020000_LABEL -#define DT_SPI_0_NAME DT_NXP_KINETIS_DSPI_4002C000_LABEL -#define DT_SPI_0_BASE_ADDRESS DT_NXP_KINETIS_DSPI_4002C000_BASE_ADDRESS -#define DT_SPI_0_IRQ DT_NXP_KINETIS_DSPI_4002C000_IRQ_0 -#define DT_SPI_0_IRQ_PRI DT_NXP_KINETIS_DSPI_4002C000_IRQ_0_PRIORITY -#define DT_SPI_0_CLOCK_NAME DT_NXP_KINETIS_DSPI_4002C000_CLOCK_CONTROLLER -#define DT_SPI_0_CLOCK_SUBSYS DT_NXP_KINETIS_DSPI_4002C000_CLOCK_NAME - -#define DT_SPI_1_NAME DT_NXP_KINETIS_DSPI_4002D000_LABEL -#define DT_SPI_1_BASE_ADDRESS DT_NXP_KINETIS_DSPI_4002D000_BASE_ADDRESS -#define DT_SPI_1_IRQ DT_NXP_KINETIS_DSPI_4002D000_IRQ_0 -#define DT_SPI_1_IRQ_PRI DT_NXP_KINETIS_DSPI_4002D000_IRQ_0_PRIORITY -#define DT_SPI_1_CLOCK_NAME DT_NXP_KINETIS_DSPI_4002D000_CLOCK_CONTROLLER -#define DT_SPI_1_CLOCK_SUBSYS DT_NXP_KINETIS_DSPI_4002D000_CLOCK_NAME - #define DT_ENTROPY_MCUX_TRNG_BASE_ADDRESS DT_NXP_KINETIS_TRNG_40029000_BASE_ADDRESS #define DT_ENTROPY_MCUX_TRNG_IRQ DT_NXP_KINETIS_TRNG_40029000_IRQ_0 #define DT_ENTROPY_MCUX_TRNG_IRQ_PRI DT_NXP_KINETIS_TRNG_40029000_IRQ_0_PRIORITY