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

Reply via email to