Tool/software:
Hi TI,
We have a custom AM62X board with CC3301 on it. We just got a new build of boards in and was having issue with getting detected. I want to verify there wasn't a silicon change that would affect us or if there was other other devicetree change required.
Using buildroot (roughly off master branch from a month ago)
Linux Version: 6.1.80 (ti-linux-09.02.00.009)
U-Boot: 2024.01 (ti-u-boot-2024.01)
CC3301 driver: 1.0.0.6
GCC: 12.4.0
Our boards we got in came with this date code. CC3301 ENJA TI 418 AZ0Y G4
Our previous working board boards came with date code: CC3301 ENJA TI 3A8 AN25 G4
On the 3 new boards here was our debug steps:
Brought up new boards - non functional wifi
We removed 418 AZ0Y G4, cleaned up and reworked with 418 AZ0Y G4 - all 3 non functional wifi
We removed 418 AZ0Y G4, cleaned up and reworked with 3A8 AN25 G4 - all 3 are functional
We verified there wasn't any PCB changes around the wifi on these new board, but we will go more indepth checking the PCB
Dmesg comparison:
Both boards init the BLE exactly
Bluetooth: Core ver 2.22 NET: Registered PF_BLUETOOTH protocol family Bluetooth: HCI device and connection manager initialized Bluetooth: HCI socket layer initialized Bluetooth: L2CAP socket layer initialized Bluetooth: SCO socket layer initialized Bluetooth: [bt sdio] BLE SDIO init module Bluetooth: [bt sdio] PROBE vendor=0x97, device=0x4077, class=255, fn=1 0xffff0000018de400 Bluetooth: [bt sdio hci] btti_hci_add_sdio_dev Bluetooth: [bt sdio hci] Starting work thread... Bluetooth: [bt sdio] TI cc33xx BLE-over-SDIO driver is up and running! Bluetooth: [bt sdio hci] work thread is started Bluetooth: [bt sdio hci] work thread is sleeping... Bluetooth: [bt sdio] PROBE vendor=0x97, device=0x4077, class=255, fn=2 0xffff0000018de800 cc33xx_sdio mmc2:0001:2: Using SDIO in-band IRQ
Previous nonfunctional board replace and became functional with 3A8 AN25 G4
cc33xx_driver cc33xx.2.auto: Direct firmware load for ti-connectivity/cc33xx-nvs.bin failed with error -2
wlcore: Wireless driver version 1.7.0.126
wlcore: Wireless firmware version 1.7.0.185
wlcore: Wireless PHY version 1.2.39.5.42.67
wlcore: loaded
wlan0 Link encap:Ethernet HWaddr 34:68:B5:89:86:43
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Non Functional wifi board with 418 AZ0Y G4:
cc33xx_driver cc33xx.2.auto: Direct firmware load for ti-connectivity/cc33xx-nvs.bin failed with error -2 wlcore: ERROR FW is stuck, triggering recovery wlcore: ERROR boot IRQ timeout wlcore: ERROR FW download failed ifconfig: wlan0: error fetching interface information: Device not found
From our DTS (I'll attach the whole DTS here as well):
&sdhci2 {
/* CC3301 */
status = "okay";
vmmc-supply = <&wlan_en>;
pinctrl-names = "default";
pinctrl-0 = <&wifisdio_pins_default>;
bus-width = <4>;
non-removable;
ti,fails-without-test-cd;
cap-power-off-card;
keep-power-in-suspend;
ti,driver-strength-ohm = <50>;
assigned-clocks = <&k3_clks 157 158>;
assigned-clock-parents = <&k3_clks 157 160>;
#address-cells = <1>;
#size-cells = <0>;
wlcore: wlcore@2 {
compatible = "ti,cc33xx";
reg = <2>;
//
// pinctrl-names = "default";
// pinctrl-0 = <&wifi_irq_pins_default>;
// interrupt-parent = <&main_gpio0>;
// interrupts = <72 IRQ_TYPE_EDGE_RISING>;
};
// TI-BLE-SDIO interface
btti: btti@1 {
compatible = "ti,cc33xxbt";
reg = <1>;
};
};
wifi_rst_pins_default: wifi-rst-pins-default {
pinctrl-single,pins = <
AM62X_IOPAD(0x0124, PIN_OUTPUT_PULLDOWN, 7) /* (A23) MMC2_SDCD.GPIO0_71 */
>;
};
wifi_irq_pins_default: wifi-irq-pins-default {
pinctrl-single,pins = <
AM62X_IOPAD(0x0128, PIN_INPUT_PULLDOWN, 7) /* (B23) MMC2_SDWP.GPIO0_72 */
>;
};
wifisdio_pins_default: wifisdio-default-pins {
pinctrl-single,pins = <
AM62X_IOPAD(0x0120, PIN_INPUT, 0) /* (C24) MMC2_CMD */
AM62X_IOPAD(0x0118, PIN_OUTPUT, 0) /* (D25) MMC2_CLK */
AM62X_IOPAD(0x011C, PIN_INPUT, 0) /* () MMC2_CLKLB */
AM62X_IOPAD(0x0114, PIN_INPUT, 0) /* (B24) MMC2_DAT0 */
AM62X_IOPAD(0x0110, PIN_INPUT, 0) /* (C25) MMC2_DAT1 */
AM62X_IOPAD(0x010c, PIN_INPUT, 0) /* (E23) MMC2_DAT2 */
AM62X_IOPAD(0x0108, PIN_INPUT, 0) /* (D24) MMC2_DAT3 */
>;
};
Any issue or changes I need to make in software?
