Sona TI Device Tree Configuration Requirements The Sona TI351 requires proper configuration in the device tree. The following points must be observed: The SDIO host controller node must contain a sub-node for the TI351 Wi-Fi function (function number 2) The SDIO host controller node must enable run-time PM with the cap-power-off-card property The SDIO host controller should limit operation to SD3.0 only (max 50MHz) The SDIO host controller driver should control the W_DISABLE# pin using a device tree regulator referenced by the vmmc-supply property. The regulator should not be configured with the regulator-always-on property because the driver will toggle it in some scenarios The Bluetooth serdev driver, if used, must reference the same device tree regulator used by the Wi-Fi function. The SDIO interrupt can either be in-band or out of band (OOB) using the HOST_IRQ_WL/SDIO_WAKE# signal. If Wake On Wireless is desired, then the interrupt must be out of band using the HOST_IRQ_WL/SDIO_WAKE# signal. The HOST_IRQ_WL signal is the interrupt output from the M.2 1216 module and is active high. It is inverted on the M.2 2230 carrier board for compliance with the M.2 specification and is exposed on the M.2 2230 module as the active low SDIO_WAKE#. Sample Device Tree Here is a sample device tree section demonstrating the above requirements using an M.2 2230 module and OOB interrupt. In this example host GPIO2_6 is connected to the W_DISABLE# pin and host GPIO2_9 is used for SDIO interrupt via SDIO_WAKE#. The interrupt is active low because this is the M.2 2230 module. If this had been the M.2 1216 module the interrupt would be HOST_IRQ_WL and would be active high. The driver will use the in-band SDIO interrupt if the interrupt properties are not included in the device tree. / { reg_usdhc1_vmmc: regulator-usdhc1 { compatible = "regulator-fixed"; regulator-name = "WLAN_EN"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_reg_usdhc1_vmmc>; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; gpio = <&gpio2 6 GPIO_ACTIVE_HIGH>; enable-active-high; }; }; &usdhc1 { vmmc-supply = <®_usdhc1_vmmc>; max-frequency = <50000000>; cap-power-off-card; #address-cells = <1>; #size-cells = <0>; wlcore: wlcore@2 { compatible = "ti,cc33xx"; reg = <2>; // OOB IRQ support if needed interrupt-parent = <&gpio2>; interrupts = <9 IRQ_TYPE_LEVEL_LOW>; }; }; A reference device tree snippet with essential elements to support Bluetooth serdev operation is shown below. Note following: A ‘bluetooth’ subnode is created in the uart node used to communicate with the Sona TI351. This causes the UART to be managed as a bluetooth serdev client instead of a tty device. The ‘compatible’ property is set to “ti,cc33xx-bt” The cc33xx-supply property references the same regulator used by the SDIO host controller. &uart1 { bluetooth { compatible = "ti,cc33xx-bt"; cc33xx-supply = <®_usdhc1_vmmc>; max-speed = <115200>; }; };