summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRbb666 <[email protected]>2023-05-26 13:24:51 +0800
committerMan, Jianting (Meco) <[email protected]>2023-05-27 02:31:49 -0400
commita0a3b3cf87c230b95271a7d635b0218947e859b8 (patch)
tree1bcaa3bd736c06d8ca9f862184322568cdcce03c
parent7a4f9d0ada302b5c1fab25591a8cf6d9b9147e4b (diff)
[bsp][Infineon]Fix drv_gpio and spi problem
-rw-r--r--bsp/Infineon/libraries/HAL_Drivers/drv_gpio.c16
-rw-r--r--bsp/Infineon/libraries/HAL_Drivers/drv_spi.c41
-rw-r--r--bsp/Infineon/psoc6-evaluationkit-062S2/board/Kconfig179
3 files changed, 122 insertions, 114 deletions
diff --git a/bsp/Infineon/libraries/HAL_Drivers/drv_gpio.c b/bsp/Infineon/libraries/HAL_Drivers/drv_gpio.c
index 9e8b8a2e8b..1fd09c1cd4 100644
--- a/bsp/Infineon/libraries/HAL_Drivers/drv_gpio.c
+++ b/bsp/Infineon/libraries/HAL_Drivers/drv_gpio.c
@@ -19,6 +19,8 @@
#define PIN_IFXPORT_MAX __IFX_PORT_MAX
+static cyhal_gpio_callback_data_t irq_cb_data[PIN_IFXPORT_MAX];
+
static const struct pin_irq_map pin_irq_map[] =
{
{CYHAL_PORT_0, ioss_interrupts_gpio_0_IRQn},
@@ -66,6 +68,8 @@ static struct rt_pin_irq_hdr pin_irq_handler_tab[] =
rt_inline void pin_irq_handler(int irqno)
{
+ Cy_GPIO_ClearInterrupt(CYHAL_GET_PORTADDR(irqno), CYHAL_GET_PIN(irqno));
+
if (pin_irq_handler_tab[irqno].hdr)
{
pin_irq_handler_tab[irqno].hdr(pin_irq_handler_tab[irqno].args);
@@ -93,8 +97,6 @@ static void irq_callback(void *callback_arg, cyhal_gpio_event_t event)
rt_interrupt_leave();
}
-cyhal_gpio_callback_data_t irq_cb_data;
-
static void ifx_pin_mode(rt_device_t dev, rt_base_t pin, rt_uint8_t mode)
{
rt_uint16_t gpio_pin;
@@ -247,7 +249,6 @@ static rt_err_t ifx_pin_irq_enable(struct rt_device *device, rt_base_t pin,
rt_uint16_t gpio_pin;
rt_base_t level;
rt_uint8_t pin_irq_mode;
-
const struct pin_irq_map *irqmap;
if (PORT_GET(pin) < PIN_IFXPORT_MAX)
@@ -272,10 +273,13 @@ static rt_err_t ifx_pin_irq_enable(struct rt_device *device, rt_base_t pin,
irqmap = &pin_irq_map[gpio_port];
- irq_cb_data.callback = irq_callback;
- irq_cb_data.callback_arg = (rt_uint16_t *)&pin_irq_map[gpio_port].port;
+#if !defined(COMPONENT_CAT1C)
+ IRQn_Type irqn = (IRQn_Type)(irqmap->irqno + PORT_GET(irqmap->port));
+#endif
+ irq_cb_data[irqn].callback = irq_callback;
+ irq_cb_data[irqn].callback_arg = (rt_uint16_t *)&pin_irq_map[gpio_port].port;
- cyhal_gpio_register_callback(gpio_pin, &irq_cb_data);
+ cyhal_gpio_register_callback(gpio_pin, &irq_cb_data[irqn]);
Cy_GPIO_ClearInterrupt(CYHAL_GET_PORTADDR(gpio_pin), CYHAL_GET_PIN(gpio_pin));
diff --git a/bsp/Infineon/libraries/HAL_Drivers/drv_spi.c b/bsp/Infineon/libraries/HAL_Drivers/drv_spi.c
index 80448b19fc..afa211b6cd 100644
--- a/bsp/Infineon/libraries/HAL_Drivers/drv_spi.c
+++ b/bsp/Infineon/libraries/HAL_Drivers/drv_spi.c
@@ -93,30 +93,35 @@ static void ifx_spi_init(struct ifx_spi *spi_device)
rt_err_t result = RT_EOK;
- result = cyhal_spi_init(spi_device->spi_handle_t->spi_obj, spi_device->spi_handle_t->mosi_pin, spi_device->spi_handle_t->miso_pin,
- spi_device->spi_handle_t->sck_pin, NC, NULL, spi_device->spi_handle_t->spi_obj->data_bits,
- spi_device->spi_handle_t->spi_obj->mode, false);
+ static uint8_t init_flag = 1;
- if (result != RT_EOK)
+ if (init_flag)
{
- LOG_E("spi%s init fail", spi_device->spi_handle_t->bus_name);
- return;
- }
+ result = cyhal_spi_init(spi_device->spi_handle_t->spi_obj, spi_device->spi_handle_t->mosi_pin, spi_device->spi_handle_t->miso_pin,
+ spi_device->spi_handle_t->sck_pin, NC, NULL, spi_device->spi_handle_t->spi_obj->data_bits,
+ spi_device->spi_handle_t->spi_obj->mode, false);
+ if (result != RT_EOK)
+ {
+ LOG_E("spi%s init fail", spi_device->spi_handle_t->bus_name);
+ return;
+ }
- LOG_I("[%s] freq:[%d]HZ\n", spi_device->spi_handle_t->bus_name, spi_device->spi_handle_t->freq);
+ result = cyhal_spi_set_frequency(spi_device->spi_handle_t->spi_obj, spi_device->spi_handle_t->freq);
+ if (result == CYHAL_SPI_RSLT_CLOCK_ERROR)
+ {
+ LOG_E("%s set frequency fail", spi_device->spi_handle_t->bus_name);
+ return;
+ }
+ LOG_I("[%s] freq:[%d]HZ\n", spi_device->spi_handle_t->bus_name, spi_device->spi_handle_t->freq);
- result = cyhal_spi_set_frequency(spi_device->spi_handle_t->spi_obj, spi_device->spi_handle_t->freq);
- if (result == CYHAL_SPI_RSLT_CLOCK_ERROR)
- {
- LOG_E("%s set frequency fail", spi_device->spi_handle_t->bus_name);
- return;
- }
+ /* Register a callback function to be called when the interrupt fires */
+ cyhal_spi_register_callback(spi_device->spi_handle_t->spi_obj, spi_interrupt_callback, spi_device);
- /* Register a callback function to be called when the interrupt fires */
- cyhal_spi_register_callback(spi_device->spi_handle_t->spi_obj, spi_interrupt_callback, spi_device);
+ /* Enable the events that will trigger the call back function */
+ cyhal_spi_enable_event(spi_device->spi_handle_t->spi_obj, CYHAL_SPI_IRQ_DONE, 4, true);
+ }
- /* Enable the events that will trigger the call back function */
- cyhal_spi_enable_event(spi_device->spi_handle_t->spi_obj, CYHAL_SPI_IRQ_DONE, 4, true);
+ init_flag = 0;
}
static rt_err_t spi_configure(struct rt_spi_device *device,
diff --git a/bsp/Infineon/psoc6-evaluationkit-062S2/board/Kconfig b/bsp/Infineon/psoc6-evaluationkit-062S2/board/Kconfig
index f942675ef9..ed5d4d7945 100644
--- a/bsp/Infineon/psoc6-evaluationkit-062S2/board/Kconfig
+++ b/bsp/Infineon/psoc6-evaluationkit-062S2/board/Kconfig
@@ -14,84 +14,6 @@ menu "Onboard Peripheral Drivers"
select BSP_USING_UART
select BSP_USING_UART6
default y
-
- menuconfig BSP_USING_SDMMC
- bool "Enable SDMMC (sd card)"
- default n
- select RT_USING_DFS
- select RT_USING_DFS_ELMFAT
- if BSP_USING_SDMMC
- menuconfig BSP_USING_SDCARD
- bool "Enable SDCARD (sd card)"
- select BSP_USING_SDCARD_PIN_CONFIG
- default n
- if BSP_USING_SDCARD
- config BSP_USING_SDCARD_EMMC_ENANBLE
- bool "Enable SDCARD emmc"
- default false
- config BSP_USING_SDCARD_BUS_WIDTH
- int "Enable SDCARD bus width"
- default 4
- config BSP_USING_SDCARD_LED_CTRL_ENANBLE
- bool "Enable SDCARD led control"
- default false
- menuconfig BSP_USING_SDCARD_PIN_CONFIG
- bool "Enable SDCARD pin config"
- default y
- if BSP_USING_SDCARD_PIN_CONFIG
- config BSP_USING_SDCARD_CMD_PIN
- int "Enable SDCARD cmd pin,default:P2_4 --> 20"
- default 20
- config BSP_USING_SDCARD_CLK_PIN
- int "Enable SDCARD clk pin,default:P2_5 --> 21"
- default 21
- config BSP_USING_SDCARD_DAT0_PIN
- int "Enable SDCARD dat0 pin,default:P2_0 --> 16"
- default 16
- config BSP_USING_SDCARD_DAT1_PIN
- int "Enable SDCARD dat1 pin,default:P2_1 --> 17"
- default 17
- config BSP_USING_SDCARD_DAT2_PIN
- int "Enable SDCARD dat2 pin,default:P2_2 --> 18"
- default 18
- config BSP_USING_SDCARD_DAT3_PIN
- int "Enable SDCARD dat3 pin,default:P2_3 --> 19"
- default 19
- config BSP_USING_SDCARD_DAT4_PIN
- int "Enable SDCARD dat4 pin,default:NC"
- default -1
- config BSP_USING_SDCARD_DAT5_PIN
- int "Enable SDCARD dat5 pin,default:NC"
- default -1
- config BSP_USING_SDCARD_DAT6_PIN
- int "Enable SDCARD dat6 pin,default:NC"
- default -1
- config BSP_USING_SDCARD_DAT7_PIN
- int "Enable SDCARD dat7 pin,default:NC"
- default -1
- config BSP_USING_SDCARD_DETECT_PIN
- int "Enable SDCARD detect pin,default:P2_6 --> 22"
- default 22
- config BSP_USING_SDCARD_IO_VOLT_SEL_PIN
- int "Enable SDCARD io volt sel pin,default:NC"
- default -1
- config BSP_USING_SDCARD_CARD_IF_PWR_EN_PIN
- int "Enable SDCARD card if pwr en pin,default:NC"
- default -1
- config BSP_USING_SDCARD_CARD_MECH_WRITE_PROT_PIN
- int "Enable SDCARD card mech write prot pin,default:NC"
- default -1
- if BSP_USING_SDCARD_LED_CTRL_ENANBLE
- config BSP_USING_SDCARD_LED_CTRL_PIN
- int "Enable SDCARD led ctrl pin,default:NC"
- default -1
- endif
- config BSP_USING_SDCARD_CARD_EMMC_RESET_PIN
- int "Enable SDCARD card emmc reset pin,default:NC"
- default -1
- endif
- endif
- endif
endmenu
menu "On-chip Peripheral Drivers"
@@ -213,18 +135,6 @@ menu "On-chip Peripheral Drivers"
default n
endif
- config BSP_USING_SDMMC
- bool "Enable SDMMC (sd card)"
- default n
- select RT_USING_SDIO
- select RT_USING_DFS
- select RT_USING_DFS_ELMFAT
- if BSP_USING_SDMMC
- config BSP_USING_SDIO1
- bool "Enable SDIO1 (sd card)"
- default n
- endif
-
menuconfig BSP_USING_HW_I2C
bool "Enable Hardware I2C Bus"
default n
@@ -336,6 +246,95 @@ menu "On-chip Peripheral Drivers"
default n
endif
+ menuconfig BSP_USING_SDMMC
+ bool "Enable SDMMC (sd card)"
+ default n
+ select RT_USING_DFS
+ select RT_USING_DFS_ELMFAT
+ if BSP_USING_SDMMC
+ menuconfig BSP_USING_SDCARD
+ bool "Enable SDCARD (sd card)"
+ select BSP_USING_SDCARD_PIN_CONFIG
+ default n
+ if BSP_USING_SDCARD
+ config BSP_USING_SDCARD_EMMC_ENANBLE
+ bool "Enable SDCARD emmc"
+ default false
+ config BSP_USING_SDCARD_BUS_WIDTH
+ int "Enable SDCARD bus width"
+ default 4
+ config BSP_USING_SDCARD_LED_CTRL_ENANBLE
+ bool "Enable SDCARD led control"
+ default false
+ menuconfig BSP_USING_SDCARD_PIN_CONFIG
+ bool "Enable SDCARD pin config"
+ default y
+ if BSP_USING_SDCARD_PIN_CONFIG
+ config BSP_USING_SDCARD_CMD_PIN
+ int "Enable SDCARD cmd pin,default:P2_4 --> 20"
+ default 20
+ config BSP_USING_SDCARD_CLK_PIN
+ int "Enable SDCARD clk pin,default:P2_5 --> 21"
+ default 21
+ config BSP_USING_SDCARD_DAT0_PIN
+ int "Enable SDCARD dat0 pin,default:P2_0 --> 16"
+ default 16
+ config BSP_USING_SDCARD_DAT1_PIN
+ int "Enable SDCARD dat1 pin,default:P2_1 --> 17"
+ default 17
+ config BSP_USING_SDCARD_DAT2_PIN
+ int "Enable SDCARD dat2 pin,default:P2_2 --> 18"
+ default 18
+ config BSP_USING_SDCARD_DAT3_PIN
+ int "Enable SDCARD dat3 pin,default:P2_3 --> 19"
+ default 19
+ config BSP_USING_SDCARD_DAT4_PIN
+ int "Enable SDCARD dat4 pin,default:NC"
+ default -1
+ config BSP_USING_SDCARD_DAT5_PIN
+ int "Enable SDCARD dat5 pin,default:NC"
+ default -1
+ config BSP_USING_SDCARD_DAT6_PIN
+ int "Enable SDCARD dat6 pin,default:NC"
+ default -1
+ config BSP_USING_SDCARD_DAT7_PIN
+ int "Enable SDCARD dat7 pin,default:NC"
+ default -1
+ config BSP_USING_SDCARD_DETECT_PIN
+ int "Enable SDCARD detect pin,default:P2_6 --> 22"
+ default 22
+ config BSP_USING_SDCARD_IO_VOLT_SEL_PIN
+ int "Enable SDCARD io volt sel pin,default:NC"
+ default -1
+ config BSP_USING_SDCARD_CARD_IF_PWR_EN_PIN
+ int "Enable SDCARD card if pwr en pin,default:NC"
+ default -1
+ config BSP_USING_SDCARD_CARD_MECH_WRITE_PROT_PIN
+ int "Enable SDCARD card mech write prot pin,default:NC"
+ default -1
+ if BSP_USING_SDCARD_LED_CTRL_ENANBLE
+ config BSP_USING_SDCARD_LED_CTRL_PIN
+ int "Enable SDCARD led ctrl pin,default:NC"
+ default -1
+ endif
+ config BSP_USING_SDCARD_CARD_EMMC_RESET_PIN
+ int "Enable SDCARD card emmc reset pin,default:NC"
+ default -1
+ endif
+ endif
+ endif
+
+ menuconfig BSP_USING_FS
+ bool "Enable filesystem"
+ default n
+ if BSP_USING_FS
+ config BSP_USING_SDCARD_FS
+ bool "Enable SDCARD filesystem"
+ select BSP_USING_SDHI
+ select RT_USING_DFS_ELMFAT
+ default n
+ endif
+
menuconfig BSP_USING_LVGL
bool "Enable LVGL for LCD"
select PKG_USING_LVGL