This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC3351: Driver for Linux kernel 5.10

Part Number: CC3351

Tool/software:

My customer is trying to port the CC3351 driver to Linux kernel 4.9 and 5.1. The current SDK only supports 6.10 verion Linux kernel.

The customer also tried to use CC33xx SDK v1.0.0.0, but cc33xx.ko failed during probe, the probe process does not complete.

Would you please share the CC3351 driver for Linux kernel 4.9 and 5.1?

Below I attach the driver log with v1.0.0.0:

/lib/modules/wifi # insmod cc33xx.ko
/lib/modules/wifi # dmesg -c
/lib/modules/wifi #
/lib/modules/wifi #
/lib/modules/wifi #
/lib/modules/wifi # insmod cc33xx_sdio.ko
cc33xx_sdio mmc0:0001:2: Using SDIO in-band IRQ
/lib/modules/wifi # dmesg -c

wlcore: ERROR boot IRQ timeout
wlcore: ERROR FW download failed

cc33xx_sdio mmc0:0001:2: Using SDIO in-band IRQ
wlcore: cc33xx_probe :: Start
wlcore: Wireless Driver Version 1.7.0.22
wlcore: WLAN CC33xx platform device probe done
wlcore: Chip wakeup
wlcore: Set BLKsize to 128
IBI_WA: Read core status
wlcore: wlcore_irq invoked
wlcore: wlcore_irq: Core-status locked
wlcore: Reading core status
wlcore: HINT_STATUS: 0x0, TSF: 0x1b05fd72, rx status: 0xeff0000
wlcore: wlcore_irq: Releasing core-status
IBI_WA: Core status processed
wlcore: ERROR boot IRQ timeout
wlcore: ERROR FW download failed
wlcore: wlcore_nvs_cb Complete

And the dts configuration as below:

sdmmc {
compatible = "sstar,sdmmc";

slotnum = <2>;

slot-ip-orders = <0>,<1>,<2>;
slot-pad-orders = <1>,<1>,<2>;
slot-max-clks = <24000000>,<24000000>,<24000000>;
slot-revcdz = <0>,<0>,<0>;
slot-intcdzs = <0>,<1>,<1>;
slot-support-sd30 = <0>,<0>,<0>;
slot-fakecdzs = <1>,<0>,<0>;
slot-cdzs-pad = <PAD_UNKNOWN>,<PAD_PM_SD_CDZ>,<PAD_PM_SD_CDZ>;
slot-pwr-pad = <PAD_UNKNOWN>,<PAD_FUART_RTS>,<PAD_FUART_RTS>;
slot-en-pwr-high-valid = <0>,<0>,<0>; //gpio output (1/0), power on.
slot-pwr-off-delay = <30>,<30>,<30>;
slot-pwr-on-delay = <30>,<1>,<1>;
slot-removable = <0>,<1>,<1>;
slot-sdio-use = <1>,<0>,<0>;
slot-sdio-use-1bit = <0>,<0>,<0>;
slot-sdio-dis-intr = <0>,<0>,<0>;
slot-en-clk-phase = <0>,<0>,<0>; //0/1
slot-tx-clk-phase = <0>,<0>,<0>; //0-3
slot-rx-clk-phase = <0>,<0>,<0>; //0-3
slot-clk-driving = <1>,<0>,<0>;
slot-cmd-driving = <1>,<0>,<0>;
slot-data-driving = <1>,<0>,<0>;

interrupts-extended = <&ms_main_intc GIC_SPI INT_IRQ_SD IRQ_TYPE_LEVEL_HIGH>,//was INT_IRQ_SDIO
<&ms_main_intc GIC_SPI INT_IRQ_FCIE_TOP IRQ_TYPE_LEVEL_HIGH>,
<&ms_main_intc GIC_SPI INT_FIQ_SD_CDZ_0 IRQ_TYPE_LEVEL_HIGH>,
//<&ms_gpi_intc 42>,
<&ms_main_intc GIC_SPI INT_FIQ_SD_CDZ_1 IRQ_TYPE_LEVEL_HIGH>,
<&ms_main_intc GIC_SPI INT_FIQ_SD_CDZ_0 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "mie0_irq", "mie1_irq", "cdz_slot0_irq", "cdz_slot1_irq", "cdz_slot2_irq";
clocks = <&CLK_sd>,<&CLK_fcie>,
<&CLK_sd>,<&CLK_fcie>,
<&CLK_sd>,<&CLK_fcie>;
status = "ok";
wlcore: wlcore@0 {
compatible = "ti,cc33xx";
reg = <0>;
status = "ok";
};
};

Best regards,

Shuyang