int vision_init_panel(void) { int ret = 0; printk(KERN_ERR "%s: Sony=%d Samsung=%d Other=%d\n", __func__, is_sony_panel(), panel_type == SAMSUNG_PANEL, panel_type != SAMSUNG_PANEL && !is_sony_panel()); ret = panel_init_power(); if (ret) return ret; msm_fb_add_devices( vision_fb_devices, ARRAY_SIZE(vision_fb_devices)); if (is_sony_panel()) { ret = platform_device_register(&lcdc_sonywvga_panel_device); printk(KERN_ERR "%s: registered sony panel: %d\n", __func__, ret); } else if (panel_type == SAMSUNG_PANEL) { ret = platform_device_register(&lcdc_tl2796a_panel_device); printk(KERN_ERR "%s: registered tl2796a panel: %d\n", __func__, ret); } else { ret = platform_device_register(&lcdc_s6e63m0_panel_device); printk(KERN_ERR "%s: registered s6e63m0 panel: %d\n", __func__, ret); } return ret; }
int device_fb_detect_panel(const char *name) { if (!strcmp(name, "lcdc_s6d16a0x21_wvga") && is_sony_panel()) return 0; if (!strcmp(name, "lcdc_tl2796a_wvga") && (panel_type == SAMSUNG_PANEL)) return 0; if (!strcmp(name, "lcdc_s6e63m0_wvga") && (panel_type == SAMSUNG_PANELII)) return 0; return -ENODEV; }
int vision_init_panel(void) { int ret = 0; printk(KERN_ERR "%s: Sony=%d Samsung=%d Other=%d\n", __func__, is_sony_panel(), panel_type == SAMSUNG_PANEL, panel_type != SAMSUNG_PANEL && !is_sony_panel()); vreg_ldo12 = vreg_get(NULL, "gp9"); if (IS_ERR(vreg_ldo12)) { pr_err("%s: gp9 vreg get failed (%ld)\n", __func__, PTR_ERR(vreg_ldo12)); return -1; } ret = vreg_set_level(vreg_ldo12, 2850); if (ret) { pr_err("%s: vreg LDO12(gp9) set level failed (%d)\n", __func__, ret); return -1; } vreg_ldo19 = vreg_get(NULL, "wlan2"); if (IS_ERR(vreg_ldo19)) { pr_err("%s: wlan2 vreg get failed (%ld)\n", __func__, PTR_ERR(vreg_ldo19)); return -1; } vreg_ldo20 = vreg_get(NULL, "gp13"); if (IS_ERR(vreg_ldo20)) { pr_err("%s: gp13 vreg get failed (%ld)\n", __func__, PTR_ERR(vreg_ldo20)); return -1; } ret = vreg_set_level(vreg_ldo19, 1800); if (ret) { pr_err("%s: vreg LDO19 set level failed (%d)\n", __func__, ret); return -1; } /* resources_msm_fb[0].start = msm_fb_base; resources_msm_fb[0].end = msm_fb_base + MSM_FB_SIZE - 1; */ if(is_samsung_panel()) ret = vreg_set_level(vreg_ldo20, 2850); else ret = vreg_set_level(vreg_ldo20, 2600); if (ret) { pr_err("%s: vreg LDO20 set level failed (%d)\n", __func__, ret); return -1; } if (is_sony_panel()) { ret = platform_device_register(&sonywvga_panel); printk(KERN_ERR "%s: registered sony panel: %d\n", __func__, ret); } else if (panel_type == SAMSUNG_PANEL) { ret = platform_device_register(&amoled_panel[0]); printk(KERN_ERR "%s: registered amoled panel[0]: %d\n", __func__, ret); } else { ret = platform_device_register(&amoled_panel[1]); printk(KERN_ERR "%s: registered amoled panel[1]: %d\n", __func__, ret); } return ret; }