From cf547175ce5a9998c86aee00c0d6009f3c774898 Mon Sep 17 00:00:00 2001 From: "Hitesh K. Patel" Date: Tue, 15 May 2012 16:18:54 -0700 Subject: [PATCH] GFX-Display: Disable HDMI with Config option BZ: 36600 Enzo BZ: 984 When using CONFIG_MDF_HDMI flag not all the HDMI components were being disabled. This patch should fix the issue. Change-Id: I76ce864d86d8c5c48b1da5f68950b5b4b15d289a Signed-off-by: Hitesh K. Patel Reviewed-on: http://android.intel.com:8080/48870 Reviewed-by: Hu, Austin Reviewed-by: Ai, Ke Reviewed-by: Xu, Randy Reviewed-by: Zhang, Lei Reviewed-by: Geng, Xiujun Reviewed-by: Xue, YifeiX Tested-by: Tong, BoX Reviewed-by: buildbot Tested-by: buildbot --- drivers/staging/mrst/drv/mdfld_output.c | 2 ++ drivers/staging/mrst/drv/psb_drv.c | 47 ++++++++++++++++++++++--------- drivers/staging/mrst/drv/psb_drv.h | 1 + drivers/staging/mrst/drv/psb_intel_hdmi.c | 2 -- drivers/staging/mrst/medfield/Makefile | 16 ++++++----- 5 files changed, 46 insertions(+), 22 deletions(-) diff --git a/drivers/staging/mrst/drv/mdfld_output.c b/drivers/staging/mrst/drv/mdfld_output.c index 62c21a9..30c4730 100644 --- a/drivers/staging/mrst/drv/mdfld_output.c +++ b/drivers/staging/mrst/drv/mdfld_output.c @@ -220,6 +220,7 @@ void init_panel(struct drm_device* dev, int mipi_pipe, enum panel_type p_type) p_vid_funcs = NULL; p_cmd_funcs = NULL; break; +#ifdef CONFIG_MDFD_HDMI case HDMI: kfree(p_vid_funcs); kfree(p_cmd_funcs); @@ -230,6 +231,7 @@ void init_panel(struct drm_device* dev, int mipi_pipe, enum panel_type p_type) mdfld_hdmi_init(dev, &dev_priv->mode_dev); /*hdmi_output_init(dev);*/ break; +#endif default: kfree(p_vid_funcs); kfree(p_cmd_funcs); diff --git a/drivers/staging/mrst/drv/psb_drv.c b/drivers/staging/mrst/drv/psb_drv.c index 751efcc..e574ccd 100644 --- a/drivers/staging/mrst/drv/psb_drv.c +++ b/drivers/staging/mrst/drv/psb_drv.c @@ -66,7 +66,9 @@ #include "bufferclass_video_linux.h" +#ifdef CONFIG_MDFD_HDMI #include "mdfld_hdcp.h" +#endif #include "mdfld_csc.h" int drm_psb_debug; @@ -98,7 +100,7 @@ int drm_psb_te_timer_delay = (DRM_HZ / 40); static int PanelID = GCT_DETECT; char HDMI_EDID[HDMI_MONITOR_NAME_LENGTH]; int hdmi_state; -extern u32 DISP_PLANEB_STATUS; +u32 DISP_PLANEB_STATUS = ~DISPLAY_PLANE_ENABLE; static int psb_probe(struct pci_dev *pdev, const struct pci_device_id *ent); @@ -468,6 +470,7 @@ static int psb_dpu_dsr_off_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv); static int psb_disp_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv); +#ifdef CONFIG_MDFD_HDMI static int psb_query_hdcp_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv); static int psb_validate_hdcp_ksv_ioctl(struct drm_device *dev, void *data, @@ -478,10 +481,11 @@ static int psb_enable_hdcp_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv); static int psb_disable_hdcp_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv); -static int psb_set_csc_ioctl(struct drm_device *dev, void *data, - struct drm_file *file_priv); static int psb_get_hdcp_link_status_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv); +#endif +static int psb_set_csc_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); static int psb_csc_gamma_setting_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv); @@ -581,15 +585,19 @@ static struct drm_ioctl_desc psb_ioctls[] = { DRM_AUTH), PSB_IOCTL_DEF(DRM_IOCRL_PSB_DPU_DSR_OFF, psb_dpu_dsr_off_ioctl, DRM_AUTH), +#ifdef CONFIG_MDFD_HDMI PSB_IOCTL_DEF(DRM_IOCTL_PSB_HDMI_FB_CMD, psb_disp_ioctl, 0), PSB_IOCTL_DEF(DRM_IOCTL_PSB_QUERY_HDCP, psb_query_hdcp_ioctl, DRM_AUTH), PSB_IOCTL_DEF(DRM_IOCTL_PSB_VALIDATE_HDCP_KSV, psb_validate_hdcp_ksv_ioctl, DRM_AUTH), PSB_IOCTL_DEF(DRM_IOCTL_PSB_GET_HDCP_STATUS, psb_get_hdcp_status_ioctl, DRM_AUTH), PSB_IOCTL_DEF(DRM_IOCTL_PSB_ENABLE_HDCP, psb_enable_hdcp_ioctl, DRM_AUTH), PSB_IOCTL_DEF(DRM_IOCTL_PSB_DISABLE_HDCP, psb_disable_hdcp_ioctl, DRM_AUTH), +#endif PSB_IOCTL_DEF(DRM_IOCTL_PSB_CSC_GAMMA_SETTING, psb_csc_gamma_setting_ioctl, DRM_AUTH), PSB_IOCTL_DEF(DRM_IOCTL_PSB_SET_CSC, psb_set_csc_ioctl, DRM_AUTH), +#ifdef CONFIG_MDFD_HDMI PSB_IOCTL_DEF(DRM_IOCTL_PSB_GET_HDCP_LINK_STATUS, psb_get_hdcp_link_status_ioctl, DRM_AUTH) +#endif }; static void get_ci_info(struct drm_psb_private *dev_priv) @@ -1691,18 +1699,28 @@ static int psb_driver_load(struct drm_device *dev, unsigned long chipset) if (IS_CTP(dev)) { dev_priv->num_pipe = 2; } else if (IS_MDFLD(dev)) { - dev_priv->num_pipe = 3; + dev_priv->num_pipe = 1; +#ifdef CONFIG_MDFD_DUAL_MIPI + dev_priv->num_pipe++; +#endif +#ifdef CONFIG_MDFD_HDMI + dev_priv->num_pipe++; +#endif } else if (IS_MRST(dev)) dev_priv->num_pipe = 1; else dev_priv->num_pipe = 2; +#ifdef CONFIG_MDFD_HDMI atomic_set(&dev_priv->hotplug_wq_done, 1); +#endif /*init DPST umcomm to NULL*/ dev_priv->psb_dpst_state = NULL; +#ifdef CONFIG_MDFD_HDMI dev_priv->psb_hotplug_state = NULL; dev_priv->hdmi_done_reading_edid = false; +#endif dev_priv->um_start = false; dev_priv->b_vblank_enable = false; @@ -2021,6 +2039,7 @@ static int psb_driver_load(struct drm_device *dev, unsigned long chipset) if (ret) return ret; +#ifdef CONFIG_MDFD_HDMI /* initialize HDMI Hotplug interrupt forwarding * notifications for user mode */ @@ -2036,6 +2055,7 @@ static int psb_driver_load(struct drm_device *dev, unsigned long chipset) dev_priv->psb_hotplug_state = psb_hotplug_init(kobj); } +#endif /* Post OSPM init */ if (IS_MDFLD(dev)) @@ -2361,7 +2381,7 @@ exit: return ret; } - +#ifdef CONFIG_MDFD_HDMI static int psb_query_hdcp_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv) { @@ -2436,14 +2456,6 @@ static int psb_disable_hdcp_ioctl(struct drm_device *dev, void *data, return ret; } -static int psb_set_csc_ioctl(struct drm_device *dev, void *data, - struct drm_file *file_priv) -{ - struct drm_psb_csc_matrix *csc_matrix = data; - csc_program_DC(dev, csc_matrix->matrix, csc_matrix->pipe); - return 0; -} - static int psb_get_hdcp_link_status_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv) { @@ -2452,6 +2464,15 @@ static int psb_get_hdcp_link_status_ioctl(struct drm_device *dev, void *data, return 0; } +#endif + +static int psb_set_csc_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + struct drm_psb_csc_matrix *csc_matrix = data; + csc_program_DC(dev, csc_matrix->matrix, csc_matrix->pipe); + return 0; +} static int psb_dc_state_ioctl(struct drm_device *dev, void * data, struct drm_file *file_priv) diff --git a/drivers/staging/mrst/drv/psb_drv.h b/drivers/staging/mrst/drv/psb_drv.h index 8031aa6..44268b8 100644 --- a/drivers/staging/mrst/drv/psb_drv.h +++ b/drivers/staging/mrst/drv/psb_drv.h @@ -58,6 +58,7 @@ extern int drm_psb_enable_gamma; extern int drm_psb_adjust_contrast; extern int drm_psb_adjust_brightness; extern int drm_psb_enable_color_conversion; +extern u32 DISP_PLANEB_STATUS; extern struct ttm_bo_driver psb_ttm_bo_driver; diff --git a/drivers/staging/mrst/drv/psb_intel_hdmi.c b/drivers/staging/mrst/drv/psb_intel_hdmi.c index 0e888a4..e4f156d 100644 --- a/drivers/staging/mrst/drv/psb_intel_hdmi.c +++ b/drivers/staging/mrst/drv/psb_intel_hdmi.c @@ -46,8 +46,6 @@ #include #endif -u32 DISP_PLANEB_STATUS = ~DISPLAY_PLANE_ENABLE; - /* FIXME_MDFLD HDMI EDID supports */ char EDID_Samsung[EDID_LENGTH + HDMI_CEA_EDID_BLOCK_SIZE] = { diff --git a/drivers/staging/mrst/medfield/Makefile b/drivers/staging/mrst/medfield/Makefile index 3dd3738..f14151e 100644 --- a/drivers/staging/mrst/medfield/Makefile +++ b/drivers/staging/mrst/medfield/Makefile @@ -169,7 +169,6 @@ gfx-y += $(DRMDRVDIR)/psb_bl.o \ $(DRMDRVDIR)/psb_drv.o \ $(DRMDRVDIR)/psb_fb.o \ $(DRMDRVDIR)/psb_gtt.o \ - $(DRMDRVDIR)/psb_hotplug.o \ $(DRMDRVDIR)/psb_intel_bios.o \ $(DRMDRVDIR)/psb_intel_opregion.o \ $(DRMDRVDIR)/psb_intel_display.o \ @@ -177,13 +176,7 @@ gfx-y += $(DRMDRVDIR)/psb_bl.o \ $(DRMDRVDIR)/psb_intel_lvds.o \ $(DRMDRVDIR)/psb_intel_modes.o \ $(DRMDRVDIR)/psb_intel_sdvo.o \ - $(DRMDRVDIR)/mdfld_hdmi_audio.o \ - $(DRMDRVDIR)/mdfld_msic.o \ - $(DRMDRVDIR)/mdfld_ti_tpd.o \ $(DRMDRVDIR)/mdfld_csc.o \ - $(DRMDRVDIR)/mdfld_intel_hdcp.o \ - $(DRMDRVDIR)/psb_intel_hdmi.o \ - $(DRMDRVDIR)/psb_intel_hdmi_i2c.o \ $(DRMDRVDIR)/psb_reset.o \ $(DRMDRVDIR)/psb_schedule.o \ $(DRMDRVDIR)/psb_sgx.o \ @@ -211,6 +204,15 @@ gfx-y += $(DRMDRVDIR)/psb_bl.o \ $(DRMDRVDIR)/psb_powermgmt.o \ $(DRMDRVDIR)/psb_irq.o +gfx-$(CONFIG_MDFD_HDMI) += $(DRMDRVDIR)/mdfld_msic.o \ + $(DRMDRVDIR)/psb_hotplug.o \ + $(DRMDRVDIR)/mdfld_intel_hdcp.o \ + $(DRMDRVDIR)/mdfld_ti_tpd.o \ + $(DRMDRVDIR)/psb_intel_hdmi.o \ + $(DRMDRVDIR)/psb_intel_hdmi_i2c.o + +gfx-$(CONFIG_SND_INTELMID_HDMI_AUDIO) += $(DRMDRVDIR)/mdfld_hdmi_audio.o + gfx-y += $(IMGVDIR)/psb_ttm_glue.o gfx-$(CONFIG_MDFD_VIDEO_DECODE) += $(IMGVDIR)/lnc_topaz.o \ -- 2.7.4