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.

Linux/WL1837MOD: Use on a x64 regular computer

Part Number: WL1837MOD

Tool/software: Linux

Hi,

I am using the WL1837MOD with the WL18XXMODCOMSDMMC adapter (100 pin to sdcard).

I am trying to make it work on my laptop (not a custom board). This is a common x64 Dell laptop with Ubuntu Xenial.

Here is the dmesg output when I plug it in:

rtsx_pci_sdmmc rtsx_pci_sdmmc.0: card claims to support voltages below defined range
mmc0: new high speed SDIO card at address 0001
wl1271_sdio: probe of mmc0:0001:2 failed with error -61

When I dig in the Linux driver code, the issue is the call to wlcore_probe_of (wlcore/sdio.c).

Two cases:

  • Default kernel: CONFIG_OF

  • Somehow, my question got truncated.

    [...]
    Two cases:
    - Default kernel: CONFIG_OF is not defined. "wlcore_probe_of" return -61 directly.
    - Kernel with OF enabled: CONFIG_OF is defined, but "struct device_node *np" is NULL, thus -61 again.

    How do I use the WL1837MOD on a x64 machine without dts?

    Thank you.
  • Hi Paul,

    This query has been assigned to a relevant expert. We will get back to you soon.

    Best regards,
    Vihang
  • The issue is not reated to working with an x64 based platform.

    All latest drivers require the use of device-tree. without the nodes being present it will not work and is probably failing in:

    git.ti.com/.../sdio.c

    when wlcore_probe_of is being called as it fails reading the interrupt required platform data.
    What kernel are you building the wl18xx drivers with? Why do you work without device tree?

    BR,
    Eyal
  • Thank you for your quick answer.

    Briefly:
    -Get ubuntu 4.8 kernel sources
    -Form oldconfig, enable wlcore,wl18xx,"Device tree and Open Firmware support"
    -Compile&Install

    Nothing fancy: default ubuntu kernel with WiLink8 drivers enabled.

    Here is what I did precisely:
    1- Install Ubuntu Xenial HWE: basically, it installed the default ubuntu kernel 4.8.
    wlcore is not included in this kernel so,
    2- I got the source of the ubuntu 4.8 kernel (the one installed in point 1), enabled wlcore,wl18xx. Compiled and installed it
    Did some tracing, found out that "CONFIG_OF" was not defined during compilation, thus the "return -ENODATA;" of "wlcore_probe_of" is being called
    3- Enable "Device tree and Open Firmware support" (as well as "Device Tree overlays") in the kernel config. Compiled&&Installed again.
    At this point, "CONFIG_OF" was defined and the good version of "wlcore_probe_of" is called. However, "np" is NULL.

    Is there something I missed?