]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ENGR00141152-3 make default display option for drivers
authorJason Chen <b02280@freescale.com>
Tue, 19 Apr 2011 08:35:36 +0000 (16:35 +0800)
committerOliver Wendt <ow@karo-electronics.de>
Mon, 30 Sep 2013 12:09:00 +0000 (14:09 +0200)
make default display option for tve/vga/hdmi/ddc

Signed-off-by: Jason Chen <b02280@freescale.com>
drivers/mxc/ipu3/ipu_common.c
drivers/video/mxc/ldb.c
drivers/video/mxc/mxc_edid.c
drivers/video/mxc/mxcfb_sii902x.c
drivers/video/mxc/tve.c

index bc49778ddcc6530d56ff025952dc5e3fffad522e..9d99f551de5b43b89f5c8d8742e71b59458f4681 100644 (file)
@@ -18,7 +18,6 @@
  *
  * @ingroup IPU
  */
-#define DEBUG
 #include <linux/types.h>
 #include <linux/init.h>
 #include <linux/platform_device.h>
@@ -243,12 +242,19 @@ static struct clk pixel_clk[] = {
 };
 
 int __initdata primary_di = { 0 };
-static int __init di_setup(char *__unused)
+static int __init di1_setup(char *__unused)
 {
-       primary_di = 1;
+       primary_di = MXC_PRI_DI1;
        return 1;
 }
-__setup("di1_primary", di_setup);
+__setup("di1_primary", di1_setup);
+
+static int __init di0_setup(char *__unused)
+{
+       primary_di = MXC_PRI_DI0;
+       return 1;
+}
+__setup("di0_primary", di0_setup);
 
 struct platform_device *__init imx_add_ipuv3_fb(
                const struct ipuv3_fb_platform_data *pdata, int id)
