diff options
author | Florian Tobias Schandinat <FlorianSchandinat@gmx.de> | 2010-03-10 18:21:28 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-03-12 18:52:33 -0500 |
commit | dd73d6868b9ecb4841def0c6ff0a25da27db33ba (patch) | |
tree | 353558254ac6ad9561beb6f3bac7b5254301c95c /drivers/video/via/lcd.c | |
parent | 2365dfe99495159b3395dd0eddece2f0d58f527a (diff) |
viafb: split global index up
This is the first step to remove an artificial global index that was used
in two ways:
1. As a pseudo index in the mode table. Pseudo as you had to search
through the table to find the referenced entry. This was replaced by
using a pointer to the entry.
2. As a shortcut to compare a combination of horizontal and vertical
resolution at the same time.
This was replaced by a "(hres<<16) | vres" which is good enough for
now and the near future. If vres or hres become greater than 2^16 this
might indeed cause problems but this solution allows to split this
indexing mess up without the requirement to do even more code changes.
This is a big change that will allow more clean ups. It should be a bit
faster but that is probably not relevant for normal operation. No
regressions expected but as this is a relatively big step heavy testing is
appreciated.
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
Cc: Joseph Chan <JosephChan@via.com.tw>
Cc: Scott Fang <ScottFang@viatech.com.cn>
Cc: Krzysztof Helt <krzysztof.h1@poczta.fm>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/video/via/lcd.c')
-rw-r--r-- | drivers/video/via/lcd.c | 148 |
1 files changed, 70 insertions, 78 deletions
diff --git a/drivers/video/via/lcd.c b/drivers/video/via/lcd.c index 09353e2b92f6..e0ab605f0170 100644 --- a/drivers/video/via/lcd.c +++ b/drivers/video/via/lcd.c | |||
@@ -22,6 +22,8 @@ | |||
22 | #include "global.h" | 22 | #include "global.h" |
23 | #include "lcdtbl.h" | 23 | #include "lcdtbl.h" |
24 | 24 | ||
25 | #define viafb_compact_res(x, y) (((x)<<16)|(y)) | ||
26 | |||
25 | static struct iga2_shadow_crtc_timing iga2_shadow_crtc_reg = { | 27 | static struct iga2_shadow_crtc_timing iga2_shadow_crtc_reg = { |
26 | /* IGA2 Shadow Horizontal Total */ | 28 | /* IGA2 Shadow Horizontal Total */ |
27 | {IGA2_SHADOW_HOR_TOTAL_REG_NUM, {{CR6D, 0, 7}, {CR71, 3, 3} } }, | 29 | {IGA2_SHADOW_HOR_TOTAL_REG_NUM, {{CR6D, 0, 7}, {CR71, 3, 3} } }, |
@@ -576,22 +578,21 @@ static void load_lcd_scaling(int set_hres, int set_vres, int panel_hres, | |||
576 | static void load_lcd_k400_patch_tbl(int set_hres, int set_vres, | 578 | static void load_lcd_k400_patch_tbl(int set_hres, int set_vres, |
577 | int panel_id) | 579 | int panel_id) |
578 | { | 580 | { |
579 | int vmode_index; | 581 | u32 compact_mode = viafb_compact_res(set_hres, set_vres); |
580 | int reg_num = 0; | 582 | int reg_num = 0; |
581 | struct io_reg *lcd_patch_reg = NULL; | 583 | struct io_reg *lcd_patch_reg = NULL; |
582 | 584 | ||
583 | vmode_index = viafb_get_mode_index(set_hres, set_vres); | ||
584 | switch (panel_id) { | 585 | switch (panel_id) { |
585 | /* LCD 800x600 */ | 586 | /* LCD 800x600 */ |
586 | case LCD_PANEL_ID1_800X600: | 587 | case LCD_PANEL_ID1_800X600: |
587 | switch (vmode_index) { | 588 | switch (compact_mode) { |
588 | case VIA_RES_640X400: | 589 | case viafb_compact_res(640, 400): |
589 | case VIA_RES_640X480: | 590 | case viafb_compact_res(640, 480): |
590 | reg_num = NUM_TOTAL_K400_LCD_RES_6X4_8X6; | 591 | reg_num = NUM_TOTAL_K400_LCD_RES_6X4_8X6; |
591 | lcd_patch_reg = K400_LCD_RES_6X4_8X6; | 592 | lcd_patch_reg = K400_LCD_RES_6X4_8X6; |
592 | break; | 593 | break; |
593 | case VIA_RES_720X480: | 594 | case viafb_compact_res(720, 480): |
594 | case VIA_RES_720X576: | 595 | case viafb_compact_res(720, 576): |
595 | reg_num = NUM_TOTAL_K400_LCD_RES_7X4_8X6; | 596 | reg_num = NUM_TOTAL_K400_LCD_RES_7X4_8X6; |
596 | lcd_patch_reg = K400_LCD_RES_7X4_8X6; | 597 | lcd_patch_reg = K400_LCD_RES_7X4_8X6; |
597 | break; | 598 | break; |
@@ -600,18 +601,18 @@ static void load_lcd_k400_patch_tbl(int set_hres, int set_vres, | |||
600 | 601 | ||
601 | /* LCD 1024x768 */ | 602 | /* LCD 1024x768 */ |
602 | case LCD_PANEL_ID2_1024X768: | 603 | case LCD_PANEL_ID2_1024X768: |
603 | switch (vmode_index) { | 604 | switch (compact_mode) { |
604 | case VIA_RES_640X400: | 605 | case viafb_compact_res(640, 400): |
605 | case VIA_RES_640X480: | 606 | case viafb_compact_res(640, 480): |
606 | reg_num = NUM_TOTAL_K400_LCD_RES_6X4_10X7; | 607 | reg_num = NUM_TOTAL_K400_LCD_RES_6X4_10X7; |
607 | lcd_patch_reg = K400_LCD_RES_6X4_10X7; | 608 | lcd_patch_reg = K400_LCD_RES_6X4_10X7; |
608 | break; | 609 | break; |
609 | case VIA_RES_720X480: | 610 | case viafb_compact_res(720, 480): |
610 | case VIA_RES_720X576: | 611 | case viafb_compact_res(720, 576): |
611 | reg_num = NUM_TOTAL_K400_LCD_RES_7X4_10X7; | 612 | reg_num = NUM_TOTAL_K400_LCD_RES_7X4_10X7; |
612 | lcd_patch_reg = K400_LCD_RES_7X4_10X7; | 613 | lcd_patch_reg = K400_LCD_RES_7X4_10X7; |
613 | break; | 614 | break; |
614 | case VIA_RES_800X600: | 615 | case viafb_compact_res(800, 600): |
615 | reg_num = NUM_TOTAL_K400_LCD_RES_8X6_10X7; | 616 | reg_num = NUM_TOTAL_K400_LCD_RES_8X6_10X7; |
616 | lcd_patch_reg = K400_LCD_RES_8X6_10X7; | 617 | lcd_patch_reg = K400_LCD_RES_8X6_10X7; |
617 | break; | 618 | break; |
@@ -620,22 +621,22 @@ static void load_lcd_k400_patch_tbl(int set_hres, int set_vres, | |||
620 | 621 | ||
621 | /* LCD 1280x1024 */ | 622 | /* LCD 1280x1024 */ |
622 | case LCD_PANEL_ID4_1280X1024: | 623 | case LCD_PANEL_ID4_1280X1024: |
623 | switch (vmode_index) { | 624 | switch (compact_mode) { |
624 | case VIA_RES_640X400: | 625 | case viafb_compact_res(640, 400): |
625 | case VIA_RES_640X480: | 626 | case viafb_compact_res(640, 480): |
626 | reg_num = NUM_TOTAL_K400_LCD_RES_6X4_12X10; | 627 | reg_num = NUM_TOTAL_K400_LCD_RES_6X4_12X10; |
627 | lcd_patch_reg = K400_LCD_RES_6X4_12X10; | 628 | lcd_patch_reg = K400_LCD_RES_6X4_12X10; |
628 | break; | 629 | break; |
629 | case VIA_RES_720X480: | 630 | case viafb_compact_res(720, 480): |
630 | case VIA_RES_720X576: | 631 | case viafb_compact_res(720, 576): |
631 | reg_num = NUM_TOTAL_K400_LCD_RES_7X4_12X10; | 632 | reg_num = NUM_TOTAL_K400_LCD_RES_7X4_12X10; |
632 | lcd_patch_reg = K400_LCD_RES_7X4_12X10; | 633 | lcd_patch_reg = K400_LCD_RES_7X4_12X10; |
633 | break; | 634 | break; |
634 | case VIA_RES_800X600: | 635 | case viafb_compact_res(800, 600): |
635 | reg_num = NUM_TOTAL_K400_LCD_RES_8X6_12X10; | 636 | reg_num = NUM_TOTAL_K400_LCD_RES_8X6_12X10; |
636 | lcd_patch_reg = K400_LCD_RES_8X6_12X10; | 637 | lcd_patch_reg = K400_LCD_RES_8X6_12X10; |
637 | break; | 638 | break; |
638 | case VIA_RES_1024X768: | 639 | case viafb_compact_res(1024, 768): |
639 | reg_num = NUM_TOTAL_K400_LCD_RES_10X7_12X10; | 640 | reg_num = NUM_TOTAL_K400_LCD_RES_10X7_12X10; |
640 | lcd_patch_reg = K400_LCD_RES_10X7_12X10; | 641 | lcd_patch_reg = K400_LCD_RES_10X7_12X10; |
641 | break; | 642 | break; |
@@ -645,23 +646,23 @@ static void load_lcd_k400_patch_tbl(int set_hres, int set_vres, | |||
645 | 646 | ||
646 | /* LCD 1400x1050 */ | 647 | /* LCD 1400x1050 */ |
647 | case LCD_PANEL_ID5_1400X1050: | 648 | case LCD_PANEL_ID5_1400X1050: |
648 | switch (vmode_index) { | 649 | switch (compact_mode) { |
649 | case VIA_RES_640X480: | 650 | case viafb_compact_res(640, 480): |
650 | reg_num = NUM_TOTAL_K400_LCD_RES_6X4_14X10; | 651 | reg_num = NUM_TOTAL_K400_LCD_RES_6X4_14X10; |
651 | lcd_patch_reg = K400_LCD_RES_6X4_14X10; | 652 | lcd_patch_reg = K400_LCD_RES_6X4_14X10; |
652 | break; | 653 | break; |
653 | case VIA_RES_800X600: | 654 | case viafb_compact_res(800, 600): |
654 | reg_num = NUM_TOTAL_K400_LCD_RES_8X6_14X10; | 655 | reg_num = NUM_TOTAL_K400_LCD_RES_8X6_14X10; |
655 | lcd_patch_reg = K400_LCD_RES_8X6_14X10; | 656 | lcd_patch_reg = K400_LCD_RES_8X6_14X10; |
656 | break; | 657 | break; |
657 | case VIA_RES_1024X768: | 658 | case viafb_compact_res(1024, 768): |
658 | reg_num = NUM_TOTAL_K400_LCD_RES_10X7_14X10; | 659 | reg_num = NUM_TOTAL_K400_LCD_RES_10X7_14X10; |
659 | lcd_patch_reg = K400_LCD_RES_10X7_14X10; | 660 | lcd_patch_reg = K400_LCD_RES_10X7_14X10; |
660 | break; | 661 | break; |
661 | case VIA_RES_1280X768: | 662 | case viafb_compact_res(1280, 768): |
662 | case VIA_RES_1280X800: | 663 | case viafb_compact_res(1280, 800): |
663 | case VIA_RES_1280X960: | 664 | case viafb_compact_res(1280, 960): |
664 | case VIA_RES_1280X1024: | 665 | case viafb_compact_res(1280, 1024): |
665 | reg_num = NUM_TOTAL_K400_LCD_RES_12X10_14X10; | 666 | reg_num = NUM_TOTAL_K400_LCD_RES_12X10_14X10; |
666 | lcd_patch_reg = K400_LCD_RES_12X10_14X10; | 667 | lcd_patch_reg = K400_LCD_RES_12X10_14X10; |
667 | break; | 668 | break; |
@@ -670,29 +671,29 @@ static void load_lcd_k400_patch_tbl(int set_hres, int set_vres, | |||
670 | 671 | ||
671 | /* LCD 1600x1200 */ | 672 | /* LCD 1600x1200 */ |
672 | case LCD_PANEL_ID6_1600X1200: | 673 | case LCD_PANEL_ID6_1600X1200: |
673 | switch (vmode_index) { | 674 | switch (compact_mode) { |
674 | case VIA_RES_640X400: | 675 | case viafb_compact_res(640, 400): |
675 | case VIA_RES_640X480: | 676 | case viafb_compact_res(640, 480): |
676 | reg_num = NUM_TOTAL_K400_LCD_RES_6X4_16X12; | 677 | reg_num = NUM_TOTAL_K400_LCD_RES_6X4_16X12; |
677 | lcd_patch_reg = K400_LCD_RES_6X4_16X12; | 678 | lcd_patch_reg = K400_LCD_RES_6X4_16X12; |
678 | break; | 679 | break; |
679 | case VIA_RES_720X480: | 680 | case viafb_compact_res(720, 480): |
680 | case VIA_RES_720X576: | 681 | case viafb_compact_res(720, 576): |
681 | reg_num = NUM_TOTAL_K400_LCD_RES_7X4_16X12; | 682 | reg_num = NUM_TOTAL_K400_LCD_RES_7X4_16X12; |
682 | lcd_patch_reg = K400_LCD_RES_7X4_16X12; | 683 | lcd_patch_reg = K400_LCD_RES_7X4_16X12; |
683 | break; | 684 | break; |
684 | case VIA_RES_800X600: | 685 | case viafb_compact_res(800, 600): |
685 | reg_num = NUM_TOTAL_K400_LCD_RES_8X6_16X12; | 686 | reg_num = NUM_TOTAL_K400_LCD_RES_8X6_16X12; |
686 | lcd_patch_reg = K400_LCD_RES_8X6_16X12; | 687 | lcd_patch_reg = K400_LCD_RES_8X6_16X12; |
687 | break; | 688 | break; |
688 | case VIA_RES_1024X768: | 689 | case viafb_compact_res(1024, 768): |
689 | reg_num = NUM_TOTAL_K400_LCD_RES_10X7_16X12; | 690 | reg_num = NUM_TOTAL_K400_LCD_RES_10X7_16X12; |
690 | lcd_patch_reg = K400_LCD_RES_10X7_16X12; | 691 | lcd_patch_reg = K400_LCD_RES_10X7_16X12; |
691 | break; | 692 | break; |
692 | case VIA_RES_1280X768: | 693 | case viafb_compact_res(1280, 768): |
693 | case VIA_RES_1280X800: | 694 | case viafb_compact_res(1280, 800): |
694 | case VIA_RES_1280X960: | 695 | case viafb_compact_res(1280, 960): |
695 | case VIA_RES_1280X1024: | 696 | case viafb_compact_res(1280, 1024): |
696 | reg_num = NUM_TOTAL_K400_LCD_RES_12X10_16X12; | 697 | reg_num = NUM_TOTAL_K400_LCD_RES_12X10_16X12; |
697 | lcd_patch_reg = K400_LCD_RES_12X10_16X12; | 698 | lcd_patch_reg = K400_LCD_RES_12X10_16X12; |
698 | break; | 699 | break; |
@@ -701,28 +702,28 @@ static void load_lcd_k400_patch_tbl(int set_hres, int set_vres, | |||
701 | 702 | ||
702 | /* LCD 1366x768 */ | 703 | /* LCD 1366x768 */ |
703 | case LCD_PANEL_ID7_1366X768: | 704 | case LCD_PANEL_ID7_1366X768: |
704 | switch (vmode_index) { | 705 | switch (compact_mode) { |
705 | case VIA_RES_640X480: | 706 | case viafb_compact_res(640, 480): |
706 | reg_num = NUM_TOTAL_K400_LCD_RES_6X4_1366X7; | 707 | reg_num = NUM_TOTAL_K400_LCD_RES_6X4_1366X7; |
707 | lcd_patch_reg = K400_LCD_RES_6X4_1366X7; | 708 | lcd_patch_reg = K400_LCD_RES_6X4_1366X7; |
708 | break; | 709 | break; |
709 | case VIA_RES_720X480: | 710 | case viafb_compact_res(720, 480): |
710 | case VIA_RES_720X576: | 711 | case viafb_compact_res(720, 576): |
711 | reg_num = NUM_TOTAL_K400_LCD_RES_7X4_1366X7; | 712 | reg_num = NUM_TOTAL_K400_LCD_RES_7X4_1366X7; |
712 | lcd_patch_reg = K400_LCD_RES_7X4_1366X7; | 713 | lcd_patch_reg = K400_LCD_RES_7X4_1366X7; |
713 | break; | 714 | break; |
714 | case VIA_RES_800X600: | 715 | case viafb_compact_res(800, 600): |
715 | reg_num = NUM_TOTAL_K400_LCD_RES_8X6_1366X7; | 716 | reg_num = NUM_TOTAL_K400_LCD_RES_8X6_1366X7; |
716 | lcd_patch_reg = K400_LCD_RES_8X6_1366X7; | 717 | lcd_patch_reg = K400_LCD_RES_8X6_1366X7; |
717 | break; | 718 | break; |
718 | case VIA_RES_1024X768: | 719 | case viafb_compact_res(1024, 768): |
719 | reg_num = NUM_TOTAL_K400_LCD_RES_10X7_1366X7; | 720 | reg_num = NUM_TOTAL_K400_LCD_RES_10X7_1366X7; |
720 | lcd_patch_reg = K400_LCD_RES_10X7_1366X7; | 721 | lcd_patch_reg = K400_LCD_RES_10X7_1366X7; |
721 | break; | 722 | break; |
722 | case VIA_RES_1280X768: | 723 | case viafb_compact_res(1280, 768): |
723 | case VIA_RES_1280X800: | 724 | case viafb_compact_res(1280, 800): |
724 | case VIA_RES_1280X960: | 725 | case viafb_compact_res(1280, 960): |
725 | case VIA_RES_1280X1024: | 726 | case viafb_compact_res(1280, 1024): |
726 | reg_num = NUM_TOTAL_K400_LCD_RES_12X10_1366X7; | 727 | reg_num = NUM_TOTAL_K400_LCD_RES_12X10_1366X7; |
727 | lcd_patch_reg = K400_LCD_RES_12X10_1366X7; | 728 | lcd_patch_reg = K400_LCD_RES_12X10_1366X7; |
728 | break; | 729 | break; |
@@ -754,48 +755,46 @@ static void load_lcd_k400_patch_tbl(int set_hres, int set_vres, | |||
754 | static void load_lcd_p880_patch_tbl(int set_hres, int set_vres, | 755 | static void load_lcd_p880_patch_tbl(int set_hres, int set_vres, |
755 | int panel_id) | 756 | int panel_id) |
756 | { | 757 | { |
757 | int vmode_index; | 758 | u32 compact_mode = viafb_compact_res(set_hres, set_vres); |
758 | int reg_num = 0; | 759 | int reg_num = 0; |
759 | struct io_reg *lcd_patch_reg = NULL; | 760 | struct io_reg *lcd_patch_reg = NULL; |
760 | 761 | ||
761 | vmode_index = viafb_get_mode_index(set_hres, set_vres); | ||
762 | |||
763 | switch (panel_id) { | 762 | switch (panel_id) { |
764 | case LCD_PANEL_ID5_1400X1050: | 763 | case LCD_PANEL_ID5_1400X1050: |
765 | switch (vmode_index) { | 764 | switch (compact_mode) { |
766 | case VIA_RES_640X480: | 765 | case viafb_compact_res(640, 480): |
767 | reg_num = NUM_TOTAL_P880_LCD_RES_6X4_14X10; | 766 | reg_num = NUM_TOTAL_P880_LCD_RES_6X4_14X10; |
768 | lcd_patch_reg = P880_LCD_RES_6X4_14X10; | 767 | lcd_patch_reg = P880_LCD_RES_6X4_14X10; |
769 | break; | 768 | break; |
770 | case VIA_RES_800X600: | 769 | case viafb_compact_res(800, 600): |
771 | reg_num = NUM_TOTAL_P880_LCD_RES_8X6_14X10; | 770 | reg_num = NUM_TOTAL_P880_LCD_RES_8X6_14X10; |
772 | lcd_patch_reg = P880_LCD_RES_8X6_14X10; | 771 | lcd_patch_reg = P880_LCD_RES_8X6_14X10; |
773 | break; | 772 | break; |
774 | } | 773 | } |
775 | break; | 774 | break; |
776 | case LCD_PANEL_ID6_1600X1200: | 775 | case LCD_PANEL_ID6_1600X1200: |
777 | switch (vmode_index) { | 776 | switch (compact_mode) { |
778 | case VIA_RES_640X400: | 777 | case viafb_compact_res(640, 400): |
779 | case VIA_RES_640X480: | 778 | case viafb_compact_res(640, 480): |
780 | reg_num = NUM_TOTAL_P880_LCD_RES_6X4_16X12; | 779 | reg_num = NUM_TOTAL_P880_LCD_RES_6X4_16X12; |
781 | lcd_patch_reg = P880_LCD_RES_6X4_16X12; | 780 | lcd_patch_reg = P880_LCD_RES_6X4_16X12; |
782 | break; | 781 | break; |
783 | case VIA_RES_720X480: | 782 | case viafb_compact_res(720, 480): |
784 | case VIA_RES_720X576: | 783 | case viafb_compact_res(720, 576): |
785 | reg_num = NUM_TOTAL_P880_LCD_RES_7X4_16X12; | 784 | reg_num = NUM_TOTAL_P880_LCD_RES_7X4_16X12; |
786 | lcd_patch_reg = P880_LCD_RES_7X4_16X12; | 785 | lcd_patch_reg = P880_LCD_RES_7X4_16X12; |
787 | break; | 786 | break; |
788 | case VIA_RES_800X600: | 787 | case viafb_compact_res(800, 600): |
789 | reg_num = NUM_TOTAL_P880_LCD_RES_8X6_16X12; | 788 | reg_num = NUM_TOTAL_P880_LCD_RES_8X6_16X12; |
790 | lcd_patch_reg = P880_LCD_RES_8X6_16X12; | 789 | lcd_patch_reg = P880_LCD_RES_8X6_16X12; |
791 | break; | 790 | break; |
792 | case VIA_RES_1024X768: | 791 | case viafb_compact_res(1024, 768): |
793 | reg_num = NUM_TOTAL_P880_LCD_RES_10X7_16X12; | 792 | reg_num = NUM_TOTAL_P880_LCD_RES_10X7_16X12; |
794 | lcd_patch_reg = P880_LCD_RES_10X7_16X12; | 793 | lcd_patch_reg = P880_LCD_RES_10X7_16X12; |
795 | break; | 794 | break; |
796 | case VIA_RES_1280X768: | 795 | case viafb_compact_res(1280, 768): |
797 | case VIA_RES_1280X960: | 796 | case viafb_compact_res(1280, 960): |
798 | case VIA_RES_1280X1024: | 797 | case viafb_compact_res(1280, 1024): |
799 | reg_num = NUM_TOTAL_P880_LCD_RES_12X10_16X12; | 798 | reg_num = NUM_TOTAL_P880_LCD_RES_12X10_16X12; |
800 | lcd_patch_reg = P880_LCD_RES_12X10_16X12; | 799 | lcd_patch_reg = P880_LCD_RES_12X10_16X12; |
801 | break; | 800 | break; |
@@ -824,10 +823,6 @@ static void load_lcd_p880_patch_tbl(int set_hres, int set_vres, | |||
824 | static void load_lcd_patch_regs(int set_hres, int set_vres, | 823 | static void load_lcd_patch_regs(int set_hres, int set_vres, |
825 | int panel_id, int set_iga) | 824 | int panel_id, int set_iga) |
826 | { | 825 | { |
827 | int vmode_index; | ||
828 | |||
829 | vmode_index = viafb_get_mode_index(set_hres, set_vres); | ||
830 | |||
831 | viafb_unlock_crt(); | 826 | viafb_unlock_crt(); |
832 | 827 | ||
833 | /* Patch for simultaneous & Expansion */ | 828 | /* Patch for simultaneous & Expansion */ |
@@ -949,29 +944,26 @@ void viafb_lcd_set_mode(struct crt_mode_table *mode_crt_table, | |||
949 | struct lvds_setting_information *plvds_setting_info, | 944 | struct lvds_setting_information *plvds_setting_info, |
950 | struct lvds_chip_information *plvds_chip_info) | 945 | struct lvds_chip_information *plvds_chip_info) |
951 | { | 946 | { |
952 | int video_index = plvds_setting_info->lcd_panel_size; | ||
953 | int set_iga = plvds_setting_info->iga_path; | 947 | int set_iga = plvds_setting_info->iga_path; |
954 | int mode_bpp = plvds_setting_info->bpp; | 948 | int mode_bpp = plvds_setting_info->bpp; |
955 | int set_hres, set_vres; | 949 | int set_hres = plvds_setting_info->h_active; |
956 | int panel_hres, panel_vres; | 950 | int set_vres = plvds_setting_info->v_active; |
951 | int panel_hres = plvds_setting_info->lcd_panel_hres; | ||
952 | int panel_vres = plvds_setting_info->lcd_panel_vres; | ||
957 | u32 pll_D_N; | 953 | u32 pll_D_N; |
958 | int offset; | 954 | int offset; |
959 | struct display_timing mode_crt_reg, panel_crt_reg; | 955 | struct display_timing mode_crt_reg, panel_crt_reg; |
960 | struct crt_mode_table *panel_crt_table = NULL; | 956 | struct crt_mode_table *panel_crt_table = NULL; |
961 | struct VideoModeTable *vmode_tbl = NULL; | 957 | struct VideoModeTable *vmode_tbl = viafb_get_mode(panel_hres, |
958 | panel_vres); | ||
962 | 959 | ||
963 | DEBUG_MSG(KERN_INFO "viafb_lcd_set_mode!!\n"); | 960 | DEBUG_MSG(KERN_INFO "viafb_lcd_set_mode!!\n"); |
964 | /* Get mode table */ | 961 | /* Get mode table */ |
965 | mode_crt_reg = mode_crt_table->crtc; | 962 | mode_crt_reg = mode_crt_table->crtc; |
966 | /* Get panel table Pointer */ | 963 | /* Get panel table Pointer */ |
967 | vmode_tbl = viafb_get_modetbl_pointer(video_index); | ||
968 | panel_crt_table = vmode_tbl->crtc; | 964 | panel_crt_table = vmode_tbl->crtc; |
969 | panel_crt_reg = panel_crt_table->crtc; | 965 | panel_crt_reg = panel_crt_table->crtc; |
970 | DEBUG_MSG(KERN_INFO "bellow viafb_lcd_set_mode!!\n"); | 966 | DEBUG_MSG(KERN_INFO "bellow viafb_lcd_set_mode!!\n"); |
971 | set_hres = plvds_setting_info->h_active; | ||
972 | set_vres = plvds_setting_info->v_active; | ||
973 | panel_hres = plvds_setting_info->lcd_panel_hres; | ||
974 | panel_vres = plvds_setting_info->lcd_panel_vres; | ||
975 | if (VT1636_LVDS == plvds_chip_info->lvds_chip_name) | 967 | if (VT1636_LVDS == plvds_chip_info->lvds_chip_name) |
976 | viafb_init_lvds_vt1636(plvds_setting_info, plvds_chip_info); | 968 | viafb_init_lvds_vt1636(plvds_setting_info, plvds_chip_info); |
977 | plvds_setting_info->vclk = panel_crt_table->clk; | 969 | plvds_setting_info->vclk = panel_crt_table->clk; |