void __init msm8960_init_fb(void) { uint32_t soc_platform_version = socinfo_get_version(); if (SOCINFO_VERSION_MAJOR(soc_platform_version) >= 3) mdp_pdata.mdp_rev = MDP_REV_43; if (cpu_is_msm8960ab()) mdp_pdata.mdp_rev = MDP_REV_44; sony_viskan_add_lcd_device(); #ifdef CONFIG_FB_MSM_HDMI_MSM_PANEL platform_device_register(&hdmi_msm_device); #endif platform_device_register(&msm_fb_device); #ifdef CONFIG_FB_MSM_WRITEBACK_MSM_PANEL platform_device_register(&wfd_device); #endif msm_fb_register_device("mdp", &mdp_pdata); #ifdef CONFIG_FB_MSM_MIPI_DSI_VENDOR_DET if (sony_viskan_is_dric_det() == LCD_VENDOR_SAMSUNG) mipi_dsi_pdata.dsi_power_save = s6d6aa0_lcd_power; else mipi_dsi_pdata.dsi_power_save = r63306_lcd_power; #endif /* CONFIG_FB_MSM_MIPI_DSI_VENDOR_DET */ msm_fb_register_device("mipi_dsi", &mipi_dsi_pdata); #ifdef CONFIG_MSM_BUS_SCALING msm_fb_register_device("dtv", &dtv_pdata); #endif }
void __init sony_viskan_add_lcd_device(void) { int rc; struct lcd_panel_platform_data *pdata; pdata = kmalloc(sizeof(struct lcd_panel_platform_data), GFP_KERNEL); pdata->default_panels = default_panel_ids; pdata->panels = panel_ids; pdata->lcd_power = lcd_power; pdata->lcd_reset = lcd_reset; #ifdef CONFIG_FB_MSM_MIPI_DSI_VENDOR_DET if (sony_viskan_is_dric_det() == LCD_VENDOR_SAMSUNG) { sony_viskan_lcd_device.name = MIPI_DSI_SAMSUNG_NAME; pdata->default_panels = default_panel_ids_s6d6aa0; pdata->panels = panel_ids_s6d6aa0; } else { sony_viskan_lcd_device.name = MIPI_DSI_RENESAS_NAME; pdata->default_panels = default_panel_ids_r63306; pdata->panels = panel_ids_r63306; } #endif /* CONFIG_FB_MSM_MIPI_DSI_VENDOR_DET */ sony_viskan_lcd_device.dev.platform_data = pdata; rc = platform_device_register(&sony_viskan_lcd_device); if (rc) dev_err(&sony_viskan_lcd_device.dev, "%s: platform_device_register() failed = %d\n", __func__, rc); }
void __init mipi_dsi_panel_add_device(void) { int rc; struct panel_platform_data *pdata; pdata = kmalloc(sizeof(struct panel_platform_data), GFP_KERNEL); #ifndef CONFIG_FB_MSM_MIPI_DSI_VENDOR_DET #ifdef CONFIG_FB_MSM_MIPI_DSI_RENESAS_R63306 default_panel_ids = default_panel_ids_r63306; panel_ids = panel_ids_r63306; mipi_dsi_pdata.dsi_power_save = r63306_lcd_power; pdata->vreg_power = r63306_vreg_power; pdata->ic_vendor = NVRW_DRV_RENESAS; #endif /*CONFIG_FB_MSM_MIPI_DSI_RENESAS_R63306*/ #ifdef CONFIG_FB_MSM_MIPI_DSI_SAMSUNG_S6D6AA0 default_panel_ids = default_panel_ids_s6d6aa0; panel_ids = panel_ids_s6d6aa0; mipi_dsi_pdata.dsi_power_save = s6d6aa0_lcd_power; pdata->vreg_power = s6d6aa0_vreg_power; pdata->ic_vendor = NVRW_DRV_SAMSUNG; #endif /*CONFIG_FB_MSM_MIPI_DSI_SAMSUNG_S6D6AA0*/ #ifdef CONFIG_FB_MSM_MIPI_DSI_NOVATEK_NT35565 default_panel_ids = default_panel_ids_nt35565; panel_ids = panel_ids_nt35565; mipi_dsi_pdata.dsi_power_save = nt35565_lcd_power; #endif /*CONFIG_FB_MSM_MIPI_DSI_NOVATEK_NT35565*/ #else /*CONFIG_FB_MSM_MIPI_DSI_VENDOR_DET*/ if (sony_viskan_is_dric_det() == LCD_VENDOR_SAMSUNG) { #ifdef CONFIG_FB_MSM_MIPI_DSI_SAMSUNG_S6D6AA0 default_panel_ids = default_panel_ids_s6d6aa0; panel_ids = panel_ids_s6d6aa0; mipi_dsi_pdata.dsi_power_save = s6d6aa0_lcd_power; pdata->vreg_power = s6d6aa0_vreg_power; pdata->ic_vendor = NVRW_DRV_SAMSUNG; #endif } else { #ifdef CONFIG_FB_MSM_MIPI_DSI_RENESAS_R63306 default_panel_ids = default_panel_ids_r63306; panel_ids = panel_ids_r63306; mipi_dsi_pdata.dsi_power_save = r63306_lcd_power; pdata->vreg_power = r63306_vreg_power; pdata->ic_vendor = NVRW_DRV_RENESAS; #endif } #endif /* CONFIG_FB_MSM_MIPI_DSI_VENDOR_DET */ pdata->default_panels = default_panel_ids; pdata->panels = panel_ids; pdata->platform_power = lcd_power; pdata->platform_reset = lcd_reset; mipi_dsi_panel_device.dev.platform_data = pdata; rc = platform_device_register(&mipi_dsi_panel_device); if (rc) dev_err(&mipi_dsi_panel_device.dev, "%s: platform_device_register() failed = %d\n", __func__, rc); }