static void __init msm7x2x_init(void) { if (socinfo_init() < 0) BUG(); #ifdef CONFIG_HUAWEI_CAMERA sensor_vreg_disable(sensor_vreg_array,ARRAY_SIZE(sensor_vreg_array)); #endif #if defined(CONFIG_MSM_SERIAL_DEBUGGER) msm_serial_debug_init(MSM_UART3_PHYS, INT_UART3, &msm_device_uart3.dev, 1); #endif /*delete*/ msm_acpu_clock_init(&msm7x2x_clock_data); msm_hsusb_pdata.swfi_latency = msm7x25_pm_data [MSM_PM_SLEEP_MODE_RAMP_DOWN_AND_WAIT_FOR_INTERRUPT].latency; if(machine_is_msm7x25_u8110()) { msm_device_hsusb_peripheral.dev.platform_data = &msm_hsusb_tmo_pdata; } else { msm_device_hsusb_peripheral.dev.platform_data = &msm_hsusb_pdata; } if(machine_is_msm7x25_u8110()) { mass_storage_device.dev.platform_data = &usb_mass_storage_tmo_pdata; } platform_add_devices(devices, ARRAY_SIZE(devices)); #ifdef CONFIG_MSM_CAMERA config_camera_off_gpios(); /* might not be necessary */ #endif msm_device_i2c_init(); i2c_register_board_info(0, i2c_devices, ARRAY_SIZE(i2c_devices)); #ifdef CONFIG_SURF_FFA_GPIO_KEYPAD if (machine_is_msm7x25_ffa() || machine_is_msm7x27_ffa()) platform_device_register(&keypad_device_7k_ffa); else platform_device_register(&keypad_device_surf); #endif #ifdef CONFIG_HUAWEI_GPIO_KEYPAD if (machine_is_msm7x25_c8600()) platform_device_register(&keypad_device_c8600); else if (machine_is_msm7x25_u8110()) //machine_is_msm7x25_u8100() platform_device_register(&keypad_device_u8100); else if (machine_is_msm7x25_u7610()) platform_device_register(&keypad_device_u7610); else platform_device_register(&keypad_device_c8600); //default use c6800 keypad #endif lcdc_gpio_init(); #ifdef CONFIG_HUAWEI_JOGBALL //config_jogball_gpios(); //init_jogball(); if (machine_is_msm7x25_c8600()) platform_device_register(&jogball_device); #endif msm_fb_add_devices(); msm7x2x_init_mmc(); bt_power_init(); msm_pm_set_platform_data(msm7x25_pm_data); #ifdef CONFIG_HUAWEI_MSM_VIBRATOR msm_init_pmic_vibrator(); #endif }
static void __init msm7x27_init(void) { if (socinfo_init() < 0) BUG(); #if defined(CONFIG_MSM_SERIAL_DEBUGGER) msm_serial_debug_init(MSM_UART3_PHYS, INT_UART3, &msm_device_uart3.dev, 1); #endif if (machine_is_msm7x27_ffa()) { smc91x_resources[0].start = 0x98000300; smc91x_resources[0].end = 0x980003ff; smc91x_resources[1].start = MSM_GPIO_TO_INT(85); smc91x_resources[1].end = MSM_GPIO_TO_INT(85); if (gpio_tlmm_config(GPIO_CFG(85, 0, GPIO_INPUT, GPIO_PULL_DOWN, GPIO_2MA), GPIO_ENABLE)) { printk(KERN_ERR "%s: Err: Config GPIO-85 INT\n", __func__); } msm7x27_clock_data.max_axi_khz = 160000; } if (cpu_is_msm7x27()) msm7x27_clock_data.max_axi_khz = 200000; msm_acpu_clock_init(&msm7x27_clock_data); /* This value has been set to 160000 for power savings. */ /* OEMs may modify the value at their discretion for performance */ /* The appropriate maximum replacement for 160000 is: */ /* clk_get_max_axi_khz() */ kgsl_pdata.max_axi_freq = 160000; msm_hsusb_pdata.swfi_latency = msm7x27_pm_data [MSM_PM_SLEEP_MODE_RAMP_DOWN_AND_WAIT_FOR_INTERRUPT].latency; msm_device_hsusb_peripheral.dev.platform_data = &msm_hsusb_pdata; msm_device_otg.dev.platform_data = &msm_otg_pdata; msm_device_gadget_peripheral.dev.platform_data = &msm_gadget_pdata; msm_device_hsusb_host.dev.platform_data = &msm_hsusb_pdata; platform_add_devices(devices, ARRAY_SIZE(devices)); #ifdef CONFIG_MSM_CAMERA config_camera_off_gpios(); /* might not be necessary */ #endif msm_device_i2c_init(); i2c_register_board_info(0, i2c_devices, ARRAY_SIZE(i2c_devices)); #ifdef CONFIG_SURF_FFA_GPIO_KEYPAD if (machine_is_msm7x27_ffa()) platform_device_register(&keypad_device_7k_ffa); else platform_device_register(&keypad_device_surf); #endif lcdc_gordon_gpio_init(); msm_fb_add_devices(); msm7x27_init_mmc(); bt_power_init(); if (cpu_is_msm7x27()) msm_pm_set_platform_data(msm7x27_pm_data); else msm_pm_set_platform_data(msm7x27_pm_data); }
static uint32_t msm_sdcc_setup_power(struct device *dv, unsigned int vdd) { int rc = 0; struct platform_device *pdev; static int first_setup = 1; pdev = container_of(dv, struct platform_device, dev); msm_sdcc_setup_gpio(pdev->id, !!vdd); if (vdd == 0) { if (!vreg_sts) return 0; clear_bit(pdev->id, &vreg_sts); if (!vreg_sts) { if (machine_is_msm7x25_ffa() || machine_is_msm7x27_ffa()) { rc = mpp_config_digital_out(mpp_mmc, MPP_CFG(MPP_DLOGIC_LVL_MSMP, MPP_DLOGIC_OUT_CTRL_LOW)); } else rc = vreg_disable(vreg_mmc); if (rc) printk(KERN_ERR "%s: return val: %d \n", __func__, rc); } return 0; } if (!vreg_sts) { if (machine_is_msm7x25_ffa() || machine_is_msm7x27_ffa()) { rc = mpp_config_digital_out(mpp_mmc, MPP_CFG(MPP_DLOGIC_LVL_MSMP, MPP_DLOGIC_OUT_CTRL_HIGH)); } else { #ifdef CONFIG_MMC_MSM_CARD_HW_DETECTION rc = vreg_set_level(vreg_mmc, VREG_SD_LEVEL); #else rc = vreg_set_level(vreg_mmc, 2850); #endif if (!rc) rc = vreg_enable(vreg_mmc); } if (rc) printk(KERN_ERR "%s: return val: %d \n", __func__, rc); } set_bit(pdev->id, &vreg_sts); /* if first called related to sdcc1, irq should be registered as wakeup source * cleaneye.kim, 2010-02-19 */ #if 0 if (first_setup == 1) { struct mmc_platform_data *pdata = pdev->dev.platform_data; if (pdev->id == 1) { first_setup = 0; set_irq_wake(pdata->status_irq, 1); } } #endif return 0; }
static void sdcc_gpio_init(void) { /* SDC1 GPIOs */ #ifdef CONFIG_MMC_MSM_SDC1_SUPPORT if (gpio_request(51, "sdc1_data_3")) pr_err("failed to request gpio sdc1_data_3\n"); if (gpio_request(52, "sdc1_data_2")) pr_err("failed to request gpio sdc1_data_2\n"); if (gpio_request(53, "sdc1_data_1")) pr_err("failed to request gpio sdc1_data_1\n"); if (gpio_request(54, "sdc1_data_0")) pr_err("failed to request gpio sdc1_data_0\n"); if (gpio_request(55, "sdc1_cmd")) pr_err("failed to request gpio sdc1_cmd\n"); if (gpio_request(56, "sdc1_clk")) pr_err("failed to request gpio sdc1_clk\n"); #endif if (machine_is_msm7x27_ffa() || machine_is_msm7x27_ffa()) return; /* SDC2 GPIOs */ #ifdef CONFIG_MMC_MSM_SDC2_SUPPORT if (gpio_request(62, "sdc2_clk")) pr_err("failed to request gpio sdc2_clk\n"); if (gpio_request(63, "sdc2_cmd")) pr_err("failed to request gpio sdc2_cmd\n"); if (gpio_request(64, "sdc2_data_3")) pr_err("failed to request gpio sdc2_data_3\n"); if (gpio_request(65, "sdc2_data_2")) pr_err("failed to request gpio sdc2_data_2\n"); if (gpio_request(66, "sdc2_data_1")) pr_err("failed to request gpio sdc2_data_1\n"); if (gpio_request(67, "sdc2_data_0")) pr_err("failed to request gpio sdc2_data_0\n"); #endif /* SDC3 GPIOs */ #ifdef CONFIG_MMC_MSM_SDC3_SUPPORT if (gpio_request(88, "sdc3_clk")) pr_err("failed to request gpio sdc3_clk\n"); if (gpio_request(89, "sdc3_cmd")) pr_err("failed to request gpio sdc3_cmd\n"); if (gpio_request(90, "sdc3_data_3")) pr_err("failed to request gpio sdc3_data_3\n"); if (gpio_request(91, "sdc3_data_2")) pr_err("failed to request gpio sdc3_data_2\n"); if (gpio_request(92, "sdc3_data_1")) pr_err("failed to request gpio sdc3_data_1\n"); if (gpio_request(93, "sdc3_data_0")) pr_err("failed to request gpio sdc3_data_0\n"); #endif /* SDC4 GPIOs */ #ifdef CONFIG_MMC_MSM_SDC4_SUPPORT if (gpio_request(19, "sdc4_data_3")) pr_err("failed to request gpio sdc4_data_3\n"); if (gpio_request(20, "sdc4_data_2")) pr_err("failed to request gpio sdc4_data_2\n"); if (gpio_request(21, "sdc4_data_1")) pr_err("failed to request gpio sdc4_data_1\n"); if (gpio_request(107, "sdc4_cmd")) pr_err("failed to request gpio sdc4_cmd\n"); if (gpio_request(108, "sdc4_data_0")) pr_err("failed to request gpio sdc4_data_0\n"); if (gpio_request(109, "sdc4_clk")) pr_err("failed to request gpio sdc4_clk\n"); #endif }
static void __init msm7x2x_init_mmc(void) { if (!machine_is_msm7x25_ffa() && !machine_is_msm7x27_ffa()) { #ifdef CONFIG_MACH_MSM7X27_ELINI vreg_mmc = vreg_get(NULL, "mmc"); #else vreg_mmc = vreg_get(NULL, "gp6"); #endif if (IS_ERR(vreg_mmc)) { printk(KERN_ERR "%s: vreg get failed (%ld)\n", __func__, PTR_ERR(vreg_mmc)); return; } } sdcc_gpio_init(); #ifdef CONFIG_MMC_MSM_SDC1_SUPPORT msm_add_sdcc(1, &msm7x2x_sdcc_data); #endif #ifdef CONFIG_MMC_MSM_SDC2_SUPPORT /* LGE_CHANGE_S [[email protected]] 2010-04-24, BCM4325 control */ #if defined(CONFIG_LGE_BCM432X_PATCH) /* GPIO config */ gpio_tlmm_config(GPIO_CFG(CONFIG_BCM4325_GPIO_WL_REGON, 0, GPIO_OUTPUT, GPIO_PULL_UP, GPIO_2MA), GPIO_ENABLE); gpio_configure(CONFIG_BCM4325_GPIO_WL_REGON, GPIOF_DRIVE_OUTPUT); // LGE_UPDATE_S dk.moon 2010-06-23 workaround solution about power consumption problem (BCM4325) //gpio_set_value(CONFIG_BCM4325_GPIO_WL_REGON, 0); gpio_set_value(CONFIG_BCM4325_GPIO_WL_REGON, 1); // LGE_UPDATE_E dk.moon 2010-06-23 gpio_tlmm_config(GPIO_CFG(CONFIG_BCM4325_GPIO_WL_RESET, 0, GPIO_OUTPUT, GPIO_PULL_UP, GPIO_2MA), GPIO_ENABLE); gpio_configure(CONFIG_BCM4325_GPIO_WL_RESET, GPIOF_DRIVE_OUTPUT); gpio_set_value(CONFIG_BCM4325_GPIO_WL_RESET, 0); mdelay(100); // LGE_UPDATE_S dk.moon 2010-06-23 workaround solution about power consumption problem (BCM4325) gpio_set_value(CONFIG_BCM4325_GPIO_WL_REGON, 0); // LGE_UPDATE_E dk.moon 2010-06-23 gpio_tlmm_config(GPIO_CFG(CONFIG_BCM4325_GPIO_WL_HOSTWAKEUP, 0, GPIO_OUTPUT, GPIO_PULL_UP, GPIO_2MA), GPIO_ENABLE); gpio_configure(CONFIG_BCM4325_GPIO_WL_HOSTWAKEUP, GPIOF_INPUT); /* Register platform device */ msm_add_sdcc(2, &bcm432x_sdcc_wlan_data); /* Enable RESET IRQ for wlan card detect */ enable_irq(gpio_to_irq(CONFIG_BCM4325_GPIO_WL_RESET)); #else /* qualcomm or google */ msm_add_sdcc(2, &msm7x2x_sdcc_data); #endif /* CONFIG_LGE_BCM432X_PATCH */ /* LGE_CHANGE_E [[email protected]] 2010-04-24, BCM4325 control */ #endif #ifdef CONFIG_MMC_MSM_SDC3_SUPPORT msm_add_sdcc(3, &msm7x2x_sdcc_data); #endif #ifdef CONFIG_MMC_MSM_SDC4_SUPPORT msm_add_sdcc(4, &msm7x2x_sdcc_data); #endif }