void __init msm8226_init(void)
{
	struct of_dev_auxdata *adata = msm8226_auxdata_lookup;

	if (socinfo_init() < 0)
		pr_err("%s: socinfo_init() failed\n", __func__);

	msm8226_init_gpiomux();
	board_dt_populate(adata);
	msm8226_add_drivers();
#ifdef CONFIG_HUAWEI_MMC
    hw_extern_sdcard_add_device();
#endif
}
static void __init msm7x2x_init(void)
{
	msm7x2x_misc_init();

	/* Initialize regulators first so that other devices can use them */
	msm7x27a_init_regulators();
	msm_adsp_add_pdev();
	if (cpu_is_msm8625())
		msm8625_device_i2c_init();
	else
		msm7x27a_device_i2c_init();
	msm7x27a_init_ebi2();
	msm7x27a_uartdm_config();

#ifdef CONFIG_HUAWEI_KERNEL
    import_kernel_cmdline();
#endif

	msm7x27a_otg_gadget();
#ifndef CONFIG_HUAWEI_CAMERA
    msm7x27a_cfg_smsc911x();
#endif
#if (defined(CONFIG_HUAWEI_BT_BCM43XX) && defined(CONFIG_HUAWEI_KERNEL))
    /*before bt probe, config the bt_wake_msm gpio*/
    bt_wake_msm_config();
#endif
	msm7x27a_add_footswitch_devices();
	msm7x27a_add_platform_devices();
	/* Ensure ar6000pm device is registered before MMC/SDC */
	msm7x27a_init_ar6000pm();
	msm7627a_init_mmc();
	msm_fb_add_devices();
	msm7x2x_init_host();
	msm7x27a_pm_init();
	register_i2c_devices();
//#if (defined(HUAWEI_BT_BLUEZ_VER30) || (!defined(CONFIG_HUAWEI_KERNEL)))
	//msm7627a_bt_power_init() will check QC or BCM bt chip powers inner.
	msm7627a_bt_power_init();
//#endif
	msm7627a_camera_init();
	msm7627a_add_io_devices();
	/*7x25a kgsl initializations*/
	msm7x25a_kgsl_3d0_init();
	
#ifdef CONFIG_HUAWEI_FEATURE_OEMINFO
    rmt_oeminfo_add_device();
#endif

#ifdef CONFIG_HUAWEI_KERNEL
	virtualkeys_init();
#endif

#ifdef CONFIG_HUAWEI_KERNEL
    hw_extern_sdcard_add_device();
#endif
    
	/*8x25 kgsl initializations*/
	msm8x25_kgsl_3d0_init();

	
#ifdef CONFIG_HUAWEI_MTK6252_MODEM
	{
		unsigned smem_size;
		boot_reason = *(unsigned int *)
			(smem_get_entry(SMEM_POWER_ON_STATUS_INFO, &smem_size));
		printk(KERN_NOTICE "Boot Reason = 0x%02x\n", boot_reason);
		mtk6252_dev_init();
	}
#endif
}