2 * This program is free software; you can redistribute it and/or modify it
3 * under the terms of the GNU General Public License as published by the
4 * Free Software Foundation; either version 2 of the License, or (at your
5 * option) any later version.
7 * This program is distributed in the hope that it will be useful, but
8 * WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
10 * General Public License for more details.
12 * You should have received a copy of the GNU General Public License along
13 * with this program; if not, write to the Free Software Foundation, Inc.,
14 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
16 #include <linux/kernel.h>
17 #include <linux/types.h>
18 #include <linux/ld9040.h>
20 #define SLEEPMSEC 0x1000
22 #define DEFMASK 0xFF00
23 #define COMMAND_ONLY 0xFE
24 #define DATA_ONLY 0xFF
26 static const unsigned short SEQ_INIT_DISPLAY_SETTING[] = {
32 DATA_ONLY, 0x96, DATA_ONLY, 0x1D, DATA_ONLY, 0x00, DATA_ONLY, 0x00,
33 DATA_ONLY, 0x01, DATA_ONLY, 0xDF, DATA_ONLY, 0x00, DATA_ONLY, 0x00,
34 DATA_ONLY, 0x03, DATA_ONLY, 0x1F, DATA_ONLY, 0x00, DATA_ONLY, 0x00,
35 DATA_ONLY, 0x00, DATA_ONLY, 0x00, DATA_ONLY, 0x00, DATA_ONLY, 0x01,
36 DATA_ONLY, 0x08, DATA_ONLY, 0x0F, DATA_ONLY, 0x16, DATA_ONLY, 0x1D,
37 DATA_ONLY, 0x24, DATA_ONLY, 0x2A, DATA_ONLY, 0x31, DATA_ONLY, 0x38,
38 DATA_ONLY, 0x3F, DATA_ONLY, 0x46,
63 /* DISPLAY_CONDITION */
90 static const unsigned short SEQ_INIT_ETC_SETTING[] = {
121 static const unsigned short SEQ_USER_SETTING[] = {
127 static const unsigned short SEQ_ACL_ON[] = {
130 DATA_ONLY, 0x96, DATA_ONLY, 0x1D, DATA_ONLY, 0x00, DATA_ONLY, 0x00,
131 DATA_ONLY, 0x01, DATA_ONLY, 0xDF, DATA_ONLY, 0x00, DATA_ONLY, 0x00,
132 DATA_ONLY, 0x03, DATA_ONLY, 0x1F, DATA_ONLY, 0x00, DATA_ONLY, 0x00,
133 DATA_ONLY, 0x00, DATA_ONLY, 0x00, DATA_ONLY, 0x00, DATA_ONLY, 0x01,
134 DATA_ONLY, 0x08, DATA_ONLY, 0x0F, DATA_ONLY, 0x16, DATA_ONLY, 0x1D,
135 DATA_ONLY, 0x24, DATA_ONLY, 0x2A, DATA_ONLY, 0x31, DATA_ONLY, 0x38,
136 DATA_ONLY, 0x3F, DATA_ONLY, 0x46,
143 static const unsigned short SEQ_ACL_OFF[] = {
150 static const unsigned short SEQ_ACL_40P[] = {
153 DATA_ONLY, 0x96, DATA_ONLY, 0x1D, DATA_ONLY, 0x00, DATA_ONLY, 0x00,
154 DATA_ONLY, 0x01, DATA_ONLY, 0xDF, DATA_ONLY, 0x00, DATA_ONLY, 0x00,
155 DATA_ONLY, 0x03, DATA_ONLY, 0x1F, DATA_ONLY, 0x00, DATA_ONLY, 0x00,
156 DATA_ONLY, 0x00, DATA_ONLY, 0x00, DATA_ONLY, 0x00, DATA_ONLY, 0x01,
157 DATA_ONLY, 0x06, DATA_ONLY, 0x11, DATA_ONLY, 0x1A, DATA_ONLY, 0x20,
158 DATA_ONLY, 0x25, DATA_ONLY, 0x29, DATA_ONLY, 0x2D, DATA_ONLY, 0x30,
159 DATA_ONLY, 0x33, DATA_ONLY, 0x35,
167 static const unsigned short SEQ_ACL_43P[] = {
170 DATA_ONLY, 0x96, DATA_ONLY, 0x1D, DATA_ONLY, 0x00, DATA_ONLY, 0x00,
171 DATA_ONLY, 0x01, DATA_ONLY, 0xDF, DATA_ONLY, 0x00, DATA_ONLY, 0x00,
172 DATA_ONLY, 0x03, DATA_ONLY, 0x1F, DATA_ONLY, 0x00, DATA_ONLY, 0x00,
173 DATA_ONLY, 0x00, DATA_ONLY, 0x00, DATA_ONLY, 0x00, DATA_ONLY, 0x01,
174 DATA_ONLY, 0x07, DATA_ONLY, 0x12, DATA_ONLY, 0x1C, DATA_ONLY, 0x23,
175 DATA_ONLY, 0x29, DATA_ONLY, 0x2D, DATA_ONLY, 0x31, DATA_ONLY, 0x34,
176 DATA_ONLY, 0x37, DATA_ONLY, 0x3A,
186 static const unsigned short SEQ_ACL_45P[] = {
189 DATA_ONLY, 0x96, DATA_ONLY, 0x1D, DATA_ONLY, 0x00, DATA_ONLY, 0x00,
190 DATA_ONLY, 0x01, DATA_ONLY, 0xDF, DATA_ONLY, 0x00, DATA_ONLY, 0x00,
191 DATA_ONLY, 0x03, DATA_ONLY, 0x1F, DATA_ONLY, 0x00, DATA_ONLY, 0x00,
192 DATA_ONLY, 0x00, DATA_ONLY, 0x00, DATA_ONLY, 0x00, DATA_ONLY, 0x01,
193 DATA_ONLY, 0x07, DATA_ONLY, 0x13, DATA_ONLY, 0x1E, DATA_ONLY, 0x25,
194 DATA_ONLY, 0x2B, DATA_ONLY, 0x30, DATA_ONLY, 0x34, DATA_ONLY, 0x37,
195 DATA_ONLY, 0x3A, DATA_ONLY, 0x3D,
203 static const unsigned short SEQ_ACL_47P[] = {
206 DATA_ONLY, 0x96, DATA_ONLY, 0x1D, DATA_ONLY, 0x00, DATA_ONLY, 0x00,
207 DATA_ONLY, 0x01, DATA_ONLY, 0xDF, DATA_ONLY, 0x00, DATA_ONLY, 0x00,
208 DATA_ONLY, 0x03, DATA_ONLY, 0x1F, DATA_ONLY, 0x00, DATA_ONLY, 0x00,
209 DATA_ONLY, 0x00, DATA_ONLY, 0x00, DATA_ONLY, 0x00, DATA_ONLY, 0x01,
210 DATA_ONLY, 0x07, DATA_ONLY, 0x14, DATA_ONLY, 0x20, DATA_ONLY, 0x28,
211 DATA_ONLY, 0x2E, DATA_ONLY, 0x33, DATA_ONLY, 0x37, DATA_ONLY, 0x3B,
212 DATA_ONLY, 0x3E, DATA_ONLY, 0x41,
219 static const unsigned short SEQ_ACL_48P[] = {
222 DATA_ONLY, 0x96, DATA_ONLY, 0x1D, DATA_ONLY, 0x00, DATA_ONLY, 0x00,
223 DATA_ONLY, 0x01, DATA_ONLY, 0xDF, DATA_ONLY, 0x00, DATA_ONLY, 0x00,
224 DATA_ONLY, 0x03, DATA_ONLY, 0x1F, DATA_ONLY, 0x00, DATA_ONLY, 0x00,
225 DATA_ONLY, 0x00, DATA_ONLY, 0x00, DATA_ONLY, 0x00, DATA_ONLY, 0x01,
226 DATA_ONLY, 0x08, DATA_ONLY, 0x15, DATA_ONLY, 0x20, DATA_ONLY, 0x29,
227 DATA_ONLY, 0x2F, DATA_ONLY, 0x34, DATA_ONLY, 0x39, DATA_ONLY, 0x3D,
228 DATA_ONLY, 0x40, DATA_ONLY, 0x43,
235 static const unsigned short SEQ_ACL_50P[] = {
238 DATA_ONLY, 0x96, DATA_ONLY, 0x1D, DATA_ONLY, 0x00, DATA_ONLY, 0x00,
239 DATA_ONLY, 0x01, DATA_ONLY, 0xDF, DATA_ONLY, 0x00, DATA_ONLY, 0x00,
240 DATA_ONLY, 0x03, DATA_ONLY, 0x1F, DATA_ONLY, 0x00, DATA_ONLY, 0x00,
241 DATA_ONLY, 0x00, DATA_ONLY, 0x00, DATA_ONLY, 0x00, DATA_ONLY, 0x01,
242 DATA_ONLY, 0x08, DATA_ONLY, 0x16, DATA_ONLY, 0x22, DATA_ONLY, 0x2B,
243 DATA_ONLY, 0x31, DATA_ONLY, 0x37, DATA_ONLY, 0x3B, DATA_ONLY, 0x3F,
244 DATA_ONLY, 0x43, DATA_ONLY, 0x46,
251 static const unsigned short *ACL_cutoff_set[] = {
261 static const unsigned short SEQ_ELVSS_ON[] = {
270 static const unsigned short SEQ_ELVSS_49[] = {
279 static const unsigned short SEQ_ELVSS_41[] = {
287 static const unsigned short SEQ_ELVSS_39[] = {
295 static const unsigned short SEQ_ELVSS_35[] = {
303 static const unsigned short *SEQ_ELVSS_set[] = {
310 static const unsigned short SEQ_GTCON[] = {
316 static const unsigned short SEQ_PANEL_CONDITION[] = {
343 static const unsigned short SEQ_GAMMA_SET1[] = {
368 static const unsigned short SEQ_GAMMA_CTRL[] = {
375 static const unsigned short SEQ_GAMMA_START[] = {
381 static const unsigned short SEQ_APON[] = {
391 static const unsigned short SEQ_DISPCTL[] = {
402 static const unsigned short SEQ_MANPWR[] = {
407 static const unsigned short SEQ_PWR_CTRL[] = {
418 static const unsigned short SEQ_SLPOUT[] = {
424 static const unsigned short SEQ_SLPIN[] = {
429 static const unsigned short SEQ_DISPON[] = {
434 static const unsigned short SEQ_DISPOFF[] = {
439 static const unsigned short SEQ_VCI1_1ST_EN[] = {
449 static const unsigned short SEQ_VL1_EN[] = {
459 static const unsigned short SEQ_VL2_EN[] = {
469 static const unsigned short SEQ_VCI1_2ND_EN[] = {
479 static const unsigned short SEQ_VL3_EN[] = {
489 static const unsigned short SEQ_VREG1_AMP_EN[] = {
499 static const unsigned short SEQ_VGH_AMP_EN[] = {
509 static const unsigned short SEQ_VGL_AMP_EN[] = {
519 static const unsigned short SEQ_VMOS_AMP_EN[] = {
529 static const unsigned short SEQ_VINT_AMP_EN[] = {
533 /* DATA_ONLY, 0x71, VMOS/VBL/VBH not used */
537 /* DATA_ONLY, 0x02, VMOS/VBL/VBH not used */
541 static const unsigned short SEQ_VBH_AMP_EN[] = {
551 static const unsigned short SEQ_VBL_AMP_EN[] = {
561 static const unsigned short SEQ_GAM_AMP_EN[] = {
565 /* DATA_ONLY, 0x73, VMOS/VBL/VBH not used */
569 /* DATA_ONLY, 0x02, VMOS/VBL/VBH not used */
573 static const unsigned short SEQ_SD_AMP_EN[] = {
577 /* DATA_ONLY, 0x73, VMOS/VBL/VBH not used */
581 /* DATA_ONLY, 0x02, VMOS/VBL/VBH not used */
585 static const unsigned short SEQ_GLS_EN[] = {
589 /* DATA_ONLY, 0x73, VMOS/VBL/VBH not used */
593 /* DATA_ONLY, 0x02, VMOS/VBL/VBH not used */
597 static const unsigned short SEQ_ELS_EN[] = {
601 /* DATA_ONLY, 0x73, VMOS/VBL/VBH not used */
605 /* DATA_ONLY, 0x02, VMOS/VBL/VBH not used */
609 static const unsigned short SEQ_EL_ON[] = {
613 /* DATA_ONLY, 0x73, VMOS/VBL/VBH not used */
617 /* DATA_ONLY, 0x02, VMOS/VBL/VBH not used */
621 #define MAX_GAMMA_LEVEL 25
622 #define GAMMA_TABLE_COUNT 21
624 /* [U1] OCTA 4.27 XVGA - gamma value: 2.2 */
626 static const unsigned int ld9040_22_300[] = {
627 0x00, 0xCA, 0xC4, 0xB8, 0xC6, 0x00, 0xAB
628 , 0x00, 0xC3, 0xC1, 0xB4, 0xC0, 0x00, 0xD1
629 , 0x00, 0xC6, 0xC2, 0xB1, 0xBF, 0x00, 0xDF
632 static const unsigned int ld9040_22_290[] = {
633 0x00, 0xCB, 0xC5, 0xB8, 0xC6, 0x00, 0xAA
634 , 0x00, 0xC3, 0xC2, 0xB5, 0xC1, 0x00, 0xCF
635 , 0x00, 0xC7, 0xC2, 0xB2, 0xBF, 0x00, 0xDE
638 static const unsigned int ld9040_22_280[] = {
639 0x00, 0xCC, 0xC5, 0xBA, 0xC6, 0x00, 0xA7
640 , 0x00, 0xC3, 0xC1, 0xB6, 0xC2, 0x00, 0xCB
641 , 0x00, 0xC7, 0xC2, 0xB4, 0xBF, 0x00, 0xDA
644 static const unsigned int ld9040_22_270[] = {
645 0x00, 0xCC, 0xC4, 0xBB, 0xC7, 0x00, 0xA3
646 , 0x00, 0xC3, 0xC2, 0xB6, 0xC2, 0x00, 0xC8
647 , 0x00, 0xC8, 0xC1, 0xB3, 0xC1, 0x00, 0xD6
649 static const unsigned int ld9040_22_260[] = {
650 0x00, 0xCD, 0xC5, 0xB6, 0xC8, 0x00, 0xA3
651 , 0x00, 0xC3, 0xC3, 0xB6, 0xC3, 0x00, 0xC8
652 , 0x00, 0xC8, 0xC3, 0xB4, 0xC2, 0x00, 0xD5
655 static const unsigned int ld9040_22_250[] = {
656 0x00, 0xCC, 0xC5, 0xBD, 0xCA, 0x00, 0xA0
657 , 0x00, 0xC3, 0xC3, 0xB8, 0xC4, 0x00, 0xC4
658 , 0x00, 0xC8, 0xC2, 0xB5, 0xC3, 0x00, 0xD2
661 static const unsigned int ld9040_22_240[] = {
662 0x00, 0xCC, 0xC5, 0xBD, 0xCA, 0x00, 0x9E
663 , 0x00, 0xC4, 0xC4, 0xB8, 0xC4, 0x00, 0xC1
664 , 0x00, 0xC9, 0xC3, 0xB6, 0xC2, 0x00, 0xCF
667 static const unsigned int ld9040_22_230[] = {
668 0x00, 0xCD, 0xC6, 0xBD, 0xCA, 0x00, 0x9B
669 , 0x00, 0xC3, 0xC4, 0xB9, 0xC4, 0x00, 0xBE
670 , 0x00, 0xCA, 0xC4, 0xB6, 0xC3, 0x00, 0xCB
673 static const unsigned int ld9040_22_220[] = {
674 0x00, 0xCD, 0xC6, 0xBD, 0xCC, 0x00, 0x98
675 , 0x00, 0xC3, 0xC5, 0xB9, 0xC5, 0x00, 0xBA
676 , 0x00, 0xC9, 0xC4, 0xB7, 0xC4, 0x00, 0xC7
679 static const unsigned int ld9040_22_210[] = {
680 0x00, 0xCE, 0xC7, 0xBD, 0xCC, 0x00, 0x95
681 , 0x00, 0xC3, 0xC4, 0xBA, 0xC6, 0x00, 0xB7
682 , 0x00, 0xCA, 0xC5, 0xB8, 0xC4, 0x00, 0xC3
685 static const unsigned int ld9040_22_200[] = {
686 0x00, 0xCF, 0xC7, 0xBE, 0xCD, 0x00, 0x92
687 , 0x00, 0xC3, 0xC5, 0xBA, 0xC7, 0x00, 0xB3
688 , 0x00, 0xCB, 0xC5, 0xB9, 0xC4, 0x00, 0xC0
691 static const unsigned int ld9040_22_190[] = {
692 0x00, 0xCE, 0xC8, 0xBF, 0xCD, 0x00, 0x8F
693 , 0x00, 0xC3, 0xC5, 0xBA, 0xC8, 0x00, 0xAF
694 , 0x00, 0xCA, 0xC5, 0xBA, 0xC5, 0x00, 0xBC
697 static const unsigned int ld9040_22_180[] = {
698 0x00, 0xCE, 0xC7, 0xC1, 0xCD, 0x00, 0x8C
699 , 0x00, 0xC4, 0xC5, 0xBB, 0xC8, 0x00, 0xAC
700 , 0x00, 0xCA, 0xC4, 0xBB, 0xC6, 0x00, 0xB8
703 static const unsigned int ld9040_22_170[] = {
704 0x00, 0xCE, 0xC7, 0xC1, 0xCF, 0x00, 0x88
705 , 0x00, 0xC3, 0xC5, 0xBC, 0xCA, 0x00, 0xA7
706 , 0x00, 0xCB, 0xC5, 0xBB, 0xC7, 0x00, 0xB3
709 static const unsigned int ld9040_22_160[] = {
710 0x00, 0xCE, 0xC9, 0xC1, 0xCF, 0x00, 0x85
711 , 0x00, 0xC2, 0xC6, 0xBD, 0xCA, 0x00, 0xA3
712 , 0x00, 0xCB, 0xC6, 0xBB, 0xC8, 0x00, 0xAF
715 static const unsigned int ld9040_22_150[] = {
716 0x00, 0xCF, 0xC9, 0xC1, 0xD1, 0x00, 0x82
717 , 0x00, 0xC3, 0xC6, 0xBE, 0xCB, 0x00, 0x9F
718 , 0x00, 0xCC, 0xC6, 0xBB, 0xC9, 0x00, 0xAB
721 static const unsigned int ld9040_22_140[] = {
722 0x00, 0xCF, 0xCA, 0xC1, 0xD0, 0x00, 0x7F
723 , 0x00, 0xC3, 0xC6, 0xBF, 0xCB, 0x00, 0x9B
724 , 0x00, 0xCC, 0xC8, 0xBD, 0xC9, 0x00, 0xA6
727 static const unsigned int ld9040_22_130[] = {
728 0x00, 0xCF, 0xCB, 0xC2, 0xD1, 0x00, 0x7B
729 , 0x00, 0xC2, 0xC7, 0xBF, 0xCC, 0x00, 0x97
730 , 0x00, 0xCC, 0xC8, 0xBE, 0xCB, 0x00, 0xA1
733 static const unsigned int ld9040_22_120[] = {
734 0x00, 0xD0, 0xCB, 0xC2, 0xD3, 0x00, 0x77
735 , 0x00, 0xC2, 0xC8, 0xC0, 0xCD, 0x00, 0x92
736 , 0x00, 0xCD, 0xC8, 0xBE, 0xCC, 0x00, 0x9C
739 static const unsigned int ld9040_22_110[] = {
740 0x00, 0xD0, 0xCB, 0xC3, 0xD3, 0x00, 0x74
741 , 0x00, 0xC2, 0xC8, 0xC1, 0xCE, 0x00, 0x8D
742 , 0x00, 0xCD, 0xC8, 0xBF, 0xCC, 0x00, 0x98
745 static const unsigned int ld9040_22_100[] = {
746 0x00, 0xD1, 0xCB, 0xC5, 0xD4, 0x00, 0x6F
747 , 0x00, 0xC2, 0xC8, 0xC2, 0xCF, 0x00, 0x88
748 , 0x00, 0xCE, 0xC9, 0xC0, 0xCE, 0x00, 0x92
751 static const unsigned int ld9040_22_90[] = {
752 0x00, 0xD2, 0xCA, 0xC5, 0xD4, 0x00, 0x6A
753 , 0x00, 0xC0, 0xC8, 0xC2, 0xD0, 0x00, 0x82
754 , 0x00, 0xCE, 0xC9, 0xC0, 0xCF, 0x00, 0x8B
757 static const unsigned int ld9040_22_80[] = {
758 0x00, 0xD2, 0xCB, 0xC6, 0xD7, 0x00, 0x65
759 , 0x00, 0xC0, 0xC9, 0xC3, 0xD2, 0x00, 0x7C
760 , 0x00, 0xCE, 0xCA, 0xC2, 0xD1, 0x00, 0x85
763 static const unsigned int ld9040_22_70[] = {
764 0x00, 0xD4, 0xCD, 0xC7, 0xD7, 0x00, 0x60
765 , 0x00, 0xBC, 0xCB, 0xC4, 0xD3, 0x00, 0x76
766 , 0x00, 0xCF, 0xCC, 0xC3, 0xD2, 0x00, 0x7F
769 static const unsigned int ld9040_22_60[] = {
770 0x00, 0xD5, 0xCD, 0xC8, 0xD7, 0x00, 0x5B
771 , 0x00, 0xBA, 0xCA, 0xC5, 0xD4, 0x00, 0x71
772 , 0x00, 0xD0, 0xCC, 0xC5, 0xD3, 0x00, 0x78
775 static const unsigned int ld9040_22_50[] = {
776 0x00, 0xD6, 0xCE, 0xCA, 0xD8, 0x00, 0x55
777 , 0x00, 0xB9, 0xCA, 0xC6, 0xD6, 0x00, 0x69
778 , 0x00, 0xD1, 0xCC, 0xC6, 0xD5, 0x00, 0x71
781 static const unsigned int ld9040_22_40[] = {
782 0x00, 0xD9, 0xCE, 0xCA, 0xD9, 0x00, 0x4F
783 , 0x00, 0xB5, 0xCA, 0xC7, 0xD8, 0x00, 0x61
784 , 0x00, 0xD2, 0xCE, 0xC6, 0xD6, 0x00, 0x69
787 static const unsigned int ld9040_22_30_dimming[] = {
788 0x00, 0xD9, 0xD3, 0xCC, 0xDA, 0x00, 0x46
789 , 0x00, 0xB1, 0xC9, 0xC9, 0xD9, 0x00, 0x58
790 , 0x00, 0xD2, 0xD0, 0xC9, 0xD8, 0x00, 0x5E
793 static const unsigned int *p22Gamma_set[] = {
794 ld9040_22_30_dimming,
821 /* OCTA 4.52 XVGA - gamma value: 1.9 */
822 static const unsigned int ld9040_19_300[] = {
823 0x00, 0xCD, 0xC8, 0xC0, 0xCC, 0x00, 0xAA,
824 0x00, 0xC9, 0xC7, 0xBA, 0xC6, 0x00, 0xD0,
825 0x00, 0xCA, 0xC5, 0xB8, 0xC6, 0x00, 0xDE
828 static const unsigned int ld9040_19_290[] = {
829 0x00, 0xCF, 0xC7, 0xC0, 0xCE, 0x00, 0xAB,
830 0x00, 0xCA, 0xC7, 0xBB, 0xC8, 0x00, 0xD0,
831 0x00, 0xCC, 0xC5, 0xB8, 0xC7, 0x00, 0xDF
834 static const unsigned int ld9040_19_280[] = {
835 0x00, 0xCF, 0xC9, 0xC0, 0xCD, 0x00, 0xA9,
836 0x00, 0xCA, 0xC8, 0xBC, 0xC8, 0x00, 0xCD,
837 0x00, 0xCB, 0xC7, 0xB9, 0xC6, 0x00, 0xDC
840 static const unsigned int ld9040_19_270[] = {
841 0x00, 0xD0, 0xCA, 0xC0, 0xCD, 0x00, 0xA7,
842 0x00, 0xCA, 0xC8, 0xBC, 0xC9, 0x00, 0xCA,
843 0x00, 0xCB, 0xC8, 0xBA, 0xC6, 0x00, 0xD9
846 static const unsigned int ld9040_19_260[] = {
847 0x00, 0xD0, 0xCA, 0xC1, 0xCD, 0x00, 0xA5,
848 0x00, 0xCA, 0xC7, 0xBE, 0xC9, 0x00, 0xC7,
849 0x00, 0xCC, 0xC7, 0xBB, 0xC7, 0x00, 0xD6
852 static const unsigned int ld9040_19_250[] = {
853 0x00, 0xD0, 0xCC, 0xC1, 0xCD, 0x00, 0xA2,
854 0x00, 0xCB, 0xC8, 0xBD, 0xCA, 0x00, 0xC4,
855 0x00, 0xCC, 0xC8, 0xBB, 0xC8, 0x00, 0xD2
858 static const unsigned int ld9040_19_240[] = {
859 0x00, 0xCF, 0xCB, 0xC2, 0xCE, 0x00, 0xA0,
860 0x00, 0xCB, 0xC8, 0xBE, 0xCA, 0x00, 0xC1,
861 0x00, 0xCB, 0xC8, 0xBC, 0xC8, 0x00, 0xCF
864 static const unsigned int ld9040_19_230[] = {
865 0x00, 0xCF, 0xCA, 0xC3, 0xD0, 0x00, 0x9C,
866 0x00, 0xCB, 0xC8, 0xBF, 0xCB, 0x00, 0xBD,
867 0x00, 0xCD, 0xC7, 0xBC, 0xCA, 0x00, 0xCA
870 static const unsigned int ld9040_19_220[] = {
871 0x00, 0xCF, 0xCB, 0xC4, 0xD0, 0x00, 0x99,
872 0x00, 0xCB, 0xCA, 0xBF, 0xCB, 0x00, 0xBA,
873 0x00, 0xCC, 0xC8, 0xBD, 0xCB, 0x00, 0xC6
876 static const unsigned int ld9040_19_210[] = {
877 0x00, 0xD0, 0xCA, 0xC4, 0xD1, 0x00, 0x96,
878 0x00, 0xCB, 0xC9, 0xC0, 0xCC, 0x00, 0xB6,
879 0x00, 0xCD, 0xC8, 0xBD, 0xCB, 0x00, 0xC3
882 static const unsigned int ld9040_19_200[] = {
883 0x00, 0xD1, 0xCB, 0xC4, 0xD2, 0x00, 0x93,
884 0x00, 0xCB, 0xCA, 0xC0, 0xCD, 0x00, 0xB2,
885 0x00, 0xCD, 0xCA, 0xBE, 0xCB, 0x00, 0xBF
889 static const unsigned int ld9040_19_190[] = {
890 0x00, 0xD1, 0xCC, 0xC5, 0xD2, 0x00, 0x90,
891 0x00, 0xCB, 0xCA, 0xC1, 0xCE, 0x00, 0xAE,
892 0x00, 0xCD, 0xCA, 0xC0, 0xCB, 0x00, 0xBB
896 static const unsigned int ld9040_19_180[] = {
897 0x00, 0xD2, 0xCC, 0xC5, 0xD2, 0x00, 0x8D,
898 0x00, 0xCC, 0xC9, 0xC2, 0xCE, 0x00, 0xAB,
899 0x00, 0xCD, 0xCA, 0xC0, 0xCC, 0x00, 0xB7
903 static const unsigned int ld9040_19_170[] = {
904 0x00, 0xD2, 0xCC, 0xC6, 0xD3, 0x00, 0x89,
905 0x00, 0xCC, 0xCA, 0xC2, 0xCF, 0x00, 0xA7,
906 0x00, 0xCE, 0xC9, 0xC1, 0xCE, 0x00, 0xB2
909 static const unsigned int ld9040_19_160[] = {
910 0x00, 0xD2, 0xCC, 0xC6, 0xD5, 0x00, 0x86,
911 0x00, 0xCC, 0xCB, 0xC2, 0xCF, 0x00, 0xA3,
912 0x00, 0xCF, 0xC9, 0xC0, 0xCF, 0x00, 0xAF
915 static const unsigned int ld9040_19_150[] = {
916 0x00, 0xD1, 0xCD, 0xC7, 0xD6, 0x00, 0x82,
917 0x00, 0xCB, 0xCC, 0xC4, 0xD0, 0x00, 0x9F,
918 0x00, 0xCE, 0xCA, 0xC1, 0xCF, 0x00, 0xAA
921 static const unsigned int ld9040_19_140[] = {
922 0x00, 0xD2, 0xCD, 0xC6, 0xD8, 0x00, 0x7E,
923 0x00, 0xCB, 0xCC, 0xC4, 0xD3, 0x00, 0x99,
924 0x00, 0xCF, 0xCB, 0xC1, 0xD1, 0x00, 0xA5
927 static const unsigned int ld9040_19_130[] = {
928 0x00, 0xD3, 0xCE, 0xC7, 0xD6, 0x00, 0x7B,
929 0x00, 0xCB, 0xCD, 0xC5, 0xD2, 0x00, 0x96,
930 0x00, 0xD0, 0xCD, 0xC3, 0xCF, 0x00, 0xA1
933 static const unsigned int ld9040_19_120[] = {
934 0x00, 0xD4, 0xCE, 0xC8, 0xD7, 0x00, 0x77,
935 0x00, 0xCB, 0xCD, 0xC6, 0xD3, 0x00, 0x91,
936 0x00, 0xD0, 0xCC, 0xC5, 0xD1, 0x00, 0x9B
939 static const unsigned int ld9040_19_110[] = {
940 0x00, 0xD4, 0xCF, 0xC9, 0xD6, 0x00, 0x74,
941 0x00, 0xCC, 0xCE, 0xC6, 0xD4, 0x00, 0x8C,
942 0x00, 0xCF, 0xCD, 0xC6, 0xD1, 0x00, 0x97
945 static const unsigned int ld9040_19_100[] = {
946 0x00, 0xD4, 0xCD, 0xCB, 0xD8, 0x00, 0x6F,
947 0x00, 0xCB, 0xCE, 0xC7, 0xD5, 0x00, 0x87,
948 0x00, 0xD0, 0xCD, 0xC5, 0xD4, 0x00, 0x91
951 static const unsigned int ld9040_19_90[] = {
952 0x00, 0xD6, 0xCF, 0xCA, 0xDA, 0x00, 0x6A,
953 0x00, 0xCB, 0xCF, 0xC8, 0xD7, 0x00, 0x81,
954 0x00, 0xD2, 0xCE, 0xC5, 0xD6, 0x00, 0x8B
958 static const unsigned int ld9040_19_80[] = {
959 0x00, 0xD7, 0xCF, 0xCB, 0xDA, 0x00, 0x66,
960 0x00, 0xCB, 0xCF, 0xCA, 0xD7, 0x00, 0x7C,
961 0x00, 0xD3, 0xCF, 0xC7, 0xD5, 0x00, 0x86
964 static const unsigned int ld9040_19_70[] = {
965 0x00, 0xD7, 0xD1, 0xCC, 0xDA, 0x00, 0x61,
966 0x00, 0xCA, 0xD0, 0xCA, 0xD8, 0x00, 0x77,
967 0x00, 0xD2, 0xD1, 0xC9, 0xD6, 0x00, 0x7F
970 static const unsigned int ld9040_19_60[] = {
971 0x00, 0xD9, 0xD0, 0xCD, 0xDA, 0x00, 0x5D,
972 0x00, 0xCC, 0xCF, 0xCB, 0xD9, 0x00, 0x70,
973 0x00, 0xD4, 0xD0, 0xCA, 0xD8, 0x00, 0x78
976 static const unsigned int ld9040_19_50[] = {
977 0x00, 0xD8, 0xD2, 0xCF, 0xDB, 0x00, 0x56,
978 0x00, 0xCA, 0xD1, 0xCC, 0xDB, 0x00, 0x69,
979 0x00, 0xD3, 0xD1, 0xCC, 0xDA, 0x00, 0x70
982 static const unsigned int ld9040_19_40[] = {
983 0x00, 0xDA, 0xD2, 0xD1, 0xDC, 0x00, 0x4F,
984 0x00, 0xC6, 0xD2, 0xCF, 0xDB, 0x00, 0x61,
985 0x00, 0xD4, 0xD2, 0xCE, 0xDB, 0x00, 0x68
988 static const unsigned int ld9040_19_30_dimming[] = {
989 0x00, 0xDC, 0xD5, 0xD2, 0xDE, 0x00, 0x46,
990 0x00, 0xC3, 0xD2, 0xCF, 0xDE, 0x00, 0x58,
991 0x00, 0xD3, 0xD4, 0xCF, 0xDD, 0x00, 0x5E
994 static const unsigned int *p19Gamma_set[] = {
995 ld9040_19_30_dimming,
1022 struct ld9040_panel_data s2plus_panel_data = {
1023 .seq_display_set = SEQ_INIT_DISPLAY_SETTING,
1024 .seq_etc_set = SEQ_INIT_ETC_SETTING,
1025 .seq_user_set = SEQ_USER_SETTING,
1026 .seq_panelcondition_set = SEQ_PANEL_CONDITION,
1027 .seq_displayctl_set = SEQ_DISPCTL,
1028 .seq_gtcon_set = SEQ_GTCON,
1029 .seq_manpwr_set = SEQ_MANPWR,
1030 .seq_pwrctl_set = SEQ_PWR_CTRL,
1031 .seq_gamma_set1 = SEQ_GAMMA_SET1,
1032 .display_on = SEQ_DISPON,
1033 .display_off = SEQ_DISPOFF,
1034 .sleep_in = SEQ_SLPIN,
1035 .sleep_out = SEQ_SLPOUT,
1036 .gamma_start = SEQ_GAMMA_START,
1037 .gamma_ctrl = SEQ_GAMMA_CTRL,
1038 .gamma19_table = p19Gamma_set,
1039 .gamma22_table = p22Gamma_set,
1040 .acl_table = ACL_cutoff_set,
1041 .elvss_table = SEQ_ELVSS_set,
1042 .acl_on = SEQ_ACL_ON,
1043 .elvss_on = SEQ_ELVSS_ON,
1044 .gamma_table_size = ARRAY_SIZE(p22Gamma_set),