Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=dc23fba7063867ed745cb6f0bd27a0dc5f558dbc
Commit:     dc23fba7063867ed745cb6f0bd27a0dc5f558dbc
Parent:     670ad354cb6d6d0f5c3fb17e9f1fb67fb32e02e6
Author:     Masashi Kimoto <[EMAIL PROTECTED]>
AuthorDate: Sat Jun 16 07:19:10 2007 +1000
Committer:  Paul Mackerras <[EMAIL PROTECTED]>
CommitDate: Thu Jun 28 19:16:35 2007 +1000

    [POWERPC] PS3: Add support for HDMI RGB Full Range mode
    
    Add support for HDMI RGB Full Range mode, which is available on system
    software 1.80 or newer.
    
    CC: Masashi Kimoto <[EMAIL PROTECTED]>
    Signed-off-by: Geert Uytterhoeven <[EMAIL PROTECTED]>
    Signed-off-by: Geoff Levand <[EMAIL PROTECTED]>
    Signed-off-by: Paul Mackerras <[EMAIL PROTECTED]>
---
 drivers/ps3/ps3av_cmd.c     |   16 ++++++++++++++++
 include/asm-powerpc/ps3av.h |   12 +++++++++---
 2 files changed, 25 insertions(+), 3 deletions(-)

diff --git a/drivers/ps3/ps3av_cmd.c b/drivers/ps3/ps3av_cmd.c
index 0145ea1..7c4fb26 100644
--- a/drivers/ps3/ps3av_cmd.c
+++ b/drivers/ps3/ps3av_cmd.c
@@ -143,6 +143,14 @@ static u32 ps3av_vid_video2av(int vid)
        return PS3AV_CMD_AV_VID_480P;
 }
 
+static int ps3av_hdmi_range(void)
+{
+       if (ps3_compare_firmware_version(1, 8, 0) < 0)
+               return 0;
+       else
+               return 1; /* supported */
+}
+
 int ps3av_cmd_init(void)
 {
        int res;
@@ -350,6 +358,10 @@ u32 ps3av_cmd_set_av_video_cs(void *p, u32 avport, int 
video_vid, int cs_out,
        /* should be same as video_mode.video_cs_out */
        av_video_cs->av_cs_in = ps3av_cs_video2av(PS3AV_CMD_VIDEO_CS_RGB_8);
        av_video_cs->bitlen_out = ps3av_cs_video2av_bitlen(cs_out);
+       if ((id & PS3AV_MODE_WHITE) && ps3av_hdmi_range())
+               av_video_cs->super_white = PS3AV_CMD_AV_SUPER_WHITE_ON;
+       else /* default off */
+               av_video_cs->super_white = PS3AV_CMD_AV_SUPER_WHITE_OFF;
        av_video_cs->aspect = aspect;
        if (id & PS3AV_MODE_DITHER) {
                av_video_cs->dither = PS3AV_CMD_AV_DITHER_ON
@@ -392,6 +404,10 @@ u32 ps3av_cmd_set_video_mode(void *p, u32 head, int 
video_vid, int video_fmt,
        video_mode->pitch = video_mode->width * 4;      /* line_length */
        video_mode->video_out_format = PS3AV_CMD_VIDEO_OUT_FORMAT_RGB_12BIT;
        video_mode->video_format = ps3av_video_fmt_table[video_fmt].format;
+       if ((id & PS3AV_MODE_COLOR) && ps3av_hdmi_range())
+               video_mode->video_cl_cnv = PS3AV_CMD_VIDEO_CL_CNV_DISABLE_LUT;
+       else /* default enable */
+               video_mode->video_cl_cnv = PS3AV_CMD_VIDEO_CL_CNV_ENABLE_LUT;
        video_mode->video_order = ps3av_video_fmt_table[video_fmt].order;
 
        pr_debug("%s: video_mode:vid:%x width:%d height:%d pitch:%d 
out_format:%d format:%x order:%x\n",
diff --git a/include/asm-powerpc/ps3av.h b/include/asm-powerpc/ps3av.h
index 9efc40f..7f5948e 100644
--- a/include/asm-powerpc/ps3av.h
+++ b/include/asm-powerpc/ps3av.h
@@ -159,6 +159,9 @@
 #define PS3AV_CMD_VIDEO_FMT_X8R8G8B8                   0x0000
 /* video_out_format */
 #define PS3AV_CMD_VIDEO_OUT_FORMAT_RGB_12BIT           0x0000
+/* video_cl_cnv */
+#define PS3AV_CMD_VIDEO_CL_CNV_ENABLE_LUT              0x0000
+#define PS3AV_CMD_VIDEO_CL_CNV_DISABLE_LUT             0x0010
 /* video_sync */
 #define PS3AV_CMD_VIDEO_SYNC_VSYNC                     0x0001
 #define PS3AV_CMD_VIDEO_SYNC_CSYNC                     0x0004
@@ -311,6 +314,8 @@
 #define PS3AV_MODE_MASK                                0x000F
 #define PS3AV_MODE_HDCP_OFF                    0x1000  /* Retail PS3 product 
doesn't support this */
 #define PS3AV_MODE_DITHER                      0x0800
+#define PS3AV_MODE_COLOR                       0x0400
+#define PS3AV_MODE_WHITE                       0x0200
 #define PS3AV_MODE_FULL                                0x0080
 #define PS3AV_MODE_DVI                         0x0040
 #define PS3AV_MODE_RGB                         0x0020
@@ -529,9 +534,9 @@ struct ps3av_pkt_video_mode {
        u32 video_out_format;   /* in: out format */
        u32 video_format;       /* in: input frame buffer format */
        u8 reserved3;
-       u8 reserved4;
+       u8 video_cl_cnv;        /* in: color conversion */
        u16 video_order;        /* in: input RGB order */
-       u32 reserved5;
+       u32 reserved4;
 };
 
 /* video: format */
@@ -539,7 +544,8 @@ struct ps3av_pkt_video_format {
        struct ps3av_send_hdr send_hdr;
        u32 video_head;         /* in: head */
        u32 video_format;       /* in: frame buffer format */
-       u16 reserved;
+       u8 reserved;
+       u8 video_cl_cnv;        /* in: color conversion */
        u16 video_order;        /* in: input RGB order */
 };
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to