diff options
Diffstat (limited to 'drivers/ps3/ps3av_cmd.c')
-rw-r--r-- | drivers/ps3/ps3av_cmd.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/ps3/ps3av_cmd.c b/drivers/ps3/ps3av_cmd.c index 0145ea173c42..7c4fb264dda2 100644 --- a/drivers/ps3/ps3av_cmd.c +++ b/drivers/ps3/ps3av_cmd.c | |||
@@ -143,6 +143,14 @@ static u32 ps3av_vid_video2av(int vid) | |||
143 | return PS3AV_CMD_AV_VID_480P; | 143 | return PS3AV_CMD_AV_VID_480P; |
144 | } | 144 | } |
145 | 145 | ||
146 | static int ps3av_hdmi_range(void) | ||
147 | { | ||
148 | if (ps3_compare_firmware_version(1, 8, 0) < 0) | ||
149 | return 0; | ||
150 | else | ||
151 | return 1; /* supported */ | ||
152 | } | ||
153 | |||
146 | int ps3av_cmd_init(void) | 154 | int ps3av_cmd_init(void) |
147 | { | 155 | { |
148 | int res; | 156 | int res; |
@@ -350,6 +358,10 @@ u32 ps3av_cmd_set_av_video_cs(void *p, u32 avport, int video_vid, int cs_out, | |||
350 | /* should be same as video_mode.video_cs_out */ | 358 | /* should be same as video_mode.video_cs_out */ |
351 | av_video_cs->av_cs_in = ps3av_cs_video2av(PS3AV_CMD_VIDEO_CS_RGB_8); | 359 | av_video_cs->av_cs_in = ps3av_cs_video2av(PS3AV_CMD_VIDEO_CS_RGB_8); |
352 | av_video_cs->bitlen_out = ps3av_cs_video2av_bitlen(cs_out); | 360 | av_video_cs->bitlen_out = ps3av_cs_video2av_bitlen(cs_out); |
361 | if ((id & PS3AV_MODE_WHITE) && ps3av_hdmi_range()) | ||
362 | av_video_cs->super_white = PS3AV_CMD_AV_SUPER_WHITE_ON; | ||
363 | else /* default off */ | ||
364 | av_video_cs->super_white = PS3AV_CMD_AV_SUPER_WHITE_OFF; | ||
353 | av_video_cs->aspect = aspect; | 365 | av_video_cs->aspect = aspect; |
354 | if (id & PS3AV_MODE_DITHER) { | 366 | if (id & PS3AV_MODE_DITHER) { |
355 | av_video_cs->dither = PS3AV_CMD_AV_DITHER_ON | 367 | 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, | |||
392 | video_mode->pitch = video_mode->width * 4; /* line_length */ | 404 | video_mode->pitch = video_mode->width * 4; /* line_length */ |
393 | video_mode->video_out_format = PS3AV_CMD_VIDEO_OUT_FORMAT_RGB_12BIT; | 405 | video_mode->video_out_format = PS3AV_CMD_VIDEO_OUT_FORMAT_RGB_12BIT; |
394 | video_mode->video_format = ps3av_video_fmt_table[video_fmt].format; | 406 | video_mode->video_format = ps3av_video_fmt_table[video_fmt].format; |
407 | if ((id & PS3AV_MODE_COLOR) && ps3av_hdmi_range()) | ||
408 | video_mode->video_cl_cnv = PS3AV_CMD_VIDEO_CL_CNV_DISABLE_LUT; | ||
409 | else /* default enable */ | ||
410 | video_mode->video_cl_cnv = PS3AV_CMD_VIDEO_CL_CNV_ENABLE_LUT; | ||
395 | video_mode->video_order = ps3av_video_fmt_table[video_fmt].order; | 411 | video_mode->video_order = ps3av_video_fmt_table[video_fmt].order; |
396 | 412 | ||
397 | pr_debug("%s: video_mode:vid:%x width:%d height:%d pitch:%d out_format:%d format:%x order:%x\n", | 413 | pr_debug("%s: video_mode:vid:%x width:%d height:%d pitch:%d out_format:%d format:%x order:%x\n", |