static int __init msm_qrd_init_ar6000pm(void) { //if (cpu_is_msm8625()) // return 0; msm_wlan_ar6000_pm_device.dev.platform_data = &ar600x_wlan_power; msm_read_nv(NV_ITEM_WLAN_MAC_ADDR,wlan_mac_addr); return platform_device_register(&msm_wlan_ar6000_pm_device); }
static int __init qrd_wlan_init(void) { int rc; pr_info("WLAN power init\n"); if (machine_is_msm7627a_qrd1() || machine_is_msm7627a_evb() || machine_is_msm8625_evb() || machine_is_msm8625_qrd5() || machine_is_msm7x27a_qrd5a() || machine_is_msm8625_skua() || machine_is_msm8625_evt() || machine_is_msm7627a_qrd3() || machine_is_msm8625_qrd7()) { rc = gpio_tlmm_config(GPIO_CFG(gpio_wlan_sys_rest_en, 0, GPIO_CFG_OUTPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA), GPIO_CFG_ENABLE); if (rc) { pr_err("%s gpio_tlmm_config %d failed,error = %d\n", __func__, gpio_wlan_sys_rest_en, rc); goto exit; } gpio_set_value(gpio_wlan_sys_rest_en, 0); } else { gpio_request(gpio_wlan_sys_rest_en, "WLAN_DEEP_SLEEP_N"); rc = setup_wlan_gpio(false); gpio_free(gpio_wlan_sys_rest_en); if (rc) { pr_err("%s: wlan_set_gpio = %d\n", __func__, rc); goto exit; } } /* GPIO_WLAN_3V3_EN is only required for the QRD7627a */ if (machine_is_msm7627a_qrd1()) { rc = gpio_tlmm_config(GPIO_CFG(GPIO_WLAN_3V3_EN, 0, GPIO_CFG_OUTPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA), GPIO_CFG_ENABLE); if (rc) { pr_err("%s gpio_tlmm_config %d failed,error = %d\n", __func__, GPIO_WLAN_3V3_EN, rc); goto exit; } gpio_set_value(GPIO_WLAN_3V3_EN, 0); } /*ATH6KL_USES_PREALLOCATE_MEM*/ #ifdef CONFIG_ATH6KL_USES_PREALLOCATE_MEM wlan_init_memory(); #endif /* NV mac init */ msm_read_nv(NV_ITEM_WLAN_MAC_ADDR,wlan_mac_addr); printk("MAC from NV %02X:%02X:%02X:%02X:%02X:%02X\n", wlan_mac_addr[0], wlan_mac_addr[1], wlan_mac_addr[2], wlan_mac_addr[3], wlan_mac_addr[4], wlan_mac_addr[5]); exit: return rc; }
static void __init msm_qrd_init(void) { msm7x2x_misc_init(); msm7627a_init_regulators(); msmqrd_adsp_add_pdev(); if (cpu_is_msm8625() || cpu_is_msm8625q()) msm8625_device_i2c_init(); else msm7627a_device_i2c_init(); /* uart1dm*/ qrd7627a_uart1dm_config(); /*OTG gadget*/ qrd7627a_otg_gadget(); msm_add_footswitch_devices(); add_platform_devices(); /* Ensure ar6000pm device is registered before MMC/SDC */ /* modified by fanjiankang begin*/ //msm_qrd_init_ar6000pm(); wlan_init_power(); msm_read_nv(NV_ITEM_WLAN_MAC_ADDR, wlan_mac_addr); msm7627a_init_mmc(); #ifdef CONFIG_USB_EHCI_MSM_72K msm7627a_init_host(); #endif msm_pm_init(); msm_pm_register_irqs(); msm_fb_add_devices(); // zhangji modify for del mp8845c // platform_device_register(&mp8845c_platform_device); platform_device_register(&ncp6335d_platform_device); #ifdef CONFIG_I2C_GPIO //if (machine_is_msm8625q_evbd() || machine_is_msm8625q_skud() // || machine_is_msm8625q_skue()) // i2c_register_board_info(2, i2c2_info, ARRAY_SIZE(i2c2_info)); #endif #if defined(CONFIG_BT) && defined(CONFIG_MARIMBA_CORE) msm7627a_bt_power_init(); #endif //msm7627a_sensor_init(); msm7627a_camera_init(); qrd7627a_add_io_devices(); msm7x25a_kgsl_3d0_init(); msm8x25_kgsl_3d0_init(); msm7x27a_sensor_init(); #ifdef CONFIG_PN544_NFC nfc_init(); #endif }