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.

sdk 6.0 wifi 移植



hi,

我用的是sdk6.0 ,现在想移植wifi模块的驱动,我用的是wg7310 wifi模块(wl1271芯片),发现board-am335xevm.c里有对wifi设备的一些初始化(如:mmc1_wl12xx_init),关于设备方面我只要改这些就行了吧。 然后就是驱动了,貌似内核里面没有相应的WiFi驱动吧?然后我在sdk里面找到了extra-drivers/ti-compat-wireless-wl12xx-0.20121118r5sp3 这个文件夹,是不是移植这里面的驱动呢?如果是,我应该怎样移植呢? 如果不是,我又该怎么做呢?  希望能指点一下。。。

  • 现在W1271已经不是主流了,目前主流的wifi芯片组是W18系列,请参考:

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

    http://processors.wiki.ti.com/index.php/WL18xx_First_Time_Getting_Started_Guide_(Beaglebone)

  • 那有没有sdk6.0 里ti-compat-wireless-wl12xx-0.20121118r5sp3的移植教程呢?如何才能将其编译成相应的.ko文件。。。

  • 您可以去我们的wiki上搜索下。

    问题是W12已经被性能更好的W18取代了,就算把W12调通也没多大意义了,可能市面上W12的芯片模组都不好找。

  • 我觉得你这说的好笼统

    你现在是硬件平台已经好了吗?然后调试驱动的时候出问题了?

    如果这样 你最好能把log之类的也发上来

  • 我现在遇到的问题是,硬件的一些东西已经初始化好了,但sys/bus/sdio/device目录下没有
    设备,正常情况下应该有相关mmc2 的设备才对吧。
    mmc 设备目录下也没有mmc2,我明明已经初始化了呀。打印信息已上传附件
    struct wl12xx_platform_data am335xevm_wlan_data = {
            .irq = OMAP_GPIO_IRQ(AM335XEVM_WLAN_IRQ_GPIO),
            .board_ref_clock = WL12XX_REFCLOCK_38_XTAL, /* 38.4Mhz */
            .bt_enable_gpio = GPIO_TO_PIN(3, 21),
            .wlan_enable_gpio = GPIO_TO_PIN(1, 16),
    };
    
    /* Module pin mux for wlan and bluetooth */
    static struct pinmux_config mmc2_wl12xx_pin_mux[] = {
            {"gpmc_a1.mmc2_dat0", OMAP_MUX_MODE3 | AM33XX_PIN_INPUT_PULLUP},
            {"gpmc_a2.mmc2_dat1", OMAP_MUX_MODE3 | AM33XX_PIN_INPUT_PULLUP},
            {"gpmc_a3.mmc2_dat2", OMAP_MUX_MODE3 | AM33XX_PIN_INPUT_PULLUP},
            {"gpmc_ben1.mmc2_dat3", OMAP_MUX_MODE3 | AM33XX_PIN_INPUT_PULLUP},
            {"gpmc_csn3.mmc2_cmd", OMAP_MUX_MODE3 | AM33XX_PIN_INPUT_PULLUP},
            {"gpmc_clk.mmc2_clk", OMAP_MUX_MODE3 | AM33XX_PIN_INPUT_PULLUP},
            {NULL, 0},
    };
    ...
    static int wl12xx_set_power(struct device *dev, int slot, int on, int vdd)
    {
            if (on) {
                    gpio_direction_output(am335xevm_wlan_data.wlan_enable_gpio, 1);
                    mdelay(70);
            } else {
                    gpio_direction_output(am335xevm_wlan_data.wlan_enable_gpio, 0);
            }
    
            return 0;
    }
    
    static void wl12xx_init(int evm_id, int profile)
    {
    ...
            if (wl12xx_set_platform_data(&am335xevm_wlan_data))
                    pr_err("error setting wl12xx data\n");
    
            dev = am335x_mmc[1].dev;
            if (!dev) {
                    pr_err("wl12xx mmc device initialization failed\n");
                    goto out;
            }
    ...
            ret = gpio_request_one(am335xevm_wlan_data.wlan_enable_gpio,
                    GPIOF_OUT_INIT_LOW, "wlan_en");
    ...
            setup_pin_mux(wl12xx_pin_mux);
    
            pdata->slots[0].set_power = wl12xx_set_power;
    out:
            return;
    }
  • 你有确定相关内核部分的驱动已经加载进去了么?