@@ -279,7 +285,10 @@ static int __init register_fb_device(struct platform_device *pdev)
 {
        struct imx_ipuv3_platform_data *plat_data = pdev->dev.platform_data;
 
-       if (primary_di) {
+       if (!primary_di)
+               primary_di = plat_data->primary_di;
+
+       if (primary_di == MXC_PRI_DI1) {
                dev_info(g_ipu_dev, "DI1 is primary\n");
                /* DI1 -> DP-BG channel: */
                imx_add_ipuv3_fb(plat_data->fb_head1_platform_data, 1);
index f044d0419f406d50bcceea93a1a48a4fedf1f96d..24ad8e617138d55065e2b9832163d43a5fd8e471 100644 (file)
@@ -106,7 +106,9 @@ static struct device *g_ldb_dev;
 static u32 *ldb_reg;
 static int g_chan_mode_opt = LDB_NO_MODE;
 static int g_chan_bit_map[2];
-static bool g_enable_ldb;
+#define MXC_ENABLE     1
+#define MXC_DISABLE    2
+static int g_enable_ldb;
 static bool g_di0_used;
 static bool g_di1_used;
 
@@ -1244,8 +1246,22 @@ static int ldb_probe(struct platform_device *pdev)
        int mxc_ldb_major;
        struct class *mxc_ldb_class;
 
-       if (g_enable_ldb == false)
-               return -ENODEV;
+       if ((plat_data->boot_enable & (MXC_LDBDI0 | MXC_LDBDI1))
+               && !g_enable_ldb) {
+               g_enable_ldb = MXC_ENABLE;
+               if (plat_data->boot_enable & MXC_LDBDI0)
+                       g_di0_used = true;
+               if (plat_data->boot_enable & MXC_LDBDI1)
+                       g_di1_used = true;
+       }
+
+       if (!g_enable_ldb)
+               g_enable_ldb = MXC_DISABLE;
+
+       if (g_enable_ldb == MXC_DISABLE) {
+               printk(KERN_WARNING "By setting, LDB driver will not be enabled\n");
+               return 0;
+       }
 
        spin_lock_init(&ldb_lock);
 
@@ -1425,7 +1441,11 @@ static struct platform_driver mxcldb_driver = {
  */
 static int __init ldb_setup(char *options)
 {
-       g_enable_ldb = true;
+       if (!strcmp(options, "=off")) {
+               g_enable_ldb = MXC_DISABLE;
+               return 1;
+       } else
+               g_enable_ldb = MXC_ENABLE;
 
        if (!strlen(options))
                return 1;
index 3a171c726864609651e969c4bcfe8130dd8c6f0e..50355b550bbadda098150deb292fd0bc6dd8f2ba 100644 (file)
@@ -64,7 +64,9 @@ struct mxc_ddc_data {
        struct regulator *analog_reg;
 } mxc_ddc;
 
-static bool g_enable_ddc;
+#define MXC_ENABLE     1
+#define MXC_DISABLE    2
+static int g_enable_ddc;
 
 void mxc_edid_parse_ext_blk(unsigned char *edid,
                struct mxc_edid_cfg *cfg,
@@ -292,8 +294,15 @@ static int __devinit mxc_ddc_probe(struct i2c_client *client,
        struct fb_info edid_fbi;
        struct fsl_mxc_ddc_platform_data *plat = client->dev.platform_data;
 
-       if (g_enable_ddc == false)
-               return -EPERM;
+       if (plat->boot_enable && !g_enable_ddc)
+               g_enable_ddc = MXC_ENABLE;
+       if (!g_enable_ddc)
+               g_enable_ddc = MXC_DISABLE;
+
+       if (g_enable_ddc == MXC_DISABLE) {
+               printk(KERN_WARNING "By setting, DDC driver will not be enabled\n");
+               return 0;
+       }
 
        mxc_ddc.client = client;
        mxc_ddc.di = plat->di;
@@ -368,7 +377,10 @@ static int __devexit mxc_ddc_remove(struct i2c_client *client)
 
 static int __init enable_ddc_setup(char *options)
 {
-       g_enable_ddc = true;
+       if (!strcmp(options, "=off"))
+               g_enable_ddc = MXC_DISABLE;
+       else
+               g_enable_ddc = MXC_ENABLE;
 
        return 1;
 }
index 2128d222b1291ae2d7b839e8aa42a4cad9c9e33e..08d8c2ce05d53ae0819c9ae3d83e52b6f9b04f42 100644 (file)
@@ -52,7 +52,9 @@
 
 #define IPU_DISP_PORT 0
 #define SII_EDID_LEN   256
-static bool g_enable_hdmi;
+#define MXC_ENABLE     1
+#define MXC_DISABLE    2
+static int g_enable_hdmi;
 
 struct sii902x_data {
        struct platform_device *pdev;
@@ -324,8 +326,16 @@ static int __devinit sii902x_probe(struct i2c_client *client,
        struct fsl_mxc_lcd_platform_data *plat = client->dev.platform_data;
        struct fb_info edid_fbi;
 
-       if (g_enable_hdmi == false)
-               return -EPERM;
+       if (plat->boot_enable &&
+               !g_enable_hdmi)
+               g_enable_hdmi = MXC_ENABLE;
+       if (!g_enable_hdmi)
+               g_enable_hdmi = MXC_DISABLE;
+
+       if (g_enable_hdmi == MXC_DISABLE) {
+               printk(KERN_WARNING "By setting, SII driver will not be enabled\n");
+               return 0;
+       }
 
        sii902x.client = client;
 
@@ -497,7 +507,10 @@ static void __exit sii902x_exit(void)
 
 static int __init enable_hdmi_setup(char *options)
 {
-       g_enable_hdmi = true;
+       if (!strcmp(options, "=off"))
+               g_enable_hdmi = MXC_DISABLE;
+       else
+               g_enable_hdmi = MXC_ENABLE;
 
        return 1;
 }
index 34084a37999f2295dcc6aa31257c8c220af63c6a..8e01f0531e98ccab94566c041c625e9472b7ddd4 100644 (file)
@@ -104,8 +104,10 @@ static int enabled;                /* enable power on or not */
 DEFINE_SPINLOCK(tve_lock);
 
 static struct fb_info *tve_fbi;
-static bool g_enable_tve;
-static bool g_enable_vga;
+#define MXC_ENABLE     1
+#define MXC_DISABLE    2
+static int g_enable_tve;
+static int g_enable_vga;
 
 struct tve_data {
        struct platform_device *pdev;
@@ -1123,8 +1125,27 @@ static int tve_probe(struct platform_device *pdev)
        struct fsl_mxc_tve_platform_data *plat_data = pdev->dev.platform_data;
        u32 conf_reg;
 
-       if (g_enable_tve == false && g_enable_vga == false)
-               return -EPERM;
+       /*
+        * tve/vga can be enabled by platform data when there is
+        * no setting from cmdline setup
+        */
+       if ((plat_data->boot_enable & MXC_TVE_TVOUT)
+               && !g_enable_tve)
+               g_enable_tve = MXC_ENABLE;
+       if (!g_enable_tve)
+               g_enable_tve = MXC_DISABLE;
+
+       if ((plat_data->boot_enable & MXC_TVE_VGA) &&
+               !g_enable_vga)
+               g_enable_vga = MXC_ENABLE;
+       if (!g_enable_vga)
+               g_enable_vga = MXC_DISABLE;
+
+       if (g_enable_tve == MXC_DISABLE &&
+               g_enable_vga == MXC_DISABLE) {
+               printk(KERN_WARNING "By setting, TVE driver will not be enabled\n");
+               return 0;
+       }
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        if (res == NULL)
@@ -1196,16 +1217,16 @@ static int tve_probe(struct platform_device *pdev)
 
        /* TVE is on disp port 1 */
        if (tve.revision == 1) {
-               if (g_enable_tve)
+               if (g_enable_tve == MXC_ENABLE)
                        mxcfb_register_mode(IPU_DISP_PORT, video_modes,
                                        3, MXC_DISP_SPEC_DEV);
        } else {
-               if (g_enable_tve)
+               if (g_enable_tve == MXC_ENABLE)
                        mxcfb_register_mode(IPU_DISP_PORT, video_modes,
                                        ARRAY_SIZE(video_modes),
                                        MXC_DISP_SPEC_DEV);
 
-               if (cpu_is_mx53() && g_enable_vga)
+               if (cpu_is_mx53() && (g_enable_vga == MXC_ENABLE))
                        mxcfb_register_mode(IPU_DISP_PORT, video_modes_vga,
                                        ARRAY_SIZE(video_modes_vga),
                                        MXC_DISP_SPEC_DEV);
@@ -1269,7 +1290,10 @@ static struct platform_driver tve_driver = {
 
 static int __init enable_tve_setup(char *options)
 {
-       g_enable_tve = true;
+       if (!strcmp(options, "=off"))
+               g_enable_tve = MXC_DISABLE;
+       else
+               g_enable_tve = MXC_ENABLE;
 
        return 1;
 }
@@ -1277,7 +1301,10 @@ __setup("tve", enable_tve_setup);
 
 static int __init enable_vga_setup(char *options)
 {
-       g_enable_vga = true;
+       if (!strcmp(options, "=off"))
+               g_enable_vga = MXC_DISABLE;
+       else
+               g_enable_vga = MXC_ENABLE;
 
        return 1;
 }