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.

Wilink8 on OMAP3 (with PSP 2.6.37 kernel)

Other Parts Discussed in Thread: WL1835, WL1835MOD, AM3359, WL1271

Hi all,

As PSP for OMAP3 are based on kernel 2.6.37, and looks there is no intention to upgrade this kernel to a newer version. Could anyone confirm if the Wilink8 driver is available for kernel 2.6.37 or not ?


Thanks.

  • Hi,

    The minimum kernel version verified with WL8 is v3.2.
    The release might work on older kernels, but you might want to modify the source a little bit.

    Regards,
    Gigi Joseph.

  • Hello Joseph, 

    I am working on wl1805 integration with dm8168 processor. The kernel version is 2.6.37. 

    1) I am little confused with wl12xx and wl18xx. Are they both same or is there any difference between them?

    -----------

    2) I am trying to build the compat wireless for wl18xx from the procedure give in the below link

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

    I have set the env file and calling the build script as ( sudo ./wl18xx_build.sh all )

    I have run into the following error

    Base tree: wl18xx.git

    Base tree version: ol_r8.a8.10
    compat.git: ol_r8.a8.10
    compat-drivers release: ol_r8.a8.04_32
    Code metrics archive: http://bit.ly/H6BTF7
    Restored makefile: ./Makefile (and removed backup)
    Processing new driver-select request...
    Backing up makefile: Makefile.bk
    Backing up makefile: drivers/net/wireless/Makefile.bk
    Backup exists: drivers/net/wireless/Makefile.bk
    Backing up makefile: drivers/net/wireless/ti/Makefile.bk
    Backup exists: Makefile.bk
    Backup exists: Makefile.bk
    Backup exists: Makefile.bk
    Backup exists: Makefile.bk
    Backing up makefile: net/wireless/Makefile.bk
    Backing up makefile: drivers/ssb/Makefile.bk
    Backing up makefile: drivers/bcma/Makefile.bk
    Backing up makefile: drivers/misc/eeprom/Makefile.bk
    Backup exists: Makefile.bk
    ./scripts/gen-compat-autoconf.sh /home/cornet/ti-ezsdk_dm816x-evm_5_05_02_00/work_space_R8_A8_10_32/compat-wireless/.config /home/cornet/ti-ezsdk_dm816x-evm_5_05_02_00/work_space_R8_A8_10_32/compat-wireless/config.mk > include/linux/compat_autoconf.h
    make -C /home/cornet/ti-ezsdk_dm816x-evm_5_05_02_00/board-support/linux-2.6.37-psp04.04.00.01 M=/home/cornet/ti-ezsdk_dm816x-evm_5_05_02_00/work_space_R8_A8_10_32/compat-wireless modules
    make[1]: Entering directory `/home/cornet/ti-ezsdk_dm816x-evm_5_05_02_00/board-support/linux-2.6.37-psp04.04.00.01'
    CC [M] /home/cornet/ti-ezsdk_dm816x-evm_5_05_02_00/work_space_R8_A8_10_32/compat-wireless/compat/main.o
    In file included from include/linux/i2c.h:37,
    from include/linux/fb.h:5,
    from include/linux/vga_switcheroo.h:10,
    from /home/cornet/ti-ezsdk_dm816x-evm_5_05_02_00/work_space_R8_A8_10_32/compat-wireless/include/linux/vga_switcheroo.h:7,
    from /home/cornet/ti-ezsdk_dm816x-evm_5_05_02_00/work_space_R8_A8_10_32/compat-wireless/include/linux/compat-3.5.h:106,
    from /home/cornet/ti-ezsdk_dm816x-evm_5_05_02_00/work_space_R8_A8_10_32/compat-wireless/include/linux/compat-3.4.h:44,
    from /home/cornet/ti-ezsdk_dm816x-evm_5_05_02_00/work_space_R8_A8_10_32/compat-wireless/include/linux/compat-2.6.h:69,
    from <command-line>:0:
    /home/cornet/ti-ezsdk_dm816x-evm_5_05_02_00/work_space_R8_A8_10_32/compat-wireless/include/linux/of.h: In function 'of_property_read_bool':
    /home/cornet/ti-ezsdk_dm816x-evm_5_05_02_00/work_space_R8_A8_10_32/compat-wireless/include/linux/of.h:28: error: implicit declaration of function 'of_find_property'
    /home/cornet/ti-ezsdk_dm816x-evm_5_05_02_00/work_space_R8_A8_10_32/compat-wireless/include/linux/of.h:28: warning: initialization makes pointer from integer without a cast
    make[3]: *** [/home/cornet/ti-ezsdk_dm816x-evm_5_05_02_00/work_space_R8_A8_10_32/compat-wireless/compat/main.o] Error 1
    make[2]: *** [/home/cornet/ti-ezsdk_dm816x-evm_5_05_02_00/work_space_R8_A8_10_32/compat-wireless/compat] Error 2
    make[1]: *** [_module_/home/cornet/ti-ezsdk_dm816x-evm_5_05_02_00/work_space_R8_A8_10_32/compat-wireless] Error 2
    make[1]: Leaving directory `/home/cornet/ti-ezsdk_dm816x-evm_5_05_02_00/board-support/linux-2.6.37-psp04.04.00.01'
    make: *** [modules] Error 2
    cornet@cornet:~/ti-ezsdk_dm816x-evm_5_05_02_00/build-utilites$

    I have return the build command( sudo ./wl18xx_build.sh all ) output to a file and attaching it here.

    31048.log.txt

    I tried to edit the of.h but every time i compile the changes are gone and it shows me same error.

    I edited the kernel source as told in this link 

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

    this procedure is for dm814x processer but i tried modify it for dm8168 processer. I still have to check this once i am able to compile the above utils with the build script.

    Can you please help me with the above issue. Am i going in the correct path?

    There are two build scripts 1) wl18xx_build.sh  2) wl12xx_build.sh.  I am using first script. is that correct? or should i use the second script?

    ------------

    3) In your previous message you told we can make wl18xx work with 2.6.37 kernel with some changes. Do you have any procedure which can help me?

    Will be waiting for your reply. Thankq very much. please help.

    Regards,

    Srikanth.

  • Hi Srikanth,

    (1) wl18xx_build.sh builds the WiLink8 drivers & wl12xx_build.sh builds the WiLink6/7 drivers. They are both different, and you should be using the wl18xx_build.sh script for your WL1805 integration.

    (2) You can directly edit files in the "compat-wireless" package, and do a make inside the compat-wireless package.

    (3) Like I told in my previous post, the minumum verified WL8 kernel version is 3.2 - older kernel versions might work, but you might have to modify the package. Unfortunately, I don't have any procedure for this.

    Regards,
    Gigi Joseph.

  • Hello Joseph,


    Thank you very much for the reply.

    I will try the steps and reply as soon as possible.


    Regards,

    Srikanth.

  • Hello Joseph,
    ----------------------------------------------------------------
    arch/arm/mach-omap2/board-ti8168evm.c
    -------------------------------------
    
    static struct omap2_hsmmc_info mmc[] = {
    	{
    //CTI Modified.
    //Custom Usage
    #ifdef CONFIG_WL12XX_PLATFORM_DATA
    /* WLAN_EN is GP1[9] */
    #define GPIO_WLAN_EN	((1 * 32) + 11)
    /* WLAN_IRQ is GP1[11] */
    #define GPIO_WLAN_IRQ	((1 * 32) + 9)
    		.mmc		= 1,
    //CTI Modified.
    		.caps		= MMC_CAP_4_BIT_DATA | MMC_CAP_POWER_OFF_CARD,
    		//.caps		= MMC_CAP_4_BIT_DATA,
    		.gpio_cd	= -EINVAL,
    		.gpio_wp	= -EINVAL,
    		.ocr_mask	= MMC_VDD_165_195,
    		.nonremovable	= true,
    	},
    #endif
    	{
    		.mmc        = 1,
    		.caps       = MMC_CAP_4_BIT_DATA,
    		.gpio_cd	= -EINVAL, /* Dedicated pins for CD and WP */
    		.gpio_wp	= -EINVAL,
    		.ocr_mask	= MMC_VDD_33_34,
    	},
    	{}	/* Terminator */
    };
    
    ----------------
    
    static struct omap_board_mux board_mux[] __initdata = 
    {
    
    	TI816X_MUX(SC0_DET, OMAP_MUX_MODE2),	/* gpio1-09 */
    	TI816X_MUX(SC0_CLK, OMAP_MUX_MODE2),	/* gpio1-11 */
    	TI816X_MUX(MMC_CLK, OMAP_MUX_MODE0 | 0x10),
    	TI816X_MUX(MMC_CMD, OMAP_MUX_MODE0 | 0x10),
    	TI816X_MUX(MMC_DAT0, OMAP_MUX_MODE0 | 0x10),
    	TI816X_MUX(MMC_DAT1_SDIRQ, OMAP_MUX_MODE0 | 0x10),
    	TI816X_MUX(MMC_DAT2_SDRW, OMAP_MUX_MODE0 | 0x10),
    	TI816X_MUX(MMC_DAT3, OMAP_MUX_MODE0 | 0x10),
    }
    
    ----------------
    
    #ifdef CONFIG_WL12XX_PLATFORM_DATA
    
    static struct wl12xx_platform_data wlan_data __initdata = {
    	.irq = OMAP_GPIO_IRQ(GPIO_WLAN_IRQ),
    	/* COM6 (127x) uses FREF */
    	.board_ref_clock = WL12XX_REFCLOCK_26,
    	/* COM7 (128x) uses TCXO */
    	.board_tcxo_clock = WL12XX_TCXOCLOCK_26,
    };
    
    static int wl12xx_set_power(struct device *dev, int slot, int power_on,
    			    int vdd)
    {
    	static bool power_state;
    
    	printk("Powering %s wl12xx", power_on ? "on" : "off");
    	if (power_on == power_state)
    		return 0;
    	power_state = power_on;
    
    	if (power_on) {
    		/* Power up sequence required for wl127x devices */
    		gpio_set_value(GPIO_WLAN_EN, 1);
    		usleep_range(15000, 15000);
    		gpio_set_value(GPIO_WLAN_EN, 0);
    		usleep_range(1000, 1000);
    		gpio_set_value(GPIO_WLAN_EN, 1);
    		msleep(70);
    	} else {
    		gpio_set_value(GPIO_WLAN_EN, 0);
    	}
    
    	return 0;
    }
    
    static void __init ti816x_wl12xx_wlan_init(void)
    {
    	struct device *dev;
    	struct omap_mmc_platform_data *pdata;
    	int ret;
    
    	/* Set up the WLAN_EN and WLAN_IRQ muxes * /
            //Custom Usage
            omap_mux_init_signal("gp1_io11", TI816X_PULL_DIS);
            omap_mux_init_signal("gp1_io9", TI816X_INPUT_EN | TI816X_PULL_DIS);*/
    
    	/* Pass the wl12xx platform data information to the wl12xx driver */
    	if (wl12xx_set_platform_data(&wlan_data)) {
    		pr_err("Error setting wl12xx data\n");
    		return;
    	}
    
    	/*
    	 * The WLAN_EN gpio has to be toggled without using a fixed regulator,
    	 * as the omap_hsmmc does not enable/disable regulators on the TI816X.
    	 */
    	ret = gpio_request_one(GPIO_WLAN_EN, GPIOF_OUT_INIT_LOW, "wlan_en");
    	//ret = gpio_request_one(GPIO_WLAN_EN, GPIOF_OUT_INIT_HIGH, "wlan_en");
    	if (ret) {
    		pr_err("Error requesting wlan enable gpio: %d\n", ret);
    		return;
    	}
    
    	/*
    	 * Set our set_power callback function which will be called from
    	 * set_ios. This is requireq since, unlike other omap2+ platforms, a
    	 * no-op set_power function is registered. Thus, we cannot use a fixed
    	 * regulator, as it will never be toggled.
    	 * Moreover, even if this was not the case, we're on mmc0, for which
    	 * omap_hsmmc' set_power functions do not toggle any regulators.
    	 * TODO: Consider modifying omap_hsmmc so it would enable/disable a
    	 * regulator for ti814x/mmc0.
    	 */
    	dev = mmc[0].dev;
    	if (!dev) {
    		pr_err("wl12xx mmc device initialization failed\n");
    		return;
    	}
    
    	pdata = dev->platform_data;
    	if (!pdata) {
    		pr_err("Platform data of wl12xx device not set\n");
    		return;
    	}
    
    	pdata->slots[0].set_power = wl12xx_set_power;
    }
    
    static void __init ti816x_wl12xx_init(void)
    {
    	ti816x_wl12xx_wlan_init();
    }
    
    #else /* CONFIG_WL12XX_PLATFORM_DATA */
    
    static void __init ti816x_wl12xx_init(void) { }
    
    #endif
    
    ---------------------
    
    static void __init ti8168_evm_init(void)
    {
    //Added
    	ti816x_wl12xx_init();
    }
    
    --------------------------------------------------------------------------------
    arch/arm/mach-omap2/devices.c
    ------------------------------
    
    void __init omap2_init_mmc(struct omap_mmc_platform_data **mmc_data, int nr_controllers)
    {
    
    			else if	(cpu_is_ti816x())
    			{
    				printk("cpu_is_ti816x() case 0 \n");
    				base = TI816X_MMC1_BASE;
    //CTI Modified.
    #ifndef CONFIG_WL12XX_PLATFORM_DATA
    				printk("TI81XX_IRQ_SD case 0 = %d \n", TI81XX_IRQ_SD);
    				irq = TI81XX_IRQ_SD;
    #else
    				printk("TI81XX_IRQ_SD case 0 = %d \n", TI81XX_IRQ_SD);
    				irq = TI81XX_IRQ_SD;
    #endif
    }
    
    -------------------------------------------------------------------------------------
    arch/arm/mach-omap2/kconfig
    ----------------------------
    
    config TI8168EVM_WL12XX
    	bool "TI816x wl12xx daughter board"
    	depends on MACH_TI8168EVM
    	select WL12XX_PLATFORM_DATA
    	help
    	  The COM6/COM7 cards are wireless connectivity cards based on Murata's
    	  type TN module and Texas Insturments wl12xx chipset.
    	  Say Y if you want to use a wl12xx expansion card connected to the
    	  TI8168 EVM.
    	  
    --------------------------------------------------------------------------------------
    arch/arm/plat-omap/include/plat/mmc.h
    --------------------------------------
    //CTI Modified.
    #ifdef CONFIG_WL12XX_PLATFORM_DATA
    	#define TI816X_NR_MMC		1
    #else
    	#define TI81XX_NR_MMC		1
    #endif
    
    //CTI Modified
    #ifdef CONFIG_ARCH_TI814X
    #define TI81XX_NR_MMC		TI814X_NR_MMC
    #else /* TI816X */
    #define TI81XX_NR_MMC		TI816X_NR_MMC
    #endif
    
    --------------------------------------------------------------------------------------
    /drivers/mmc/core/core.c
    ------------------------
    
    //CTI Modified
    #include <linux/pm_runtime.h>
    
    void mmc_set_data_timeout(struct mmc_data *data, const struct mmc_card *card)
    {
    
    //CTI Modified.
    //		timeout_us += data->timeout_clks * 1000 /
    //			(card->host->ios.clock / 1000);
    		if (card->host->ios.clock)
    			timeout_us += data->timeout_clks * 1000 /
    				(card->host->ios.clock / 1000);
    				
    }
    
    --------
    void mmc_rescan(struct work_struct *work)
    {
    //CTI Modified
    	/* if there is a card registered, check whether it is still present */
    //	if ((host->bus_ops != NULL) && host->bus_ops->detect && !host->bus_dead)
    
    	/*
    	 * if there is a _removable_ card registered, check whether it is
    	 * still present
    	 */
    	if (host->bus_ops && host->bus_ops->detect && !host->bus_dead && mmc_card_is_removable(host))
    		host->bus_ops->detect(host);
    		
    }
    ----------
    int mmc_resume_host(struct mmc_host *host)
    {
    
    //CTI Modified.
    	/*
    	 * Tell runtime PM core we just powered up the card,
    	 * since it still believes the card is powered off.
    	 * Note that currently runtime PM is only enabled
    	 * for SDIO cards that are MMC_CAP_POWER_OFF_CARD
    	 */
    	if (mmc_card_sdio(host->card) &&
    	    (host->caps & MMC_CAP_POWER_OFF_CARD)) {
    		pm_runtime_disable(&host->card->dev);
    		pm_runtime_set_active(&host->card->dev);
    		pm_runtime_enable(&host->card->dev);
    	}
    }
    }
    --------------------------------------------------------------------------------------
    /drivers/mmc/core/sdio.c
    ------------------------
    
    static int sdio_read_cccr(struct mmc_card *card)
    {
    //CTI ADDED
    #if 0
    // WL18xx returns CCR_REV_2_00 and so this is not an error
    	if (cccr_vsn > SDIO_CCCR_REV_1_20) {
    		printk(KERN_ERR "%s: unrecognised CCCR structure version %d\n",
    			mmc_hostname(card->host), cccr_vsn);
    		return -EINVAL;
    	}
    #endif
    }
    -----------
    static int mmc_sdio_resume(struct mmc_host *host)
    {
    
    //CTI Modified
    //	err = mmc_sdio_init_card(host, host->ocr, host->card,(host->pm_flags & MMC_PM_KEEP_POWER));
     
     	/* No need to reinitialize powered-resumed nonremovable cards */
    	if (mmc_card_is_removable(host) || !mmc_card_is_powered_resumed(host))
    		err = mmc_sdio_init_card(host, host->ocr, host->card,
     				 (host->pm_flags & MMC_PM_KEEP_POWER));
    	else if (mmc_card_is_powered_resumed(host)) {
    		/* We may have switched to 1-bit mode during suspend */
    		err = sdio_enable_4bit_bus(host->card);
    		if (err > 0) {
    			mmc_set_bus_width(host, MMC_BUS_WIDTH_4);
    			err = 0;
    		}
    	}
    }
    
    --------------------------------------------------------------------------------------
    /drivers/mmc/core/sdio_bus.c
    ----------------------------
    
    //CTI Modified.
    #if 0
    static int sdio_bus_pm_prepare(struct device *dev)
    {
    	struct sdio_func *func = dev_to_sdio_func(dev);
    
    	/*
    	 * Resume an SDIO device which was suspended at run time at this
    	 * point, in order to allow standard SDIO suspend/resume paths
    	 * to keep working as usual.
    	 *
    	 * Ultimately, the SDIO driver itself will decide (in its
    	 * suspend handler, or lack thereof) whether the card should be
    	 * removed or kept, and if kept, at what power state.
    	 *
    	 * At this point, PM core have increased our use count, so it's
    	 * safe to directly resume the device. After system is resumed
    	 * again, PM core will drop back its runtime PM use count, and if
    	 * needed device will be suspended again.
    	 *
    	 * The end result is guaranteed to be a power state that is
    	 * coherent with the device's runtime PM use count.
    	 *
    	 * The return value of pm_runtime_resume is deliberately unchecked
    	 * since there is little point in failing system suspend if a
    	 * device can't be resumed.
    	 */
    	if (func->card->host->caps & MMC_CAP_POWER_OFF_CARD)
    		pm_runtime_resume(dev);
    
    	return 0;
    }
    #endif
    
    ----------------
    
    static const struct dev_pm_ops sdio_bus_pm_ops = 
    {
    //CTI Modified.
    //	.prepare = sdio_bus_pm_prepare,
    }
    
    ------------------------------------------------------------------------------------------
    include/linux/wl12xx.h
    ----------------------
    
    //CTI Modified.
    /* Reference clock values */
    enum {
    	WL12XX_REFCLOCK_19	= 0, /* 19.2 MHz */
    	WL12XX_REFCLOCK_26	= 1, /* 26 MHz */
    	WL12XX_REFCLOCK_38	= 2, /* 38.4 MHz */
    	WL12XX_REFCLOCK_52	= 3, /* 52 MHz */
    	WL12XX_REFCLOCK_38_XTAL = 4, /* 38.4 MHz, XTAL */
    	WL12XX_REFCLOCK_26_XTAL = 5, /* 26 MHz, XTAL */
    };
    
    /* TCXO clock values */
    enum {
    	WL12XX_TCXOCLOCK_19_2	= 0, /* 19.2MHz */
    	WL12XX_TCXOCLOCK_26	= 1, /* 26 MHz */
    	WL12XX_TCXOCLOCK_38_4	= 2, /* 38.4MHz */
    	WL12XX_TCXOCLOCK_52	= 3, /* 52 MHz */
    	WL12XX_TCXOCLOCK_16_368	= 4, /* 16.368 MHz */
    	WL12XX_TCXOCLOCK_32_736	= 5, /* 32.736 MHz */
    	WL12XX_TCXOCLOCK_16_8	= 6, /* 16.8 MHz */
    	WL12XX_TCXOCLOCK_33_6	= 7, /* 33.6 MHz */
    };
    
    struct wl12xx_platform_data {
    	void (*set_power)(bool enable);
    	/* SDIO only: IRQ number if WLAN_IRQ line is used, 0 for SDIO IRQs */
    	int irq;
    	bool use_eeprom;
    	int board_ref_clock;
    //CTI Modified.
    	int board_tcxo_clock;
    	unsigned long platform_quirks;
    };
    
    //CTI Modified.
    /* Platform does not support level trigger interrupts */
    #define WL12XX_PLATFORM_QUIRK_EDGE_IRQ	BIT(0)
    
    -------------------------------------------------------------------------------------------------
    include/linux/mmc/host.h
    ------------------------
    
    //CTI Modified
    static inline int mmc_card_is_powered_resumed(struct mmc_host *host)
    {
    	return host->pm_flags & MMC_PM_KEEP_POWER;
    }
    
    -------------------------------------------------------------------------------------------------
    include/linux/mmc/sdio.h
    ------------------------
    
    //CTI ADDED
    // Backport for Wilink8 driver build
    #define  SDIO_SDIO_REV_3_00	4	/* SDIO Spec Version 3.00 */
    
    --------------------------------------------------------------------------------------------------
    
    
    
    I am able to apply the pathces and compile the wl18xx firmware for kernel 2.6.37. The wl18xx modules and the firmware is installed into the filesystem. We are able to load the modules successfully.
    The problem we have now is, wlan0 device is not created.
    Our setup is as follows. Our hardware is not ready. We are using the TI DM8168 EVM(DDR2 evm) board. This has only one MMC/SD card slot. 
    We have ordered the WL1835 wifi dongle. And connected this to the MMC/SD card slot of the EVM board.
    We are using 6 pins SDIO_CLK, SDIO_CMD and 4SDIO datd lines from the MMC/SD card connector and WLAN_EN to GPIO1-9 and WLAN_IRQ to GPIO1-11.
    We have used a voltage regulator and converted the 3.3v IO signals from MMC/SD card slot to 1.8v and fed it to WL1835 dongle.
    We have attached a file "kernel_files_changes.txt", in which we have listed the file names and the changes made to them.
    We have attached the kernel files which have changes to "ti-ezsdk_dm816x-evm_5_05_02_00.zip" for referance. we have put the 2 paches which we have applied to kernel files.
    Can you go through the code and let us know the problem.
    --------------------------------------------------------------------------
    We have loaded the following modules after the board booted.
    insmod /lib/modules/2.6.37/updates/compat/compat.ko
    insmod /lib/modules/2.6.37/updates/compat/sch_codel.ko
    insmod /lib/modules/2.6.37/updates/compat/sch_fq_codel.ko
    insmod /lib/modules/2.6.37/updates/drivers/net/wireless/ti/wlcore/wlcore_sdio.ko
    insmod /lib/modules/2.6.37/updates/net/wireless/cfg80211.ko
    insmod /lib/modules/2.6.37/updates/net/mac80211/mac80211.ko
    insmod /lib/modules/2.6.37/updates/drivers/net/wireless/ti/wlcore/wlcore.ko
    insmod /lib/modules/2.6.37/updates/drivers/net/wireless/ti/wl18xx/wl18xx.ko
    We see the following prints when the modules are loaded.
    Compat-wireless backport release: ol_r8.a6.06
    Backport based on wl18xx.git ol_r8.a6.02
    compat.git: wl18xx.git
    cfg80211: Calling CRDA to update world regulatory domain
    wlcore: wl18xx driver version: ol_r8.a6.02
    root@dm816x-evm:~# cfg80211: World regulatory domain updated:
    cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
    cfg80211:   (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
    cfg80211:   (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
    cfg80211:   (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
    cfg80211:   (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
    cfg80211:   (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
    ---------------------------------------------------------------------------------------
    We are monitering the SDIO_clk, WLAN_EN and WLAN_IRQ to the WL1835 device with a scope. When we insert the SD card to the slot we are able to see the clock and the WLAN_EN signals, and the following prints are printed on the terminal.
    mmc0: clock 0Hz busmode 1 powermode 1 cs 0 Vdd 7 width 0 timing 0
    wl12xx_set_power 
    Powering on wl12xx
    mmc0: clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 7 width 0 timing 0
    mmc0: clock 400000Hz busmode 1 powermode 2 cs 1 Vdd 7 width 0 timing 0
    mmc0: clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 7 width 0 timing 0
     mmc_attach_bus success /n
    mmc0: card claims to support voltages below the defined range. These will be ignored.
    mmc0: clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 7 width 0 timing 0
     host->ocr = 128 /nmmc_sdio_init_card() 
    mmc0: clock 400000Hz busmode 2 powermode 2 cs 0 Vdd 7 width 0 timing 0
    inside sdio_read_cccr() 
    mmc0: clock 400000Hz busmode 2 powermode 2 cs 0 Vdd 7 width 0 timing 2
    mmc0: clock 50000000Hz busmode 2 powermode 2 cs 0 Vdd 7 width 0 timing 2
     err2 = -110 /nmmc0: clock 0Hz busmode 1 powermode 0 cs 0 Vdd 0 width 0 timing 0
    wl12xx_set_power 
    Powering off wl12xx
    mmc0: error -110 whilst initialising SDIO card
    mmc0: clock 0Hz busmode 1 powermode 0 cs 0 Vdd 0 width 0 timing 0
    -----------------------------------------------------------------------------------------------
    Will the wlan0 device gets created or do we have to create it?
    Is there any way we can write to the SDIO from userspace and check the signals. Do you have any sample code?
    please let us know if you need more information. Thanks for all you help.
    I have send the same message to your mail, 
    Regards,
    Srikanth.
  • Hi Srikanth,

    Please verify proper power up sequence of the module (VDD/VIO/CLOCK/ etc).

    The power up sequence is mentioned in the data sheet as well as the below wiki page:
    http://processors.wiki.ti.com/index.php/WL18xx_Module_Schematic_Checklist#Power-up_Sequence

    Regards,
    Gigi Joseph.

  • Hello Joseph,


    In the power up sequence, it says we have to put "WLAN and BT_EN" to the gpio, We are not using the Bluetooth. do we have to enable that also.

    I have a CD(Card detect resistor) connected. Do i have to remove that also?

    Thanks for the help.


    Regards,

    Srikanth.

  • Hello Joseph,


    I am getting this following error -110,

    mmc0: clock 0Hz busmode 1 powermode 0 cs 0 Vdd 0 width 0 timing 0
    mmc0: clock 0Hz busmode 1 powermode 1 cs 0 Vdd 7 width 0 timing 0
    Powering on wl12xx
    if - gpio_set_value
    usbcore: registered new interface driver usbhid
    usbhid: USB HID core driver
    notify_init : notify drivercreated  for  remote proc id 2 at physical Address 0xbf900000
    usbcore: registered new interface driver snd-usb-audio
    asoc: tlv320aic3x-hifi <-> davinci-mcasp.2 mapping ok
    ALSA device list:
      #0: TI81XX EVM
    NET: Registered protocol family 26
    nf_conntrack version 0.5.0 (3169 buckets, 12676 max)
    ip_tables: (C) 2000-2006 Netfilter Core Team
    TCP cubic registered
    NET: Registered protocol family 17
    Bridge firewalling registered
    VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
    omap_voltage_late_init: Voltage driver support not added
    Power Management for TI81XX.
    smartreflex smartreflex: Driver is not initialized, nTarget values are not found
    regulator_init_complete: disabling VFB
    omap_rtc omap_rtc: setting system clock to 2000-01-01 00:00:01 UTC (946684801)
    ata2: SATA link down (SStatus 0 SControl 300)
    ata1: SATA link down (SStatus 0 SControl 300)
    Powering off wl12xx
    else - gpio_set_value
    Powering on wl12xx
    if - gpio_set_value
    mmc0: clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 7 width 0 timing 0
    mmc0: starting CMD52 arg 00000c00 flags 00000195
    mmc0: req done (CMD52): -110: 00000000 00000000 00000000 00000000
    err -- mmc_io_rw_direct_host(4) = -110
    mmc0: starting CMD52 arg 80000c08 flags 00000195
    mmc0: req done (CMD52): -110: 00000000 00000000 00000000 00000000
    err -- mmc_io_rw_direct_host(4) = -110
    mmc0: clock 400000Hz busmode 1 powermode 2 cs 1 Vdd 7 width 0 timing 0
    mmc0: starting CMD0 arg 00000000 flags 000000c0
    mmc0: req done (CMD0): 0: 00000000 00000000 00000000 00000000
    mmc0: clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 7 width 0 timing 0
    mmc0: starting CMD8 arg 000000aa flags 000002f5
    mmc0: req done (CMD8): -110: 00000000 00000000 00000000 00000000
    mmc0: starting CMD5 arg 00000000 flags 000002e1
    mmc0: req done (CMD5): 0: a0ffffc0 00000000 00000000 00000000
     mmc_attach_bus success
    mmc0: card claims to support voltages below the defined range. These will be ignored.
    mmc0: clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 7 width 0 timing 0
     host->ocr = 128
    mmc_sdio_init_card()
    before -- mmc_send_io_op_cond()
    mmc0: starting CMD5 arg 00000080 flags 000002e1
    mmc0: req done (CMD5): 0: a0ffffc0 00000000 00000000 00000000
    before -- mmc_alloc_card()
    After -- mmc_alloc_card() = 0
    card type = 0
    else case
    before -- host->ops->init_card
    mmc0: starting CMD3 arg 00000000 flags 00000075
    mmc0: req done (CMD3): 0: 00010000 00000000 00000000 00000000
    before -- mmc_set_bus_mode()
    mmc0: clock 400000Hz busmode 2 powermode 2 cs 0 Vdd 7 width 0 timing 0
    before -- mmc_select_card()
    mmc0: starting CMD7 arg 00010000 flags 00000015
    mmc0: req done (CMD7): 0: 00001ec7 00000000 00000000 00000000
    inside sdio_read_cccr()
    mmc0: starting CMD52 arg 00000000 flags 00000195
    mmc0: req done (CMD52): 0: 00001043 00000000 00000000 00000000
    err -- mmc_io_rw_direct_host(4) = 0
    mmc0: starting CMD52 arg 00001000 flags 00000195
    mmc0: req done (CMD52): 0: 00001012 00000000 00000000 00000000
    err -- mmc_io_rw_direct_host(4) = 0
    mmc0: starting CMD52 arg 00002400 flags 00000195
    mmc0: req done (CMD52): 0: 00001000 00000000 00000000 00000000
    err -- mmc_io_rw_direct_host(4) = 0
    mmc0: starting CMD52 arg 00002600 flags 00000195
    mmc0: req done (CMD52): 0: 00001001 00000000 00000000 00000000
    err -- mmc_io_rw_direct_host(4) = 0
    mmc0: starting CMD52 arg 00001200 flags 00000195
    mmc0: req done (CMD52): 0: 00001000 00000000 00000000 00000000
    err -- mmc_io_rw_direct_host(4) = 0
    mmc0: starting CMD52 arg 00001400 flags 00000195
    mmc0: req done (CMD52): 0: 00001010 00000000 00000000 00000000
    err -- mmc_io_rw_direct_host(4) = 0
    mmc0: starting CMD52 arg 00001600 flags 00000195
    mmc0: req done (CMD52): 0: 00001000 00000000 00000000 00000000
    err -- mmc_io_rw_direct_host(4) = 0
    mmc0: starting CMD52 arg 00200000 flags 00000195
    mmc0: req done (CMD52): 0: 00001020 00000000 00000000 00000000
    err -- mmc_io_rw_direct_host(4) = 0
    mmc0: starting CMD52 arg 00200200 flags 00000195
    mmc0: req done (CMD52): 0: 00001004 00000000 00000000 00000000
    davinci_mdio davinci_mdio.0: resetting idled controller
    net eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=0:01, id=282f014)
    err -- mmc_io_rw_direct_host(4) = 0
    mmc0: starting CMD52 arg 00200400 flags 00000195
    mmc0: req done (CMD52): 0: 00001097 00000000 00000000 00000000
    err -- mmc_io_rw_direct_host(4) = 0
    mmc0: starting CMD52 arg 00200600 flags 00000195
    mmc0: req done (CMD52): 0: 00001000 00000000 00000000 00000000
    err -- mmc_io_rw_direct_host(4) = 0
    mmc0: starting CMD52 arg 00200800 flags 00000195
    mmc0: req done (CMD52): 0: 00001076 00000000 00000000 00000000
    err -- mmc_io_rw_direct_host(4) = 0
    mmc0: starting CMD52 arg 00200a00 flags 00000195
    mmc0: req done (CMD52): 0: 00001040 00000000 00000000 00000000
    err -- mmc_io_rw_direct_host(4) = 0
    mmc0: starting CMD52 arg 00200c00 flags 00000195
    mmc0: req done (CMD52): 0: 00001021 00000000 00000000 00000000
    err -- mmc_io_rw_direct_host(4) = 0
    mmc0: starting CMD52 arg 00200e00 flags 00000195
    mmc0: req done (CMD52): 0: 00001002 00000000 00000000 00000000
    err -- mmc_io_rw_direct_host(4) = 0
    mmc0: starting CMD52 arg 00201000 flags 00000195
    mmc0: req done (CMD52): 0: 0000100c 00000000 00000000 00000000
    err -- mmc_io_rw_direct_host(4) = 0
    mmc0: starting CMD52 arg 00201200 flags 00000195
    mmc0: req done (CMD52): 0: 00001000 00000000 00000000 00000000
    err -- mmc_io_rw_direct_host(4) = 0
    mmc0: starting CMD52 arg 00201400 flags 00000195
    mmc0: req done (CMD52): 0: 00001022 00000000 00000000 00000000
    err -- mmc_io_rw_direct_host(4) = 0
    mmc0: starting CMD52 arg 00201600 flags 00000195
    mmc0: req done (CMD52): 0: 00001004 00000000 00000000 00000000
    err -- mmc_io_rw_direct_host(4) = 0
    mmc0: starting CMD52 arg 00201800 flags 00000195
    mmc0: req done (CMD52): 0: 00001000 00000000 00000000 00000000
    err -- mmc_io_rw_direct_host(4) = 0
    mmc0: starting CMD52 arg 00201a00 flags 00000195
    mmc0: req done (CMD52): 0: 00001000 00000000 00000000 00000000
    err -- mmc_io_rw_direct_host(4) = 0
    mmc0: starting CMD52 arg 00201c00 flags 00000195
    mmc0: req done (CMD52): 0: 00001008 00000000 00000000 00000000
    err -- mmc_io_rw_direct_host(4) = 0
    mmc0: starting CMD52 arg 00201e00 flags 00000195
    mmc0: req done (CMD52): 0: 00001032 00000000 00000000 00000000
    err -- mmc_io_rw_direct_host(4) = 0
    mmc0: starting CMD52 arg 00202000 flags 00000195
    mmc0: req done (CMD52): 0: 000010ff 00000000 00000000 00000000
    err -- mmc_io_rw_direct_host(4) = 0
    inside cd disable1
    mmc0: starting CMD52 arg 00002600 flags 00000195
    mmc0: req done (CMD52): 0: 00001001 00000000 00000000 00000000
    err -- mmc_io_rw_direct_host(4) = 0
    mmc0: starting CMD52 arg 80002603 flags 00000195
    mmc0: req done (CMD52): 0: 00001003 00000000 00000000 00000000
    err -- mmc_io_rw_direct_host(4) = 0
    sdio_enable_hs()err > 0 = 1
    mmc0: clock 400000Hz busmode 2 powermode 2 cs 0 Vdd 7 width 0 timing 2
    before -- mmc_set_clock()
    mmc0: clock 50000000Hz busmode 2 powermode 2 cs 0 Vdd 7 width 0 timing 2
     inside -- sdio_enable_4bit_bus()
    card->type = 2
    mmc0: starting CMD52 arg 00000e00 flags 00000195
    mmc0: req done (CMD52): -110: 00000000 00000000 00000000 00000000
    err -- mmc_io_rw_direct_host(4) = -110
    sdio_enable_4bit_bus() = -110
     err2 = -110
    mmc0: clock 0Hz busmode 1 powermode 0 cs 0 Vdd 0 width 0 timing 0
    Powering off wl12xx
    else - gpio_set_value
    mmc0: error -110 whilst initialising SDIO card
    mmc0: starting CMD55 arg 00000000 flags 000000f5
    mmc0: req done (CMD55): -110: 00000000 00000000 00000000 00000000
    mmc0: starting CMD55 arg 00000000 flags 000000f5
    mmc0: req done (CMD55): -110: 00000000 00000000 00000000 00000000
    mmc0: starting CMD55 arg 00000000 flags 000000f5
    mmc0: req done (CMD55): -110: 00000000 00000000 00000000 00000000
    mmc0: starting CMD55 arg 00000000 flags 000000f5
    mmc0: req done (CMD55): -110: 00000000 00000000 00000000 00000000
    mmc0: clock 0Hz busmode 1 powermode 0 cs 0 Vdd 0 width 0 timing 0
    IP-Config: Complete:

    Please help.


    Thanks,

    Srikanth.

  • Hi Srikanth,

    Have you verified the Clock/connections?
    I don't think this is a problem on the software side.

    Regards,
    Gigi Joseph.

  • Hello Joseph,

    We checked the connections and trying to get the power up sequence right.

    We are getting the WLAN_EN high and can see the clock when the commands are send out from the host. We are not getting the WLAN_IRQ.

    http://processors.wiki.ti.com/index.php/WL18xx_Platform_Integration_Guide#WLAN_Reset.2FPower_up_sequence

    The WLAN power-up sequence waveform in the above link before WLAN_IRQ high pulse it is told that "indicates completion of FW download and internal initilization". Can you tell us what dose that mean? Is the WL1835MOD download the FW from the host or the FW is stored in the module already? 

    Is the host have to download any firmware to the WL1835?

    When we are trying to find the techinical documents for the wl1835 register addresses or any information we are unable to get them. Where can we get them?  Can you provide us the reference manual for the WL1835 and WL1805? 

    Thanks for the help.

    Regards,

    Srikanth.

  • Hi Srikanth,

    The host has to download the fw.
    This will be taken care by the wl18xx driver itself. You just have to ensure that the correct fw (a file named wl18xx-fw-4.bin) is available in "/lib/firmware/ti-connectivity"

    But I think your problem happens much earlier... The SD init is failing in your case.

    Regarding the wl18xx register address, the driver source code is open. You can take a look at: "reg.h" (drivers/net/wireless/ti/wl18xx/)

    Regards,
    Gigi Joseph.

  • Hello Joseph,


    Thanks for the help.

    The problem is with the hardwarw connections.

    The basic commands of the SD is clocked at 400khz and when the SDIO negotiate with the wl1835 and tries to swith to 50Mhz clock then it fails with -110 error.

    Our hardware engineer is trying to shot the wire length, to make it work.

    We are not sure if the wl1835MOD which we have is working, so we purchased a AM3359 evm board and tried to check it.

    We have used "AM335xSDK 06_00_00_00" SDK.

    We used the link below to get the wl18xx compilation.

    http://processors.wiki.ti.com/index.php/WL18xx_System_Build_Scripts#Building_R8.3_SP1

    It  compiled and the board booted fine loading the wl18xx modules and firmware.

    we are able to see the wlan0. and doing down and up on the device is also fine. when we tried run the command "iw wlan0 scan" it crashes with the messages below.

    root@am335x-evm:~# ifconfig wlan0 down
    root@am335x-evm:~# ifconfig wlan0 up  
    [   71.366882] wlcore: PHY firmware version: Rev 8.2.0.0.195
    [   71.460876] wlcore: firmware booted (Rev 8.8.0.0.13)
    root@am335x-evm:~# ifconfig
    eth0      Link encap:Ethernet  HWaddr C4:ED:BA:88:47:F0  
              inet addr:192.168.2.36  Bcast:192.168.2.255  Mask:255.255.255.0
              UP BROADCAST RUNNING ALLMULTI MULTICAST  MTU:1500  Metric:1
              RX packets:42322 errors:0 dropped:1 overruns:0 frame:0
              TX packets:19395 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:51038104 (48.6 MiB)  TX bytes:2941648 (2.8 MiB)

    lo        Link encap:Local Loopback  
              inet addr:127.0.0.1  Mask:255.0.0.0
              UP LOOPBACK RUNNING  MTU:16436  Metric:1
              RX packets:127 errors:0 dropped:0 overruns:0 frame:0
              TX packets:127 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:250507 (244.6 KiB)  TX bytes:250507 (244.6 KiB)

    wlan0     Link encap:Ethernet  HWaddr 84:DD:20:92:A5:8A  
              UP BROADCAST MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

    root@am335x-evm:~# iw wlan0 scan            
    [   93.037780] wlcore: ERROR ELP wakeup timeout!
    [   93.042358] ------------[ cut here ]------------
    [   93.047271] WARNING: at /home/videolab/ti-sdk-am335x-evm-06.00.00.00/build-utilites/workdir/compat-wireless/drivers/net/wireless/ti/wlcore/main.c:802 wl12xx_queue_recovery_work+0x74/0x7c [wlcore]()
    [   93.065673] Modules linked in: g_mass_storage wl18xx(O) wlcore(O) mac80211(O) cfg80211(O) wlcore_sdio(O) compat(O)
    [   93.076538] Backtrace:
    [   93.079132] [<c0017dbc>] (dump_backtrace+0x0/0x10c) from [<c04140c0>] (dump_stack+0x18/0x1c)
    [   93.087951]  r6:bf0dbe74 r5:00000009 r4:00000000 r3:c05f7f0c
    [   93.093902] [<c04140a8>] (dump_stack+0x0/0x1c) from [<c003f1dc>] (warn_slowpath_common+0x54/0x6c)
    [   93.103210] [<c003f188>] (warn_slowpath_common+0x0/0x6c) from [<c003f218>] (warn_slowpath_null+0x24/0x2c)
    [   93.113220]  r8:bf0fcb74 r7:ffffaef5 r6:c05f8e48 r5:ffffff92 r4:c61894a0
    [   93.120056] r3:00000009
    [   93.122833] [<c003f1f4>] (warn_slowpath_null+0x0/0x2c) from [<bf0dbe74>] (wl12xx_queue_recovery_work+0x74/0x7c [wlcore])
    [   93.134246] [<bf0dbe00>] (wl12xx_queue_recovery_work+0x0/0x7c [wlcore]) from [<bf0e6bf4>] (wl1271_ps_elp_wakeup+0xe0/0x230 [wlcore])
    [   93.146728]  r4:c61894a0 r3:c05f7f28
    [   93.150512] [<bf0e6b14>] (wl1271_ps_elp_wakeup+0x0/0x230 [wlcore]) from [<bf0d9110>] (wl1271_op_config+0x58/0x160 [wlcore])
    [   93.162322] [<bf0d90b8>] (wl1271_op_config+0x0/0x160 [wlcore]) from [<bf066268>] (ieee80211_hw_config+0x58/0x294 [mac80211])
    [   93.174133] [<bf066210>] (ieee80211_hw_config+0x0/0x294 [mac80211]) from [<bf07407c>] (ieee80211_recalc_idle+0x28/0x2c [mac80211])
    [   93.186492] [<bf074054>] (ieee80211_recalc_idle+0x0/0x2c [mac80211]) from [<bf06b734>] (__ieee80211_start_scan+0x140/0x364 [mac80211])
    [   93.199127]  r4:c6188b20 r3:00000002
    [   93.202941] [<bf06b5f4>] (__ieee80211_start_scan+0x0/0x364 [mac80211]) from [<bf06c384>] (ieee80211_request_scan+0x30/0x4c [mac80211])
    [   93.215576]  r6:00000000 r5:c6109600 r4:c73213c0
    [   93.220489] [<bf06c354>] (ieee80211_request_scan+0x0/0x4c [mac80211]) from [<bf079a28>] (ieee80211_scan+0xa8/0xac [mac80211])
    [   93.232330]  r5:c6188000 r4:00000001
    [   93.236236] [<bf079980>] (ieee80211_scan+0x0/0xac [mac80211]) from [<bf03bf5c>] (nl80211_trigger_scan+0x558/0x59c [cfg80211])
    [   93.248046]  r4:c60b9c34 r3:bf079980
    [   93.251831] [<bf03ba04>] (nl80211_trigger_scan+0x0/0x59c [cfg80211]) from [<c0388b1c>] (genl_rcv_msg+0x224/0x25c)
    [   93.262603] [<c03888f8>] (genl_rcv_msg+0x0/0x25c) from [<c0387e88>] (netlink_rcv_skb+0xb4/0xc8)
    [   93.271697] [<c0387dd4>] (netlink_rcv_skb+0x0/0xc8) from [<c03888f0>] (genl_rcv+0x24/0x2c)
    [   93.280364]  r6:c6109800 r5:c7055a40 r4:c7055a40 r3:00000000
    [   93.286285] [<c03888cc>] (genl_rcv+0x0/0x2c) from [<c0387878>] (netlink_unicast+0x280/0x2d0)
    [   93.295104]  r4:00000000 r3:c03888cc
    [   93.298858] [<c03875f8>] (netlink_unicast+0x0/0x2d0) from [<c0387bc8>] (netlink_sendmsg+0x258/0x2c8)
    [   93.308441] [<c0387970>] (netlink_sendmsg+0x0/0x2c8) from [<c035f5bc>] (sock_sendmsg+0x90/0xb0)
    [   93.317535] [<c035f52c>] (sock_sendmsg+0x0/0xb0) from [<c035f94c>] (__sys_sendmsg+0x2bc/0x2d0)
    [   93.326568] [<c035f690>] (__sys_sendmsg+0x0/0x2d0) from [<c03611dc>] (sys_sendmsg+0x44/0x70)
    [   93.335418] [<c0361198>] (sys_sendmsg+0x0/0x70) from [<c0014740>] (ret_fast_syscall+0x0/0x30)
    [   93.344329]  r6:00009629 r5:bef22c48 r4:40189114
    [   93.349182] ---[ end trace 3975c341d447a3e5 ]---
    [   93.354949] wlcore: Hardware recovery in progr.0.13
    [   93.362121] ----------------------
    [   93.367034] WARNING: at /home/videolab/ti-sdk-am335x-evm-06.00.00.00/build-utilites/workdir/compat-wireless/drivers/net/wireless/ti/wlcore/io.h:65 wlcore_set_partition+0xa0/0x4e8 [wlcore]()
    [   93.384704] Modules linked in: g_mass_storage wl18xx(O) wlcore(O) mac80211(O) cfg80211(O) wlcore_sdio(O) compat(O)
    [   93.395568] Backtrace:
    [   93.398132] [<c0017dbc>] (dump_backtrace+0x0/0x10c) from [<c04140c0>] (dump_stack+0x18/0x1c)
    [   93.406951]  r6:bf0e2b7c r5:00000009 r4:00000000 r3:c05f7f0c
    [   93.412902] [<c04140a8>] (dump_stack+0x0/0x1c) from [<c003f1dc>] (warn_slowpath_common+0x54/0x6c)
    [   93.422210] [<c003f188>] (warn_slowpath_common+0x0/0x6c) from [<c003f218>] (warn_slowpath_null+0x24/0x2c)
    [   93.432220]  r8:00000000 r7:00000000 r6:bf0fcb74 r5:bf11c244 r4:c61894a0
    [   93.439056] r3:00000009
    [   93.441833] [<c003f1f4>] (warn_slowpath_null+0x0/0x2c) from [<bf0e2b7c>] (wlcore_set_partition+0xa0/0x4e8 [wlcore])
    [   93.452789] [<bf0e2adc>] (wlcore_set_partition+0x0/0x4e8 [wlcore]) from [<bf0dc33c>] (wl1271_recovery_work+0x70/0x560 [wlcore])
    [   93.464813]  r7:bf0dc2cc r6:c61894d4 r5:c61894a0 r4:c6189734
    [   93.470764] [<bf0dc2cc>] (wl1271_recovery_work+0x0/0x560 [wlcore]) from [<c0052330>] (process_one_work+0x11c/0x364)
    [   93.481689] [<c0052214>] (process_one_work+0x0/0x364) from [<c0052c90>] (worker_thread+0x17c/0x310)
    [   93.491180] [<c0052b14>] (worker_thread+0x0/0x310) from [<c00573b4>] (kthread+0x8c/0x94)
    [   93.499633] [<c0057328>] (kthread+0x0/0x94) from [<c004203c>] (do_exit+0x0/0x65c)
    [   93.507476]  r6:c004203c r5:c0057328 r4:c701ded4

    [   93.512298] ---[ end trace 3975c341d447a3e6 ]---
    [   93.517150] wlcore: down
    command failed: Resource temporarily unavailable[   93.523468] ieee80211 phy0: Hardware restart was requested
     (-11)
    root@am335x-evm:[   93.932891] wlcore: PHY firmware version: Rev 8.2.0.0.195
    [   94.030822] wlcore: firmware booted (Rev 8.8.0.0.13)

    Can you please tell us if our wl1835mod is working. Is there any more test to make sure the module is fine?


    Thanks,

    Srikanth.

  • Hi Srikanth,

    I think your module is working fine as you are able to turn on WLAN. The only problem is: "wlcore: ERROR ELP wakeup timeout!" while scanning.

    The typical reason for this would be the mapping of the IRQ line in your host.

    Since you have an AM335x, I recommend that you use the prebuilt binaries in: http://processors.wiki.ti.com/index.php/WL18xx_AMxxx_platform_integration_guide 

    and confirm the WLAN functionality.

    Regards,
    Gigi Joseph.

  • Hello Joseph,


    Sorry for the late reply.

    We purchased a new wl1835 dongle and checked it with the AM3359 board and it is working fine.
    The previous dongle which we have is gone bad.

    One more good news is, i told you that we are making a custom board with dm8168 processor and put wl1805 chip in that. we received the board last week and after all the board bring up and video working. We put the wifi code which you helped us with and it worked very well. Now we are able to stream the video through wifi.

    We really appreciate your help. Thanks a lot.


    Regards,

    Srikanth.

  • Hi Srikanth,

    Thanks for the update... I will mark this as closed.
    Please raise a new thread for any additional assistance.

    Regards,
    Gigi Joseph.

  • Hi Srikanth,

    With DM8168 Which kernel you r using?

    if kernel is 2.6.37 then which wifi driver version your check?

    Regards,
    Kunjal
  • Hello Kunjal,

    I am using the SDK version  "5_05_02_00" and the kernel is 2.6.37.


    My wifi driver version is "R8_A6_02" and when my board boots up it says "wl18xx driver version: R8.xx_Build-309"


    Joseph has provided us with the build scrips which helped us to bownload the backport and build for 2.6.37 kernel.


    Thanks,

    Srikanth.