• Not Answered

Configuring WL1271 for a 3.13 kernel (devicetree)

We are using (planning to, at least, we have a prototype board) with a wl1271 chip connected to the SDIO interface of a Zynq processor.


The wl12xx drivers are present in the 3.13 mainline kernel, and compile fine.


However, I cannot find any information on how to configure the module. There appear to be no device tree binding descriptions for this driver.


Anyone who can explain how to do this? Or pointers to some documentation on this?

14 Replies

  • Hi Mike,

    We don't have a version of wl12xx drivers that supports kernel 3.13 (device tree). There is a version that supports wl18xx.

    Please check the below link:
    http://processors.wiki.ti.com/index.php/WiLink8_Release_Notes/R8.3SP1#WLAN_SW_components.C2.A0with_Linux_Kernel_3.8_.28.22device-tree.22_support.29


    Regards,
    Gigi Joseph.

  • In reply to Joseph Gigi:

    Then how do I configure the wl12xx drivers?

  • In reply to Mike Looijmans:

    Hi Mike,

    I'm sorry, but we don't support WL6 with kernel version above 3.2 as it is being replaced by WL8. However you can modify the driver by following the below porting guide (may not help you with the device tree though):

    http://processors.wiki.ti.com/index.php/WL127x_Porting_Guide

    Regards,
    Gigi Joseph.

  • In reply to Joseph Gigi:

    I tried to get the driver to give any sign of life at all, but I can't get it to actually "probe".


    I've added a board file, with the following code to register the platform data:

    #include <linux/wl12xx.h>
    ...

    struct wl12xx_platform_data wlan_pdata = {
        .irq = 0,
        .board_ref_clock = WL12XX_REFCLOCK_38_XTAL, /* 38.4Mhz */
    };
    ...

        if (wl12xx_set_platform_data(&wlan_pdata))
            pr_err("error setting wl12xx data\n");    

    This appears to run OK. I have also added the WL1271 and WL1271_SDIO items to the kernel configuration. I've added the IO that controls power as a regulator control, and enabled the SDIO controller in the devicetree.

            /* SD 1 for WiFi card */
            reg_sd1: regulator_sd1 {
                compatible = "regulator-fixed";
                regulator-name = "wl-wifi";
                regulator-min-microvolt = <3300000>; /* Actually 1.8V, but this keeps the driver happy */
                regulator-max-microvolt = <3300000>;
                vin-supply = <&R600A_reg>; /* Bank IO power from LTC */
                gpio = <&gpio 58 0>;
                enable-active-high;
                startup-delay-us = <70000>;
            };
            reg_bt: regulator_bt {
                compatible = "regulator-fixed";
                regulator-name = "wl-bt";
                regulator-min-microvolt = <1800000>;
                regulator-max-microvolt = <1800000>;
                vin-supply = <&R600A_reg>; /* Bank IO power from LTC */
                gpio = <&gpio 59 0>;
                enable-active-high;
                startup-delay-us = <70000>; /* TODO: Check datasheet */
            };
            sdhci1: sdhci@e0101000 {
                compatible = "xlnx,ps7-sdio-1.00.a", "arasan,sdhci-8.9a";
                reg = <0xe0101000 0x1000>;
                interrupts = <0 47 4>;
                interrupt-parent = <&gic>;
                clock-names = "clk_xin", "clk_ahb";
                clocks = <&clkc 22>, <&clkc 33>;
                clock-frequency = <25000000>;
                disable-wp;
                non-removable;
                vmmc-supply = <&reg_sd1>;
                bus-width = <4>;
                cap-power-off-card;
            };


    I can see that the driver is present, the directory

    /sys/bus/sdio/drivers/wl1271_sdio/

    exists. But the device does not get instantiated. What am I missing? (All wifi components are present, inserting a USB wifi stick with an atheros chipset works just fine).

    I added "printk" statements to various probe and config methods in the wl12xx drivers, but they never get called.


    Please advise.

  • In reply to Mike Looijmans:

    Patches like these seem to suggest someone is implementing support for the wl12xx chips in newer kernels, however, these never made it into mainline apparently, despite being over half a year old:

    https://lkml.org/lkml/2013/7/31/211



  • In reply to Mike Looijmans:

    Mike,

         Did you ever make any progress on this?  We're attempting to do the same thing (wl12xx on TI-provided 3.12)

    -c

  • In reply to cmicali:

    Yes.

    We removed the 1271 chip and bought a module from another manufacturer.


    I suggest you do the same.

  • In reply to Mike Looijmans:

    Mike,

       thanks for the reply - I'm coming to the same conclusion.  Could you let me know which module you went with?  We're thinking about wilink8 but the cost is significantly more than the 12xx, and we're are concerned about driver compatibility given TIs support of older chipsets on its newest kernel.

    thanks,

    chris

  • In reply to cmicali:

    I don't consider it appropriate to discuss alternate vendors on a TI forum. You can contact me at mike dot looijmans at topic dot nl for more information.

  • In reply to Mike Looijmans:

    Okay, it seems there are apparently more guys working on this. How is it possible noone has got this running yet? We're stuck at the EXACT same point.

    Appreciate any input.

    Stephan...