From: Hitesh K. Patel <[email protected]> Enable reading for command line as well as reading the GCT if no command line option is present.
Signed-off-by: Scott Rowe <[email protected]> Signed-off-by: Hitesh K. Patel <[email protected]> --- drivers/staging/mrst/drv/mdfld_output.c | 51 +++---------------------------- drivers/staging/mrst/drv/mdfld_output.h | 14 -------- drivers/staging/mrst/drv/psb_drv.c | 51 +++++++++++++++++++++++++++++++ drivers/staging/mrst/drv/psb_drv.h | 14 ++++++++ 4 files changed, 70 insertions(+), 60 deletions(-) diff --git a/drivers/staging/mrst/drv/mdfld_output.c b/drivers/staging/mrst/drv/mdfld_output.c index 76544cf..c107446 100644 --- a/drivers/staging/mrst/drv/mdfld_output.c +++ b/drivers/staging/mrst/drv/mdfld_output.c @@ -39,62 +39,21 @@ #include "displays/pyr_vid.h" #include "displays/hdmi.h" -static int PanelID = GCT_DETECT; - -#ifdef MODULE -module_param (PanelID, int, 0644); -#else -static __init int parse_panelid(char *arg) -{ - /* panel ID can be passed in as a cmdline parameter */ - /* to enable this feature add panelid=TMD to cmdline for TMD panel*/ - if (!arg) - return -EINVAL; - - if (!strcasecmp(arg, "TMD_CMD")) - PanelID = TMD_CMD; - else if (!strcasecmp (arg, "TPO_CMD")) - PanelID = TPO_CMD; - else if (!strcasecmp (arg, "PYR_CMD")) - PanelID = PYR_CMD; - else if (!strcasecmp (arg, "TMD_VID")) - PanelID = TMD_VID; - else if (!strcasecmp (arg, "TPO_VID")) - PanelID = TPO_VID; - else if (!strcasecmp (arg, "PYR_VID")) - PanelID = PYR_VID; - else - PanelID = GCT_DETECT; - - return 0; -} -early_param("panelid", parse_panelid); -#endif - enum panel_type get_panel_type(struct drm_device *dev, int pipe) { struct drm_psb_private *dev_priv = (struct drm_psb_private *) dev->dev_private; - if (PanelID == GCT_DETECT) { - if (dev_priv->gct_data.bpi == 2) { - printk (KERN_ALERT "[GFX] PYR Panel Detected\n"); - return PYR_CMD; - } - else { - printk (KERN_ALERT "[GFX]TPO Panel Selected as Default\n"); - return TPO_CMD; - } - } else { - printk (KERN_ALERT "[GFX] Panel Parameter = %d, Passed in through Commandline\n", PanelID); - return PanelID; - } + return dev_priv->panel_id; } int is_panel_vid_or_cmd(struct drm_device *dev) { + struct drm_psb_private *dev_priv = + (struct drm_psb_private *) dev->dev_private; + int ret = 0; - switch(PanelID) { + switch(dev_priv->panel_id) { case TMD_VID: case TPO_VID: case PYR_VID: diff --git a/drivers/staging/mrst/drv/mdfld_output.h b/drivers/staging/mrst/drv/mdfld_output.h index ada5bb8..448dec3 100644 --- a/drivers/staging/mrst/drv/mdfld_output.h +++ b/drivers/staging/mrst/drv/mdfld_output.h @@ -37,20 +37,6 @@ #include "psb_drv.h" -enum panel_type { - TPO_CMD, - TPO_VID, - TMD_CMD, - TMD_VID, - PYR_CMD, - PYR_VID, - TPO, - TMD, - PYR, - HDMI, - GCT_DETECT -}; - struct panel_funcs { const struct drm_encoder_funcs* encoder_funcs; const struct drm_encoder_helper_funcs* encoder_helper_funcs; diff --git a/drivers/staging/mrst/drv/psb_drv.c b/drivers/staging/mrst/drv/psb_drv.c index ca0eff6..c05dd17 100644 --- a/drivers/staging/mrst/drv/psb_drv.c +++ b/drivers/staging/mrst/drv/psb_drv.c @@ -68,6 +68,7 @@ int drm_topaz_pmpolicy = PSB_PMPOLICY_POWERDOWN; int drm_topaz_sbuswa; int drm_psb_ospm = 1; int drm_psb_topaz_clockgating = 0; +static int PanelID = GCT_DETECT; static int psb_probe(struct pci_dev *pdev, const struct pci_device_id *ent); @@ -930,6 +931,26 @@ bool mrst_get_vbt_data(struct drm_psb_private *dev_priv) return false; } + if (IS_MDFLD(dev_priv->dev)){ + if (PanelID == GCT_DETECT) { + if (dev_priv->gct_data.bpi == 2) { + PSB_DEBUG_ENTRY("[GFX] PYR Panel Detected\n"); + dev_priv->panel_id = PYR_CMD; + } + else if(dev_priv->gct_data.bpi == 0) { + PSB_DEBUG_ENTRY("[GFX] TMD Panel Detected.\n"); + dev_priv->panel_id = TMD_VID; + } + else { + PSB_DEBUG_ENTRY("[GFX] Default Panel (TPO)\n"); + dev_priv->panel_id = TPO_CMD; + } + } else { + PSB_DEBUG_ENTRY("[GFX] Panel Parameter Passed in through cmd line\n"); + dev_priv->panel_id = PanelID; + } + } + return true; } @@ -2778,6 +2799,36 @@ static int psb_probe(struct pci_dev *pdev, const struct pci_device_id *ent) return drm_get_dev(pdev, ent, &driver); } +#ifdef MODULE +module_param (PanelID, int, 0644); +#else +static __init int parse_panelid(char *arg) +{ + /* panel ID can be passed in as a cmdline parameter */ + /* to enable this feature add panelid=TMD to cmdline for TMD panel*/ + if (!arg) + return -EINVAL; + + if (!strcasecmp(arg, "TMD_CMD")) + PanelID = TMD_CMD; + else if (!strcasecmp (arg, "TPO_CMD")) + PanelID = TPO_CMD; + else if (!strcasecmp (arg, "PYR_CMD")) + PanelID = PYR_CMD; + else if (!strcasecmp (arg, "TMD_VID")) + PanelID = TMD_VID; + else if (!strcasecmp (arg, "TPO_VID")) + PanelID = TPO_VID; + else if (!strcasecmp (arg, "PYR_VID")) + PanelID = PYR_VID; + else + PanelID = GCT_DETECT; + + return 0; +} +early_param("panelid", parse_panelid); +#endif + static int __init psb_init(void) { int ret; diff --git a/drivers/staging/mrst/drv/psb_drv.h b/drivers/staging/mrst/drv/psb_drv.h index 345c7f3..f270125 100644 --- a/drivers/staging/mrst/drv/psb_drv.h +++ b/drivers/staging/mrst/drv/psb_drv.h @@ -59,6 +59,19 @@ enum { CHIP_MDFLD_0130 = 3 }; +enum panel_type { + TPO_CMD, + TPO_VID, + TMD_CMD, + TMD_VID, + PYR_CMD, + PYR_VID, + TPO, + TMD, + PYR, + HDMI, + GCT_DETECT +}; #define PCI_ID_TOPAZ_DISABLED 0x4101 @@ -462,6 +475,7 @@ struct drm_psb_private { struct mrst_vbt vbt_data; /* info that is stored from the gct */ struct gct_ioctl_arg gct_data; + enum panel_type panel_id; /* pci revision id for B0:D2:F0 */ uint8_t platform_rev_id; -- 1.7.1 _______________________________________________ MeeGo-kernel mailing list [email protected] http://lists.meego.com/listinfo/meego-kernel
