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.

Petalinux 2014.4. and Wilink

Other Parts Discussed in Thread: WL1271, WL1835

Greetings,

I was wondering if someone who has gotten Petalinux and Wilink working could share their instructions.  I have tried to modify the system.top.dts with the following

    wlcore {

           compatible = "wlcore";

           interrupt-parent = <&intc>;

           irq = <0x0>;

           platform-quirks = <0x1>;

           board-ref-clock = <0x4>;

     };

 

     fixedregulator@1 {

           compatible = "regulator-fixed";

           regulator-name = "wlan-en-regulator";

           regulator-min-microvolt = <0x325aa0>;

           regulator-max-microvolt = <0x325aa0>;

           gpio = <0x4 0x9 0x4>;

           startup-delay-us = <0x11170>;

           enable-active-high;

           linux,phandle = <0x6>;

           phandle = <0x6>;

     };

per another post but get a syntax error, could someone help with what file this should be added too?

Also I am unable to get the drivers to build I have run the first script with init and everything looks to be checked out.

I have also run the verify script and corrected the one type for CONFIG_CRYPTO_CGM to GCM but I get the following errors

Verifying filesystem skeleton...
ERROR  /home/woody/Embedded/software/linux/projects/mz-7z020/build/linux/rootfs/lib/modules/20144317..*/updates/drivers/net/wireless/ti/wl18xx/wl18xx.ko  Not found !
md5sum: /home/woody/Embedded/software/linux/projects/mz-7z020/build/linux/rootfs/lib/modules/20144317..*/updates/drivers/net/wireless/ti/wl18xx/wl18xx.ko: No such file or directory
./_build_with_sudo.sh: line 729: [: !=: unary operator expected
ERROR  /home/woody/Embedded/software/linux/projects/mz-7z020/build/linux/rootfs/lib/modules/20144317..*/updates/drivers/net/wireless/ti/wlcore/wlcore.ko  Not found !

My setup env is as follows...

                            \\\//
#                           -(o o)-
#========================oOO==(_)==OOo=======================
# This file contains the exports needed for automating the
# build process of WLAN components.
# Place this file in the same directory with wl18xx_build.sh
# build scripts. No need to run 'source setup-env', the build
# scripts will perfom it internaly.
#===========================================================
# User specific environment settings - use full PATH

# if DEFAULT toolchain path is set toolchain will be downloaded to ./toolchain.
export TOOLCHAIN_PATH=/opt/pkg/petalinux-v2014.4-final/tools/linux-i386/arm-xilinx-linux-gnueabi/bin

# if DEFAULT path to root filesystem is set ./fs folder will be used.
export ROOTFS=~/Embedded/software/linux/projects/mz-7z020/build/linux/rootfs

#if DEFAULT kernel path is set - kernel will be downloaded (set branch to match kernel version)
export KERNEL_PATH=~/Embedded/software/linux/projects/mz-7z020/build/linux/kernel/xlnx-3.17

# if KERNEL_VARIANT below is set the build script will look for kernel specific
# patches under the patches directory:
# - patches under the pathces/driver_patches/$KERNEL_VARIANT directory would be
#   applied during "modules" build.
# - patches under the patches/kernel_patches/$/$KERNEL_VARIANT directory would
#   be applied to the kernel pointed by KERNEL_PATH in case the "patch_kernel"
#   command is used.
#   Note: the kernel is not built automatically after the patches are applied
export KERNEL_VARIANT=DEFAULT

export CROSS_COMPILE=arm-xilinx-linux-gnueabi-
export ARCH=arm
[ "$TOOLCHAIN_PATH" != "DEFAULT" ] && export PATH=$TOOLCHAIN_PATH:$PATH

Thanks for any help on this.

John

  • An update, I think I have modified the device-tree, I was getting a syntax error because new items to the device tree must be added to the first set of curly braces. Now that that is is there my error building is slightly different but I still cant build the tools.

    Verifying filesystem skeleton...
    ERROR /home/woody/Embedded/software/linux/projects/mz-7z020/build/linux/rootfs/lib/modules/20144317..*/updates/drivers/net/wireless/ti/wl18xx/wl18xx.ko Not found !
    md5sum: /home/woody/Embedded/software/linux/projects/mz-7z020/build/linux/rootfs/lib/modules/20144317..*/updates/drivers/net/wireless/ti/wl18xx/wl18xx.ko: No such file or directory
    md5sum: /home/woody/Embedded/test/build-utilites/src/compat_wireless/drivers/net/wireless/ti/wl18xx/wl18xx.ko: No such file or directory
    ERROR: file mismatch


    Looks like the wlcore error is gone?

    Thanks
    John
  • Hi John,

    It does look like the wl18xx driver is not getting build. You would need both CONFIG_CRYPTO_CCM & CONFIG_CRYPTO_CGM . Please confirm if you have defined both.

    For the dts changes, please refer to: processors.wiki.ti.com/.../WL18xx_Platform_Integration_Guide

    Regards,
    Gigi Joseph.
  • Greetings,

    Yes both of those are set.  I have gone through the petalinux configuration tool and gotten everything set except the CONFIG_WIRELESS_EXT which I have not found the menu item to enable that setting.  I find that when I run the script I get build errors and petalinux reverts back to the old settings so I must enable everything through the petalinux config tool.  If someone knows how to enable this via the petalinux tools that would be greatly appreciated.

    Thanks,

    John

  • I manually built the everything and it seems that there are no errors and the drivers show up in the appropriate place. The only two differences were that I did not use the sudo version of the build script and I built each piece independently.

    John
  • Hi John,

    Thanks for the update, can you confirm if I can move this thread to resolved state?

    Regards,
    Gigi Joseph.
  • Hi Joseph,

    I did some tests building, I still have several issues.  I think there is a problem with the script or something related to telling if the files are created.  The drivers always get build but when running the full script is fails to find the files.  I think that generally I am ok but there does appear to be an issue.

    I think I now have my setup-env file setup correctly so the files get placed in the rootfs.  I am able to load all the modules using insmod.  My setup-env is at the bottom of the reply for reference.

    When I run the verification script I have managed to get all the CONFIG options to set except for CONFIG_WIRELESS_EXT.  Can't seem to find out how to set this using petalinux config and don't know if this is still causing a problem.

    When I do load all of the drivers I get the following problem...

    root@wlink:/lib/modules/3.17.0-xilinx/updates# ifconfig wlan0 up                
    ifconfig: SIOCGIFFLAGS: No such device 

    My top level device tree is setup as follows which looks to the required changes per the working microzed device tree.

    /dts-v1/;
    /include/ "system-conf.dtsi"
    / {
        wlcore {
            compatible = "wlcore";
            interrupt-parent = <&intc>;
            irq = <0x0>;
            platform-quirks = <0x1>;
            board-ref-clock = <0x4>;
        };

        wlan_en: fixedregulator@1 {
            compatible = "regulator-fixed";
            regulator-name = "wlan-en-regulator";
            regulator-min-microvolt = <0x325aa0>;
            regulator-max-microvolt = <0x325aa0>;
            gpio = <&gpio0 0x9 0x4>;
            startup-delay-us = <0x11170>;
            enable-active-high;
        };
    };

    &sdhci1{
        xlnx,has-cd = <0x0>;
        xlnx,has-power = <0x0>;
        xlnx,has-wp = <0x0>;
        vmmc-supply = <&wlan_en>;
        cap-power-off-card;
    };

    //// setup-env

    #                           -(o o)-
    #========================oOO==(_)==OOo=======================
    # This file contains the exports needed for automating the
    # build process of WLAN components.
    # Place this file in the same directory with wl18xx_build.sh
    # build scripts. No need to run 'source setup-env', the build
    # scripts will perfom it internaly.
    #===========================================================
    # User specific environment settings - use full PATH

    # if DEFAULT toolchain path is set toolchain will be downloaded to ./toolchain.
    export TOOLCHAIN_PATH=/opt/pkg/petalinux-v2014.4-final/tools/linux-i386/arm-xilinx-linux-gnueabi/bin

    # if DEFAULT path to root filesystem is set ./fs folder will be used.
    export ROOTFS=~/Embedded/wlink_test/software/wlink/build/linux/rootfs/targetroot

    #if DEFAULT kernel path is set - kernel will be downloaded (set branch to match kernel version)
    export KERNEL_PATH=~/Embedded/wlink_test/software/wlink/build/linux/kernel/xlnx-3.17

    # if KERNEL_VARIANT below is set the build script will look for kernel specific
    # patches under the patches directory:
    # - patches under the pathces/driver_patches/$KERNEL_VARIANT directory would be
    #   applied during "modules" build.
    # - patches under the patches/kernel_patches/$/$KERNEL_V:qARIANT directory would
    #   be applied to the kernel pointed by KERNEL_PATH in case the "patch_kernel"
    #   command is used.
    #   Note: the kernel is not built automatically after the patches are applied
    export KERNEL_VARIANT=DEFAULT

    export CROSS_COMPILE=arm-xilinx-linux-gnueabi-
    export ARCH=arm
    [ "$TOOLCHAIN_PATH" != "DEFAULT" ] && export PATH=$TOOLCHAIN_PATH:$PATH

  • I thought all of the modules were loading but now I am getting the following error when I try to load

    insmod wlcore/wlcore_sdio.ko


    wl1271_sdio: probe of mmc1:0001:2 failed with error -12
  • I discovered that my changes to the device tree top level with the snippet that makes changes to the SDIO instance resulted in the mmc failure.  When I remove these the wlcore_sdio.ko driver loads without issue but I still get the SDIO load error.

  • Hi,

    For the error:

    wl1271_sdio: probe of mmc1:0001:2 failed with error -12

    Please make the below change in the dts file:

    From:

    wlcore: wlcore@0 {
    compatible = "ti,wlcore";
    reg = <2>;
    interrupt-parent = <&gpio3>;
    interrupts = <17 IRQ_TYPE_LEVEL_HIGH>;
    };

    To:

    wlcore: wlcore@0 {
    compatible = "ti,wl1835";
    reg = <2>;
    interrupt-parent = <&gpio3>;
    interrupts = <17 IRQ_TYPE_LEVEL_HIGH>;
    };

    Regards,
    Gigi Joseph.
  • No luck, I get the same error.  I have included my complete device tree for reference.  I think there is a problem with my interrupts line which I am going to correct but need to look up the appropriate interrupt line.  Other than that do you see anything obvious.  I have verified that /sys/firmware.devicetree/base/wlcore indicates your recommended change.

    /dts-v1/;

    / {
        #address-cells = <0x1>;
        #size-cells = <0x1>;
        compatible = "xlnx,zynq-7000";
        model = "wlink";

        chosen {
            bootargs = "console=ttyPS0,115200 earlyprintk";
        };

        aliases {
            serial0 = "/amba/serial@e0001000";
            ethernet0 = "/amba/ethernet@e000b000";
        };

        memory {
            device_type = "memory";
            reg = <0x0 0x40000000>;
        };

        cpus {
            #address-cells = <0x1>;
            #size-cells = <0x0>;

            cpu@0 {
                compatible = "arm,cortex-a9";
                device_type = "cpu";
                reg = <0x0>;
                clocks = <0x1 0x3>;
                clock-latency = <0x3e8>;
                cpu0-supply = <0x2>;
                operating-points = <0xa2c2a 0xf4240 0x51615 0xf4240>;
            };

            cpu@1 {
                compatible = "arm,cortex-a9";
                device_type = "cpu";
                reg = <0x1>;
                clocks = <0x1 0x3>;
            };
        };

        pmu {
            compatible = "arm,cortex-a9-pmu";
            interrupts = <0x0 0x5 0x4 0x0 0x6 0x4>;
            interrupt-parent = <0x3>;
            reg = <0xf8891000 0x1000 0xf8893000 0x1000>;
        };

        fixedregulator@0 {
            compatible = "regulator-fixed";
            regulator-name = "VCCPINT";
            regulator-min-microvolt = <0xf4240>;
            regulator-max-microvolt = <0xf4240>;
            regulator-boot-on;
            regulator-always-on;
            linux,phandle = <0x2>;
            phandle = <0x2>;
        };

        amba {
            compatible = "simple-bus";
            #address-cells = <0x1>;
            #size-cells = <0x1>;
            interrupt-parent = <0x3>;
            ranges;

            adc@f8007100 {
                compatible = "xlnx,zynq-xadc-1.00.a";
                reg = <0xf8007100 0x20>;
                interrupts = <0x0 0x7 0x4>;
                interrupt-parent = <0x3>;
                clocks = <0x1 0xc>;
            };

            can@e0008000 {
                compatible = "xlnx,zynq-can-1.0";
                status = "disabled";
                clocks = <0x1 0x13 0x1 0x24>;
                clock-names = "can_clk", "pclk";
                reg = <0xe0008000 0x1000>;
                interrupts = <0x0 0x1c 0x4>;
                interrupt-parent = <0x3>;
                tx-fifo-depth = <0x40>;
                rx-fifo-depth = <0x40>;
            };

            can@e0009000 {
                compatible = "xlnx,zynq-can-1.0";
                status = "disabled";
                clocks = <0x1 0x14 0x1 0x25>;
                clock-names = "can_clk", "pclk";
                reg = <0xe0009000 0x1000>;
                interrupts = <0x0 0x33 0x4>;
                interrupt-parent = <0x3>;
                tx-fifo-depth = <0x40>;
                rx-fifo-depth = <0x40>;
            };

            gpio@e000a000 {
                compatible = "xlnx,zynq-gpio-1.0";
                #gpio-cells = <0x2>;
                clocks = <0x1 0x2a>;
                gpio-controller;
                interrupt-parent = <0x3>;
                interrupts = <0x0 0x14 0x4>;
                reg = <0xe000a000 0x1000>;
                emio-gpio-width = <0x1>;
                gpio-mask-high = <0x0>;
                gpio-mask-low = <0x5600>;
                linux,phandle = <0x5>;
                phandle = <0x5>;
            };

            i2c@e0004000 {
                compatible = "cdns,i2c-r1p10";
                status = "disabled";
                clocks = <0x1 0x26>;
                interrupt-parent = <0x3>;
                interrupts = <0x0 0x19 0x4>;
                reg = <0xe0004000 0x1000>;
                #address-cells = <0x1>;
                #size-cells = <0x0>;
            };

            i2c@e0005000 {
                compatible = "cdns,i2c-r1p10";
                status = "disabled";
                clocks = <0x1 0x27>;
                interrupt-parent = <0x3>;
                interrupts = <0x0 0x30 0x4>;
                reg = <0xe0005000 0x1000>;
                #address-cells = <0x1>;
                #size-cells = <0x0>;
            };

            interrupt-controller@f8f01000 {
                compatible = "arm,cortex-a9-gic";
                #interrupt-cells = <0x3>;
                interrupt-controller;
                reg = <0xf8f01000 0x1000 0xf8f00100 0x100>;
                num_cpus = <0x2>;
                num_interrupts = <0x60>;
                linux,phandle = <0x3>;
                phandle = <0x3>;
            };

            cache-controller@f8f02000 {
                compatible = "arm,pl310-cache";
                reg = <0xf8f02000 0x1000>;
                arm,data-latency = <0x3 0x2 0x2>;
                arm,tag-latency = <0x2 0x2 0x2>;
                cache-unified;
                cache-level = <0x2>;
            };

            memory-controller@f8006000 {
                compatible = "xlnx,zynq-ddrc-1.0";
                reg = <0xf8006000 0x1000>;
                xlnx,has-ecc = <0x0>;
            };

            ocmc@f800c000 {
                compatible = "xlnx,zynq-ocmc-1.0";
                interrupt-parent = <0x3>;
                interrupts = <0x0 0x3 0x4>;
                reg = <0xf800c000 0x1000>;
            };

            serial@e0000000 {
                compatible = "xlnx,xuartps", "cdns,uart-r1p8";
                status = "disabled";
                clocks = <0x1 0x17 0x1 0x28>;
                clock-names = "uart_clk", "pclk";
                reg = <0xe0000000 0x1000>;
                interrupts = <0x0 0x1b 0x4>;
            };

            serial@e0001000 {
                compatible = "xlnx,xuartps", "cdns,uart-r1p8";
                status = "okay";
                clocks = <0x1 0x18 0x1 0x29>;
                clock-names = "uart_clk", "pclk";
                reg = <0xe0001000 0x1000>;
                interrupts = <0x0 0x32 0x4>;
                current-speed = <0x1c200>;
                device_type = "serial";
                port-number = <0x0>;
            };

            spi@e0006000 {
                compatible = "xlnx,zynq-spi-r1p6";
                reg = <0xe0006000 0x1000>;
                status = "disabled";
                interrupt-parent = <0x3>;
                interrupts = <0x0 0x1a 0x4>;
                clocks = <0x1 0x19 0x1 0x22>;
                clock-names = "ref_clk", "pclk";
                #address-cells = <0x1>;
                #size-cells = <0x0>;
            };

            spi@e0007000 {
                compatible = "xlnx,zynq-spi-r1p6";
                reg = <0xe0007000 0x1000>;
                status = "disabled";
                interrupt-parent = <0x3>;
                interrupts = <0x0 0x31 0x4>;
                clocks = <0x1 0x1a 0x1 0x23>;
                clock-names = "ref_clk", "pclk";
                #address-cells = <0x1>;
                #size-cells = <0x0>;
            };

            spi@e000d000 {
                clock-names = "ref_clk", "pclk";
                clocks = <0x1 0xa 0x1 0x2b>;
                compatible = "xlnx,zynq-qspi-1.0";
                status = "okay";
                interrupt-parent = <0x3>;
                interrupts = <0x0 0x13 0x4>;
                reg = <0xe000d000 0x1000>;
                #address-cells = <0x1>;
                #size-cells = <0x0>;
                is-dual = <0x0>;
                num-cs = <0x1>;

                flash@0 {
                    compatible = "micron,n25q128";
                    reg = <0x0>;
                    #address-cells = <0x1>;
                    #size-cells = <0x1>;
                    spi-max-frequency = <0x2faf080>;

                    partition@0x00000000 {
                        label = "boot";
                        reg = <0x0 0x500000>;
                    };

                    partition@0x00500000 {
                        label = "bootenv";
                        reg = <0x500000 0x20000>;
                    };

                    partition@0x00520000 {
                        label = "kernel";
                        reg = <0x520000 0xa80000>;
                    };

                    partition@0x00fa0000 {
                        label = "spare";
                        reg = <0xfa0000 0x0>;
                    };
                };
            };

            memory-controller@e000e000 {
                #address-cells = <0x1>;
                #size-cells = <0x1>;
                status = "disabled";
                clock-names = "memclk", "aclk";
                clocks = <0x1 0xb 0x1 0x2c>;
                compatible = "arm,pl353-smc-r2p1";
                interrupt-parent = <0x3>;
                interrupts = <0x0 0x12 0x4>;
                ranges;
                reg = <0xe000e000 0x1000>;

                flash@e1000000 {
                    status = "disabled";
                    compatible = "arm,pl353-nand-r2p1";
                    reg = <0xe1000000 0x1000000>;
                    #address-cells = <0x1>;
                    #size-cells = <0x1>;
                };

                flash@e2000000 {
                    status = "disabled";
                    compatible = "cfi-flash";
                    reg = <0xe2000000 0x1000>;
                    #address-cells = <0x1>;
                    #size-cells = <0x1>;
                };
            };

            ethernet@e000b000 {
                compatible = "xlnx,ps7-ethernet-1.00.a";
                reg = <0xe000b000 0x1000>;
                status = "okay";
                interrupts = <0x0 0x16 0x4>;
                clocks = <0x1 0xd 0x1 0x1e>;
                clock-names = "ref_clk", "aper_clk";
                local-mac-address = [00 0a 35 00 49 2d];
                xlnx,has-mdio = <0x1>;
                #address-cells = <0x1>;
                #size-cells = <0x0>;
                phy-mode = "rgmii-id";
                xlnx,ptp-enet-clock = <0x69f6bcb>;

                mdio {
                    #address-cells = <0x1>;
                    #size-cells = <0x0>;
                };
            };

            ethernet@e000c000 {
                compatible = "xlnx,ps7-ethernet-1.00.a";
                reg = <0xe000c000 0x1000>;
                status = "disabled";
                interrupts = <0x0 0x2d 0x4>;
                clocks = <0x1 0xe 0x1 0x1f>;
                clock-names = "ref_clk", "aper_clk";
                local-mac-address = [00 0a 35 00 00 00];
                xlnx,has-mdio = <0x1>;
                #address-cells = <0x1>;
                #size-cells = <0x0>;
            };

            sdhci@e0100000 {
                compatible = "arasan,sdhci-8.9a";
                status = "okay";
                clock-names = "clk_xin", "clk_ahb";
                clocks = <0x1 0x15 0x1 0x20>;
                interrupt-parent = <0x3>;
                interrupts = <0x0 0x18 0x4>;
                reg = <0xe0100000 0x1000>;
                clock-frequency = <0x2faf080>;
            };

            sdhci@e0101000 {
                compatible = "arasan,sdhci-8.9a";
                status = "okay";
                clock-names = "clk_xin", "clk_ahb";
                clocks = <0x1 0x16 0x1 0x21>;
                interrupt-parent = <0x3>;
                interrupts = <0x0 0x2f 0x4>;
                reg = <0xe0101000 0x1000>;
                clock-frequency = <0x2faf080>;
                xlnx,has-cd = <0x0>;
                xlnx,has-power = <0x0>;
                xlnx,has-wp = <0x0>;
                vmmc-supply = <0x4>;
                cap-power-off-card;
            };

            slcr@f8000000 {
                #address-cells = <0x1>;
                #size-cells = <0x1>;
                compatible = "xlnx,zynq-slcr", "syscon";
                reg = <0xf8000000 0x1000>;
                ranges;

                clkc@100 {
                    #clock-cells = <0x1>;
                    compatible = "xlnx,ps7-clkc";
                    ps-clk-frequency = <0x1fca055>;
                    fclk-enable = <0xf>;
                    clock-output-names = "armpll", "ddrpll", "iopll", "cpu_6or4x", "cpu_3or2x", "cpu_2x", "cpu_1x", "ddr2x", "ddr3x", "dci", "lqspi", "smc", "pcap", "gem0", "gem1", "fclk0", "fclk1", "fclk2", "fclk3", "can0", "can1", "sdio0", "sdio1", "uart0", "uart1", "spi0", "spi1", "dma", "usb0_aper", "usb1_aper", "gem0_aper", "gem1_aper", "sdio0_aper", "sdio1_aper", "spi0_aper", "spi1_aper", "can0_aper", "can1_aper", "i2c0_aper", "i2c1_aper", "uart0_aper", "uart1_aper", "gpio_aper", "lqspi_aper", "smc_aper", "swdt", "dbg_trc", "dbg_apb";
                    reg = <0x100 0x100>;
                    linux,phandle = <0x1>;
                    phandle = <0x1>;
                };
            };

            dmac@f8003000 {
                compatible = "arm,pl330", "arm,primecell";
                reg = <0xf8003000 0x1000>;
                interrupt-parent = <0x3>;
                interrupt-names = "abort", "dma0", "dma1", "dma2", "dma3", "dma4", "dma5", "dma6", "dma7";
                interrupts = <0x0 0xd 0x4 0x0 0xe 0x4 0x0 0xf 0x4 0x0 0x10 0x4 0x0 0x11 0x4 0x0 0x28 0x4 0x0 0x29 0x4 0x0 0x2a 0x4 0x0 0x2b 0x4>;
                #dma-cells = <0x1>;
                #dma-channels = <0x8>;
                #dma-requests = <0x4>;
                clocks = <0x1 0x1b>;
                clock-names = "apb_pclk";
            };

            devcfg@f8007000 {
                clock-names = "ref_clk", "fclk0", "fclk1", "fclk2", "fclk3";
                clocks = <0x1 0xc 0x1 0xf 0x1 0x10 0x1 0x11 0x1 0x12>;
                compatible = "xlnx,zynq-devcfg-1.0";
                interrupt-parent = <0x3>;
                interrupts = <0x0 0x8 0x4>;
                reg = <0xf8007000 0x100>;
            };

            timer@f8f00200 {
                compatible = "arm,cortex-a9-global-timer";
                reg = <0xf8f00200 0x20>;
                interrupts = <0x1 0xb 0x301>;
                interrupt-parent = <0x3>;
                clocks = <0x1 0x4>;
            };

            timer@f8001000 {
                interrupt-parent = <0x3>;
                interrupts = <0x0 0xa 0x4 0x0 0xb 0x4 0x0 0xc 0x4>;
                compatible = "cdns,ttc";
                clocks = <0x1 0x6>;
                reg = <0xf8001000 0x1000>;
            };

            timer@f8002000 {
                interrupt-parent = <0x3>;
                interrupts = <0x0 0x25 0x4 0x0 0x26 0x4 0x0 0x27 0x4>;
                compatible = "cdns,ttc";
                clocks = <0x1 0x6>;
                reg = <0xf8002000 0x1000>;
            };

            timer@f8f00600 {
                interrupt-parent = <0x3>;
                interrupts = <0x1 0xd 0x301>;
                compatible = "arm,cortex-a9-twd-timer";
                reg = <0xf8f00600 0x20>;
                clocks = <0x1 0x4>;
            };

            watchdog@f8005000 {
                clocks = <0x1 0x2d>;
                compatible = "xlnx,zynq-wdt-r1p2";
                device_type = "watchdog";
                interrupt-parent = <0x3>;
                interrupts = <0x0 0x9 0x1>;
                reg = <0xf8005000 0x1000>;
                reset = <0x0>;
                timeout-sec = <0xa>;
            };

            usb@e0002000 {
                clocks = <0x1 0x1c>;
                compatible = "xlnx,ps7-usb-1.00.a", "xlnx,zynq-usb-1.00.a";
                status = "okay";
                interrupt-parent = <0x3>;
                interrupts = <0x0 0x15 0x4>;
                reg = <0xe0002000 0x1000>;
                dr_mode = "host";
                phy_type = "ulpi";
                usb-reset = <0x5 0x7 0x0>;
            };

            usb@e0003000 {
                clocks = <0x1 0x1d>;
                compatible = "xlnx,ps7-usb-1.00.a", "xlnx,zynq-usb-1.00.a";
                status = "disabled";
                interrupt-parent = <0x3>;
                interrupts = <0x0 0x2c 0x4>;
                reg = <0xe0003000 0x1000>;
            };
        };

        wlcore {
            compatible = "ti,w1835";
            interrupt-parent = <0x3>;
            irq = <0x0>;
            platform-quirks = <0x1>;
            board-ref-clock = <0x4>;
        };

        fixedregulator@1 {
            compatible = "regulator-fixed";
            regulator-name = "wlan-en-regulator";
            regulator-min-microvolt = <0x325aa0>;
            regulator-max-microvolt = <0x325aa0>;
            gpio = <0x5 0x9 0x4>;
            startup-delay-us = <0x11170>;
            enable-active-high;
            linux,phandle = <0x4>;
            phandle = <0x4>;
        };
    };

  • I have made the following change which does not resolve the issue but I think is correct for the zynq

    wlcore {
    compatible = "ti,w1835";
    interrupt-parent = <0x5>;
    interrupts = <0x14 0x0>;
    platform-quirks = <0x1>;
    board-ref-clock = <0x4>;
    };

    This was done to support the fact that the interrupt is a GPIO interrupt so the GPIO is the interrupt parent and the gpio interrupt number is at 20, really 52 but for arm 32 is subtracted and the microzed uses gpio 0 as the source.

    Some questions in addition to the problems,
    How does the wlcore know to use sdio
    How does the wl18xx driver associate with the wlcore_sdio driver. If I modprobe the wl18xx.ko module all modules except the wlcore_sdio get loaded.

    Thanks,
    John
  • FYI, I have looked at the signals on the Zedboard with a scope and the enable signal is always high the interrupt is always low.
    My SDIO clock is going at 50MHz and all my data and command signals are high. Is there a way to enable / disable the wlan enable bit so I can see if this is working?

    Thanks,
    John
  • Hi John,

    Please refer to processors.wiki.ti.com/.../WL18xx_Platform_Integration_Guide for all the dts changes that are required.

    Regards,
    Gigi Joseph.
  • I have been referring to the integration guide.  It is not very useful for other than the specified platform.  I think that I have the device tree correct.   I believe my fixed regulator is working because it is disable when I disable sdhci@e0101000 as it is in this device tree.  Of note, I can load the wlcore_sdio.ko when the second sdio is disable.  I think there is a conflict between the loading of mmc1 which happens before I manually load the drivers.  It seems as though the wlcore definitions in the device tree are not used.  Are there patches that I need in the 3.17 kernel to get this going?  I only see patches for up to 3.14 for different boards.

    Thanks,

    John

    /dts-v1/;

    / {
        #address-cells = <0x1>;
        #size-cells = <0x1>;
        compatible = "xlnx,zynq-7000";
        model = "wlink";

        chosen {
            bootargs = "console=ttyPS0,115200 earlyprintk";
        };

        aliases {
            serial0 = "/amba/serial@e0001000";
            ethernet0 = "/amba/ethernet@e000b000";
        };

        memory {
            device_type = "memory";
            reg = <0x0 0x40000000>;
        };

        cpus {
            #address-cells = <0x1>;
            #size-cells = <0x0>;

            cpu@0 {
                compatible = "arm,cortex-a9";
                device_type = "cpu";
                reg = <0x0>;
                clocks = <0x1 0x3>;
                clock-latency = <0x3e8>;
                cpu0-supply = <0x2>;
                operating-points = <0xa2c2a 0xf4240 0x51615 0xf4240>;
            };

            cpu@1 {
                compatible = "arm,cortex-a9";
                device_type = "cpu";
                reg = <0x1>;
                clocks = <0x1 0x3>;
            };
        };

        pmu {
            compatible = "arm,cortex-a9-pmu";
            interrupts = <0x0 0x5 0x4 0x0 0x6 0x4>;
            interrupt-parent = <0x3>;
            reg = <0xf8891000 0x1000 0xf8893000 0x1000>;
        };

        fixedregulator@0 {
            compatible = "regulator-fixed";
            regulator-name = "VCCPINT";
            regulator-min-microvolt = <0xf4240>;
            regulator-max-microvolt = <0xf4240>;
            regulator-boot-on;
            regulator-always-on;
            linux,phandle = <0x2>;
            phandle = <0x2>;
        };

        amba {
            compatible = "simple-bus";
            #address-cells = <0x1>;
            #size-cells = <0x1>;
            interrupt-parent = <0x3>;
            ranges;

            adc@f8007100 {
                compatible = "xlnx,zynq-xadc-1.00.a";
                reg = <0xf8007100 0x20>;
                interrupts = <0x0 0x7 0x4>;
                interrupt-parent = <0x3>;
                clocks = <0x1 0xc>;
            };

            can@e0008000 {
                compatible = "xlnx,zynq-can-1.0";
                status = "disabled";
                clocks = <0x1 0x13 0x1 0x24>;
                clock-names = "can_clk", "pclk";
                reg = <0xe0008000 0x1000>;
                interrupts = <0x0 0x1c 0x4>;
                interrupt-parent = <0x3>;
                tx-fifo-depth = <0x40>;
                rx-fifo-depth = <0x40>;
            };

            can@e0009000 {
                compatible = "xlnx,zynq-can-1.0";
                status = "disabled";
                clocks = <0x1 0x14 0x1 0x25>;
                clock-names = "can_clk", "pclk";
                reg = <0xe0009000 0x1000>;
                interrupts = <0x0 0x33 0x4>;
                interrupt-parent = <0x3>;
                tx-fifo-depth = <0x40>;
                rx-fifo-depth = <0x40>;
            };

            gpio@e000a000 {
                compatible = "xlnx,zynq-gpio-1.0";
                #gpio-cells = <0x2>;
                clocks = <0x1 0x2a>;
                gpio-controller;
                interrupt-parent = <0x3>;
                interrupts = <0x0 0x14 0x4>;
                reg = <0xe000a000 0x1000>;
                emio-gpio-width = <0x1>;
                gpio-mask-high = <0x0>;
                gpio-mask-low = <0x5600>;
                interrupt-controller;
                #interrupt-cells = <0x2>;
                linux,phandle = <0x5>;
                phandle = <0x5>;
            };

            i2c@e0004000 {
                compatible = "cdns,i2c-r1p10";
                status = "disabled";
                clocks = <0x1 0x26>;
                interrupt-parent = <0x3>;
                interrupts = <0x0 0x19 0x4>;
                reg = <0xe0004000 0x1000>;
                #address-cells = <0x1>;
                #size-cells = <0x0>;
            };

            i2c@e0005000 {
                compatible = "cdns,i2c-r1p10";
                status = "disabled";
                clocks = <0x1 0x27>;
                interrupt-parent = <0x3>;
                interrupts = <0x0 0x30 0x4>;
                reg = <0xe0005000 0x1000>;
                #address-cells = <0x1>;
                #size-cells = <0x0>;
            };

            interrupt-controller@f8f01000 {
                compatible = "arm,cortex-a9-gic";
                #interrupt-cells = <0x3>;
                interrupt-controller;
                reg = <0xf8f01000 0x1000 0xf8f00100 0x100>;
                num_cpus = <0x2>;
                num_interrupts = <0x60>;
                linux,phandle = <0x3>;
                phandle = <0x3>;
            };

            cache-controller@f8f02000 {
                compatible = "arm,pl310-cache";
                reg = <0xf8f02000 0x1000>;
                arm,data-latency = <0x3 0x2 0x2>;
                arm,tag-latency = <0x2 0x2 0x2>;
                cache-unified;
                cache-level = <0x2>;
            };

            memory-controller@f8006000 {
                compatible = "xlnx,zynq-ddrc-1.0";
                reg = <0xf8006000 0x1000>;
                xlnx,has-ecc = <0x0>;
            };

            ocmc@f800c000 {
                compatible = "xlnx,zynq-ocmc-1.0";
                interrupt-parent = <0x3>;
                interrupts = <0x0 0x3 0x4>;
                reg = <0xf800c000 0x1000>;
            };

            serial@e0000000 {
                compatible = "xlnx,xuartps", "cdns,uart-r1p8";
                status = "disabled";
                clocks = <0x1 0x17 0x1 0x28>;
                clock-names = "uart_clk", "pclk";
                reg = <0xe0000000 0x1000>;
                interrupts = <0x0 0x1b 0x4>;
                current-speed = <0x1c200>;
                device_type = "serial";
                port-number = <0x1>;
            };

            serial@e0001000 {
                compatible = "xlnx,xuartps", "cdns,uart-r1p8";
                status = "okay";
                clocks = <0x1 0x18 0x1 0x29>;
                clock-names = "uart_clk", "pclk";
                reg = <0xe0001000 0x1000>;
                interrupts = <0x0 0x32 0x4>;
                current-speed = <0x1c200>;
                device_type = "serial";
                port-number = <0x0>;
            };

            spi@e0006000 {
                compatible = "xlnx,zynq-spi-r1p6";
                reg = <0xe0006000 0x1000>;
                status = "disabled";
                interrupt-parent = <0x3>;
                interrupts = <0x0 0x1a 0x4>;
                clocks = <0x1 0x19 0x1 0x22>;
                clock-names = "ref_clk", "pclk";
                #address-cells = <0x1>;
                #size-cells = <0x0>;
            };

            spi@e0007000 {
                compatible = "xlnx,zynq-spi-r1p6";
                reg = <0xe0007000 0x1000>;
                status = "disabled";
                interrupt-parent = <0x3>;
                interrupts = <0x0 0x31 0x4>;
                clocks = <0x1 0x1a 0x1 0x23>;
                clock-names = "ref_clk", "pclk";
                #address-cells = <0x1>;
                #size-cells = <0x0>;
            };

            spi@e000d000 {
                clock-names = "ref_clk", "pclk";
                clocks = <0x1 0xa 0x1 0x2b>;
                compatible = "xlnx,zynq-qspi-1.0";
                status = "okay";
                interrupt-parent = <0x3>;
                interrupts = <0x0 0x13 0x4>;
                reg = <0xe000d000 0x1000>;
                #address-cells = <0x1>;
                #size-cells = <0x0>;
                is-dual = <0x0>;
                num-cs = <0x1>;

                flash@0 {
                    compatible = "micron,n25q128";
                    reg = <0x0>;
                    #address-cells = <0x1>;
                    #size-cells = <0x1>;
                    spi-max-frequency = <0x2faf080>;

                    partition@0x00000000 {
                        label = "boot";
                        reg = <0x0 0x500000>;
                    };

                    partition@0x00500000 {
                        label = "bootenv";
                        reg = <0x500000 0x20000>;
                    };

                    partition@0x00520000 {
                        label = "kernel";
                        reg = <0x520000 0xa80000>;
                    };

                    partition@0x00fa0000 {
                        label = "spare";
                        reg = <0xfa0000 0x0>;
                    };
                };
            };

            memory-controller@e000e000 {
                #address-cells = <0x1>;
                #size-cells = <0x1>;
                status = "disabled";
                clock-names = "memclk", "aclk";
                clocks = <0x1 0xb 0x1 0x2c>;
                compatible = "arm,pl353-smc-r2p1";
                interrupt-parent = <0x3>;
                interrupts = <0x0 0x12 0x4>;
                ranges;
                reg = <0xe000e000 0x1000>;

                flash@e1000000 {
                    status = "disabled";
                    compatible = "arm,pl353-nand-r2p1";
                    reg = <0xe1000000 0x1000000>;
                    #address-cells = <0x1>;
                    #size-cells = <0x1>;
                };

                flash@e2000000 {
                    status = "disabled";
                    compatible = "cfi-flash";
                    reg = <0xe2000000 0x1000>;
                    #address-cells = <0x1>;
                    #size-cells = <0x1>;
                };
            };

            ethernet@e000b000 {
                compatible = "xlnx,ps7-ethernet-1.00.a";
                reg = <0xe000b000 0x1000>;
                status = "okay";
                interrupts = <0x0 0x16 0x4>;
                clocks = <0x1 0xd 0x1 0x1e>;
                clock-names = "ref_clk", "aper_clk";
                local-mac-address = [00 0a 35 00 49 2d];
                xlnx,has-mdio = <0x1>;
                #address-cells = <0x1>;
                #size-cells = <0x0>;
                phy-mode = "rgmii-id";
                xlnx,ptp-enet-clock = <0x69f6bcb>;

                mdio {
                    #address-cells = <0x1>;
                    #size-cells = <0x0>;
                };
            };

            ethernet@e000c000 {
                compatible = "xlnx,ps7-ethernet-1.00.a";
                reg = <0xe000c000 0x1000>;
                status = "disabled";
                interrupts = <0x0 0x2d 0x4>;
                clocks = <0x1 0xe 0x1 0x1f>;
                clock-names = "ref_clk", "aper_clk";
                local-mac-address = [00 0a 35 00 00 00];
                xlnx,has-mdio = <0x1>;
                #address-cells = <0x1>;
                #size-cells = <0x0>;
            };

            sdhci@e0100000 {
                compatible = "arasan,sdhci-8.9a";
                status = "okay";
                clock-names = "clk_xin", "clk_ahb";
                clocks = <0x1 0x15 0x1 0x20>;
                interrupt-parent = <0x3>;
                interrupts = <0x0 0x18 0x4>;
                reg = <0xe0100000 0x1000>;
                clock-frequency = <0x2faf080>;
            };

            sdhci@e0101000 {
                compatible = "arasan,sdhci-8.9a";
                status = "disabled";
                clock-names = "clk_xin", "clk_ahb";
                clocks = <0x1 0x16 0x1 0x21>;
                interrupt-parent = <0x3>;
                interrupts = <0x0 0x2f 0x4>;
                reg = <0xe0101000 0x1000>;
                clock-frequency = <0x2faf080>;
                vmmc-supply = <0x4>;
                bus-width = <0x4>;
                ti,non-removable;
                ti,needs-special-hs-handling;
                cap-power-off-card;
                keep-power-in-suspend;
                #address-cells = <0x1>;
                #size-cells = <0x0>;

                wlcore@0 {
                    compatible = "ti,w1835";
                    interrupt-parent = <0x5>;
                    interrupts = <0x14 0x0>;
                    reg = <0x2>;
                };
            };

            slcr@f8000000 {
                #address-cells = <0x1>;
                #size-cells = <0x1>;
                compatible = "xlnx,zynq-slcr", "syscon";
                reg = <0xf8000000 0x1000>;
                ranges;

                clkc@100 {
                    #clock-cells = <0x1>;
                    compatible = "xlnx,ps7-clkc";
                    ps-clk-frequency = <0x1fca055>;
                    fclk-enable = <0xf>;
                    clock-output-names = "armpll", "ddrpll", "iopll", "cpu_6or4x", "cpu_3or2x", "cpu_2x", "cpu_1x", "ddr2x", "ddr3x", "dci", "lqspi", "smc", "pcap", "gem0", "gem1", "fclk0", "fclk1", "fclk2", "fclk3", "can0", "can1", "sdio0", "sdio1", "uart0", "uart1", "spi0", "spi1", "dma", "usb0_aper", "usb1_aper", "gem0_aper", "gem1_aper", "sdio0_aper", "sdio1_aper", "spi0_aper", "spi1_aper", "can0_aper", "can1_aper", "i2c0_aper", "i2c1_aper", "uart0_aper", "uart1_aper", "gpio_aper", "lqspi_aper", "smc_aper", "swdt", "dbg_trc", "dbg_apb";
                    reg = <0x100 0x100>;
                    linux,phandle = <0x1>;
                    phandle = <0x1>;
                };
            };

            dmac@f8003000 {
                compatible = "arm,pl330", "arm,primecell";
                reg = <0xf8003000 0x1000>;
                interrupt-parent = <0x3>;
                interrupt-names = "abort", "dma0", "dma1", "dma2", "dma3", "dma4", "dma5", "dma6", "dma7";
                interrupts = <0x0 0xd 0x4 0x0 0xe 0x4 0x0 0xf 0x4 0x0 0x10 0x4 0x0 0x11 0x4 0x0 0x28 0x4 0x0 0x29 0x4 0x0 0x2a 0x4 0x0 0x2b 0x4>;
                #dma-cells = <0x1>;
                #dma-channels = <0x8>;
                #dma-requests = <0x4>;
                clocks = <0x1 0x1b>;
                clock-names = "apb_pclk";
            };

            devcfg@f8007000 {
                clock-names = "ref_clk", "fclk0", "fclk1", "fclk2", "fclk3";
                clocks = <0x1 0xc 0x1 0xf 0x1 0x10 0x1 0x11 0x1 0x12>;
                compatible = "xlnx,zynq-devcfg-1.0";
                interrupt-parent = <0x3>;
                interrupts = <0x0 0x8 0x4>;
                reg = <0xf8007000 0x100>;
            };

            timer@f8f00200 {
                compatible = "arm,cortex-a9-global-timer";
                reg = <0xf8f00200 0x20>;
                interrupts = <0x1 0xb 0x301>;
                interrupt-parent = <0x3>;
                clocks = <0x1 0x4>;
            };

            timer@f8001000 {
                interrupt-parent = <0x3>;
                interrupts = <0x0 0xa 0x4 0x0 0xb 0x4 0x0 0xc 0x4>;
                compatible = "cdns,ttc";
                clocks = <0x1 0x6>;
                reg = <0xf8001000 0x1000>;
            };

            timer@f8002000 {
                interrupt-parent = <0x3>;
                interrupts = <0x0 0x25 0x4 0x0 0x26 0x4 0x0 0x27 0x4>;
                compatible = "cdns,ttc";
                clocks = <0x1 0x6>;
                reg = <0xf8002000 0x1000>;
            };

            timer@f8f00600 {
                interrupt-parent = <0x3>;
                interrupts = <0x1 0xd 0x301>;
                compatible = "arm,cortex-a9-twd-timer";
                reg = <0xf8f00600 0x20>;
                clocks = <0x1 0x4>;
            };

            watchdog@f8005000 {
                clocks = <0x1 0x2d>;
                compatible = "xlnx,zynq-wdt-r1p2";
                device_type = "watchdog";
                interrupt-parent = <0x3>;
                interrupts = <0x0 0x9 0x1>;
                reg = <0xf8005000 0x1000>;
                reset = <0x0>;
                timeout-sec = <0xa>;
            };

            usb@e0002000 {
                clocks = <0x1 0x1c>;
                compatible = "xlnx,ps7-usb-1.00.a", "xlnx,zynq-usb-1.00.a";
                status = "okay";
                interrupt-parent = <0x3>;
                interrupts = <0x0 0x15 0x4>;
                reg = <0xe0002000 0x1000>;
                dr_mode = "host";
                phy_type = "ulpi";
                usb-reset = <0x5 0x7 0x0>;
            };

            usb@e0003000 {
                clocks = <0x1 0x1d>;
                compatible = "xlnx,ps7-usb-1.00.a", "xlnx,zynq-usb-1.00.a";
                status = "disabled";
                interrupt-parent = <0x3>;
                interrupts = <0x0 0x2c 0x4>;
                reg = <0xe0003000 0x1000>;
            };
        };

        fixedregulator@2 {
            compatible = "regulator-fixed";
            regulator-name = "wlan-en-regulator";
            regulator-min-microvolt = <0x325aa0>;
            regulator-max-microvolt = <0x325aa0>;
            gpio = <0x5 0x9 0x4>;
            startup-delay-us = <0x11170>;
            enable-active-high;
            linux,phandle = <0x4>;
            phandle = <0x4>;
        };
    };

  • A couple of questions:

    1. Do you have the following commit in your 3.17 kernel:

    It is needed for parsing the following subnode of the sdhci interface:

               wlcore@0 {
                    compatible = "ti,w1835";
                    interrupt-parent = <0x5>;
                    interrupts = <0x14 0x0>;
                    reg = <0x2>;
                };

    The probe error during loading of wlcore_sdio may be related to this.

    Can you also paste a full kernel boot log? that shows everything from boot until indmod of the modules?

    BR,

    Eyal

  • Greetings Eyal,

    I did not have that patch applied to the kernel.  I have added it but the results to not appear to have changed.  Here is my full bootlog

    Starting kernel ...                                                             
                                                                                    
    Booting Linux on physical CPU 0x0                                               
    Linux version 3.17.0-xilinx (wood_j@nhl-ulnx01) (gcc version 4.8.3 20140320 (pr5
    CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=18c5387d                 
    CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache        
    Machine model: wlink                                                            
    cma: Reserved 128 MiB at 38000000                                               
    Memory policy: Data cache writealloc                                            
    PERCPU: Embedded 8 pages/cpu @7779c000 s8704 r8192 d15872 u32768                
    Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 260096     
    Kernel command line: console=ttyPS0,115200 earlyprintk                          
    PID hash table entries: 4096 (order: 2, 16384 bytes)                            
    Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)                
    Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)                  
    Memory: 883812K/1048576K available (4713K kernel code, 244K rwdata, 1620K rodat)
    Virtual kernel memory layout:                                                   
        vector  : 0xffff0000 - 0xffff1000   (   4 kB)                               
        fixmap  : 0xffc00000 - 0xffe00000   (2048 kB)                               
        vmalloc : 0x80800000 - 0xff000000   (2024 MB)                               
        lowmem  : 0x40000000 - 0x80000000   (1024 MB)                               
        pkmap   : 0x3fe00000 - 0x40000000   (   2 MB)                               
        modules : 0x3f000000 - 0x3fe00000   (  14 MB)                               
          .text : 0x40008000 - 0x40637928   (6335 kB)                               
          .init : 0x40638000 - 0x4174a200   (17481 kB)                              
          .data : 0x4174c000 - 0x41789220   ( 245 kB)                               
           .bss : 0x41789220 - 0x417bdce4   ( 211 kB)                               
    Preemptible hierarchical RCU implementation.                                    
            Dump stacks of tasks blocking RCU-preempt GP.                           
            RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2.                    
    RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2                    
    NR_IRQS:16 nr_irqs:16 16                                                        
    L2C: platform provided aux values match the hardware, so have no effect.  Pleas.
    L2C-310 erratum 769419 enabled                                                  
    L2C-310 enabling early BRESP for Cortex-A9                                      
    L2C-310 full line of zeros enabled for Cortex-A9                                
    L2C-310 ID prefetch enabled, offset 1 lines                                     
    L2C-310 dynamic clock gating enabled, standby mode enabled                      
    L2C-310 cache controller enabled, 8 ways, 512 kB                                
    L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x76360001                               
    slcr mapped to 80804000                                                         
    zynq_clock_init: clkc starts at 80804100                                        
    Zynq clock init                                                                 
    sched_clock: 64 bits at 333MHz, resolution 3ns, wraps every 3298534883328ns     
    timer #0 at 80806000, irq=43                                                    
    Console: colour dummy device 80x30                                              
    Calibrating delay loop... 1332.01 BogoMIPS (lpj=6660096)                        
    pid_max: default: 32768 minimum: 301                                            
    Security Framework initialized                                                  
    Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)                     
    Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)                
    CPU: Testing write buffer coherency: ok                                         
    CPU0: thread -1, cpu 0, socket 0, mpidr 80000000                                
    Setting up static identity map for 0x473eb0 - 0x473f08                          
    CPU1: Booted secondary processor                                                
    CPU1: thread -1, cpu 1, socket 0, mpidr 80000001                                
    Brought up 2 CPUs                                                               
    SMP: Total of 2 processors activated.                                           
    CPU: All CPU(s) started in SVC mode.                                            
    devtmpfs: initialized                                                           
    VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4         
    regulator-dummy: no parameters                                                  
    NET: Registered protocol family 16                                              
    DMA: preallocated 256 KiB pool for atomic coherent allocations                  
    cpuidle: using governor ladder                                                  
    cpuidle: using governor menu                                                    
    hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.     
    hw-breakpoint: maximum watchpoint size is 4 bytes.                              
    zynq-ocm f800c000.ocmc: ZYNQ OCM pool: 256 KiB @ 0x80880000                     
    VCCPINT: 1000 mV                                                                
    wlan-en-regulator: 3300 mV                                                      
    vgaarb: loaded                                                                  
    SCSI subsystem initialized                                                      
    usbcore: registered new interface driver usbfs                                  
    usbcore: registered new interface driver hub                                    
    usbcore: registered new device driver usb                                       
    media: Linux media interface: v0.10                                             
    Linux video capture interface: v2.00                                            
    pps_core: LinuxPPS API ver. 1 registered                                        
    pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@>
    PTP clock support registered                                                    
    EDAC MC: Ver: 3.0.0                                                             
    Advanced Linux Sound Architecture Driver Initialized.                           
    Switched to clocksource arm_global_timer                                        
    NET: Registered protocol family 2                                               
    TCP established hash table entries: 8192 (order: 3, 32768 bytes)                
    TCP bind hash table entries: 8192 (order: 4, 65536 bytes)                       
    TCP: Hash tables configured (established 8192 bind 8192)                        
    TCP: reno registered                                                            
    UDP hash table entries: 512 (order: 2, 16384 bytes)                             
    UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)                        
    NET: Registered protocol family 1                                               
    RPC: Registered named UNIX socket transport module.                             
    RPC: Registered udp transport module.                                           
    RPC: Registered tcp transport module.                                           
    RPC: Registered tcp NFSv4.1 backchannel transport module.                       
    hw perfevents: enabled with armv7_cortex_a9 PMU driver, 7 counters available    
    futex hash table entries: 512 (order: 3, 32768 bytes)                           
    jffs2: version 2.2. (NAND) (SUMMARY)  © 2001-2006 Red Hat, Inc.                 
    msgmni has been set to 1982                                                     
    io scheduler noop registered                                                    
    io scheduler deadline registered                                                
    io scheduler cfq registered (default)                                           
    dma-pl330 f8003000.dmac: Loaded driver for PL330 DMAC-2364208                   
    dma-pl330 f8003000.dmac:        DBUFF-128x8bytes Num_Chans-8 Num_Peri-4 Num_Eve6
    e0001000.serial: ttyPS0 at MMIO 0xe0001000 (irq = 82, base_baud = 3125000) is as
    console [ttyPS0] enabled                                                        
    xdevcfg f8007000.devcfg: ioremap 0xf8007000 to 8086a000                         
    [drm] Initialized drm 1.1.0 20060810                                            
    brd: module loaded                                                              
    loop: module loaded                                                             
    m25p80 spi32766.0: found s25fl129p1, expected n25q128a13                        
    m25p80 spi32766.0: s25fl129p1 (16384 Kbytes)                                    
    4 ofpart partitions found on MTD device spi32766.0                              
    Creating 4 MTD partitions on "spi32766.0":                                      
    0x000000000000-0x000000500000 : "boot"                                          
    0x000000500000-0x000000520000 : "bootenv"                                       
    0x000000520000-0x000000fa0000 : "kernel"                                        
    0x000000fa0000-0x000001000000 : "spare"                                         
    CAN device driver interface                                                     
    e1000e: Intel(R) PRO/1000 Network Driver - 2.3.2-k                              
    e1000e: Copyright(c) 1999 - 2014 Intel Corporation.                             
    libphy: XEMACPS mii bus: probed                                                 
    xemacps e000b000.ethernet: pdev->id -1, baseaddr 0xe000b000, irq 54             
    ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver                      
    ehci-pci: EHCI PCI platform driver                                              
    ULPI transceiver vendor/product ID 0x0424/0x0007                                
    Found SMSC USB3320 ULPI transceiver.                                            
    ULPI integrity check: passed.                                                   
    zynq-ehci zynq-ehci.0: Xilinx Zynq USB EHCI Host Controller                     
    zynq-ehci zynq-ehci.0: new USB bus registered, assigned bus number 1            
    zynq-ehci zynq-ehci.0: irq 53, io mem 0x00000000                                
    zynq-ehci zynq-ehci.0: USB 2.0 started, EHCI 1.00                               
    hub 1-0:1.0: USB hub found                                                      
    hub 1-0:1.0: 1 port detected                                                    
    usbcore: registered new interface driver usb-storage                            
    mousedev: PS/2 mouse device common for all mice                                 
    i2c /dev entries driver                                                         
    cdns-wdt f8005000.watchdog: Xilinx Watchdog Timer at 80872000 with timeout 10s  
    zynq-edac f8006000.memory-controller: ecc not enabled                           
    Xilinx Zynq CpuIdle Driver started                                              
    sdhci: Secure Digital Host Controller Interface driver                          
    sdhci: Copyright(c) Pierre Ossman                                               
    sdhci-pltfm: SDHCI platform and OF driver helper                                
    sdhci-arasan e0100000.sdhci: No vmmc regulator found                            
    sdhci-arasan e0100000.sdhci: No vqmmc regulator found                           
    mmc0: SDHCI controller on e0100000.sdhci [e0100000.sdhci] using ADMA            
    sdhci-arasan e0101000.sdhci: No vqmmc regulator found                           
    mmc0: new high speed SDHC card at address aaaa                                  
    mmcblk0: mmc0:aaaa SS08G 7.40 GiB                                               
     mmcblk0: p1 p2                                                                 
    mmc1: SDHCI controller on e0101000.sdhci [e0101000.sdhci] using ADMA            
    ledtrig-cpu: registered to indicate activity on CPUs                            
    usbcore: registered new interface driver usbhid                                 
    usbhid: USB HID core driver                                                     
    sdhci-arasan e0101000.sdhci: card claims to support voltages below defined range
    TCP: cubic registered                                                           
    NET: Registered protocol family 17                                              
    can: controller area network core (rev 20120528 abi 9)                          
    NET: Registered protocol family 29                                              
    can: raw protocol (rev 20120528)                                                
    can: broadcast manager protocol (rev 20120528 t)                                
    can: netlink gateway (rev 20130117) max_hops=1                                  
    Registering SWP/SWPB emulation handler                                          
    /home/wood_j/Embedded/wlink_test/software/petalinux/components/linux-kernel/xln)
    ALSA device list:                                                               
      No soundcards found.                                                          
    mmc1: queuing unknown CIS tuple 0x91 (3 bytes)                                  
    mmc1: new high speed SDIO card at address 0001                                  
    Freeing unused kernel memory: 17480K (40638000 - 4174a000)                      
    INIT: version 2.88 booting                                                      
    UIM SYSFS Node Not Found                                                        
    Creating /dev/flash/* device nodes                                              
    random: dd urandom read with 11 bits of entropy available                       
    starting Busybox inet Daemon: inetd... done.                                    
    Starting uWeb server:                                                           
    NET: Registered protocol family 10                                              
    update-rc.d: /etc/init.d/run-postinsts exists during rc.d purge (continuing)    
     Removing any system startup links for run-postinsts ...                        
      /etc/rcS.d/S99run-postinsts                                                   
    INIT: Entering runlevel: 5                                                      
    Configuring network interfaces... udhcpc (v1.22.1) started                      
    Sending discover...                                                             
    xemacps e000b000.ethernet: Set clk to 25000000 Hz                               
    xemacps e000b000.ethernet: link up (100/FULL)                                   
    Sending discover...                                                             
    Sending discover...                                                             
    No lease, forking to background                                                 
    done.                                                                           
    Starting Dropbear SSH server: Generating key, this may take a while...          
    Public key portion is:                                                          
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCHhd8qdyf2dXeZbs9eEehc12PBEemAcLlnjvkbpQpk
    Fingerprint: md5 88:d3:18:ac:07:8b:b9:f0:1b:5c:3f:7d:3a:7c:b3:4f                
    dropbear.                                                                       
                                                                                    
    Built with PetaLinux v2014.4 (Yocto 1.7) wlink /dev/ttyPS0

  • Are you using R8.6 or an older driver?
    Thw strings in the wlcore section of your .dts fike (ti,wl1835) match R8.6. Otherwise change to "ti,wlcore"

    It looks like the module is enimerated ok and it is now just the parameters pasding of the wlcore subnode.

    Next also send the log that includes the insmod of the wl1835 related modules
  • I am using R8.6, I am not sure how/where to load the modules. I don't believe that they are but I have not specifically seen a reference to a startup script to load them. It seems like this must happen prior to the mmc being loaded but on the reference system which is not petalinux I grep'd the etc directory for a mod probe of the wl18xx and found nothing. I suspect this is the issue.

    If I try to load them manually after the system has come up I get the following error when I load the wlcore_sdio.ko

    root@wlink:~# modprobe wlcore_sdio.ko
    Loading modules backported from Linux version R8.6-0-g3f5b34f
    Backport generated by backports.git R8.6-0-g4677dc3
    wl1271_sdio: probe of mmc1:0001:2 failed with error -12
  • The error you got is from the point it tries, to read the wlcore params from the .dts.
    I suggest you add some prints in the probe function of wlcore_sdio.
    It is inside the R8.6 driver code under

    Drivers/net/wireless/ti/wlcore/sdio.c

    Add some debug info and rebuild the wlcore_sdio.ko module
  • I performed a find for the wlcore kernel modules on my microzed reference system and did not find any wlcore kernel modules. I guess they must be built in. I am going to try to add the module loading before the mmc is initialized to see if the sdio module loads and I get past the error -12 issue.
  • Got things to change a bit here. Petalinux has a set of drivers. I enabled those and built them into the kernel so they would be available when the mmc is enumerated. I changed the compatibility line to ti,wlcore and there was an attempt to do something with the wlcore_sdio module. I got the following error..

    wl1271_sdio mmc1:0001:2: missing wlan platform data: -19

    I did see that I had a type in my compatibility line and changed it from ti,w1835 to ti,wl1835. This did not appear to work as the modules have not been loaded. This is a full build log when the petalinux supplied drivers.

    Starting kernel ...

    Booting Linux on physical CPU 0x0
    Linux version 3.17.0-xilinx (wood_j@nhl-ulnx01) (gcc version 4.8.3 20140320 (pr5
    CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=18c5387d
    CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
    Machine model: wlink
    cma: Reserved 128 MiB at 38000000
    Memory policy: Data cache writealloc
    PERCPU: Embedded 8 pages/cpu @7779c000 s8704 r8192 d15872 u32768
    Built 1 zonelists in Zone order, mobility grouping on. Total pages: 260096
    Kernel command line: console=ttyPS0,115200 earlyprintk
    PID hash table entries: 4096 (order: 2, 16384 bytes)
    Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
    Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
    Memory: 896416K/1048576K available (5103K kernel code, 248K rwdata, 1716K rodat)
    Virtual kernel memory layout:
    vector : 0xffff0000 - 0xffff1000 ( 4 kB)
    fixmap : 0xffc00000 - 0xffe00000 (2048 kB)
    vmalloc : 0x80800000 - 0xff000000 (2024 MB)
    lowmem : 0x40000000 - 0x80000000 (1024 MB)
    pkmap : 0x3fe00000 - 0x40000000 ( 2 MB)
    modules : 0x3f000000 - 0x3fe00000 ( 14 MB)
    .text : 0x40008000 - 0x406b10dc (6821 kB)
    .init : 0x406b2000 - 0x40afb200 (4389 kB)
    .data : 0x40afc000 - 0x40b3a160 ( 249 kB)
    .bss : 0x40b3a160 - 0x40b6ef8c ( 212 kB)
    Preemptible hierarchical RCU implementation.
    Dump stacks of tasks blocking RCU-preempt GP.
    RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2.
    RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
    NR_IRQS:16 nr_irqs:16 16
    L2C: platform provided aux values match the hardware, so have no effect. Pleas.
    L2C-310 erratum 769419 enabled
    L2C-310 enabling early BRESP for Cortex-A9
    L2C-310 full line of zeros enabled for Cortex-A9
    L2C-310 ID prefetch enabled, offset 1 lines
    L2C-310 dynamic clock gating enabled, standby mode enabled
    L2C-310 cache controller enabled, 8 ways, 512 kB
    L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x76360001
    slcr mapped to 80804000
    zynq_clock_init: clkc starts at 80804100
    Zynq clock init
    sched_clock: 64 bits at 333MHz, resolution 3ns, wraps every 3298534883328ns
    timer #0 at 80806000, irq=43
    Console: colour dummy device 80x30
    Calibrating delay loop... 1332.01 BogoMIPS (lpj=6660096)
    pid_max: default: 32768 minimum: 301
    Security Framework initialized
    Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
    Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
    CPU: Testing write buffer coherency: ok
    CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
    Setting up static identity map for 0x4d3128 - 0x4d3180
    CPU1: Booted secondary processor
    CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
    Brought up 2 CPUs
    SMP: Total of 2 processors activated.
    CPU: All CPU(s) started in SVC mode.
    devtmpfs: initialized
    VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
    regulator-dummy: no parameters
    NET: Registered protocol family 16
    DMA: preallocated 256 KiB pool for atomic coherent allocations
    cpuidle: using governor ladder
    cpuidle: using governor menu
    hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
    hw-breakpoint: maximum watchpoint size is 4 bytes.
    zynq-ocm f800c000.ocmc: ZYNQ OCM pool: 256 KiB @ 0x80880000
    VCCPINT: 1000 mV
    wlan-en-regulator: 3300 mV
    vgaarb: loaded
    SCSI subsystem initialized
    usbcore: registered new interface driver usbfs
    usbcore: registered new interface driver hub
    usbcore: registered new device driver usb
    media: Linux media interface: v0.10
    Linux video capture interface: v2.00
    pps_core: LinuxPPS API ver. 1 registered
    pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@>
    PTP clock support registered
    EDAC MC: Ver: 3.0.0
    Advanced Linux Sound Architecture Driver Initialized.
    cfg80211: Calling CRDA to update world regulatory domain
    Switched to clocksource arm_global_timer
    NET: Registered protocol family 2
    TCP established hash table entries: 8192 (order: 3, 32768 bytes)
    TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
    TCP: Hash tables configured (established 8192 bind 8192)
    TCP: reno registered
    UDP hash table entries: 512 (order: 2, 16384 bytes)
    UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
    NET: Registered protocol family 1
    RPC: Registered named UNIX socket transport module.
    RPC: Registered udp transport module.
    RPC: Registered tcp transport module.
    RPC: Registered tcp NFSv4.1 backchannel transport module.
    hw perfevents: enabled with armv7_cortex_a9 PMU driver, 7 counters available
    futex hash table entries: 512 (order: 3, 32768 bytes)
    jffs2: version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc.
    msgmni has been set to 2006
    io scheduler noop registered
    io scheduler deadline registered
    io scheduler cfq registered (default)
    dma-pl330 f8003000.dmac: Loaded driver for PL330 DMAC-2364208
    dma-pl330 f8003000.dmac: DBUFF-128x8bytes Num_Chans-8 Num_Peri-4 Num_Eve6
    e0001000.serial: ttyPS0 at MMIO 0xe0001000 (irq = 82, base_baud = 3125000) is as
    console [ttyPS0] enabled
    xdevcfg f8007000.devcfg: ioremap 0xf8007000 to 8086a000
    [drm] Initialized drm 1.1.0 20060810
    brd: module loaded
    loop: module loaded
    m25p80 spi32766.0: found s25fl129p1, expected n25q128a13
    m25p80 spi32766.0: s25fl129p1 (16384 Kbytes)
    4 ofpart partitions found on MTD device spi32766.0
    Creating 4 MTD partitions on "spi32766.0":
    0x000000000000-0x000000500000 : "boot"
    0x000000500000-0x000000520000 : "bootenv"
    0x000000520000-0x000000fa0000 : "kernel"
    0x000000fa0000-0x000001000000 : "spare"
    CAN device driver interface
    e1000e: Intel(R) PRO/1000 Network Driver - 2.3.2-k
    e1000e: Copyright(c) 1999 - 2014 Intel Corporation.
    libphy: XEMACPS mii bus: probed
    xemacps e000b000.ethernet: pdev->id -1, baseaddr 0xe000b000, irq 54
    ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
    ehci-pci: EHCI PCI platform driver
    ULPI transceiver vendor/product ID 0x0424/0x0007
    Found SMSC USB3320 ULPI transceiver.
    ULPI integrity check: passed.
    zynq-ehci zynq-ehci.0: Xilinx Zynq USB EHCI Host Controller
    zynq-ehci zynq-ehci.0: new USB bus registered, assigned bus number 1
    zynq-ehci zynq-ehci.0: irq 53, io mem 0x00000000
    zynq-ehci zynq-ehci.0: USB 2.0 started, EHCI 1.00
    hub 1-0:1.0: USB hub found
    hub 1-0:1.0: 1 port detected
    usbcore: registered new interface driver usb-storage
    mousedev: PS/2 mouse device common for all mice
    i2c /dev entries driver
    cdns-wdt f8005000.watchdog: Xilinx Watchdog Timer at 80872000 with timeout 10s
    zynq-edac f8006000.memory-controller: ecc not enabled
    Xilinx Zynq CpuIdle Driver started
    sdhci: Secure Digital Host Controller Interface driver
    sdhci: Copyright(c) Pierre Ossman
    sdhci-pltfm: SDHCI platform and OF driver helper
    sdhci-arasan e0100000.sdhci: No vmmc regulator found
    sdhci-arasan e0100000.sdhci: No vqmmc regulator found
    mmc0: SDHCI controller on e0100000.sdhci [e0100000.sdhci] using ADMA
    sdhci-arasan e0101000.sdhci: No vqmmc regulator found
    mmc0: new high speed SDXC card at address aaaa
    mmcblk0: mmc0:aaaa SL64G 59.4 GiB
    mmcblk0: p1 p2
    mmc1: SDHCI controller on e0101000.sdhci [e0101000.sdhci] using ADMA
    ledtrig-cpu: registered to indicate activity on CPUs
    sdhci-arasan e0101000.sdhci: card claims to support voltages below defined range
    usbcore: registered new interface driver usbhid
    mmc1: queuing unknown CIS tuple 0x91 (3 bytes)
    mmc1: new high speed SDIO card at address 0001
    wl1271_sdio mmc1:0001:2: missing wlan platform data: -19
    usbhid: USB HID core driver
    TCP: cubic registered
    NET: Registered protocol family 17
    can: controller area network core (rev 20120528 abi 9)
    NET: Registered protocol family 29
    can: raw protocol (rev 20120528)
    can: broadcast manager protocol (rev 20120528 t)
    can: netlink gateway (rev 20130117) max_hops=1
    Registering SWP/SWPB emulation handler
    /home/wood_j/Embedded/wlink_test/software/petalinux/components/linux-kernel/xln)
    ALSA device list:
    No soundcards found.
    Freeing unused kernel memory: 4388K (406b2000 - 40afb000)
    INIT: version 2.88 booting
    Creating /dev/flash/* device nodes
    random: dd urandom read with 10 bits of entropy available
    starting Busybox inet Daemon: inetd... done.
    Starting uWeb server:
    NET: Registered protocol family 10
    update-rc.d: /etc/init.d/run-postinsts exists during rc.d purge (continuing)
    Removing any system startup links for run-postinsts ...
    INIT: Entering runlevel: 5
    Configuring network interfaces... udhcpc (v1.22.1) started
    Sending discover...
    xemacps e000b000.ethernet: Set clk to 25000000 Hz
    xemacps e000b000.ethernet: link up (100/FULL)
    Sending discover...
    Sending discover...
    No lease, forking to background
    done.
    Starting Dropbear SSH server: Generating key, this may take a while...
    Public key portion is:
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCMfR4/4ePXBkFyg7ugx5jd72rhx98wUQt8KYzOYjXk
    Fingerprint: md5 0e:6d:06:bd:09:74:f7:9a:78:f7:a6:9a:3e:b6:42:05
    dropbear.

    Built with PetaLinux v2014.4 (Yocto 1.7) wlink /dev/ttyPS0
    wlink login:
  • Enable debugging on the sdio and the error 12 seems to have gone away. Here is a full boot log with manual insmod of the following.

    compat.ko
    cfg80211.ko
    mac80211.ko
    wlcore.ko
    wlcore_sdio.ko
    wl18xx.ko

    Note that I get an error when I try to load wl18xx.ko after wlcore_sdio.ko.
    I get the same error if I swap the order, then I get the error loading the sdio.


    Booting Linux on physical CPU 0x0
    Linux version 3.17.0-xilinx (wood_j@nhl-ulnx01) (gcc version 4.8.3 20140320 (pr5
    CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=18c5387d
    CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
    Machine model: wlink
    cma: Reserved 128 MiB at 38000000
    Memory policy: Data cache writealloc
    On node 0 totalpages: 262144
    free_area_init_node: node 0, pgdat 417384c0, node_mem_map 777b8000
    Normal zone: 2048 pages used for memmap
    Normal zone: 0 pages reserved
    Normal zone: 262144 pages, LIFO batch:31
    PERCPU: Embedded 8 pages/cpu @7779c000 s8704 r8192 d15872 u32768
    pcpu-alloc: s8704 r8192 d15872 u32768 alloc=8*4096
    pcpu-alloc: [0] 0 [0] 1
    Built 1 zonelists in Zone order, mobility grouping on. Total pages: 260096
    Kernel command line: console=ttyPS0,115200 earlyprintk
    PID hash table entries: 4096 (order: 2, 16384 bytes)
    Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
    Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
    Memory: 884132K/1048576K available (4713K kernel code, 244K rwdata, 1620K rodat)
    Virtual kernel memory layout:
    vector : 0xffff0000 - 0xffff1000 ( 4 kB)
    fixmap : 0xffc00000 - 0xffe00000 (2048 kB)
    vmalloc : 0x80800000 - 0xff000000 (2024 MB)
    lowmem : 0x40000000 - 0x80000000 (1024 MB)
    pkmap : 0x3fe00000 - 0x40000000 ( 2 MB)
    modules : 0x3f000000 - 0x3fe00000 ( 14 MB)
    .text : 0x40008000 - 0x40637918 (6335 kB)
    .init : 0x40638000 - 0x416fb200 (17165 kB)
    .data : 0x416fc000 - 0x41739220 ( 245 kB)
    .bss : 0x41739220 - 0x4176dce4 ( 211 kB)
    Preemptible hierarchical RCU implementation.
    Dump stacks of tasks blocking RCU-preempt GP.
    RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2.
    RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
    NR_IRQS:16 nr_irqs:16 16
    L2C: platform provided aux values match the hardware, so have no effect. Pleas.
    L2C-310 erratum 769419 enabled
    L2C-310 enabling early BRESP for Cortex-A9
    L2C-310 full line of zeros enabled for Cortex-A9
    L2C-310 ID prefetch enabled, offset 1 lines
    L2C-310 dynamic clock gating enabled, standby mode enabled
    L2C-310 cache controller enabled, 8 ways, 512 kB
    L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x76360001
    slcr mapped to 80804000
    zynq_clock_init: clkc starts at 80804100
    Zynq clock init
    sched_clock: 64 bits at 333MHz, resolution 3ns, wraps every 3298534883328ns
    timer #0 at 80806000, irq=43
    Console: colour dummy device 80x30
    Calibrating delay loop... 1332.01 BogoMIPS (lpj=6660096)
    pid_max: default: 32768 minimum: 301
    Security Framework initialized
    Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
    Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
    CPU: Testing write buffer coherency: ok
    CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
    Setting up static identity map for 0x473e80 - 0x473ed8
    CPU1: Booted secondary processor
    CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
    Brought up 2 CPUs
    SMP: Total of 2 processors activated.
    CPU: All CPU(s) started in SVC mode.
    devtmpfs: initialized
    VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
    regulator-dummy: no parameters
    NET: Registered protocol family 16
    DMA: preallocated 256 KiB pool for atomic coherent allocations
    cpuidle: using governor ladder
    cpuidle: using governor menu
    hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
    hw-breakpoint: maximum watchpoint size is 4 bytes.
    zynq-ocm f800c000.ocmc: ZYNQ OCM pool: 256 KiB @ 0x80880000
    VCCPINT: 1000 mV
    wlan-en-regulator: 3300 mV
    vgaarb: loaded
    SCSI subsystem initialized
    usbcore: registered new interface driver usbfs
    usbcore: registered new interface driver hub
    usbcore: registered new device driver usb
    media: Linux media interface: v0.10
    Linux video capture interface: v2.00
    pps_core: LinuxPPS API ver. 1 registered
    pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@>
    PTP clock support registered
    EDAC MC: Ver: 3.0.0
    Advanced Linux Sound Architecture Driver Initialized.
    Switched to clocksource arm_global_timer
    NET: Registered protocol family 2
    TCP established hash table entries: 8192 (order: 3, 32768 bytes)
    TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
    TCP: Hash tables configured (established 8192 bind 8192)
    TCP: reno registered
    UDP hash table entries: 512 (order: 2, 16384 bytes)
    UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
    NET: Registered protocol family 1
    RPC: Registered named UNIX socket transport module.
    RPC: Registered udp transport module.
    RPC: Registered tcp transport module.
    RPC: Registered tcp NFSv4.1 backchannel transport module.
    PCI: CLS 0 bytes, default 64
    hw perfevents: enabled with armv7_cortex_a9 PMU driver, 7 counters available
    futex hash table entries: 512 (order: 3, 32768 bytes)
    jffs2: version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc.
    msgmni has been set to 1982
    io scheduler noop registered
    io scheduler deadline registered
    io scheduler cfq registered (default)
    dma-pl330 f8003000.dmac: Loaded driver for PL330 DMAC-2364208
    dma-pl330 f8003000.dmac: DBUFF-128x8bytes Num_Chans-8 Num_Peri-4 Num_Eve6
    e0001000.serial: ttyPS0 at MMIO 0xe0001000 (irq = 82, base_baud = 3125000) is as
    console [ttyPS0] enabled
    xdevcfg f8007000.devcfg: ioremap 0xf8007000 to 8086a000
    [drm] Initialized drm 1.1.0 20060810
    brd: module loaded
    loop: module loaded
    m25p80 spi32766.0: found s25fl129p1, expected n25q128a13
    m25p80 spi32766.0: s25fl129p1 (16384 Kbytes)
    4 ofpart partitions found on MTD device spi32766.0
    Creating 4 MTD partitions on "spi32766.0":
    0x000000000000-0x000000500000 : "boot"
    0x000000500000-0x000000520000 : "bootenv"
    0x000000520000-0x000000fa0000 : "kernel"
    0x000000fa0000-0x000001000000 : "spare"
    CAN device driver interface
    e1000e: Intel(R) PRO/1000 Network Driver - 2.3.2-k
    e1000e: Copyright(c) 1999 - 2014 Intel Corporation.
    libphy: XEMACPS mii bus: probed
    xemacps e000b000.ethernet: pdev->id -1, baseaddr 0xe000b000, irq 54
    ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
    ehci-pci: EHCI PCI platform driver
    ULPI transceiver vendor/product ID 0x0424/0x0007
    Found SMSC USB3320 ULPI transceiver.
    ULPI integrity check: passed.
    zynq-ehci zynq-ehci.0: Xilinx Zynq USB EHCI Host Controller
    zynq-ehci zynq-ehci.0: new USB bus registered, assigned bus number 1
    zynq-ehci zynq-ehci.0: irq 53, io mem 0x00000000
    zynq-ehci zynq-ehci.0: USB 2.0 started, EHCI 1.00
    hub 1-0:1.0: USB hub found
    hub 1-0:1.0: 1 port detected
    usbcore: registered new interface driver usb-storage
    mousedev: PS/2 mouse device common for all mice
    i2c /dev entries driver
    cdns-wdt f8005000.watchdog: Xilinx Watchdog Timer at 80872000 with timeout 10s
    zynq-edac f8006000.memory-controller: ecc not enabled
    Xilinx Zynq CpuIdle Driver started
    sdhci: Secure Digital Host Controller Interface driver
    sdhci: Copyright(c) Pierre Ossman
    sdhci-pltfm: SDHCI platform and OF driver helper
    sdhci-arasan e0100000.sdhci: No vmmc regulator found
    sdhci-arasan e0100000.sdhci: No vqmmc regulator found
    mmc0: SDHCI controller on e0100000.sdhci [e0100000.sdhci] using ADMA
    sdhci-arasan e0101000.sdhci: No vqmmc regulator found
    mmc0: new high speed SDXC card at address aaaa
    mmcblk0: mmc0:aaaa SL64G 59.4 GiB
    mmcblk0: p1 p2
    mmc1: SDHCI controller on e0101000.sdhci [e0101000.sdhci] using ADMA
    ledtrig-cpu: registered to indicate activity on CPUs
    usbcore: registered new interface driver usbhid
    usbhid: USB HID core driver
    sdhci-arasan e0101000.sdhci: card claims to support voltages below defined range
    TCP: cubic registered
    NET: Registered protocol family 17
    can: controller area network core (rev 20120528 abi 9)
    NET: Registered protocol family 29
    can: raw protocol (rev 20120528)
    can: broadcast manager protocol (rev 20120528 t)
    can: netlink gateway (rev 20130117) max_hops=1
    Registering SWP/SWPB emulation handler
    /home/wood_j/Embedded/wlink_test/software/petalinux/components/linux-kernel/xln)
    ALSA device list:
    No soundcards found.
    mmc1: queuing unknown CIS tuple 0x91 (3 bytes)
    mmc1: new high speed SDIO card at address 0001
    Freeing unused kernel memory: 17164K (40638000 - 416fb000)
    random: dd urandom read with 10 bits of entropy available
    NET: Registered protocol family 10
    xemacps e000b000.ethernet: Set clk to 25000000 Hz
    xemacps e000b000.ethernet: link up (100/FULL)
    Loading modules backported from Linux version R8.6-0-g3f5b34f
    Backport generated by backports.git R8.6-0-g4677dc3
    cfg80211: Calling CRDA to update world regulatory domain
    cfg80211: Calling CRDA to update world regulatory domain
    random: nonblocking pool is initialized
    cfg80211: Calling CRDA to update world regulatory domain
    cfg80211: Calling CRDA to update world regulatory domain
    cfg80211: Calling CRDA to update world regulatory domain
    cfg80211: Calling CRDA to update world regulatory domain
    cfg80211: Calling CRDA to update world regulatory domain
    cfg80211: Calling CRDA to update world regulatory domain
    cfg80211: Calling CRDA to update world regulatory domain
    cfg80211: Calling CRDA to update world regulatory domain
    cfg80211: Calling CRDA to update world regulatory domain
    cfg80211: Exceeded CRDA call max attempts. Not calling CRDA
    wl1271_sdio mmc1:0001:2: sdio PM caps = 0x1
    wlcore: ERROR error requesting time_sync gpio
    wlcore: ERROR can't allocate hw
    platform wl18xx.0.auto: Driver wl18xx_driver requests probe deferral
    root@wlink:~# ifconfig wlan0 up
    ifconfig: SIOCGIFFLAGS: No such device
  • So I have determine that the error -12 was a result of not having the correct string for wl1835. I have reverted back to the R8.6 drivers since it looks like the error message for platform data was a result of very old code.
    I have added the following to the /etc/modules file...

    wlcore_sdio
    wl18xx

    This results in all of the modules indicating they are loaded but I get an error allocating gpio during boot as follows show below. Lsmod has these result...

    Tainted: G
    ipv6 255735 15 [permanent], Live 0x3f0da000
    wl18xx 28051 0 - Live 0x3f0ce000 (O)
    wlcore 132386 1 wl18xx, Live 0x3f0a1000 (O)
    mac80211 275854 2 wl18xx,wlcore, Live 0x3f048000 (O)
    cfg80211 169598 3 wl18xx,wlcore,mac80211, Live 0x3f00d000 (O)
    wlcore_sdio 5483 0 - Live 0x3f008000 (O)
    compat 8926 4 wl18xx,mac80211,cfg80211,wlcore_sdio, Live 0x3f000000 (O)


    BOOT Log...

    Booting Linux on physical CPU 0x0
    Linux version 3.17.0-xilinx (wood_j@nhl-ulnx01) (gcc version 4.8.3 20140320 (5
    CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=18c5387d
    CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
    Machine model: wlink
    cma: Reserved 128 MiB at 38000000
    Memory policy: Data cache writealloc
    On node 0 totalpages: 262144
    free_area_init_node: node 0, pgdat 417364c0, node_mem_map 777b8000
    Normal zone: 2048 pages used for memmap
    Normal zone: 0 pages reserved
    Normal zone: 262144 pages, LIFO bacfg80211: Calling CRDA to update world ren
    tch:31
    PERCPU: Embedded 8 pages/cpu @7779c000 s8704 r8192 d15872 u32768
    pcpu-alloc: s8704 r8192 d15872 u32768 alloc=8*4096
    pcpu-alloc: [0] 0 [0] 1
    Built 1 zonelists in Zone order, mobility grouping on. Total pages: 260096
    Kernel command line: console=ttyPS0,115200 earlyprintk
    PID hash table entries: 4096 (order: 2, 16384 bytes)
    Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
    Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
    Memory: 884140K/1048576K available (4713K kernel code, 244K rwdata, 1620K rod)
    Virtual kernel memory layout:
    vector : 0xffff0000 - 0xffff1000 ( 4 kB)
    fixmap : 0xffc00000 - 0xffe00000 (2048 kB)
    vmalloc : 0x80800000 - 0xff000000 (2024 MB)
    lowmem : 0x40000000 - 0x80000000 (1024 MB)
    pkmap : 0x3fe00000 - 0x40000000 ( 2 MB)
    modules : 0x3f000000 - 0x3fe00000 ( 14 MB)
    .text : 0x40008000 - 0x40637918 (6335 kB)
    .init : 0x40638000 - 0x416f9200 (17157 kB)
    .data : 0x416fa000 - 0x41737220 ( 245 kB)
    .bss : 0x41737220 - 0x4176bce4 ( 211 kB)
    Preemptible hierarchical RCU implementation.
    Dump stacks of tasks blocking RCU-preempt GP.
    RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2.
    RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
    NR_IRQS:16 nr_irqs:16 16
    L2C: platform provided aux values match the hardware, so have no effect. Ple.
    L2C-310 erratum 769419 enabled
    L2C-310 enabling early BRESP for Cortex-A9
    L2C-310 full line of zeros enabled for Cortex-A9
    L2C-310 ID prefetch enabled, offset 1 lines
    L2C-310 dynamic clock gating enabled, standby mode enabled
    L2C-310 cache controller enabled, 8 ways, 512 kB
    L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x76360001
    slcr mapped to 80804000
    zynq_clock_init: clkc starts at 80804100
    Zynq clock init
    sched_clock: 64 bits at 333MHz, resolution 3ns, wraps every 3298534883328ns
    timer #0 at 80806000, irq=43
    Console: colour dummy device 80x30
    Calibrating delay loop... 1332.01 BogoMIPS (lpj=6660096)
    pid_max: default: 32768 minimum: 301
    Security Framework initialized
    Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
    Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
    CPU: Testing write buffer coherency: ok
    CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
    Setting up static identity map for 0x473e80 - 0x473ed8
    CPU1: Booted secondary processor
    CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
    Brought up 2 CPUs
    SMP: Total of 2 processors activated.
    CPU: All CPU(s) started in SVC mode.
    devtmpfs: initialized
    VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
    regulator-dummy: no parameters
    NET: Registered protocol family 16
    DMA: preallocated 256 KiB pool for atomic coherent allocations
    cpuidle: using governor ladder
    cpuidle: using governor menu
    hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
    hw-breakpoint: maximum watchpoint size is 4 bytes.
    zynq-ocm f800c000.ocmc: ZYNQ OCM pool: 256 KiB @ 0x80880000
    VCCPINT: 1000 mV
    wlan-en-regulator: 3300 mV
    vgaarb: loaded
    SCSI subsystem initialized
    usbcore: registered new interface driver usbfs
    usbcore: registered new interface driver hub
    usbcore: registered new device driver usb
    media: Linux media interface: v0.10
    Linux video capture interface: v2.00
    pps_core: LinuxPPS API ver. 1 registered
    pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giomett>
    PTP clock support registered
    EDAC MC: Ver: 3.0.0
    Advanced Linux Sound Architecture Driver Initialized.
    Switched to clocksource arm_global_timer
    NET: Registered protocol family 2
    TCP established hash table entries: 8192 (order: 3, 32768 bytes)
    TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
    TCP: Hash tables configured (established 8192 bind 8192)
    TCP: reno registered
    UDP hash table entries: 512 (order: 2, 16384 bytes)
    UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
    NET: Registered protocol family 1
    RPC: Registered named UNIX socket transport module.
    RPC: Registered udp transport module.
    RPC: Registered tcp transport module.
    RPC: Registered tcp NFSv4.1 backchannel transport module.
    PCI: CLS 0 bytes, default 64
    hw perfevents: enabled with armv7_cortex_a9 PMU driver, 7 counters available
    futex hash table entries: 512 (order: 3, 32768 bytes)
    jffs2: version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc.
    msgmni has been set to 1982
    io scheduler noop registered
    io scheduler deadline registered
    io scheduler cfq registered (default)
    dma-pl330 f8003000.dmac: Loaded driver for PL330 DMAC-2364208
    dma-pl330 f8003000.dmac: DBUFF-128x8bytes Num_Chans-8 Num_Peri-4 Num_E6
    e0001000.serial: ttyPS0 at MMIO 0xe0001000 (irq = 82, base_baud = 3125000) iss
    console [ttyPS0] enabled
    xdevcfg f8007000.devcfg: ioremap 0xf8007000 to 8086a000
    [drm] Initialized drm 1.1.0 20060810
    brd: module loaded
    loop: module loaded
    m25p80 spi32766.0: found s25fl129p1, expected n25q128a13
    m25p80 spi32766.0: s25fl129p1 (16384 Kbytes)
    4 ofpart partitions found on MTD device spi32766.0
    Creating 4 MTD partitions on "spi32766.0":
    0x000000000000-0x000000500000 : "boot"
    0x000000500000-0x000000520000 : "bootenv"
    0x000000520000-0x000000fa0000 : "kernel"
    0x000000fa0000-0x000001000000 : "spare"
    CAN device driver interface
    e1000e: Intel(R) PRO/1000 Network Driver - 2.3.2-k
    e1000e: Copyright(c) 1999 - 2014 Intel Corporation.
    libphy: XEMACPS mii bus: probed
    xemacps e000b000.ethernet: pdev->id -1, baseaddr 0xe000b000, irq 54
    ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
    ehci-pci: EHCI PCI platform driver
    ULPI transceiver vendor/product ID 0x0424/0x0007
    Found SMSC USB3320 ULPI transceiver.
    ULPI integrity check: passed.
    zynq-ehci zynq-ehci.0: Xilinx Zynq USB EHCI Host Controller
    zynq-ehci zynq-ehci.0: new USB bus registered, assigned bus number 1
    zynq-ehci zynq-ehci.0: irq 53, io mem 0x00000000
    zynq-ehci zynq-ehci.0: USB 2.0 started, EHCI 1.00
    hub 1-0:1.0: USB hub found
    hub 1-0:1.0: 1 port detected
    usbcore: registered new interface driver usb-storage
    mousedev: PS/2 mouse device common for all mice
    i2c /dev entries driver
    cdns-wdt f8005000.watchdog: Xilinx Watchdog Timer at 80872000 with timeout 10s
    zynq-edac f8006000.memory-controller: ecc not enabled
    Xilinx Zynq CpuIdle Driver started
    sdhci: Secure Digital Host Controller Interface driver
    sdhci: Copyright(c) Pierre Ossman
    sdhci-pltfm: SDHCI platform and OF driver helper
    sdhci-arasan e0100000.sdhci: No vmmc regulator found
    sdhci-arasan e0100000.sdhci: No vqmmc regulator found
    mmc0: SDHCI controller on e0100000.sdhci [e0100000.sdhci] using ADMA
    sdhci-arasan e0101000.sdhci: No vqmmc regulator found
    mmc0: new high speed SDXC card at address aaaa
    mmcblk0: mmc0:aaaa SL64G 59.4 GiB
    mmcblk0: p1 p2
    mmc1: SDHCI controller on e0101000.sdhci [e0101000.sdhci] using ADMA
    ledtrig-cpu: registered to indicate activity on CPUs
    sdhci-arasan e0101000.sdhci: card claims to support voltages below defined rae
    usbcore: registered new interface driver usbhid
    mmc1: queuing unknown CIS tuple 0x91 (3 bytes)
    mmc1: new high speed SDIO card at address 0001
    usbhid: USB HID core driver
    TCP: cubic registered
    NET: Registered protocol family 17
    can: controller area network core (rev 20120528 abi 9)
    NET: Registered protocol family 29
    can: raw protocol (rev 20120528)
    can: broadcast manager protocol (rev 20120528 t)
    can: netlink gateway (rev 20130117) max_hops=1
    Registering SWP/SWPB emulation handler
    /home/wood_j/Embedded/wlink_test/software/petalinux/components/linux-kernel/x)
    ALSA device list:
    No soundcards found.
    Freeing unused kernel memory: 17156K (40638000 - 416f9000)
    Loading modules backported from Linux version R8.6-0-g3f5b34f
    Backport generated by backports.git R8.6-0-g4677dc3
    cfg80211: Calling CRDA to update world regulatory domain
    wlcore: ERROR error requesting time_sync gpio
    wlcore: ERROR can't allocate hw
    platform wl18xx.0.auto: Driver wl18xx_driver requests probe deferral
    random: dd urandom read with 10 bits of entropy available
    NET: Registered protocol family 10
    cfg80211: Calling CRDA to update world regulatory domain
    xemacps e000b000.ethernet: Set clk to 25000000 Hz
    xemacps e000b000.ethernet: link up (100/FULL)
    cfg80211: Calling CRDA to update world regulatory domain
    cfg80211: Calling CRDA to update world regulatory domain
    cfg80211: Calling CRDA to update world regulatory domain
    cfg80211: Calling CRDA to update world regulatory domain
    root@wlink:~# cfg80211: Calling CRDA to update world regulatory domain
    cfg80211: Calling CRDA to update world regulatory domain
    cfg80211: Calling CRDA to update world regulatory domain
    cfg80211: Calling CRDA to update world regulatory domain
    cfg80211: Exceeded CRDA call max attempts. Not calling CRDA
    lsmod
    Tainted: G
    ipv6 255735 15 [permanent], Live 0x3f0da000
    wl18xx 28051 0 - Live 0x3f0ce000 (O)
    wlcore 132386 1 wl18xx, Live 0x3f0a1000 (O)
    mac80211 275854 2 wl18xx,wlcore, Live 0x3f048000 (O)
    cfg80211 169598 3 wl18xx,wlcore,mac80211, Live 0x3f00d000 (O)
    wlcore_sdio 5483 0 - Live 0x3f008000 (O)
    compat 8926 4 wl18xx,mac80211,cfg80211,wlcore_sdio, Live 0x3f000000 (O)
    root@wlink:~# ifconfig wlan0 up
    ifconfig: SIOCGIFFLAGS: No such device
    root@wlink:~# dmesg
    Booting Linux on physical CPU 0x0
    Linux version 3.17.0-xilinx (wood_j@nhl-ulnx01) (gcc version 4.8.3 20140320 (5
    CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=18c5387d
    CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
    Machine model: wlink
    cma: Reserved 128 MiB at 38000000
    Memory policy: Data cache writealloc
    On node 0 totalpages: 262144
    free_area_init_node: node 0, pgdat 417364c0, node_mem_map 777b8000
    Normal zone: 2048 pages used for memmap
    Normal zone: 0 pages reserved
    Normal zone: 262144 pages, LIFO batch:31
    PERCPU: Embedded 8 pages/cpu @7779c000 s8704 r8192 d15872 u32768
    pcpu-alloc: s8704 r8192 d15872 u32768 alloc=8*4096
    pcpu-alloc: [0] 0 [0] 1
    Built 1 zonelists in Zone order, mobility grouping on. Total pages: 260096
    Kernel command line: console=ttyPS0,115200 earlyprintk
    PID hash table entries: 4096 (order: 2, 16384 bytes)
    Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
    Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
    Memory: 884140K/1048576K available (4713K kernel code, 244K rwdata, 1620K rod)
    Virtual kernel memory layout:
    vector : 0xffff0000 - 0xffff1000 ( 4 kB)
    fixmap : 0xffc00000 - 0xffe00000 (2048 kB)
    vmalloc : 0x80800000 - 0xff000000 (2024 MB)
    lowmem : 0x40000000 - 0x80000000 (1024 MB)
    pkmap : 0x3fe00000 - 0x40000000 ( 2 MB)
    modules : 0x3f000000 - 0x3fe00000 ( 14 MB)
    .text : 0x40008000 - 0x40637918 (6335 kB)
    .init : 0x40638000 - 0x416f9200 (17157 kB)
    .data : 0x416fa000 - 0x41737220 ( 245 kB)
    .bss : 0x41737220 - 0x4176bce4 ( 211 kB)
    Preemptible hierarchical RCU implementation.
    Dump stacks of tasks blocking RCU-preempt GP.
    RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2.
    RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
    NR_IRQS:16 nr_irqs:16 16
    L2C: platform provided aux values match the hardware, so have no effect. Ple.
    L2C-310 erratum 769419 enabled
    L2C-310 enabling early BRESP for Cortex-A9
    L2C-310 full line of zeros enabled for Cortex-A9
    L2C-310 ID prefetch enabled, offset 1 lines
    L2C-310 dynamic clock gating enabled, standby mode enabled
    L2C-310 cache controller enabled, 8 ways, 512 kB
    L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x76360001
    slcr mapped to 80804000
    zynq_clock_init: clkc starts at 80804100
    Zynq clock init
    sched_clock: 64 bits at 333MHz, resolution 3ns, wraps every 3298534883328ns
    timer #0 at 80806000, irq=43
    Console: colour dummy device 80x30
    Calibrating delay loop... 1332.01 BogoMIPS (lpj=6660096)
    pid_max: default: 32768 minimum: 301
    Security Framework initialized
    Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
    Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
    CPU: Testing write buffer coherency: ok
    CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
    Setting up static identity map for 0x473e80 - 0x473ed8
    CPU1: Booted secondary processor
    CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
    Brought up 2 CPUs
    SMP: Total of 2 processors activated.
    CPU: All CPU(s) started in SVC mode.
    devtmpfs: initialized
    VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
    regulator-dummy: no parameters
    NET: Registered protocol family 16
    DMA: preallocated 256 KiB pool for atomic coherent allocations
    cpuidle: using governor ladder
    cpuidle: using governor menu
    hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
    hw-breakpoint: maximum watchpoint size is 4 bytes.
    zynq-ocm f800c000.ocmc: ZYNQ OCM pool: 256 KiB @ 0x80880000
    VCCPINT: 1000 mV
    wlan-en-regulator: 3300 mV
    vgaarb: loaded
    SCSI subsystem initialized
    usbcore: registered new interface driver usbfs
    usbcore: registered new interface driver hub
    usbcore: registered new device driver usb
    media: Linux media interface: v0.10
    Linux video capture interface: v2.00
    pps_core: LinuxPPS API ver. 1 registered
    pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giomett>
    PTP clock support registered
    EDAC MC: Ver: 3.0.0
    Advanced Linux Sound Architecture Driver Initialized.
    Switched to clocksource arm_global_timer
    NET: Registered protocol family 2
    TCP established hash table entries: 8192 (order: 3, 32768 bytes)
    TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
    TCP: Hash tables configured (established 8192 bind 8192)
    TCP: reno registered
    UDP hash table entries: 512 (order: 2, 16384 bytes)
    UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
    NET: Registered protocol family 1
    RPC: Registered named UNIX socket transport module.
    RPC: Registered udp transport module.
    RPC: Registered tcp transport module.
    RPC: Registered tcp NFSv4.1 backchannel transport module.
    PCI: CLS 0 bytes, default 64
    hw perfevents: enabled with armv7_cortex_a9 PMU driver, 7 counters available
    futex hash table entries: 512 (order: 3, 32768 bytes)
    jffs2: version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc.
    msgmni has been set to 1982
    io scheduler noop registered
    io scheduler deadline registered
    io scheduler cfq registered (default)
    dma-pl330 f8003000.dmac: Loaded driver for PL330 DMAC-2364208
    dma-pl330 f8003000.dmac: DBUFF-128x8bytes Num_Chans-8 Num_Peri-4 Num_E6
    e0001000.serial: ttyPS0 at MMIO 0xe0001000 (irq = 82, base_baud = 3125000) iss
    console [ttyPS0] enabled
    xdevcfg f8007000.devcfg: ioremap 0xf8007000 to 8086a000
    [drm] Initialized drm 1.1.0 20060810
    brd: module loaded
    loop: module loaded
    m25p80 spi32766.0: found s25fl129p1, expected n25q128a13
    m25p80 spi32766.0: s25fl129p1 (16384 Kbytes)
    4 ofpart partitions found on MTD device spi32766.0
    Creating 4 MTD partitions on "spi32766.0":
    0x000000000000-0x000000500000 : "boot"
    0x000000500000-0x000000520000 : "bootenv"
    0x000000520000-0x000000fa0000 : "kernel"
    0x000000fa0000-0x000001000000 : "spare"
    CAN device driver interface
    e1000e: Intel(R) PRO/1000 Network Driver - 2.3.2-k
    e1000e: Copyright(c) 1999 - 2014 Intel Corporation.
    libphy: XEMACPS mii bus: probed
    xemacps e000b000.ethernet: pdev->id -1, baseaddr 0xe000b000, irq 54
    ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
    ehci-pci: EHCI PCI platform driver
    ULPI transceiver vendor/product ID 0x0424/0x0007
    Found SMSC USB3320 ULPI transceiver.
    ULPI integrity check: passed.
    zynq-ehci zynq-ehci.0: Xilinx Zynq USB EHCI Host Controller
    zynq-ehci zynq-ehci.0: new USB bus registered, assigned bus number 1
    zynq-ehci zynq-ehci.0: irq 53, io mem 0x00000000
    zynq-ehci zynq-ehci.0: USB 2.0 started, EHCI 1.00
    hub 1-0:1.0: USB hub found
    hub 1-0:1.0: 1 port detected
    usbcore: registered new interface driver usb-storage
    mousedev: PS/2 mouse device common for all mice
    i2c /dev entries driver
    cdns-wdt f8005000.watchdog: Xilinx Watchdog Timer at 80872000 with timeout 10s
    zynq-edac f8006000.memory-controller: ecc not enabled
    Xilinx Zynq CpuIdle Driver started
    sdhci: Secure Digital Host Controller Interface driver
    sdhci: Copyright(c) Pierre Ossman
    sdhci-pltfm: SDHCI platform and OF driver helper
    sdhci-arasan e0100000.sdhci: No vmmc regulator found
    sdhci-arasan e0100000.sdhci: No vqmmc regulator found
    mmc0: SDHCI controller on e0100000.sdhci [e0100000.sdhci] using ADMA
    sdhci-arasan e0101000.sdhci: No vqmmc regulator found
    mmc0: new high speed SDXC card at address aaaa
    mmcblk0: mmc0:aaaa SL64G 59.4 GiB
    mmcblk0: p1 p2
    mmc1: SDHCI controller on e0101000.sdhci [e0101000.sdhci] using ADMA
    ledtrig-cpu: registered to indicate activity on CPUs
    sdhci-arasan e0101000.sdhci: card claims to support voltages below defined rae
    usbcore: registered new interface driver usbhid
    mmc1: queuing unknown CIS tuple 0x91 (3 bytes)
    mmc1: new high speed SDIO card at address 0001
    usbhid: USB HID core driver
    TCP: cubic registered
    NET: Registered protocol family 17
    can: controller area network core (rev 20120528 abi 9)
    NET: Registered protocol family 29
    can: raw protocol (rev 20120528)
    can: broadcast manager protocol (rev 20120528 t)
    can: netlink gateway (rev 20130117) max_hops=1
    Registering SWP/SWPB emulation handler
    /home/wood_j/Embedded/wlink_test/software/petalinux/components/linux-kernel/x)
    ALSA device list:
    No soundcards found.
    Freeing unused kernel memory: 17156K (40638000 - 416f9000)
    Loading modules backported from Linux version R8.6-0-g3f5b34f
    Backport generated by backports.git R8.6-0-g4677dc3
    cfg80211: Calling CRDA to update world regulatory domain
    wlcore: ERROR error requesting time_sync gpio
    wlcore: ERROR can't allocate hw
    platform wl18xx.0.auto: Driver wl18xx_driver requests probe deferral
    random: dd urandom read with 10 bits of entropy available
    NET: Registered protocol family 10
    cfg80211: Calling CRDA to update world regulatory domain
    xemacps e000b000.ethernet: Set clk to 25000000 Hz
    xemacps e000b000.ethernet: link up (100/FULL)
    cfg80211: Calling CRDA to update world regulatory domain
    cfg80211: Calling CRDA to update world regulatory domain
    cfg80211: Calling CRDA to update world regulatory domain
    cfg80211: Calling CRDA to update world regulatory domain
    cfg80211: Calling CRDA to update world regulatory domain
    cfg80211: Calling CRDA to update world regulatory domain
    cfg80211: Calling CRDA to update world regulatory domain
    cfg80211: Calling CRDA to update world regulatory domain
    cfg80211: Calling CRDA to update world regulatory domain
    cfg80211: Exceeded CRDA call max attempts. Not calling CRDA
  • Ok I think I am getting very close now. It appears a new feature was added to R8.6 for time sync where a new gpio is required. I have commented out that code per another forum thread. The drivers now load and I can see useful information. I can bring up the wlan0 interface.

    I fail when I scan for an SSID using iw as follows.

    root@wlink:~# iw wlan0 scan
    wlcore: ERROR ELP wakeup timeout!
    wlcore: Hardware recovery in progress. FW ver: Rev 8.9.0.0.48
    command failed: Connection timed out (-110)wlcore: down

    ieee80211 phy0: Hardware restart was requested
    root@wlink:~# wlcore: PHY firmware version: Rev 8.2.0.0.232
    wlcore: firmware booted (Rev 8.9.0.0.48)

    It looks like power control is working and the only issue is how to setup my interrupts in the device tree file.
  • You are probably just not getting interrupts from the wlan_irq pin.

    Probably just .dts configuration.

    Ma k e sure it is configured as IRQ_TYPE_LEVEL_HIGH or IRQ_TYPE_EDGE_RISING in the wlcore section.

    You can see using "cat /proc/interruprs" that the number of wl1xx interrupts is not zero

  • Had not assigned the interrupt line for the gpio correctly. It is up and running and connected.
  • Here is a summary of the steps I had to implement to get Petalinux 2014.4 and Wilink adapter working on the Microzed.

    Step 1. Download the TI driver using the build utilities script.

    git://git.ti.com/wilink8-wlan/build-utilites.git

    Step 2. Apply patch to kernel

    Allow subnodes for wlcore to be used with SDIO, this patch is included in the above build utilities, note that it will not be applied automatically since the xlnx-3.17 kernel does not have patches associated with it.

    Step 3. Reconfigure the kernel

    Enable the necessary settings, I was able to find all but one setting in the petalinux configuration this was CONFIG_
    WIRELESS_EXT.  In petalinux this appears to be private.  To make this visible I modified the Kconfig in components/linux-kernel/xlnx-3.17/net/wireless/  as shown

    config WIRELESS_EXT
        bool    "Enable Wireless Extentions"
        default n

    Then run petalinux-config -c kernel, each line shows the text menu items

    Cryptographic API

    CCM Support

    GCM Support

    EC8 Support

    Michael Mic keyed digest algorithm

    Arc4 cipher algorithm

    Library Functions

    CRC 7 Functions

    Device Drivers

    Input Device Support

    Misc...Devices

    User Level Driver Support

    Networking

    RF Switch subsystem support

    Security Options

    Enable Access Key Retention Support

    Enable Different Security Modules

    Step 4. Build Petalinux with these settings

    Step 5. Modify setup-env

    In this case I have created a petalinux app that will copy the fs directory to the TARGET ROOT, this allows me to make updates to the configuration without wiping out files I put directly into target root.  My setup-env is shown below.  I will cover the app for copying later.

                                \\\//
    #                           -(o o)-
    #========================oOO==(_)==OOo=======================
    # This file contains the exports needed for automating the
    # build process of WLAN components.
    # Place this file in the same directory with wl18xx_build.sh
    # build scripts. No need to run 'source setup-env', the build
    # scripts will perfom it internaly.
    #===========================================================
    # User specific environment settings - use full PATH

    # if DEFAULT toolchain path is set toolchain will be downloaded to ./toolchain.
    export TOOLCHAIN_PATH=/opt/pkg/petalinux-v2014.4-final/tools/linux-i386/arm-xilinx-linux-gnueabi/bin

    # if DEFAULT path to root filesystem is set ./fs folder will be used.
    export ROOTFS=~/Embedded/wlink_test/software/wlink/components/apps/wireless/fs
    #export ROOTFS=DEFAULT

    #if DEFAULT kernel path is set - kernel will be downloaded (set branch to match kernel version)
    export KERNEL_PATH=~/Embedded/wlink_test/software/wlink/build/linux/kernel/xlnx-3.17

    # if KERNEL_VARIANT below is set the build script will look for kernel specific
    # patches under the patches directory:
    # - patches under the pathces/driver_patches/$KERNEL_VARIANT directory would be
    #   applied during "modules" build.
    # - patches under the patches/kernel_patches/$/$KERNEL_VARIANT directory would
    #   be applied to the kernel pointed by KERNEL_PATH in case the "patch_kernel"
    #   command is used.
    #   Note: the kernel is not built automatically after the patches are applied
    export KERNEL_VARIANT=xlnx-3.17

    export CROSS_COMPILE=arm-xilinx-linux-gnueabi-
    export ARCH=arm
    [ "$TOOLCHAIN_PATH" != "DEFAULT" ] && export PATH=$TOOLCHAIN_PATH:$PATH

    Step 6. Create Petalinux App

    a. I created a petalinux app called wireless, deleted the C file and modified the make file as shown

    b. create fs subdriectory for copying files in

    ifndef PETALINUX
    $(error "Error: PETALINUX environment variable not set.  Change to the root of your PetaLinux install, and source the settings.sh file")
    endif

    include apps.common.mk

    APP = settings

    all: build install

    .PHONY: build
    build:

    install:
        # Copy settings files to the rootfs.
        cp -r ./fs/* $(TARGETDIR)


    clean:

    Step 7.  Add startup of modules to /etc/modules in fs directory

    # /etc/modules: kernel modules to load at boot time.
    #
    # This file contains the names of kernel modules that should be loaded
    # at boot time, one per line. Lines beginning with "#" are ignored.
    # Parameters can be specified after the module name.

    wlcore_sdio
    wl18xx


    Step 8. Add wl18xx-conf.bin to fs directory (need to generate this)

    /fs/lib/firmware/ti-connectivity/wl18xx-conf.bin

    Step 9. Run the build script using update R8.6

    Step 9. Fix issue with Precistion Timing GPIO

    When going to 8.6 there is a new requirement for a GPIO which is not on the microzed for a precision timing output.  This will preclude the driver from loading.  Comment out the request for this line in the following file.

    src/driver//drivers/net/wireless/ti/wlcore/main.c (approx line 6450)

    #if 0  <--- do this
        /* time sync */
        wl->time_sync.gpio = 66;
        ret = gpio_request_one(wl->time_sync.gpio, GPIOF_DIR_OUT, "time_sync");
        if (ret < 0) {
            wl1271_error("error requesting time_sync gpio");
            goto err_buffer_32;
        }
        wl1271_info("Time Sync: gpio requested");
    #endif <--- and this

    Step 10. Rebuild the TI drivers,

    Do not use update or your change will be lost

    Step 11. Update device tree.

    All the info I found was for flat trees, this is the latest format assuming using the petalinux structure for a microzed, you should only need to change which SDIO you are using and which gpio pin is used for enable and which is used for the interrupt for a custom board...

    /dts-v1/;
    /include/ "system-conf.dtsi"
    / {
        wlan_en: fixedregulator@2 {
            compatible = "regulator-fixed";
            regulator-name = "wlan-en-regulator";
            regulator-min-microvolt = <0x325aa0>;
            regulator-max-microvolt = <0x325aa0>;
            gpio = <&gpio0 0x9 0x4>;              <<<<<<<<< gpio 9
            startup-delay-us = <0x11170>;
            enable-active-high;
        };
    };

    &gem0 {
        phy-handle = <&phy0>;
        phy-mode = "rgmii-id";
            
        mdio {
            #address-cells = <1>;
            #size-cells = <0>;
            phy0: phy@0 {
                compatible = "marvell,88e1510";
                device_type = "ethernet-phy";
                reg = <0x0>;
                marvell,reg-init = <3 16 0xff00 0x1e 3 17 0xfff0 0x00>;
            };
        };
    };

    &qspi {
        flash0: flash@0 {
                      compatible = "micron,n25q128a13";
        };
    };

    &gpio0 {                               <<<<< make gpio an int controller for gpio ints
     interrupt-controller;
        #interrupt-cells = <2>;
    };

    &sdhci1{                                         <<<<<<< SDIO 1
        vmmc-supply = <&wlan_en>;
        bus-width = <4>;
        ti,non-removable;
        ti,needs-special-hs-handling;
        cap-power-off-card;
        keep-power-in-suspend;

        #address-cells = <1>;
        #size-cells = <0>;

        wlcore: wlcore@0 {
            compatible = "ti,wl1835";
            interrupt-parent = <&gpio0>;
            interrupts = <0 4>;                        <<<<<<GPIO pin 0, note GPIO is used as int parent
            reg = <2>;
            platform-quirks = <0x1>;
            board-ref-clock = <0x4>;
        };
    };

    &uart0 {
        current-speed = <115200>;
        device_type = "serial";
        port-number = <1>;
        status = "disabled";
    };

    Step 12. Image will be too big

    If using the default settings for memory, I wont go into alot of detail since this is well documented but loadaddr and netstart will need to be modified to allow copying the image, this is accomplished through petalinux config.

    You will need to regenerate BOOT.BIN to load the new kernel.

    You will also need to modify the MACRO CONFIG_SYS_BOOT_LEN which is not accessible is petalinux config, it can be changed bu editing the platform-top in the u-boot files.  All other files are generated so this can not be done where it is initially defined by petalinux.  Modify it as such

    ./subsystems/linux/configs/u-boot/platform-top.h ---

    #include <configs/platform-auto.h>

    #undef CONFIG_SYS_BOOTM_LEN

    /* Make the BOOTM LEN big enough for the compressed image */
    #define CONFIG_SYS_BOOTM_LEN 0x4000000

  • This should be on the WiLink8 website. I was searching for a solution to the "time_sync" issue (which BTW is crazy that this essentially undocumented issue exists at all), I had to research and correct everyone of these issues you listed here. Had I found it earlier, it would have saved me a week of debugging.

    Thanks and BR,

    Ralph

  • John, were you ever able to resolve the 'cfg80211: Exceeded CRDA call max attempts. Not calling CRDA' issue? From my understanding Petalinux 2014.4 does not use udev, but rather mdev, which may not be handling this correctly. I was curious if you found a solution. Right now my WiFi interface is working fine except for those distracting CRDA messages popping up.
  • Hi,
    your post is very helpful. Actually i am trying to integrate the Wilink8 MODULE with Zedboard since last one month but not getting any success. Also i am very new to Linux so many times i do nit understand many things. So i need your guidance to do this on mine zedboard. I followed the scripts available at zedboard.org/.../wilink-8-adaptor which is basically for microzed board but i canged it very carefully so that it can get work with zedboard but no success. should i share mine .config file, .dts file and other stuffs with u. Please help me to move ahead.