Huawei mw269v2 is a Wi-Fi + bt + FM three-in-one module, and WiFi uses Broadcom bcm4330,
Sdio interface. The kernel version of the android 4.0.3 BSP on s5pv210 is 3.0.8. power on the Development Board through USB port, and insert the TF card interface through the adapter board. Print the following information: mmc_attach_sdio entermmc_attach_sdio mmc_attach_busmmc2: Card claims to support voltages below the defined range. these will be ignored. mmc2: Error-84 whilst initialising sdio cardmmc_rescan_try_freq not sdio! Mmc2: timeout waiting for hardware interrupt. query the header file to obtain # define eilseq 84/* illegal byte sequence */Drivers/MMC/directory trace, mmc_attach_sdio 1_1_1_1_1_r Eturn 0mmc_sdio_init_card parameter set parametersmmc_sdio_init_card contains invalid parameter values: Error-84 whilst initialising sdio cardmmc_rescan_try_freq not sdio! However, if the kernel version 2.6.35.7 of android2.3.7 is burned, we can see that mmc2: New High Speed sdio card at address 0001 cannot find other methods, decided to port the MMC stack 2.6.35.7 to 3.0.8. delete Drivers/MMC include/Linux/MMC in 3.0.8 and copy the corresponding directory from 2.6.35.7. Then there are some files in arch/ARM/mach-s5pv210 and arch/ARM/Plat-Samsung. Among them ARCH/ARM/mach-s5pv210/setup-sdhci.c and arch/ARM/mach-s5pv210/setup-sdhci-gpio.c if fully adopt 2.6.35.7, then can be normal to identify sdio card. If 3.0.8 is used, the-84 error is displayed. After elimination, it is found that the problem occurs in the code of void construct (struct platform_device * Dev, int width) using 2.6.35.7: void s5pv210_setup_sdhci2_cfg_gpio (struct platform_device * Dev, int width) {unsig; switch (width) {/* Channel 2 supports 4 and 8-bit bus width */case 8: /* set all the necessary gpio function and pull up/down */For (gpio = s5pv210_gpg3 (3); gpio <= s5pv210_gpg3 (6); gpio ++) {initi_gpio_cfgpin (GPI O, initi_gpio_sfn (3); initi_gpio_setpull (gpio, initi_gpio_pull_none); Round (gpio, initi_gpio_drvstr_2x);} case 0: Case 1: Case 4: /* set all the necessary gpio function and pull up/down */For (gpio = s5pv210_gpg2 (0); gpio <= s5pv210_gpg2 (6); gpio ++) {If (gpio! = S5pv210_gpg2 (2) {Scheme (gpio, initi_gpio_sfn (2); initi_gpio_setpull (gpio, initi_gpio_pull_none);} Scheme (gpio, callback);} break; default: printk (kern_err "wrong SD/MMC bus width: % d \ n", width) ;}} can be recognized normally. Use Code 3.0.8: void s5pv210_setup_sdhci2_cfg_gpio (struct platform_device * Dev, int width) {struct initi_sdhci_platdata * pdata = Dev-> Dev. platform_data;/* set all the necessary gpg2 [0: 1] pins to special-function 2 */functions (s5pv210_gpg2 (0), 2, initi_gpio_sfn (2); Switch (width) {Case 8:/* Data pin gpg3 [3: 6] to special-function 3 */initi_gpio_cfgrange_nopull (s5pv210_gpg3 (3), 4, initi_gpio_sfn (3 )); Case 4:/* Data pin gpg2 [3: 6] to special-function 2 */initi_gpio_cfgrange_nopull (s5pv210_gpg2 (3), 4, initi_gpio_sfn (2); default: break ;} initi_gpio_setpull (s5pv210_gpg2 (2), initi_gpio_pull_up); initi_gpio_cfgpin (s5pv210_gpg2 (2), and initi_gpio_sfn (2);} identifies error-84. After testing, you must set the intensity: initi_gpio_set_drvstrength (s5pv210_gpg2 (3), initi_gpio_drvstr_2x); and add 1bit: Case 1: percentile (s5pv210_gpg2 (3), 1, initi_gpio_sfn (2 ));
Export (s5pv210_gpg2 (3), initi_gpio_drvstr_2x); For (gpio = s5pv210_gpg2 (0); gpio <= s5pv210_gpg2 (1); gpio ++) {If (gpio! = S5pv210_gpg2 (2) {initi_gpio_cfgpin (gpio, initi_gpio_sfn (2); initi_gpio_setpull (gpio, initi_gpio_pull_none);} callback (gpio, callback, you need to add support for the functions of initi_gpio_set_drvstrength. ARCH/ARM/mach-s5pv210/include/Mach/irqs. h # define s5p_irq_gpioint (x) (s5p_gpioint_base + (x) arch/ARM/Plat-Samsung/include/plat/gpio-core.hstruct initi_gpio_chip {+
Int eint_offset;}; from 2.6.35.7 copy ARCH/ARM/mach-s5pv210/gpiolib. C to 3.0.8 modify ARCH/ARM/mach-s5pv210/makefile-obj-$ (config_cpu_s5pv210)
+ = CPU. O init. o clock. o dma. O + obj-$ (config_cpu_s5pv210)
+ = CPU. O init. o clock. o dma. O gpiolib. O after the sdio device can be identified normally, "insmod/system/etc/bcm4330.ko" cannot load firmware or generate the socket device wlan0, the MMC of version 2.6.35.7 can generate wlan0, and synchronize Samsung-kernel-aries from GitHub. Jeff @ translogic: samsung-kernel-Aries $ git branch-A android-samsung-2.6.35 * android-samsung-3.0-ics remotes/ORIGIN/head-> origin/android-samsung-3.0-ics remotes/ORIGIN/android-samsung-2.6.35 remotes/ORIGIN/Android-Sam Sung-3.0-ics remotes/ORIGIN/Bluetooth remotes/ORIGIN/dock_audio remotes/ORIGIN/docking remotes/ORIGIN/ICS remotes/ORIGIN/newfmradio remotes/ORIGIN/Samsung-merge remotes/ORIGIN/sound drivers/MMC include/Linux/MMC are partially updated, wlan0 can be generated for testing.