From 90f4d94ce82fb354e2ac455b52e18c4e0ceee50f Mon Sep 17 00:00:00 2001 From: Rbb666 Date: Thu, 11 Apr 2024 17:45:38 +0800 Subject: [PATCH] Add ek-ra8d1 rw007 support. --- bsp/renesas/ra8d1-ek/board/Kconfig | 37 +++++++++++ bsp/renesas/ra8d1-ek/board/ports/gpio_cfg.h | 29 ++++++--- bsp/renesas/ra8d1-ek/board/ports/omv_fs/ff.h | 49 -------------- .../ra8d1-ek/board/ports/wifi/SConscript | 22 +++++++ .../ra8d1-ek/board/ports/wifi/drv_rw007.c | 65 +++++++++++++++++++ .../ra8d1-vision-board/board/ports/gpio_cfg.h | 31 ++++++--- bsp/renesas/ra8m1-ek/board/ports/gpio_cfg.h | 29 ++++++--- 7 files changed, 188 insertions(+), 74 deletions(-) delete mode 100644 bsp/renesas/ra8d1-ek/board/ports/omv_fs/ff.h create mode 100644 bsp/renesas/ra8d1-ek/board/ports/wifi/SConscript create mode 100644 bsp/renesas/ra8d1-ek/board/ports/wifi/drv_rw007.c diff --git a/bsp/renesas/ra8d1-ek/board/Kconfig b/bsp/renesas/ra8d1-ek/board/Kconfig index f863c603f3..b65f9228de 100644 --- a/bsp/renesas/ra8d1-ek/board/Kconfig +++ b/bsp/renesas/ra8d1-ek/board/Kconfig @@ -607,4 +607,41 @@ menu "Hardware Drivers Config" select RT_USING_NETDEV default n endmenu + menu "Board extended module Drivers" + menuconfig BSP_USING_RW007 + bool "Enable RW007" + default n + select PKG_USING_RW007 + select BSP_USING_SCI + select BSP_USING_SCI2 + select BSP_USING_SCI2_SPI + select RT_USING_MEMPOOL + select RW007_NOT_USE_EXAMPLE_DRIVERS + + if BSP_USING_RW007 + config RA_RW007_SPI_BUS_NAME + string "RW007 BUS NAME" + default "scpi2" + + config RA_RW007_CS_PIN + hex "(HEX)CS pin index" + default 0x0A05 + + config RA_RW007_BOOT0_PIN + hex "(HEX)BOOT0 pin index (same as spi clk pin)" + default 0x0A04 + + config RA_RW007_BOOT1_PIN + hex "(HEX)BOOT1 pin index (same as spi cs pin)" + default 0x0A05 + + config RA_RW007_INT_BUSY_PIN + hex "(HEX)INT/BUSY pin index" + default 0x0508 + + config RA_RW007_RST_PIN + hex "(HEX)RESET pin index" + default 0x0809 + endif + endmenu endmenu diff --git a/bsp/renesas/ra8d1-ek/board/ports/gpio_cfg.h b/bsp/renesas/ra8d1-ek/board/ports/gpio_cfg.h index a85c88569a..f0e6c8f75d 100644 --- a/bsp/renesas/ra8d1-ek/board/ports/gpio_cfg.h +++ b/bsp/renesas/ra8d1-ek/board/ports/gpio_cfg.h @@ -19,50 +19,62 @@ case BSP_IO_PORT_04_PIN_00: \ case BSP_IO_PORT_02_PIN_06: \ case BSP_IO_PORT_01_PIN_05: \ + case BSP_IO_PORT_08_PIN_06: \ return 0; \ - case BSP_IO_PORT_02_PIN_05: \ + case BSP_IO_PORT_05_PIN_08: \ case BSP_IO_PORT_01_PIN_01: \ case BSP_IO_PORT_01_PIN_04: \ return 1; \ - case BSP_IO_PORT_02_PIN_03: \ + case BSP_IO_PORT_05_PIN_09: \ case BSP_IO_PORT_01_PIN_00: \ case BSP_IO_PORT_02_PIN_13: \ return 2; \ - case BSP_IO_PORT_02_PIN_02: \ - case BSP_IO_PORT_01_PIN_10: \ + case BSP_IO_PORT_02_PIN_08: \ + case BSP_IO_PORT_05_PIN_10: \ case BSP_IO_PORT_02_PIN_12: \ return 3; \ case BSP_IO_PORT_04_PIN_02: \ - case BSP_IO_PORT_01_PIN_11: \ + case BSP_IO_PORT_03_PIN_00: \ case BSP_IO_PORT_04_PIN_11: \ + case BSP_IO_PORT_10_PIN_10: \ return 4; \ case BSP_IO_PORT_04_PIN_01: \ case BSP_IO_PORT_03_PIN_02: \ case BSP_IO_PORT_04_PIN_10: \ + case BSP_IO_PORT_10_PIN_09: \ return 5; \ case BSP_IO_PORT_03_PIN_01: \ case BSP_IO_PORT_00_PIN_00: \ case BSP_IO_PORT_04_PIN_09: \ + case BSP_IO_PORT_10_PIN_08: \ return 6; \ case BSP_IO_PORT_00_PIN_01: \ case BSP_IO_PORT_04_PIN_08: \ + case BSP_IO_PORT_06_PIN_15: \ + case BSP_IO_PORT_07_PIN_06: \ return 7; \ case BSP_IO_PORT_00_PIN_02: \ case BSP_IO_PORT_03_PIN_05: \ case BSP_IO_PORT_04_PIN_15: \ + case BSP_IO_PORT_07_PIN_07: \ + case BSP_IO_PORT_09_PIN_05: \ return 8; \ case BSP_IO_PORT_00_PIN_04: \ case BSP_IO_PORT_03_PIN_04: \ case BSP_IO_PORT_04_PIN_14: \ + case BSP_IO_PORT_09_PIN_06: \ return 9; \ case BSP_IO_PORT_00_PIN_05: \ case BSP_IO_PORT_07_PIN_09: \ + case BSP_IO_PORT_09_PIN_07: \ return 10; \ case BSP_IO_PORT_05_PIN_01: \ case BSP_IO_PORT_00_PIN_06: \ case BSP_IO_PORT_07_PIN_08: \ + case BSP_IO_PORT_08_PIN_00: \ + case BSP_IO_PORT_09_PIN_08: \ return 11; \ - case BSP_IO_PORT_05_PIN_02: \ + case BSP_IO_PORT_08_PIN_01: \ case BSP_IO_PORT_00_PIN_08: \ return 12; \ case BSP_IO_PORT_00_PIN_15: \ @@ -70,11 +82,12 @@ return 13; \ case BSP_IO_PORT_04_PIN_03: \ case BSP_IO_PORT_05_PIN_12: \ - case BSP_IO_PORT_05_PIN_05: \ + case BSP_IO_PORT_08_PIN_04: \ + case BSP_IO_PORT_00_PIN_10: \ return 14; \ case BSP_IO_PORT_04_PIN_04: \ case BSP_IO_PORT_05_PIN_11: \ - case BSP_IO_PORT_05_PIN_06: \ + case BSP_IO_PORT_08_PIN_08: \ return 15; \ default : \ return -1; \ diff --git a/bsp/renesas/ra8d1-ek/board/ports/omv_fs/ff.h b/bsp/renesas/ra8d1-ek/board/ports/omv_fs/ff.h deleted file mode 100644 index 8bf0155c91..0000000000 --- a/bsp/renesas/ra8d1-ek/board/ports/omv_fs/ff.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef __OMV_FF_H__ -#define __OMV_FF_H__ - -#include "dfs_file.h" - -typedef struct dfs_file FIL; -typedef char TCHAR; -typedef unsigned int UINT; -typedef unsigned char BYTE; - -typedef int FF_DIR; -typedef struct stat FILINFO; - -typedef enum { - FR_OK = 0, /* (0) Succeeded */ - FR_DISK_ERR, /* (1) A hard error occurred in the low level disk I/O layer */ - FR_INT_ERR, /* (2) Assertion failed */ - FR_NOT_READY, /* (3) The physical drive cannot work */ - FR_NO_FILE, /* (4) Could not find the file */ - FR_NO_PATH, /* (5) Could not find the path */ - FR_INVALID_NAME, /* (6) The path name format is invalid */ - FR_DENIED, /* (7) Access denied due to prohibited access or directory full */ - FR_EXIST, /* (8) Access denied due to prohibited access */ - FR_INVALID_OBJECT, /* (9) The file/directory object is invalid */ - FR_WRITE_PROTECTED, /* (10) The physical drive is write protected */ - FR_INVALID_DRIVE, /* (11) The logical drive number is invalid */ - FR_NOT_ENABLED, /* (12) The volume has no work area */ - FR_NO_FILESYSTEM, /* (13) There is no valid FAT volume */ - FR_MKFS_ABORTED, /* (14) The f_mkfs() aborted due to any problem */ - FR_TIMEOUT, /* (15) Could not get a grant to access the volume within defined period */ - FR_LOCKED, /* (16) The operation is rejected according to the file sharing policy */ - FR_NOT_ENOUGH_CORE, /* (17) LFN working buffer could not be allocated */ - FR_TOO_MANY_OPEN_FILES, /* (18) Number of open files > _FS_LOCK */ - FR_INVALID_PARAMETER /* (19) Given parameter is invalid */ -} FRESULT; - -/* File access mode and open method flags (3rd argument of f_open) */ -#define FA_READ 0x01 -#define FA_WRITE 0x02 -#define FA_OPEN_EXISTING 0x00 -#define FA_CREATE_NEW 0x04 -#define FA_CREATE_ALWAYS 0x08 -#define FA_OPEN_ALWAYS 0x10 -#define FA_OPEN_APPEND 0x30 - -#define f_eof(fp) ((int)((fp)->pos == (fp)->vnode->size)) -#define f_tell(fp) ((fp)->pos) -#define f_size(fp) ((fp)->vnode->size) -#endif diff --git a/bsp/renesas/ra8d1-ek/board/ports/wifi/SConscript b/bsp/renesas/ra8d1-ek/board/ports/wifi/SConscript new file mode 100644 index 0000000000..9e73f9555d --- /dev/null +++ b/bsp/renesas/ra8d1-ek/board/ports/wifi/SConscript @@ -0,0 +1,22 @@ + +from building import * +import rtconfig + +cwd = GetCurrentDir() + +src = [] + +if GetDepend(['BSP_USING_RW007']): + src += Glob('drv_rw007.c') + +CPPPATH = [cwd] +LOCAL_CFLAGS = '' + +if rtconfig.PLATFORM in ['gcc', 'armclang']: + LOCAL_CFLAGS += ' -std=c99' +elif rtconfig.PLATFORM in ['armcc']: + LOCAL_CFLAGS += ' --c99' + +group = DefineGroup('Drivers', src, depend = [], CPPPATH = CPPPATH, LOCAL_CFLAGS = LOCAL_CFLAGS) + +Return('group') diff --git a/bsp/renesas/ra8d1-ek/board/ports/wifi/drv_rw007.c b/bsp/renesas/ra8d1-ek/board/ports/wifi/drv_rw007.c new file mode 100644 index 0000000000..3936a13d61 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/board/ports/wifi/drv_rw007.c @@ -0,0 +1,65 @@ +#include +#include +#ifdef BSP_USING_RW007 +#include +#include +#include +#include + +extern void spi_wifi_isr(int vector); + +static void rw007_gpio_init(void) +{ + /* Configure IO */ + rt_pin_mode(RA_RW007_RST_PIN, PIN_MODE_OUTPUT); + rt_pin_mode(RA_RW007_INT_BUSY_PIN, PIN_MODE_INPUT_PULLDOWN); + + /* Reset rw007 and config mode */ + rt_pin_write(RA_RW007_RST_PIN, PIN_LOW); + rt_thread_delay(rt_tick_from_millisecond(100)); + rt_pin_write(RA_RW007_RST_PIN, PIN_HIGH); + + /* Wait rw007 ready(exit busy stat) */ + while (!rt_pin_read(RA_RW007_INT_BUSY_PIN)) + { + rt_thread_delay(5); + } + + rt_thread_delay(rt_tick_from_millisecond(200)); + rt_pin_mode(RA_RW007_INT_BUSY_PIN, PIN_MODE_INPUT_PULLUP); +} + +int wifi_spi_device_init(void) +{ + char sn_version[32]; + uint32_t cs_pin = RA_RW007_CS_PIN; + + rw007_gpio_init(); + rt_hw_sci_spi_device_attach(RA_RW007_SPI_BUS_NAME, "wspi", cs_pin); + rt_hw_wifi_init("wspi"); + + rt_wlan_set_mode(RT_WLAN_DEVICE_STA_NAME, RT_WLAN_STATION); + rt_wlan_set_mode(RT_WLAN_DEVICE_AP_NAME, RT_WLAN_AP); + + rw007_sn_get(sn_version); + rt_kprintf("\nrw007 sn: [%s]\n", sn_version); + rw007_version_get(sn_version); + rt_kprintf("rw007 ver: [%s]\n\n", sn_version); + + return 0; +} +INIT_APP_EXPORT(wifi_spi_device_init); + +static void int_wifi_irq(void *p) +{ + ((void)p); + spi_wifi_isr(0); +} + +void spi_wifi_hw_init(void) +{ + rt_pin_attach_irq(RA_RW007_INT_BUSY_PIN, PIN_IRQ_MODE_FALLING, int_wifi_irq, 0); + rt_pin_irq_enable(RA_RW007_INT_BUSY_PIN, RT_TRUE); +} + +#endif /* BSP_USING_RW007 */ diff --git a/bsp/renesas/ra8d1-vision-board/board/ports/gpio_cfg.h b/bsp/renesas/ra8d1-vision-board/board/ports/gpio_cfg.h index 07a197fb0f..f0e6c8f75d 100644 --- a/bsp/renesas/ra8d1-vision-board/board/ports/gpio_cfg.h +++ b/bsp/renesas/ra8d1-vision-board/board/ports/gpio_cfg.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2024, RT-Thread Development Team + * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -19,50 +19,62 @@ case BSP_IO_PORT_04_PIN_00: \ case BSP_IO_PORT_02_PIN_06: \ case BSP_IO_PORT_01_PIN_05: \ + case BSP_IO_PORT_08_PIN_06: \ return 0; \ - case BSP_IO_PORT_02_PIN_05: \ + case BSP_IO_PORT_05_PIN_08: \ case BSP_IO_PORT_01_PIN_01: \ case BSP_IO_PORT_01_PIN_04: \ return 1; \ - case BSP_IO_PORT_02_PIN_03: \ + case BSP_IO_PORT_05_PIN_09: \ case BSP_IO_PORT_01_PIN_00: \ case BSP_IO_PORT_02_PIN_13: \ return 2; \ - case BSP_IO_PORT_02_PIN_02: \ - case BSP_IO_PORT_01_PIN_10: \ + case BSP_IO_PORT_02_PIN_08: \ + case BSP_IO_PORT_05_PIN_10: \ case BSP_IO_PORT_02_PIN_12: \ return 3; \ case BSP_IO_PORT_04_PIN_02: \ - case BSP_IO_PORT_01_PIN_11: \ + case BSP_IO_PORT_03_PIN_00: \ case BSP_IO_PORT_04_PIN_11: \ + case BSP_IO_PORT_10_PIN_10: \ return 4; \ case BSP_IO_PORT_04_PIN_01: \ case BSP_IO_PORT_03_PIN_02: \ case BSP_IO_PORT_04_PIN_10: \ + case BSP_IO_PORT_10_PIN_09: \ return 5; \ case BSP_IO_PORT_03_PIN_01: \ case BSP_IO_PORT_00_PIN_00: \ case BSP_IO_PORT_04_PIN_09: \ + case BSP_IO_PORT_10_PIN_08: \ return 6; \ case BSP_IO_PORT_00_PIN_01: \ case BSP_IO_PORT_04_PIN_08: \ + case BSP_IO_PORT_06_PIN_15: \ + case BSP_IO_PORT_07_PIN_06: \ return 7; \ case BSP_IO_PORT_00_PIN_02: \ case BSP_IO_PORT_03_PIN_05: \ case BSP_IO_PORT_04_PIN_15: \ + case BSP_IO_PORT_07_PIN_07: \ + case BSP_IO_PORT_09_PIN_05: \ return 8; \ case BSP_IO_PORT_00_PIN_04: \ case BSP_IO_PORT_03_PIN_04: \ case BSP_IO_PORT_04_PIN_14: \ + case BSP_IO_PORT_09_PIN_06: \ return 9; \ case BSP_IO_PORT_00_PIN_05: \ case BSP_IO_PORT_07_PIN_09: \ + case BSP_IO_PORT_09_PIN_07: \ return 10; \ case BSP_IO_PORT_05_PIN_01: \ case BSP_IO_PORT_00_PIN_06: \ case BSP_IO_PORT_07_PIN_08: \ + case BSP_IO_PORT_08_PIN_00: \ + case BSP_IO_PORT_09_PIN_08: \ return 11; \ - case BSP_IO_PORT_05_PIN_02: \ + case BSP_IO_PORT_08_PIN_01: \ case BSP_IO_PORT_00_PIN_08: \ return 12; \ case BSP_IO_PORT_00_PIN_15: \ @@ -70,11 +82,12 @@ return 13; \ case BSP_IO_PORT_04_PIN_03: \ case BSP_IO_PORT_05_PIN_12: \ - case BSP_IO_PORT_05_PIN_05: \ + case BSP_IO_PORT_08_PIN_04: \ + case BSP_IO_PORT_00_PIN_10: \ return 14; \ case BSP_IO_PORT_04_PIN_04: \ case BSP_IO_PORT_05_PIN_11: \ - case BSP_IO_PORT_05_PIN_06: \ + case BSP_IO_PORT_08_PIN_08: \ return 15; \ default : \ return -1; \ diff --git a/bsp/renesas/ra8m1-ek/board/ports/gpio_cfg.h b/bsp/renesas/ra8m1-ek/board/ports/gpio_cfg.h index a85c88569a..f0e6c8f75d 100644 --- a/bsp/renesas/ra8m1-ek/board/ports/gpio_cfg.h +++ b/bsp/renesas/ra8m1-ek/board/ports/gpio_cfg.h @@ -19,50 +19,62 @@ case BSP_IO_PORT_04_PIN_00: \ case BSP_IO_PORT_02_PIN_06: \ case BSP_IO_PORT_01_PIN_05: \ + case BSP_IO_PORT_08_PIN_06: \ return 0; \ - case BSP_IO_PORT_02_PIN_05: \ + case BSP_IO_PORT_05_PIN_08: \ case BSP_IO_PORT_01_PIN_01: \ case BSP_IO_PORT_01_PIN_04: \ return 1; \ - case BSP_IO_PORT_02_PIN_03: \ + case BSP_IO_PORT_05_PIN_09: \ case BSP_IO_PORT_01_PIN_00: \ case BSP_IO_PORT_02_PIN_13: \ return 2; \ - case BSP_IO_PORT_02_PIN_02: \ - case BSP_IO_PORT_01_PIN_10: \ + case BSP_IO_PORT_02_PIN_08: \ + case BSP_IO_PORT_05_PIN_10: \ case BSP_IO_PORT_02_PIN_12: \ return 3; \ case BSP_IO_PORT_04_PIN_02: \ - case BSP_IO_PORT_01_PIN_11: \ + case BSP_IO_PORT_03_PIN_00: \ case BSP_IO_PORT_04_PIN_11: \ + case BSP_IO_PORT_10_PIN_10: \ return 4; \ case BSP_IO_PORT_04_PIN_01: \ case BSP_IO_PORT_03_PIN_02: \ case BSP_IO_PORT_04_PIN_10: \ + case BSP_IO_PORT_10_PIN_09: \ return 5; \ case BSP_IO_PORT_03_PIN_01: \ case BSP_IO_PORT_00_PIN_00: \ case BSP_IO_PORT_04_PIN_09: \ + case BSP_IO_PORT_10_PIN_08: \ return 6; \ case BSP_IO_PORT_00_PIN_01: \ case BSP_IO_PORT_04_PIN_08: \ + case BSP_IO_PORT_06_PIN_15: \ + case BSP_IO_PORT_07_PIN_06: \ return 7; \ case BSP_IO_PORT_00_PIN_02: \ case BSP_IO_PORT_03_PIN_05: \ case BSP_IO_PORT_04_PIN_15: \ + case BSP_IO_PORT_07_PIN_07: \ + case BSP_IO_PORT_09_PIN_05: \ return 8; \ case BSP_IO_PORT_00_PIN_04: \ case BSP_IO_PORT_03_PIN_04: \ case BSP_IO_PORT_04_PIN_14: \ + case BSP_IO_PORT_09_PIN_06: \ return 9; \ case BSP_IO_PORT_00_PIN_05: \ case BSP_IO_PORT_07_PIN_09: \ + case BSP_IO_PORT_09_PIN_07: \ return 10; \ case BSP_IO_PORT_05_PIN_01: \ case BSP_IO_PORT_00_PIN_06: \ case BSP_IO_PORT_07_PIN_08: \ + case BSP_IO_PORT_08_PIN_00: \ + case BSP_IO_PORT_09_PIN_08: \ return 11; \ - case BSP_IO_PORT_05_PIN_02: \ + case BSP_IO_PORT_08_PIN_01: \ case BSP_IO_PORT_00_PIN_08: \ return 12; \ case BSP_IO_PORT_00_PIN_15: \ @@ -70,11 +82,12 @@ return 13; \ case BSP_IO_PORT_04_PIN_03: \ case BSP_IO_PORT_05_PIN_12: \ - case BSP_IO_PORT_05_PIN_05: \ + case BSP_IO_PORT_08_PIN_04: \ + case BSP_IO_PORT_00_PIN_10: \ return 14; \ case BSP_IO_PORT_04_PIN_04: \ case BSP_IO_PORT_05_PIN_11: \ - case BSP_IO_PORT_05_PIN_06: \ + case BSP_IO_PORT_08_PIN_08: \ return 15; \ default : \ return -1; \