Commit 084ffff29844a4bce69999d67809e6c00309ba58

Authored by Geert Uytterhoeven
Committed by Linus Torvalds
1 parent 3c4f594a6d

ps3: use symbolic names for video modes

Use symbolic names for video modes

Signed-off-by: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
Cc: "Antonino A. Daplas" <adaplas@pol.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Showing 3 changed files with 60 additions and 37 deletions Side-by-side Diff

... ... @@ -542,7 +542,7 @@
542 542  
543 543 static void ps3av_set_videomode_cont(u32 id, u32 old_id)
544 544 {
545   - static int vesa = 0;
  545 + static int vesa;
546 546 int res;
547 547  
548 548 /* video signal off */
549 549  
... ... @@ -552,9 +552,9 @@
552 552 * AV backend needs non-VESA mode setting at least one time
553 553 * when VESA mode is used.
554 554 */
555   - if (vesa == 0 && (id & PS3AV_MODE_MASK) >= 11) {
  555 + if (vesa == 0 && (id & PS3AV_MODE_MASK) >= PS3AV_MODE_WXGA) {
556 556 /* vesa mode */
557   - ps3av_set_videomode_packet(2); /* 480P */
  557 + ps3av_set_videomode_packet(PS3AV_MODE_480P);
558 558 }
559 559 vesa = 1;
560 560  
561 561  
... ... @@ -594,20 +594,21 @@
594 594 unsigned mask : 19;
595 595 unsigned id : 4;
596 596 } ps3av_preferred_modes[] = {
597   - { .mask = PS3AV_RESBIT_WUXGA << SHIFT_VESA, .id = 13 },
598   - { .mask = PS3AV_RESBIT_1920x1080P << SHIFT_60, .id = 5 },
599   - { .mask = PS3AV_RESBIT_1920x1080P << SHIFT_50, .id = 10 },
600   - { .mask = PS3AV_RESBIT_1920x1080I << SHIFT_60, .id = 4 },
601   - { .mask = PS3AV_RESBIT_1920x1080I << SHIFT_50, .id = 9 },
602   - { .mask = PS3AV_RESBIT_SXGA << SHIFT_VESA, .id = 12 },
603   - { .mask = PS3AV_RESBIT_WXGA << SHIFT_VESA, .id = 11 },
604   - { .mask = PS3AV_RESBIT_1280x720P << SHIFT_60, .id = 3 },
605   - { .mask = PS3AV_RESBIT_1280x720P << SHIFT_50, .id = 8 },
606   - { .mask = PS3AV_RESBIT_720x480P << SHIFT_60, .id = 2 },
607   - { .mask = PS3AV_RESBIT_720x576P << SHIFT_50, .id = 7 },
  597 + { PS3AV_RESBIT_WUXGA << SHIFT_VESA, PS3AV_MODE_WUXGA },
  598 + { PS3AV_RESBIT_1920x1080P << SHIFT_60, PS3AV_MODE_1080P60 },
  599 + { PS3AV_RESBIT_1920x1080P << SHIFT_50, PS3AV_MODE_1080P50 },
  600 + { PS3AV_RESBIT_1920x1080I << SHIFT_60, PS3AV_MODE_1080I60 },
  601 + { PS3AV_RESBIT_1920x1080I << SHIFT_50, PS3AV_MODE_1080I50 },
  602 + { PS3AV_RESBIT_SXGA << SHIFT_VESA, PS3AV_MODE_SXGA },
  603 + { PS3AV_RESBIT_WXGA << SHIFT_VESA, PS3AV_MODE_WXGA },
  604 + { PS3AV_RESBIT_1280x720P << SHIFT_60, PS3AV_MODE_720P60 },
  605 + { PS3AV_RESBIT_1280x720P << SHIFT_50, PS3AV_MODE_720P50 },
  606 + { PS3AV_RESBIT_720x480P << SHIFT_60, PS3AV_MODE_480P },
  607 + { PS3AV_RESBIT_720x576P << SHIFT_50, PS3AV_MODE_576P },
608 608 };
609 609  
610   -static int ps3av_resbit2id(u32 res_50, u32 res_60, u32 res_vesa)
  610 +static enum ps3av_mode_num ps3av_resbit2id(u32 res_50, u32 res_60,
  611 + u32 res_vesa)
611 612 {
612 613 unsigned int i;
613 614 u32 res_all;
614 615  
... ... @@ -636,9 +637,9 @@
636 637 return 0;
637 638 }
638 639  
639   -static int ps3av_hdmi_get_id(struct ps3av_info_monitor *info)
  640 +static enum ps3av_mode_num ps3av_hdmi_get_id(struct ps3av_info_monitor *info)
640 641 {
641   - int id;
  642 + enum ps3av_mode_num id;
642 643  
643 644 if (safe_mode)
644 645 return PS3AV_DEFAULT_HDMI_MODE_ID_REG_60;
... ... @@ -852,7 +853,7 @@
852 853  
853 854 /* auto mode */
854 855 option = id & ~PS3AV_MODE_MASK;
855   - if ((id & PS3AV_MODE_MASK) == 0) {
  856 + if ((id & PS3AV_MODE_MASK) == PS3AV_MODE_AUTO) {
856 857 id = ps3av_auto_videomode(&ps3av->av_hw_conf);
857 858 if (id < 1) {
858 859 printk(KERN_ERR "%s: invalid id :%d\n", __func__, id);
... ... @@ -958,7 +959,7 @@
958 959 return -ENOMEM;
959 960  
960 961 mutex_init(&ps3av->mutex);
961   - ps3av->ps3av_mode = 0;
  962 + ps3av->ps3av_mode = PS3AV_MODE_AUTO;
962 963 ps3av->dev = dev;
963 964  
964 965 INIT_WORK(&ps3av->work, ps3avd);
drivers/video/ps3fb.c
... ... @@ -338,7 +338,7 @@
338 338 static unsigned int ps3fb_find_mode(const struct fb_var_screeninfo *var,
339 339 u32 *ddr_line_length, u32 *xdr_line_length)
340 340 {
341   - unsigned int i, mode;
  341 + unsigned int i, fi, mode;
342 342  
343 343 for (i = 0; i < ARRAY_SIZE(ps3fb_modedb); i++)
344 344 if (var->xres == ps3fb_modedb[i].xres &&
... ... @@ -359,7 +359,8 @@
359 359  
360 360 found:
361 361 /* Cropped broadcast modes use the full line length */
362   - *ddr_line_length = ps3fb_modedb[i < 10 ? i + 13 : i].xres * BPP;
  362 + fi = i < PS3AV_MODE_1080P50 ? i + PS3AV_MODE_WUXGA : i;
  363 + *ddr_line_length = ps3fb_modedb[fi].xres * BPP;
363 364  
364 365 if (ps3_compare_firmware_version(1, 9, 0) >= 0) {
365 366 *xdr_line_length = GPU_ALIGN_UP(max(var->xres,
... ... @@ -370,7 +371,9 @@
370 371 *xdr_line_length = *ddr_line_length;
371 372  
372 373 /* Full broadcast modes have the full mode bit set */
373   - mode = i > 12 ? (i - 12) | PS3FB_FULL_MODE_BIT : i + 1;
  374 + mode = i+1;
  375 + if (mode > PS3AV_MODE_WUXGA)
  376 + mode = (mode - PS3AV_MODE_WUXGA) | PS3FB_FULL_MODE_BIT;
374 377  
375 378 pr_debug("ps3fb_find_mode: mode %u\n", mode);
376 379  
377 380  
378 381  
... ... @@ -382,14 +385,14 @@
382 385 u32 mode = id & PS3AV_MODE_MASK;
383 386 u32 flags;
384 387  
385   - if (mode < 1 || mode > 13)
  388 + if (mode < PS3AV_MODE_480I || mode > PS3AV_MODE_WUXGA)
386 389 return NULL;
387 390  
388 391 flags = id & ~PS3AV_MODE_MASK;
389 392  
390   - if (mode <= 10 && flags & PS3FB_FULL_MODE_BIT) {
  393 + if (mode <= PS3AV_MODE_1080P50 && flags & PS3FB_FULL_MODE_BIT) {
391 394 /* Full broadcast mode */
392   - return &ps3fb_modedb[mode + 12];
  395 + return &ps3fb_modedb[mode + PS3AV_MODE_WUXGA - 1];
393 396 }
394 397  
395 398 return &ps3fb_modedb[mode - 1];
... ... @@ -1080,7 +1083,7 @@
1080 1083  
1081 1084 if (!ps3fb_mode)
1082 1085 ps3fb_mode = ps3av_get_mode();
1083   - dev_dbg(&dev->core, "ps3av_mode:%d\n", ps3fb_mode);
  1086 + dev_dbg(&dev->core, "ps3fb_mode: %d\n", ps3fb_mode);
1084 1087  
1085 1088 if (ps3fb_mode > 0 &&
1086 1089 !ps3av_video_mode2res(ps3fb_mode, &xres, &yres)) {
include/asm-powerpc/ps3av.h
... ... @@ -310,19 +310,25 @@
310 310 #define PS3AV_MONITOR_TYPE_HDMI 1 /* HDMI */
311 311 #define PS3AV_MONITOR_TYPE_DVI 2 /* DVI */
312 312  
313   -#define PS3AV_DEFAULT_HDMI_MODE_ID_REG_60 2 /* 480p */
314   -#define PS3AV_DEFAULT_AVMULTI_MODE_ID_REG_60 1 /* 480i */
315   -#define PS3AV_DEFAULT_HDMI_MODE_ID_REG_50 7 /* 576p */
316   -#define PS3AV_DEFAULT_AVMULTI_MODE_ID_REG_50 6 /* 576i */
317 313  
318   -#define PS3AV_REGION_60 0x01
319   -#define PS3AV_REGION_50 0x02
320   -#define PS3AV_REGION_RGB 0x10
321   -
322   -#define get_status(buf) (((__u32 *)buf)[2])
323   -#define PS3AV_HDR_SIZE 4 /* version + size */
324   -
325 314 /* for video mode */
  315 +enum ps3av_mode_num {
  316 + PS3AV_MODE_AUTO = 0,
  317 + PS3AV_MODE_480I = 1,
  318 + PS3AV_MODE_480P = 2,
  319 + PS3AV_MODE_720P60 = 3,
  320 + PS3AV_MODE_1080I60 = 4,
  321 + PS3AV_MODE_1080P60 = 5,
  322 + PS3AV_MODE_576I = 6,
  323 + PS3AV_MODE_576P = 7,
  324 + PS3AV_MODE_720P50 = 8,
  325 + PS3AV_MODE_1080I50 = 9,
  326 + PS3AV_MODE_1080P50 = 10,
  327 + PS3AV_MODE_WXGA = 11,
  328 + PS3AV_MODE_SXGA = 12,
  329 + PS3AV_MODE_WUXGA = 13,
  330 +};
  331 +
326 332 #define PS3AV_MODE_MASK 0x000F
327 333 #define PS3AV_MODE_HDCP_OFF 0x1000 /* Retail PS3 product doesn't support this */
328 334 #define PS3AV_MODE_DITHER 0x0800
... ... @@ -331,6 +337,19 @@
331 337 #define PS3AV_MODE_FULL 0x0080
332 338 #define PS3AV_MODE_DVI 0x0040
333 339 #define PS3AV_MODE_RGB 0x0020
  340 +
  341 +
  342 +#define PS3AV_DEFAULT_HDMI_MODE_ID_REG_60 PS3AV_MODE_480P
  343 +#define PS3AV_DEFAULT_AVMULTI_MODE_ID_REG_60 PS3AV_MODE_480I
  344 +#define PS3AV_DEFAULT_HDMI_MODE_ID_REG_50 PS3AV_MODE_576P
  345 +#define PS3AV_DEFAULT_AVMULTI_MODE_ID_REG_50 PS3AV_MODE_576I
  346 +
  347 +#define PS3AV_REGION_60 0x01
  348 +#define PS3AV_REGION_50 0x02
  349 +#define PS3AV_REGION_RGB 0x10
  350 +
  351 +#define get_status(buf) (((__u32 *)buf)[2])
  352 +#define PS3AV_HDR_SIZE 4 /* version + size */
334 353  
335 354  
336 355 /** command packet structure **/