ps3av: treat DVI-D like HDMI in autodetect
authorGeert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
Tue, 16 Oct 2007 08:29:41 +0000 (01:29 -0700)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Tue, 16 Oct 2007 16:43:20 +0000 (09:43 -0700)
treat DVI-D monitors like HDMI monitors when autodetecting the best video mode

Signed-off-by: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
Signed-off-by: Antonino Daplas <adaplas@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/ps3/ps3av.c
include/asm-powerpc/ps3av.h

index 51feb7e46b0e98479e3bb4009f847da1d6a7c269..21f69a75be67d3e47f28b8fc23127937fb098036 100644 (file)
@@ -620,9 +620,6 @@ static int ps3av_hdmi_get_id(struct ps3av_info_monitor *info)
        u32 res_50, res_60;
        int id;
 
-       if (info->monitor_type != PS3AV_MONITOR_TYPE_HDMI)
-               return 0;
-
        /* check native resolution */
        res_50 = info->res_50.native & PS3AV_RES_MASK_50;
        res_60 = info->res_60.native & PS3AV_RES_MASK_60;
@@ -712,7 +709,7 @@ static int ps3av_auto_videomode(struct ps3av_pkt_av_get_hw_conf *av_hw_conf,
        struct ps3av_info_monitor *info;
 
        /* get mode id for hdmi */
-       for (i = 0; i < av_hw_conf->num_of_hdmi; i++) {
+       for (i = 0; i < av_hw_conf->num_of_hdmi && !id; i++) {
                res = ps3av_cmd_video_get_monitor_info(&monitor_info,
                                                       PS3AV_CMD_AVPORT_HDMI_0 +
                                                       i);
@@ -720,24 +717,19 @@ static int ps3av_auto_videomode(struct ps3av_pkt_av_get_hw_conf *av_hw_conf,
                        return -1;
 
                ps3av_monitor_info_dump(&monitor_info);
+
                info = &monitor_info.info;
-               /* check DVI */
-               if (info->monitor_type == PS3AV_MONITOR_TYPE_DVI) {
+               switch (info->monitor_type) {
+               case PS3AV_MONITOR_TYPE_DVI:
                        dvi = PS3AV_MODE_DVI;
-                       break;
-               }
-               /* check HDMI */
-               id = ps3av_hdmi_get_id(info);
-               if (id) {
-                       /* got valid mode id */
+                       /* fall through */
+               case PS3AV_MONITOR_TYPE_HDMI:
+                       id = ps3av_hdmi_get_id(info);
                        break;
                }
        }
 
-       if (dvi) {
-               /* DVI mode */
-               id = PS3AV_DEFAULT_DVI_MODE_ID;
-       } else if (!id) {
+       if (!id) {
                /* no HDMI interface or HDMI is off */
                if (ps3av->region & PS3AV_REGION_60)
                        id = PS3AV_DEFAULT_AVMULTI_MODE_ID_REG_60;
index c023c5df90db282d2ea2c3ca2928c3993f1327e9..014673ee977d96fcfe603bc4ed5f7f4305ae403c 100644 (file)
 #define PS3AV_DEFAULT_AVMULTI_MODE_ID_REG_60   1       /* 480i */
 #define PS3AV_DEFAULT_HDMI_MODE_ID_REG_50      7       /* 576p */
 #define PS3AV_DEFAULT_AVMULTI_MODE_ID_REG_50   6       /* 576i */
-#define PS3AV_DEFAULT_DVI_MODE_ID              2       /* 480p */
 
 #define PS3AV_REGION_60                                0x01
 #define PS3AV_REGION_50                                0x02