static void __init halibut_init(void) { if (socinfo_init() < 0) BUG(); if (machine_is_msm7201a_ffa()) { smc91x_resources[0].start = 0x98000300; smc91x_resources[0].end = 0x98000400; smc91x_resources[1].start = MSM_GPIO_TO_INT(85); smc91x_resources[1].end = MSM_GPIO_TO_INT(85); } /* All 7x01 2.0 based boards are expected to have RAM chips capable * of 160 MHz. */ if (cpu_is_msm7x01() && SOCINFO_VERSION_MAJOR(socinfo_get_version()) == 2) halibut_clock_data.max_axi_khz = 160000; #if defined(CONFIG_MSM_SERIAL_DEBUGGER) msm_serial_debug_init(MSM_UART3_PHYS, INT_UART3, &msm_device_uart3.dev, 1); #endif msm_hsusb_pdata.soc_version = socinfo_get_version(); msm_acpu_clock_init(&halibut_clock_data); msm_device_hsusb_peripheral.dev.platform_data = &msm_hsusb_pdata, msm_device_hsusb_host.dev.platform_data = &msm_hsusb_pdata, platform_add_devices(devices, ARRAY_SIZE(devices)); msm_camera_add_device(); msm_device_i2c_init(); i2c_register_board_info(0, i2c_devices, ARRAY_SIZE(i2c_devices)); #ifdef CONFIG_SURF_FFA_GPIO_KEYPAD if (machine_is_msm7201a_ffa()) platform_device_register(&keypad_device_7k_ffa); else platform_device_register(&keypad_device_surf); #endif halibut_init_mmc(); #ifdef CONFIG_USB_FUNCTION hsusb_gpio_init(); #endif msm_fb_add_devices(); bt_power_init(); #ifdef CONFIG_USB_ANDROID msm_hsusb_rpc_connect(); msm_hsusb_set_vbus_state(1) ; #endif msm_pm_set_platform_data(msm_pm_data); }
static int mddi_sharp_backlight_level(int level) { if (machine_is_msm7201a_ffa()) return level; else return -1; }
static void __init halibut_init_mmc(void) { if (machine_is_msm7201a_ffa()) { mpp_mmc = mpp_get(NULL, "mpp3"); if (!mpp_mmc) { printk(KERN_ERR "%s: mpp get failed (%ld)\n", __func__, PTR_ERR(vreg_mmc)); return; } } else { vreg_mmc = vreg_get(NULL, "mmc"); 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, &halibut_sdcc_data); #endif if (machine_is_msm7201a_surf()) { #ifdef CONFIG_MMC_MSM_SDC2_SUPPORT msm_add_sdcc(2, &halibut_sdcc_data); #endif #ifdef CONFIG_MMC_MSM_SDC4_SUPPORT msm_add_sdcc(4, &halibut_sdcc_data); #endif } }
static int mddi_on(struct platform_device *pdev) { int ret = 0; u32 clk_rate; struct msm_fb_data_type *mfd; mfd = platform_get_drvdata(pdev); if (machine_is_msm7201a_ffa()) gpio_direction_output(88, 1); clk_rate = mfd->fbi->var.pixclock; clk_rate = min(clk_rate, mfd->panel_info.clk_max); if (mddi_pdata && mddi_pdata->mddi_sel_clk && mddi_pdata->mddi_sel_clk(&clk_rate)) printk(KERN_ERR "%s: can't select mddi io clk targate rate = %d\n", __func__, clk_rate); if (clk_set_min_rate(mddi_clk, clk_rate) < 0) printk(KERN_ERR "%s: clk_set_min_rate failed\n", __func__); ret = panel_next_on(pdev); return ret; }
static uint32_t msm_sdcc_setup_power(struct device *dv, unsigned int vdd) { int rc = 0; struct platform_device *pdev; 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_msm7201a_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_msm7201a_ffa()) rc = mpp_config_digital_out(mpp_mmc, MPP_CFG(MPP_DLOGIC_LVL_MSMP, MPP_DLOGIC_OUT_CTRL_HIGH)); else { rc = vreg_set_level(vreg_mmc, 2850); 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); return 0; }
static int mddi_off(struct platform_device *pdev) { int ret = 0; ret = panel_next_off(pdev); if (machine_is_msm7201a_ffa()) gpio_direction_output(88, 0); return ret; }
static int mddi_toshiba_backlight_level(int level) { int out_val; if (machine_is_msm7201a_ffa()) { switch (level) { case 0: out_val = 0x00001387; break; case 1: out_val = 3500; break; case 2: out_val = 3200; break; case 3: out_val = 2700; break; case 4: out_val = 2200; break; default: out_val = 0x0000; break; } } else { switch (level) { case 0: out_val = 0x0000; break; case 1: out_val = 1250; break; case 2: out_val = 2500; break; case 3: out_val = 3750; break; case 4: out_val = 4999; break; default: out_val = 0x00001387; break; } } return out_val; }
static void sdcc_gpio_init(void) { #ifdef CONFIG_MMC_MSM_CARD_HW_DETECTION int rc = 0; if (gpio_request(49, "sdc1_status_irq")) pr_err("failed to request gpio sdc1_status_irq\n"); rc = gpio_tlmm_config(GPIO_CFG(49, 0, GPIO_INPUT, GPIO_PULL_UP, GPIO_2MA), GPIO_ENABLE); if (rc) printk(KERN_ERR "%s: Failed to configure GPIO %d\n", __func__, rc); #endif /* 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_msm7201a_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 /* 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 }