Request for Linux Kernel Modules for DA16600MOD UART Interface (Wi-Fi and BLE) Integration with RZG3S

Hello Renesas Community,

We are currently working on integrating the DA16600MOD Wi-Fi and Bluetooth module into our custom-made system that uses the RZG3S processor. Our system is designed to use only the UART interface to interface with the DA16600MOD for Wi-Fi (UART0) and BLE communication.

Could anyone please provide guidance on the following:

  1. Linux Kernel Modules: Are there existing kernel modules or sample drivers available for integrating the DA16600MOD with the RZG3S system using only the UART interface?
  2. Driver Support: Is there a specific driver available that can be used for both Wi-Fi and BLE functionality via UART, or would additional configurations be required?
  3. Integration Steps: If there are any specific steps or configurations that need to be followed for successfully integrating the UART-based DA16600MOD in a custom system, we would appreciate the details.

Your support and any examples of successfully integrating this module would be greatly appreciated!

Thank you in advance!

Parents
  • Hi Nitish,
    The Linux driver for DA16600 module supports SPI and SDIO for Wifi chip and UART for BLE chip.
    Here is the User Manual for the Linux driver (RZ/G2L) - ( Some modification  may be required for the RZ/G3S in device tree ).
    UM-WI-059 DA16200 DA16600 Linux Driver Getting Started Guide
    DA16200 DA16600 Linux Driver v5.2.1.2

    Let me ask you why do you want to use UART for the WIFI chip. The UART's transfer rate is in kilobytes per second, it will be really slow.
    Kind Regards.

  • Thank you for your response. We have successfully changed the UART interface to SPI by connecting jumpers to the modules and attaching them to the PMOD2A port. We followed all the steps in the guide up to this point, and everything worked as expected. We erased the sflash, compiled the rswlan, and copied the lmacfc_spi.bin to the /lib/firmware directory on the board, and also inserted the module.

    However, when I try to proceed with the next steps, I'm encountering an issue. Below is the output from the terminal after running the insmod command:

    root@smarc-rzg3s:~# insmod rswlan.ko
    [ 312.432817] rswlan: loading out-of-tree module taints kernel.
    [ 312.443139] DA16200 SPI version: v5.2.1.2 - build: 2025-01-22 12:31:04

    root@smarc-rzg3s:~# wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf
    Successfully initialized wpa_supplicant
    nl80211: kernel reports: Match already configured
    nl80211: kernel reports: Match already configured
    nl80211: kernel reports: Match already configured
    nl80211: kernel reports: Match already configured
    nl80211: kernel reports: Match already configured
    nl80211: kernel reports: Match already configured
    nl80211: kernel reports: Match already configured
    ctrl_iface exists and seems to be in use - cannot override it
    Delete '/var/run/wpa_supplicant/wlan0' manually if it is not used anymore
    Failed to initialize control interface '/var/run/wpa_supplicant'.
    You may have another wpa_supplicant process already running or the file was
    left by an unclean termination of wpa_supplicant in which case you will need
    to manually remove this file before starting wpa_supplicant again.

    nl80211: deinit ifname=wlan0 disabled_11b_rates=0
    root@smarc-rzg3s:~#

  • root@smarc-rzg3s:~# dmesg | grep spi
    [ 0.237535] libertas_spi: Libertas SPI driver
    [ 2.550453] renesas_spi 100aa000.spi: DMA available
    [ 2.555551] renesas_spi 100aa000.spi: registered master spi0
    [ 2.556092] spi spi0.0: setup mode 0, 8 bits/w, 50000000 Hz max --> 0
    [ 2.556592] renesas_spi 100aa000.spi: registered child spi0.0
    [ 2.556618] renesas_spi 100aa000.spi: chipselect 0 already in use
    [ 2.562751] spi_master spi0: spi_device register error /soc/spi@100aa000/da16xxx@0
    [ 2.570315] spi_master spi0: Failed to create SPI device for /soc/spi@100aa000/da16xxx@0
    [ 2.578387] renesas_spi 100aa000.spi: probed
    [ 3.045894] rpc-if-spi rpc-if-spi: registered master spi1
    [ 3.045943] spi spi1.0: setup mode 0, 8 bits/w, 50000000 Hz max --> 0
    [ 3.047425] spi-nor spi1.0: at25ql128a (16384 Kbytes)
    [ 3.063001] 4 fixed-partitions partitions found on MTD device spi1.0
    [ 3.069507] Creating 4 MTD partitions on "spi1.0":
    [ 3.100165] rpc-if-spi rpc-if-spi: registered child spi1.0     

  • in dts file i added this 

    &spi0 {
    pinctrl-0 = <&spi0_pins>;
    pinctrl-names = "default";

    dmas = <&dmac 0x2e95>, <&dmac 0x2e96>;
    dma-names = "tx", "rx";

    status = "okay";
    #if RSPI0_LOOPBACK_SEL
    spidev@0 {
    compatible = "rohm,dh2228fv";
    reg = <0>;
    spi-max-frequency = <50000000>;
    };
    da16xxx@0 {
    compatible = "renesas,da16xxx";
    reg = <0>;
    spi-max-frequency = <5000000>;
    reset-gpios = <&pinctrl RZG2L_GPIO(13, 4) GPIO_ACTIVE_LOW>;
    irq0-gpios = <&pinctrl RZG2L_GPIO(18, 0) GPIO_ACTIVE_LOW>;
    };

Reply
  • in dts file i added this 

    &spi0 {
    pinctrl-0 = <&spi0_pins>;
    pinctrl-names = "default";

    dmas = <&dmac 0x2e95>, <&dmac 0x2e96>;
    dma-names = "tx", "rx";

    status = "okay";
    #if RSPI0_LOOPBACK_SEL
    spidev@0 {
    compatible = "rohm,dh2228fv";
    reg = <0>;
    spi-max-frequency = <50000000>;
    };
    da16xxx@0 {
    compatible = "renesas,da16xxx";
    reg = <0>;
    spi-max-frequency = <5000000>;
    reset-gpios = <&pinctrl RZG2L_GPIO(13, 4) GPIO_ACTIVE_LOW>;
    irq0-gpios = <&pinctrl RZG2L_GPIO(18, 0) GPIO_ACTIVE_LOW>;
    };

Children
No Data