xref: /linux/drivers/gpu/drm/panel/panel-samsung-s6e8aa5x01-ams561ra01.c (revision 4f38da1f027ea2c9f01bb71daa7a299c191b6940)
1*47d7953dSKaustabh Chakraborty // SPDX-License-Identifier: GPL-2.0-only
2*47d7953dSKaustabh Chakraborty /*
3*47d7953dSKaustabh Chakraborty  * Samsung AMS561RA01 panel with S6E8AA5X01 controller.
4*47d7953dSKaustabh Chakraborty  *
5*47d7953dSKaustabh Chakraborty  * Copyright (C) 2025 Kaustabh Chakraborty <kauschluss@disroot.org>
6*47d7953dSKaustabh Chakraborty  */
7*47d7953dSKaustabh Chakraborty 
8*47d7953dSKaustabh Chakraborty #include <linux/backlight.h>
9*47d7953dSKaustabh Chakraborty #include <linux/gpio/consumer.h>
10*47d7953dSKaustabh Chakraborty #include <linux/module.h>
11*47d7953dSKaustabh Chakraborty #include <linux/of.h>
12*47d7953dSKaustabh Chakraborty #include <linux/regulator/consumer.h>
13*47d7953dSKaustabh Chakraborty 
14*47d7953dSKaustabh Chakraborty #include <drm/drm_mipi_dsi.h>
15*47d7953dSKaustabh Chakraborty #include <drm/drm_modes.h>
16*47d7953dSKaustabh Chakraborty #include <drm/drm_panel.h>
17*47d7953dSKaustabh Chakraborty #include <drm/drm_probe_helper.h>
18*47d7953dSKaustabh Chakraborty 
19*47d7953dSKaustabh Chakraborty /* Manufacturer Command Set */
20*47d7953dSKaustabh Chakraborty #define MCS_AIDCTL		0xb2
21*47d7953dSKaustabh Chakraborty #define MCS_ADAPTIVECTL		0xb5
22*47d7953dSKaustabh Chakraborty #define MCS_ELVSS		0xb6
23*47d7953dSKaustabh Chakraborty #define MCS_TEMPERCTL		0xb8
24*47d7953dSKaustabh Chakraborty #define MCS_PENTILE		0xc0
25*47d7953dSKaustabh Chakraborty #define MCS_GAMMACTL		0xca
26*47d7953dSKaustabh Chakraborty #define MCS_LTPSCTL		0xcb
27*47d7953dSKaustabh Chakraborty #define MCS_PCD			0xcc
28*47d7953dSKaustabh Chakraborty #define MCS_ERRFLAG		0xe7
29*47d7953dSKaustabh Chakraborty #define MCS_ACCESSPROT		0xf0
30*47d7953dSKaustabh Chakraborty #define MCS_DISPCTL		0xf2
31*47d7953dSKaustabh Chakraborty #define MCS_GAMMAUPD		0xf7
32*47d7953dSKaustabh Chakraborty 
33*47d7953dSKaustabh Chakraborty #define GAMMA_CMD_LEN	34
34*47d7953dSKaustabh Chakraborty #define AID_CMD_LEN	3
35*47d7953dSKaustabh Chakraborty 
36*47d7953dSKaustabh Chakraborty static const struct {
37*47d7953dSKaustabh Chakraborty 	u8 gamma[GAMMA_CMD_LEN];
38*47d7953dSKaustabh Chakraborty 	u8 aid[AID_CMD_LEN];
39*47d7953dSKaustabh Chakraborty } s6e8aa5x01_ams561ra01_cmds[] = {
40*47d7953dSKaustabh Chakraborty 	{
41*47d7953dSKaustabh Chakraborty 		/* 5 nits */
42*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
43*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x94,
44*47d7953dSKaustabh Chakraborty 		  0x88, 0x89, 0x8a, 0x87, 0x87, 0x89,
45*47d7953dSKaustabh Chakraborty 		  0x8d, 0x8c, 0x8d, 0x89, 0x8c, 0x8e,
46*47d7953dSKaustabh Chakraborty 		  0x8e, 0x8f, 0x90, 0xa3, 0xa2, 0x9a,
47*47d7953dSKaustabh Chakraborty 		  0xcf, 0xca, 0x9f, 0xe6, 0xff, 0xb4,
48*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
49*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x05, 0xa5 },
50*47d7953dSKaustabh Chakraborty 	}, {
51*47d7953dSKaustabh Chakraborty 		/* 6 nits */
52*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
53*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x95,
54*47d7953dSKaustabh Chakraborty 		  0x88, 0x89, 0x8b, 0x87, 0x87, 0x89,
55*47d7953dSKaustabh Chakraborty 		  0x8c, 0x8a, 0x8c, 0x85, 0x88, 0x8c,
56*47d7953dSKaustabh Chakraborty 		  0x8b, 0x8c, 0x8e, 0xa2, 0xa2, 0x9a,
57*47d7953dSKaustabh Chakraborty 		  0xd0, 0xcc, 0xa2, 0xed, 0xff, 0xb7,
58*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
59*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x05, 0x95 },
60*47d7953dSKaustabh Chakraborty 	}, {
61*47d7953dSKaustabh Chakraborty 		/* 7 nits */
62*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
63*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x95,
64*47d7953dSKaustabh Chakraborty 		  0x88, 0x89, 0x8b, 0x87, 0x87, 0x89,
65*47d7953dSKaustabh Chakraborty 		  0x8c, 0x8a, 0x8c, 0x85, 0x88, 0x8c,
66*47d7953dSKaustabh Chakraborty 		  0x8b, 0x8c, 0x8e, 0xa2, 0xa2, 0x99,
67*47d7953dSKaustabh Chakraborty 		  0xc8, 0xc4, 0x9d, 0xed, 0xff, 0xb7,
68*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
69*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x05, 0x89 },
70*47d7953dSKaustabh Chakraborty 	}, {
71*47d7953dSKaustabh Chakraborty 		/* 8 nits */
72*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
73*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x96,
74*47d7953dSKaustabh Chakraborty 		  0x88, 0x89, 0x8a, 0x87, 0x87, 0x89,
75*47d7953dSKaustabh Chakraborty 		  0x8a, 0x88, 0x8b, 0x83, 0x86, 0x8b,
76*47d7953dSKaustabh Chakraborty 		  0x8c, 0x8b, 0x8d, 0x9d, 0x9f, 0x97,
77*47d7953dSKaustabh Chakraborty 		  0xc7, 0xc3, 0x9c, 0xf5, 0xff, 0xbb,
78*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
79*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x05, 0x7e },
80*47d7953dSKaustabh Chakraborty 	}, {
81*47d7953dSKaustabh Chakraborty 		/* 9 nits */
82*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
83*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x96,
84*47d7953dSKaustabh Chakraborty 		  0x88, 0x89, 0x8a, 0x87, 0x87, 0x89,
85*47d7953dSKaustabh Chakraborty 		  0x89, 0x86, 0x8a, 0x82, 0x84, 0x88,
86*47d7953dSKaustabh Chakraborty 		  0x90, 0x8f, 0x91, 0x95, 0x97, 0x94,
87*47d7953dSKaustabh Chakraborty 		  0xc6, 0xc2, 0x9d, 0xf5, 0xff, 0xbb,
88*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
89*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x05, 0x73 },
90*47d7953dSKaustabh Chakraborty 	}, {
91*47d7953dSKaustabh Chakraborty 		/* 10 nits */
92*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
93*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x96,
94*47d7953dSKaustabh Chakraborty 		  0x88, 0x89, 0x8a, 0x87, 0x87, 0x89,
95*47d7953dSKaustabh Chakraborty 		  0x89, 0x86, 0x8a, 0x82, 0x84, 0x88,
96*47d7953dSKaustabh Chakraborty 		  0x90, 0x8f, 0x91, 0x94, 0x97, 0x93,
97*47d7953dSKaustabh Chakraborty 		  0xc6, 0xc2, 0x9e, 0xec, 0xff, 0xb7,
98*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
99*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x05, 0x67 },
100*47d7953dSKaustabh Chakraborty 	}, {
101*47d7953dSKaustabh Chakraborty 		/* 11 nits */
102*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
103*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x96,
104*47d7953dSKaustabh Chakraborty 		  0x88, 0x89, 0x8a, 0x87, 0x87, 0x89,
105*47d7953dSKaustabh Chakraborty 		  0x89, 0x86, 0x8a, 0x82, 0x84, 0x88,
106*47d7953dSKaustabh Chakraborty 		  0x8b, 0x8b, 0x8d, 0x90, 0x93, 0x92,
107*47d7953dSKaustabh Chakraborty 		  0xc5, 0xc1, 0x9c, 0xf5, 0xff, 0xbb,
108*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
109*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x05, 0x56 },
110*47d7953dSKaustabh Chakraborty 	}, {
111*47d7953dSKaustabh Chakraborty 		/* 12 nits */
112*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
113*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x96,
114*47d7953dSKaustabh Chakraborty 		  0x88, 0x89, 0x8b, 0x87, 0x87, 0x89,
115*47d7953dSKaustabh Chakraborty 		  0x89, 0x86, 0x89, 0x82, 0x84, 0x88,
116*47d7953dSKaustabh Chakraborty 		  0x87, 0x86, 0x8a, 0x8c, 0x90, 0x8f,
117*47d7953dSKaustabh Chakraborty 		  0xcd, 0xc9, 0xa1, 0xec, 0xff, 0xb7,
118*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
119*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x05, 0x4a },
120*47d7953dSKaustabh Chakraborty 	}, {
121*47d7953dSKaustabh Chakraborty 		/* 13 nits */
122*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
123*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x96,
124*47d7953dSKaustabh Chakraborty 		  0x88, 0x89, 0x8b, 0x87, 0x87, 0x89,
125*47d7953dSKaustabh Chakraborty 		  0x89, 0x86, 0x89, 0x82, 0x84, 0x88,
126*47d7953dSKaustabh Chakraborty 		  0x87, 0x86, 0x8a, 0x8c, 0x90, 0x8e,
127*47d7953dSKaustabh Chakraborty 		  0xc4, 0xbf, 0x9c, 0xf5, 0xff, 0xbb,
128*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
129*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x05, 0x3b },
130*47d7953dSKaustabh Chakraborty 	}, {
131*47d7953dSKaustabh Chakraborty 		/* 14 nits */
132*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
133*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x96,
134*47d7953dSKaustabh Chakraborty 		  0x88, 0x89, 0x8b, 0x87, 0x87, 0x89,
135*47d7953dSKaustabh Chakraborty 		  0x89, 0x86, 0x89, 0x82, 0x84, 0x88,
136*47d7953dSKaustabh Chakraborty 		  0x87, 0x86, 0x89, 0x8c, 0x90, 0x8f,
137*47d7953dSKaustabh Chakraborty 		  0xc2, 0xbf, 0x9c, 0xec, 0xff, 0xb7,
138*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
139*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x05, 0x35 },
140*47d7953dSKaustabh Chakraborty 	}, {
141*47d7953dSKaustabh Chakraborty 		/* 15 nits */
142*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
143*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x96,
144*47d7953dSKaustabh Chakraborty 		  0x88, 0x89, 0x8b, 0x87, 0x87, 0x89,
145*47d7953dSKaustabh Chakraborty 		  0x89, 0x86, 0x89, 0x82, 0x84, 0x88,
146*47d7953dSKaustabh Chakraborty 		  0x87, 0x86, 0x89, 0x8c, 0x90, 0x8f,
147*47d7953dSKaustabh Chakraborty 		  0xb7, 0xb6, 0x96, 0xec, 0xff, 0xb7,
148*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
149*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x05, 0x25 },
150*47d7953dSKaustabh Chakraborty 	}, {
151*47d7953dSKaustabh Chakraborty 		/* 16 nits */
152*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
153*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x96,
154*47d7953dSKaustabh Chakraborty 		  0x88, 0x89, 0x8b, 0x87, 0x87, 0x89,
155*47d7953dSKaustabh Chakraborty 		  0x89, 0x86, 0x89, 0x82, 0x84, 0x88,
156*47d7953dSKaustabh Chakraborty 		  0x88, 0x86, 0x89, 0x8c, 0x90, 0x8f,
157*47d7953dSKaustabh Chakraborty 		  0xb7, 0xb6, 0x96, 0xec, 0xff, 0xb7,
158*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
159*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x05, 0x20 },
160*47d7953dSKaustabh Chakraborty 	}, {
161*47d7953dSKaustabh Chakraborty 		/* 17 nits */
162*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
163*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x96,
164*47d7953dSKaustabh Chakraborty 		  0x88, 0x89, 0x8b, 0x87, 0x87, 0x89,
165*47d7953dSKaustabh Chakraborty 		  0x89, 0x86, 0x89, 0x7f, 0x80, 0x86,
166*47d7953dSKaustabh Chakraborty 		  0x86, 0x85, 0x89, 0x88, 0x8c, 0x8e,
167*47d7953dSKaustabh Chakraborty 		  0xbf, 0xbe, 0x9c, 0xec, 0xff, 0xb7,
168*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
169*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x05, 0x11 },
170*47d7953dSKaustabh Chakraborty 	}, {
171*47d7953dSKaustabh Chakraborty 		/* 19 nits */
172*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
173*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x96,
174*47d7953dSKaustabh Chakraborty 		  0x88, 0x89, 0x8b, 0x87, 0x87, 0x89,
175*47d7953dSKaustabh Chakraborty 		  0x89, 0x86, 0x89, 0x7f, 0x80, 0x86,
176*47d7953dSKaustabh Chakraborty 		  0x87, 0x85, 0x89, 0x88, 0x8c, 0x8e,
177*47d7953dSKaustabh Chakraborty 		  0xb3, 0xb4, 0x97, 0xeb, 0xff, 0xb7,
178*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
179*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x04, 0xf2 },
180*47d7953dSKaustabh Chakraborty 	}, {
181*47d7953dSKaustabh Chakraborty 		/* 20 nits */
182*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
183*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x95,
184*47d7953dSKaustabh Chakraborty 		  0x88, 0x89, 0x8b, 0x87, 0x87, 0x89,
185*47d7953dSKaustabh Chakraborty 		  0x89, 0x86, 0x89, 0x7f, 0x80, 0x86,
186*47d7953dSKaustabh Chakraborty 		  0x87, 0x85, 0x89, 0x89, 0x8c, 0x8e,
187*47d7953dSKaustabh Chakraborty 		  0xb3, 0xb4, 0x97, 0xeb, 0xff, 0xb7,
188*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
189*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x04, 0xe4 },
190*47d7953dSKaustabh Chakraborty 	}, {
191*47d7953dSKaustabh Chakraborty 		/* 21 nits */
192*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
193*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x96,
194*47d7953dSKaustabh Chakraborty 		  0x88, 0x89, 0x8b, 0x87, 0x87, 0x89,
195*47d7953dSKaustabh Chakraborty 		  0x8a, 0x88, 0x8b, 0x7d, 0x7e, 0x84,
196*47d7953dSKaustabh Chakraborty 		  0x8c, 0x8a, 0x8c, 0x8e, 0x90, 0x8f,
197*47d7953dSKaustabh Chakraborty 		  0xb6, 0xb6, 0x97, 0xe3, 0xff, 0xb3,
198*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
199*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x04, 0xd5 },
200*47d7953dSKaustabh Chakraborty 	}, {
201*47d7953dSKaustabh Chakraborty 		/* 22 nits */
202*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
203*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x97,
204*47d7953dSKaustabh Chakraborty 		  0x88, 0x89, 0x8b, 0x87, 0x87, 0x89,
205*47d7953dSKaustabh Chakraborty 		  0x8a, 0x88, 0x8b, 0x81, 0x82, 0x86,
206*47d7953dSKaustabh Chakraborty 		  0x87, 0x86, 0x88, 0x8e, 0x90, 0x8f,
207*47d7953dSKaustabh Chakraborty 		  0xb6, 0xb6, 0x95, 0xe3, 0xff, 0xb3,
208*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
209*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x04, 0xc5 },
210*47d7953dSKaustabh Chakraborty 	}, {
211*47d7953dSKaustabh Chakraborty 		/* 24 nits */
212*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
213*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x97,
214*47d7953dSKaustabh Chakraborty 		  0x88, 0x89, 0x8b, 0x88, 0x88, 0x8a,
215*47d7953dSKaustabh Chakraborty 		  0x8a, 0x87, 0x8a, 0x81, 0x82, 0x86,
216*47d7953dSKaustabh Chakraborty 		  0x87, 0x86, 0x88, 0x8e, 0x90, 0x8f,
217*47d7953dSKaustabh Chakraborty 		  0xb6, 0xb6, 0x94, 0xe3, 0xff, 0xb3,
218*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
219*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x04, 0xa7 },
220*47d7953dSKaustabh Chakraborty 	}, {
221*47d7953dSKaustabh Chakraborty 		/* 25 nits */
222*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
223*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x98,
224*47d7953dSKaustabh Chakraborty 		  0x88, 0x89, 0x8b, 0x88, 0x88, 0x8a,
225*47d7953dSKaustabh Chakraborty 		  0x8a, 0x87, 0x8a, 0x81, 0x82, 0x86,
226*47d7953dSKaustabh Chakraborty 		  0x87, 0x86, 0x87, 0x8e, 0x90, 0x8f,
227*47d7953dSKaustabh Chakraborty 		  0xbf, 0xbf, 0x9a, 0xda, 0xfa, 0xaf,
228*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
229*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x04, 0x95 },
230*47d7953dSKaustabh Chakraborty 	}, {
231*47d7953dSKaustabh Chakraborty 		/* 27 nits */
232*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
233*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x99,
234*47d7953dSKaustabh Chakraborty 		  0x88, 0x89, 0x8b, 0x88, 0x88, 0x8a,
235*47d7953dSKaustabh Chakraborty 		  0x8a, 0x87, 0x8a, 0x83, 0x86, 0x8a,
236*47d7953dSKaustabh Chakraborty 		  0x88, 0x87, 0x87, 0x88, 0x8b, 0x8c,
237*47d7953dSKaustabh Chakraborty 		  0xbf, 0xbf, 0x9a, 0xda, 0xfa, 0xaf,
238*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
239*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x04, 0x76 },
240*47d7953dSKaustabh Chakraborty 	}, {
241*47d7953dSKaustabh Chakraborty 		/* 29 nits */
242*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
243*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x99,
244*47d7953dSKaustabh Chakraborty 		  0x88, 0x89, 0x8b, 0x88, 0x88, 0x8a,
245*47d7953dSKaustabh Chakraborty 		  0x8a, 0x87, 0x8b, 0x83, 0x86, 0x89,
246*47d7953dSKaustabh Chakraborty 		  0x88, 0x87, 0x88, 0x88, 0x8b, 0x8b,
247*47d7953dSKaustabh Chakraborty 		  0xbf, 0xbf, 0x9a, 0xda, 0xfa, 0xaf,
248*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
249*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x04, 0x54 },
250*47d7953dSKaustabh Chakraborty 	}, {
251*47d7953dSKaustabh Chakraborty 		/* 30 nits */
252*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
253*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x9a,
254*47d7953dSKaustabh Chakraborty 		  0x88, 0x89, 0x8b, 0x88, 0x88, 0x8a,
255*47d7953dSKaustabh Chakraborty 		  0x8a, 0x87, 0x8a, 0x84, 0x86, 0x8a,
256*47d7953dSKaustabh Chakraborty 		  0x87, 0x87, 0x87, 0x88, 0x8b, 0x8b,
257*47d7953dSKaustabh Chakraborty 		  0xbf, 0xbf, 0x99, 0xda, 0xfa, 0xaf,
258*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
259*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x04, 0x44 },
260*47d7953dSKaustabh Chakraborty 	}, {
261*47d7953dSKaustabh Chakraborty 		/* 32 nits */
262*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
263*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x9a,
264*47d7953dSKaustabh Chakraborty 		  0x89, 0x89, 0x8c, 0x88, 0x88, 0x8a,
265*47d7953dSKaustabh Chakraborty 		  0x89, 0x87, 0x8a, 0x84, 0x86, 0x8a,
266*47d7953dSKaustabh Chakraborty 		  0x87, 0x87, 0x87, 0x89, 0x8b, 0x8b,
267*47d7953dSKaustabh Chakraborty 		  0xbf, 0xbf, 0x98, 0xd2, 0xf2, 0xac,
268*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
269*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x04, 0x1f },
270*47d7953dSKaustabh Chakraborty 	}, {
271*47d7953dSKaustabh Chakraborty 		/* 34 nits */
272*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
273*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x9b,
274*47d7953dSKaustabh Chakraborty 		  0x88, 0x89, 0x8b, 0x88, 0x88, 0x8a,
275*47d7953dSKaustabh Chakraborty 		  0x8b, 0x87, 0x8b, 0x83, 0x86, 0x89,
276*47d7953dSKaustabh Chakraborty 		  0x87, 0x87, 0x88, 0x88, 0x8b, 0x8a,
277*47d7953dSKaustabh Chakraborty 		  0xbf, 0xbf, 0x98, 0xd2, 0xf2, 0xac,
278*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
279*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x03, 0xff },
280*47d7953dSKaustabh Chakraborty 	}, {
281*47d7953dSKaustabh Chakraborty 		/* 37 nits */
282*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
283*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x9b,
284*47d7953dSKaustabh Chakraborty 		  0x89, 0x89, 0x8c, 0x88, 0x88, 0x8a,
285*47d7953dSKaustabh Chakraborty 		  0x8a, 0x87, 0x8a, 0x81, 0x82, 0x86,
286*47d7953dSKaustabh Chakraborty 		  0x86, 0x86, 0x86, 0x8d, 0x90, 0x8d,
287*47d7953dSKaustabh Chakraborty 		  0xc0, 0xbf, 0x9a, 0xd2, 0xf2, 0xac,
288*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
289*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x03, 0xd3 },
290*47d7953dSKaustabh Chakraborty 	}, {
291*47d7953dSKaustabh Chakraborty 		/* 39 nits */
292*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
293*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x9b,
294*47d7953dSKaustabh Chakraborty 		  0x89, 0x89, 0x8c, 0x88, 0x88, 0x8a,
295*47d7953dSKaustabh Chakraborty 		  0x8a, 0x87, 0x8a, 0x81, 0x82, 0x86,
296*47d7953dSKaustabh Chakraborty 		  0x87, 0x86, 0x87, 0x8d, 0x90, 0x8d,
297*47d7953dSKaustabh Chakraborty 		  0xb6, 0xb6, 0x93, 0xda, 0xf9, 0xaf,
298*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
299*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x03, 0xb3 },
300*47d7953dSKaustabh Chakraborty 	}, {
301*47d7953dSKaustabh Chakraborty 		/* 41 nits */
302*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
303*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x9b,
304*47d7953dSKaustabh Chakraborty 		  0x89, 0x89, 0x8c, 0x88, 0x88, 0x8a,
305*47d7953dSKaustabh Chakraborty 		  0x8a, 0x87, 0x8b, 0x81, 0x82, 0x85,
306*47d7953dSKaustabh Chakraborty 		  0x87, 0x86, 0x87, 0x8d, 0x90, 0x8d,
307*47d7953dSKaustabh Chakraborty 		  0xb6, 0xb6, 0x94, 0xda, 0xf9, 0xaf,
308*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
309*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x03, 0x93 },
310*47d7953dSKaustabh Chakraborty 	}, {
311*47d7953dSKaustabh Chakraborty 		/* 44 nits */
312*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
313*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x9b,
314*47d7953dSKaustabh Chakraborty 		  0x89, 0x89, 0x8c, 0x88, 0x88, 0x8a,
315*47d7953dSKaustabh Chakraborty 		  0x8a, 0x87, 0x8b, 0x81, 0x82, 0x86,
316*47d7953dSKaustabh Chakraborty 		  0x87, 0x86, 0x86, 0x85, 0x87, 0x8a,
317*47d7953dSKaustabh Chakraborty 		  0xbe, 0xbe, 0x99, 0xda, 0xf9, 0xaf,
318*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
319*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x03, 0x66 },
320*47d7953dSKaustabh Chakraborty 	}, {
321*47d7953dSKaustabh Chakraborty 		/* 47 nits */
322*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
323*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x9b,
324*47d7953dSKaustabh Chakraborty 		  0x89, 0x89, 0x8c, 0x88, 0x88, 0x8a,
325*47d7953dSKaustabh Chakraborty 		  0x8a, 0x87, 0x8b, 0x81, 0x82, 0x86,
326*47d7953dSKaustabh Chakraborty 		  0x88, 0x86, 0x87, 0x84, 0x87, 0x89,
327*47d7953dSKaustabh Chakraborty 		  0xb4, 0xb4, 0x94, 0xe2, 0xff, 0xb3,
328*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
329*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x03, 0x40 },
330*47d7953dSKaustabh Chakraborty 	}, {
331*47d7953dSKaustabh Chakraborty 		/* 50 nits */
332*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
333*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x9c,
334*47d7953dSKaustabh Chakraborty 		  0x89, 0x89, 0x8b, 0x88, 0x88, 0x8a,
335*47d7953dSKaustabh Chakraborty 		  0x8a, 0x87, 0x8b, 0x81, 0x82, 0x86,
336*47d7953dSKaustabh Chakraborty 		  0x88, 0x86, 0x87, 0x84, 0x87, 0x89,
337*47d7953dSKaustabh Chakraborty 		  0xb4, 0xb4, 0x95, 0xe2, 0xff, 0xb3,
338*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
339*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x03, 0x0e },
340*47d7953dSKaustabh Chakraborty 	}, {
341*47d7953dSKaustabh Chakraborty 		/* 53 nits */
342*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
343*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x9c,
344*47d7953dSKaustabh Chakraborty 		  0x89, 0x89, 0x8b, 0x88, 0x88, 0x8a,
345*47d7953dSKaustabh Chakraborty 		  0x8a, 0x87, 0x8b, 0x81, 0x82, 0x86,
346*47d7953dSKaustabh Chakraborty 		  0x88, 0x86, 0x87, 0x85, 0x87, 0x8a,
347*47d7953dSKaustabh Chakraborty 		  0xb4, 0xb4, 0x96, 0xe2, 0xff, 0xb3,
348*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
349*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x02, 0xe2 },
350*47d7953dSKaustabh Chakraborty 	}, {
351*47d7953dSKaustabh Chakraborty 		/* 56 nits */
352*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
353*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x9c,
354*47d7953dSKaustabh Chakraborty 		  0x89, 0x89, 0x8b, 0x88, 0x88, 0x8a,
355*47d7953dSKaustabh Chakraborty 		  0x8a, 0x87, 0x8b, 0x81, 0x82, 0x86,
356*47d7953dSKaustabh Chakraborty 		  0x88, 0x86, 0x87, 0x85, 0x87, 0x8a,
357*47d7953dSKaustabh Chakraborty 		  0xab, 0xab, 0x90, 0xdd, 0xf7, 0xaf,
358*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
359*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x02, 0xb5 },
360*47d7953dSKaustabh Chakraborty 	}, {
361*47d7953dSKaustabh Chakraborty 		/* 60 nits */
362*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
363*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x9c,
364*47d7953dSKaustabh Chakraborty 		  0x89, 0x89, 0x8b, 0x88, 0x88, 0x8a,
365*47d7953dSKaustabh Chakraborty 		  0x8a, 0x87, 0x8b, 0x82, 0x82, 0x87,
366*47d7953dSKaustabh Chakraborty 		  0x83, 0x81, 0x84, 0x81, 0x84, 0x88,
367*47d7953dSKaustabh Chakraborty 		  0xb3, 0xb3, 0x96, 0xcf, 0xe5, 0xa8,
368*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
369*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x02, 0x77 },
370*47d7953dSKaustabh Chakraborty 	}, {
371*47d7953dSKaustabh Chakraborty 		/* 64 nits */
372*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
373*47d7953dSKaustabh Chakraborty 		  0x00, 0x98, 0x00, 0xa4, 0x00, 0x9c,
374*47d7953dSKaustabh Chakraborty 		  0x89, 0x89, 0x8b, 0x88, 0x88, 0x8a,
375*47d7953dSKaustabh Chakraborty 		  0x8a, 0x87, 0x8b, 0x82, 0x82, 0x87,
376*47d7953dSKaustabh Chakraborty 		  0x83, 0x81, 0x84, 0x82, 0x84, 0x88,
377*47d7953dSKaustabh Chakraborty 		  0xb2, 0xb3, 0x97, 0xcf, 0xe5, 0xa8,
378*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
379*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x02, 0x36 },
380*47d7953dSKaustabh Chakraborty 	}, {
381*47d7953dSKaustabh Chakraborty 		/* 68 nits */
382*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
383*47d7953dSKaustabh Chakraborty 		  0x00, 0x9b, 0x00, 0xa6, 0x00, 0x9d,
384*47d7953dSKaustabh Chakraborty 		  0x88, 0x88, 0x89, 0x89, 0x89, 0x8b,
385*47d7953dSKaustabh Chakraborty 		  0x8a, 0x88, 0x8b, 0x7f, 0x80, 0x86,
386*47d7953dSKaustabh Chakraborty 		  0x88, 0x86, 0x87, 0x7d, 0x7f, 0x85,
387*47d7953dSKaustabh Chakraborty 		  0xb2, 0xb3, 0x97, 0xcf, 0xe5, 0xa8,
388*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
389*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x02, 0x15 },
390*47d7953dSKaustabh Chakraborty 	}, {
391*47d7953dSKaustabh Chakraborty 		/* 72 nits */
392*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
393*47d7953dSKaustabh Chakraborty 		  0x00, 0x9c, 0x00, 0xa9, 0x00, 0xa0,
394*47d7953dSKaustabh Chakraborty 		  0x88, 0x88, 0x89, 0x88, 0x88, 0x8a,
395*47d7953dSKaustabh Chakraborty 		  0x8c, 0x8a, 0x8d, 0x7f, 0x81, 0x85,
396*47d7953dSKaustabh Chakraborty 		  0x84, 0x82, 0x84, 0x85, 0x87, 0x8a,
397*47d7953dSKaustabh Chakraborty 		  0xaa, 0xab, 0x93, 0xcf, 0xe5, 0xa8,
398*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
399*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x02, 0x15 },
400*47d7953dSKaustabh Chakraborty 	}, {
401*47d7953dSKaustabh Chakraborty 		/* 77 nits */
402*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
403*47d7953dSKaustabh Chakraborty 		  0x00, 0xa1, 0x00, 0xad, 0x00, 0xa5,
404*47d7953dSKaustabh Chakraborty 		  0x89, 0x89, 0x8a, 0x88, 0x87, 0x89,
405*47d7953dSKaustabh Chakraborty 		  0x8c, 0x89, 0x8d, 0x7f, 0x81, 0x85,
406*47d7953dSKaustabh Chakraborty 		  0x84, 0x83, 0x84, 0x81, 0x83, 0x86,
407*47d7953dSKaustabh Chakraborty 		  0xaa, 0xab, 0x93, 0xc0, 0xd3, 0xa1,
408*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
409*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x02, 0x15 },
410*47d7953dSKaustabh Chakraborty 	}, {
411*47d7953dSKaustabh Chakraborty 		/* 82 nits */
412*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
413*47d7953dSKaustabh Chakraborty 		  0x00, 0xa5, 0x00, 0xb0, 0x00, 0xa9,
414*47d7953dSKaustabh Chakraborty 		  0x88, 0x89, 0x89, 0x85, 0x86, 0x89,
415*47d7953dSKaustabh Chakraborty 		  0x8a, 0x88, 0x8b, 0x82, 0x82, 0x87,
416*47d7953dSKaustabh Chakraborty 		  0x81, 0x80, 0x82, 0x89, 0x8b, 0x8b,
417*47d7953dSKaustabh Chakraborty 		  0xa2, 0xa3, 0x8e, 0xc0, 0xd3, 0xa1,
418*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
419*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x02, 0x15 },
420*47d7953dSKaustabh Chakraborty 	}, {
421*47d7953dSKaustabh Chakraborty 		/* 87 nits */
422*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
423*47d7953dSKaustabh Chakraborty 		  0x00, 0xab, 0x00, 0xb4, 0x00, 0xad,
424*47d7953dSKaustabh Chakraborty 		  0x88, 0x89, 0x8a, 0x84, 0x86, 0x88,
425*47d7953dSKaustabh Chakraborty 		  0x8a, 0x88, 0x8b, 0x7f, 0x7f, 0x84,
426*47d7953dSKaustabh Chakraborty 		  0x86, 0x84, 0x85, 0x85, 0x86, 0x88,
427*47d7953dSKaustabh Chakraborty 		  0xa2, 0xa3, 0x8f, 0xc0, 0xd3, 0xa1,
428*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
429*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x02, 0x15 },
430*47d7953dSKaustabh Chakraborty 	}, {
431*47d7953dSKaustabh Chakraborty 		/* 93 nits */
432*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
433*47d7953dSKaustabh Chakraborty 		  0x00, 0xaf, 0x00, 0xb9, 0x00, 0xb1,
434*47d7953dSKaustabh Chakraborty 		  0x88, 0x89, 0x8a, 0x84, 0x85, 0x87,
435*47d7953dSKaustabh Chakraborty 		  0x8a, 0x89, 0x8b, 0x7e, 0x7e, 0x83,
436*47d7953dSKaustabh Chakraborty 		  0x87, 0x86, 0x86, 0x88, 0x8a, 0x89,
437*47d7953dSKaustabh Chakraborty 		  0x9c, 0x9c, 0x8b, 0xc0, 0xd3, 0xa1,
438*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
439*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x02, 0x15 },
440*47d7953dSKaustabh Chakraborty 	}, {
441*47d7953dSKaustabh Chakraborty 		/* 98 nits */
442*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
443*47d7953dSKaustabh Chakraborty 		  0x00, 0xb3, 0x00, 0xbc, 0x00, 0xb5,
444*47d7953dSKaustabh Chakraborty 		  0x88, 0x88, 0x88, 0x84, 0x84, 0x86,
445*47d7953dSKaustabh Chakraborty 		  0x8a, 0x88, 0x8a, 0x7f, 0x7f, 0x84,
446*47d7953dSKaustabh Chakraborty 		  0x84, 0x83, 0x84, 0x88, 0x8a, 0x89,
447*47d7953dSKaustabh Chakraborty 		  0x9c, 0x9c, 0x8b, 0xc0, 0xd3, 0xa1,
448*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
449*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x02, 0x15 },
450*47d7953dSKaustabh Chakraborty 	}, {
451*47d7953dSKaustabh Chakraborty 		/* 105 nits */
452*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
453*47d7953dSKaustabh Chakraborty 		  0x00, 0xb7, 0x00, 0xc0, 0x00, 0xba,
454*47d7953dSKaustabh Chakraborty 		  0x87, 0x87, 0x88, 0x85, 0x85, 0x87,
455*47d7953dSKaustabh Chakraborty 		  0x89, 0x88, 0x89, 0x7f, 0x7f, 0x83,
456*47d7953dSKaustabh Chakraborty 		  0x81, 0x80, 0x82, 0x88, 0x8a, 0x89,
457*47d7953dSKaustabh Chakraborty 		  0x9c, 0x9c, 0x8c, 0xb2, 0xc2, 0x9a,
458*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
459*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x02, 0x15 },
460*47d7953dSKaustabh Chakraborty 	}, {
461*47d7953dSKaustabh Chakraborty 		/* 111 nits */
462*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
463*47d7953dSKaustabh Chakraborty 		  0x00, 0xbb, 0x00, 0xc3, 0x00, 0xbe,
464*47d7953dSKaustabh Chakraborty 		  0x87, 0x87, 0x88, 0x85, 0x85, 0x88,
465*47d7953dSKaustabh Chakraborty 		  0x88, 0x87, 0x89, 0x80, 0x80, 0x84,
466*47d7953dSKaustabh Chakraborty 		  0x81, 0x81, 0x82, 0x85, 0x86, 0x87,
467*47d7953dSKaustabh Chakraborty 		  0x9c, 0x9c, 0x8b, 0xb2, 0xc2, 0x9a,
468*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
469*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x02, 0x15 },
470*47d7953dSKaustabh Chakraborty 	}, {
471*47d7953dSKaustabh Chakraborty 		/* 119 nits */
472*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
473*47d7953dSKaustabh Chakraborty 		  0x00, 0xc0, 0x00, 0xc8, 0x00, 0xc4,
474*47d7953dSKaustabh Chakraborty 		  0x87, 0x87, 0x88, 0x82, 0x84, 0x86,
475*47d7953dSKaustabh Chakraborty 		  0x87, 0x85, 0x87, 0x82, 0x81, 0x84,
476*47d7953dSKaustabh Chakraborty 		  0x83, 0x82, 0x83, 0x80, 0x81, 0x84,
477*47d7953dSKaustabh Chakraborty 		  0x9c, 0x9c, 0x8c, 0xb2, 0xc2, 0x9a,
478*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
479*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x02, 0x14 },
480*47d7953dSKaustabh Chakraborty 	}, {
481*47d7953dSKaustabh Chakraborty 		/* 126 nits */
482*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
483*47d7953dSKaustabh Chakraborty 		  0x00, 0xc0, 0x00, 0xc8, 0x00, 0xc4,
484*47d7953dSKaustabh Chakraborty 		  0x87, 0x87, 0x88, 0x82, 0x84, 0x86,
485*47d7953dSKaustabh Chakraborty 		  0x87, 0x85, 0x87, 0x82, 0x81, 0x84,
486*47d7953dSKaustabh Chakraborty 		  0x83, 0x82, 0x83, 0x80, 0x81, 0x84,
487*47d7953dSKaustabh Chakraborty 		  0x9c, 0x9c, 0x8d, 0xb2, 0xc2, 0x9a,
488*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
489*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x01, 0xde },
490*47d7953dSKaustabh Chakraborty 	}, {
491*47d7953dSKaustabh Chakraborty 		/* 134 nits */
492*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
493*47d7953dSKaustabh Chakraborty 		  0x00, 0xc0, 0x00, 0xc8, 0x00, 0xc4,
494*47d7953dSKaustabh Chakraborty 		  0x87, 0x87, 0x88, 0x82, 0x84, 0x86,
495*47d7953dSKaustabh Chakraborty 		  0x87, 0x85, 0x87, 0x82, 0x81, 0x84,
496*47d7953dSKaustabh Chakraborty 		  0x83, 0x82, 0x83, 0x80, 0x81, 0x84,
497*47d7953dSKaustabh Chakraborty 		  0x9c, 0x9c, 0x8d, 0xa4, 0xb0, 0x92,
498*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
499*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x01, 0x94 },
500*47d7953dSKaustabh Chakraborty 	}, {
501*47d7953dSKaustabh Chakraborty 		/* 143 nits */
502*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
503*47d7953dSKaustabh Chakraborty 		  0x00, 0xc0, 0x00, 0xc8, 0x00, 0xc3,
504*47d7953dSKaustabh Chakraborty 		  0x87, 0x87, 0x88, 0x82, 0x84, 0x86,
505*47d7953dSKaustabh Chakraborty 		  0x87, 0x85, 0x87, 0x82, 0x81, 0x85,
506*47d7953dSKaustabh Chakraborty 		  0x83, 0x82, 0x83, 0x80, 0x81, 0x84,
507*47d7953dSKaustabh Chakraborty 		  0x92, 0x92, 0x89, 0xab, 0xb6, 0x96,
508*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
509*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x01, 0x46 },
510*47d7953dSKaustabh Chakraborty 	}, {
511*47d7953dSKaustabh Chakraborty 		/* 152 nits */
512*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
513*47d7953dSKaustabh Chakraborty 		  0x00, 0xc0, 0x00, 0xc8, 0x00, 0xc3,
514*47d7953dSKaustabh Chakraborty 		  0x87, 0x87, 0x88, 0x83, 0x84, 0x86,
515*47d7953dSKaustabh Chakraborty 		  0x87, 0x85, 0x87, 0x81, 0x81, 0x85,
516*47d7953dSKaustabh Chakraborty 		  0x84, 0x82, 0x83, 0x80, 0x81, 0x83,
517*47d7953dSKaustabh Chakraborty 		  0x92, 0x92, 0x8b, 0xab, 0xb6, 0x96,
518*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
519*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x00, 0xfa },
520*47d7953dSKaustabh Chakraborty 	}, {
521*47d7953dSKaustabh Chakraborty 		/* 162 nits */
522*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
523*47d7953dSKaustabh Chakraborty 		  0x00, 0xc0, 0x00, 0xc8, 0x00, 0xc3,
524*47d7953dSKaustabh Chakraborty 		  0x87, 0x87, 0x88, 0x83, 0x84, 0x86,
525*47d7953dSKaustabh Chakraborty 		  0x87, 0x85, 0x87, 0x81, 0x81, 0x84,
526*47d7953dSKaustabh Chakraborty 		  0x84, 0x82, 0x84, 0x80, 0x81, 0x83,
527*47d7953dSKaustabh Chakraborty 		  0x92, 0x92, 0x8b, 0x9d, 0xa4, 0x8e,
528*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
529*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x00, 0xac },
530*47d7953dSKaustabh Chakraborty 	}, {
531*47d7953dSKaustabh Chakraborty 		/* 172 nits */
532*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
533*47d7953dSKaustabh Chakraborty 		  0x00, 0xc0, 0x00, 0xc8, 0x00, 0xc3,
534*47d7953dSKaustabh Chakraborty 		  0x87, 0x87, 0x88, 0x83, 0x84, 0x86,
535*47d7953dSKaustabh Chakraborty 		  0x87, 0x85, 0x87, 0x81, 0x81, 0x84,
536*47d7953dSKaustabh Chakraborty 		  0x84, 0x82, 0x83, 0x80, 0x81, 0x84,
537*47d7953dSKaustabh Chakraborty 		  0x93, 0x92, 0x8c, 0x9d, 0xa4, 0x8e,
538*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
539*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x00, 0x57 },
540*47d7953dSKaustabh Chakraborty 	}, {
541*47d7953dSKaustabh Chakraborty 		/* 183 nits */
542*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
543*47d7953dSKaustabh Chakraborty 		  0x00, 0xc2, 0x00, 0xca, 0x00, 0xc5,
544*47d7953dSKaustabh Chakraborty 		  0x86, 0x86, 0x87, 0x85, 0x84, 0x87,
545*47d7953dSKaustabh Chakraborty 		  0x87, 0x86, 0x88, 0x7e, 0x80, 0x83,
546*47d7953dSKaustabh Chakraborty 		  0x84, 0x82, 0x83, 0x80, 0x81, 0x83,
547*47d7953dSKaustabh Chakraborty 		  0x93, 0x92, 0x8c, 0x9d, 0xa4, 0x8e,
548*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
549*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x00, 0x10 },
550*47d7953dSKaustabh Chakraborty 	}, {
551*47d7953dSKaustabh Chakraborty 		/* 195 nits */
552*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
553*47d7953dSKaustabh Chakraborty 		  0x00, 0xc7, 0x00, 0xce, 0x00, 0xc9,
554*47d7953dSKaustabh Chakraborty 		  0x86, 0x87, 0x86, 0x83, 0x83, 0x85,
555*47d7953dSKaustabh Chakraborty 		  0x85, 0x84, 0x86, 0x82, 0x82, 0x85,
556*47d7953dSKaustabh Chakraborty 		  0x80, 0x80, 0x81, 0x81, 0x81, 0x84,
557*47d7953dSKaustabh Chakraborty 		  0x93, 0x92, 0x8c, 0x9d, 0xa4, 0x8e,
558*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
559*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x00, 0x10 },
560*47d7953dSKaustabh Chakraborty 	}, {
561*47d7953dSKaustabh Chakraborty 		/* 207 nits */
562*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
563*47d7953dSKaustabh Chakraborty 		  0x00, 0xcc, 0x00, 0xd2, 0x00, 0xce,
564*47d7953dSKaustabh Chakraborty 		  0x86, 0x86, 0x87, 0x81, 0x83, 0x84,
565*47d7953dSKaustabh Chakraborty 		  0x84, 0x82, 0x84, 0x83, 0x83, 0x85,
566*47d7953dSKaustabh Chakraborty 		  0x81, 0x81, 0x82, 0x7c, 0x7d, 0x81,
567*47d7953dSKaustabh Chakraborty 		  0x93, 0x92, 0x8c, 0x9d, 0xa4, 0x8e,
568*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
569*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x00, 0x10 },
570*47d7953dSKaustabh Chakraborty 	}, {
571*47d7953dSKaustabh Chakraborty 		/* 220 nits */
572*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
573*47d7953dSKaustabh Chakraborty 		  0x00, 0xd1, 0x00, 0xd6, 0x00, 0xd3,
574*47d7953dSKaustabh Chakraborty 		  0x86, 0x86, 0x86, 0x81, 0x83, 0x84,
575*47d7953dSKaustabh Chakraborty 		  0x84, 0x82, 0x84, 0x80, 0x80, 0x83,
576*47d7953dSKaustabh Chakraborty 		  0x81, 0x81, 0x82, 0x7c, 0x7d, 0x81,
577*47d7953dSKaustabh Chakraborty 		  0x93, 0x92, 0x8c, 0x9d, 0xa4, 0x8e,
578*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
579*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x00, 0x10 },
580*47d7953dSKaustabh Chakraborty 	}, {
581*47d7953dSKaustabh Chakraborty 		/* 234 nits */
582*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
583*47d7953dSKaustabh Chakraborty 		  0x00, 0xd6, 0x00, 0xdb, 0x00, 0xd8,
584*47d7953dSKaustabh Chakraborty 		  0x85, 0x85, 0x85, 0x81, 0x83, 0x84,
585*47d7953dSKaustabh Chakraborty 		  0x83, 0x82, 0x83, 0x80, 0x80, 0x82,
586*47d7953dSKaustabh Chakraborty 		  0x84, 0x82, 0x83, 0x79, 0x79, 0x7e,
587*47d7953dSKaustabh Chakraborty 		  0x93, 0x92, 0x8d, 0x9d, 0xa4, 0x8e,
588*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
589*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x00, 0x10 },
590*47d7953dSKaustabh Chakraborty 	}, {
591*47d7953dSKaustabh Chakraborty 		/* 249 nits */
592*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
593*47d7953dSKaustabh Chakraborty 		  0x00, 0xdc, 0x00, 0xe0, 0x00, 0xdd,
594*47d7953dSKaustabh Chakraborty 		  0x84, 0x84, 0x84, 0x81, 0x82, 0x83,
595*47d7953dSKaustabh Chakraborty 		  0x84, 0x82, 0x84, 0x7f, 0x7f, 0x82,
596*47d7953dSKaustabh Chakraborty 		  0x81, 0x80, 0x81, 0x80, 0x81, 0x82,
597*47d7953dSKaustabh Chakraborty 		  0x8c, 0x8c, 0x86, 0x9d, 0xa4, 0x8e,
598*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
599*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x00, 0x10 },
600*47d7953dSKaustabh Chakraborty 	}, {
601*47d7953dSKaustabh Chakraborty 		/* 265 nits */
602*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
603*47d7953dSKaustabh Chakraborty 		  0x00, 0xe2, 0x00, 0xe5, 0x00, 0xe3,
604*47d7953dSKaustabh Chakraborty 		  0x83, 0x83, 0x83, 0x81, 0x82, 0x83,
605*47d7953dSKaustabh Chakraborty 		  0x82, 0x82, 0x83, 0x82, 0x81, 0x83,
606*47d7953dSKaustabh Chakraborty 		  0x7f, 0x7e, 0x80, 0x7c, 0x7d, 0x80,
607*47d7953dSKaustabh Chakraborty 		  0x8c, 0x8c, 0x86, 0x8e, 0x92, 0x87,
608*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
609*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x00, 0x10 },
610*47d7953dSKaustabh Chakraborty 	}, {
611*47d7953dSKaustabh Chakraborty 		/* 282 nits */
612*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
613*47d7953dSKaustabh Chakraborty 		  0x00, 0xe8, 0x00, 0xea, 0x00, 0xe9,
614*47d7953dSKaustabh Chakraborty 		  0x83, 0x83, 0x83, 0x80, 0x82, 0x82,
615*47d7953dSKaustabh Chakraborty 		  0x81, 0x82, 0x82, 0x82, 0x81, 0x82,
616*47d7953dSKaustabh Chakraborty 		  0x81, 0x80, 0x81, 0x80, 0x80, 0x81,
617*47d7953dSKaustabh Chakraborty 		  0x85, 0x85, 0x83, 0x8e, 0x92, 0x87,
618*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
619*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x00, 0x10 },
620*47d7953dSKaustabh Chakraborty 	}, {
621*47d7953dSKaustabh Chakraborty 		/* 300 nits */
622*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
623*47d7953dSKaustabh Chakraborty 		  0x00, 0xed, 0x00, 0xef, 0x00, 0xed,
624*47d7953dSKaustabh Chakraborty 		  0x81, 0x82, 0x81, 0x81, 0x81, 0x82,
625*47d7953dSKaustabh Chakraborty 		  0x82, 0x82, 0x83, 0x80, 0x80, 0x81,
626*47d7953dSKaustabh Chakraborty 		  0x81, 0x81, 0x82, 0x83, 0x83, 0x83,
627*47d7953dSKaustabh Chakraborty 		  0x80, 0x80, 0x7f, 0x8e, 0x92, 0x87,
628*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
629*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x00, 0x10 },
630*47d7953dSKaustabh Chakraborty 	}, {
631*47d7953dSKaustabh Chakraborty 		/* 316 nits */
632*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
633*47d7953dSKaustabh Chakraborty 		  0x00, 0xf3, 0x00, 0xf4, 0x00, 0xf3,
634*47d7953dSKaustabh Chakraborty 		  0x80, 0x81, 0x80, 0x81, 0x81, 0x81,
635*47d7953dSKaustabh Chakraborty 		  0x82, 0x82, 0x82, 0x81, 0x80, 0x81,
636*47d7953dSKaustabh Chakraborty 		  0x82, 0x82, 0x83, 0x80, 0x80, 0x80,
637*47d7953dSKaustabh Chakraborty 		  0x80, 0x80, 0x7f, 0x80, 0x80, 0x80,
638*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
639*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x00, 0x10 },
640*47d7953dSKaustabh Chakraborty 	}, {
641*47d7953dSKaustabh Chakraborty 		/* 333 nits */
642*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
643*47d7953dSKaustabh Chakraborty 		  0x00, 0xf8, 0x00, 0xf8, 0x00, 0xf8,
644*47d7953dSKaustabh Chakraborty 		  0x80, 0x81, 0x80, 0x81, 0x80, 0x81,
645*47d7953dSKaustabh Chakraborty 		  0x81, 0x82, 0x82, 0x81, 0x80, 0x81,
646*47d7953dSKaustabh Chakraborty 		  0x83, 0x83, 0x83, 0x7e, 0x7d, 0x7e,
647*47d7953dSKaustabh Chakraborty 		  0x80, 0x80, 0x7f, 0x80, 0x80, 0x80,
648*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
649*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x00, 0x10 },
650*47d7953dSKaustabh Chakraborty 	}, {
651*47d7953dSKaustabh Chakraborty 		/* 360 nits */
652*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
653*47d7953dSKaustabh Chakraborty 		  0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
654*47d7953dSKaustabh Chakraborty 		  0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
655*47d7953dSKaustabh Chakraborty 		  0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
656*47d7953dSKaustabh Chakraborty 		  0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
657*47d7953dSKaustabh Chakraborty 		  0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
658*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
659*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x00, 0x10 },
660*47d7953dSKaustabh Chakraborty 	}, {
661*47d7953dSKaustabh Chakraborty 		/* 378 nits */
662*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
663*47d7953dSKaustabh Chakraborty 		  0x01, 0x04, 0x01, 0x03, 0x01, 0x04,
664*47d7953dSKaustabh Chakraborty 		  0x7f, 0x7f, 0x80, 0x7f, 0x7f, 0x7f,
665*47d7953dSKaustabh Chakraborty 		  0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
666*47d7953dSKaustabh Chakraborty 		  0x80, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
667*47d7953dSKaustabh Chakraborty 		  0x80, 0x80, 0x7f, 0x7f, 0x7f, 0x7f,
668*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
669*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x00, 0x10 },
670*47d7953dSKaustabh Chakraborty 	}, {
671*47d7953dSKaustabh Chakraborty 		/* 395 nits */
672*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
673*47d7953dSKaustabh Chakraborty 		  0x01, 0x09, 0x01, 0x07, 0x01, 0x08,
674*47d7953dSKaustabh Chakraborty 		  0x7e, 0x7f, 0x80, 0x7f, 0x7f, 0x7f,
675*47d7953dSKaustabh Chakraborty 		  0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
676*47d7953dSKaustabh Chakraborty 		  0x80, 0x7f, 0x7f, 0x7e, 0x7e, 0x7e,
677*47d7953dSKaustabh Chakraborty 		  0x80, 0x80, 0x7f, 0x7e, 0x7e, 0x7f,
678*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
679*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x00, 0x10 },
680*47d7953dSKaustabh Chakraborty 	}, {
681*47d7953dSKaustabh Chakraborty 		/* 413 nits */
682*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
683*47d7953dSKaustabh Chakraborty 		  0x01, 0x0e, 0x01, 0x0b, 0x01, 0x0c,
684*47d7953dSKaustabh Chakraborty 		  0x7e, 0x7f, 0x80, 0x7e, 0x7e, 0x7e,
685*47d7953dSKaustabh Chakraborty 		  0x7e, 0x7e, 0x7e, 0x7f, 0x7f, 0x7f,
686*47d7953dSKaustabh Chakraborty 		  0x80, 0x7f, 0x7f, 0x7d, 0x7d, 0x7d,
687*47d7953dSKaustabh Chakraborty 		  0x80, 0x80, 0x7f, 0x7d, 0x7e, 0x7e,
688*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
689*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x00, 0x10 },
690*47d7953dSKaustabh Chakraborty 	}, {
691*47d7953dSKaustabh Chakraborty 		/* 430 nits */
692*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
693*47d7953dSKaustabh Chakraborty 		  0x01, 0x13, 0x01, 0x0f, 0x01, 0x10,
694*47d7953dSKaustabh Chakraborty 		  0x7d, 0x7f, 0x80, 0x7e, 0x7e, 0x7e,
695*47d7953dSKaustabh Chakraborty 		  0x7e, 0x7e, 0x7e, 0x7f, 0x7f, 0x7f,
696*47d7953dSKaustabh Chakraborty 		  0x80, 0x7f, 0x7f, 0x7d, 0x7d, 0x7d,
697*47d7953dSKaustabh Chakraborty 		  0x80, 0x80, 0x7f, 0x7c, 0x7d, 0x7e,
698*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
699*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x00, 0x10 },
700*47d7953dSKaustabh Chakraborty 	}, {
701*47d7953dSKaustabh Chakraborty 		/* 448 nits */
702*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
703*47d7953dSKaustabh Chakraborty 		  0x01, 0x18, 0x01, 0x13, 0x01, 0x14,
704*47d7953dSKaustabh Chakraborty 		  0x7c, 0x7e, 0x80, 0x7e, 0x7e, 0x7e,
705*47d7953dSKaustabh Chakraborty 		  0x7e, 0x7e, 0x7d, 0x7e, 0x7f, 0x7e,
706*47d7953dSKaustabh Chakraborty 		  0x80, 0x7f, 0x7f, 0x7c, 0x7c, 0x7c,
707*47d7953dSKaustabh Chakraborty 		  0x80, 0x80, 0x7e, 0x7b, 0x7c, 0x7d,
708*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
709*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x00, 0x10 },
710*47d7953dSKaustabh Chakraborty 	}, {
711*47d7953dSKaustabh Chakraborty 		/* 465 nits */
712*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
713*47d7953dSKaustabh Chakraborty 		  0x01, 0x1d, 0x01, 0x17, 0x01, 0x18,
714*47d7953dSKaustabh Chakraborty 		  0x7c, 0x7e, 0x80, 0x7d, 0x7d, 0x7d,
715*47d7953dSKaustabh Chakraborty 		  0x7d, 0x7d, 0x7d, 0x7e, 0x7f, 0x7e,
716*47d7953dSKaustabh Chakraborty 		  0x80, 0x7f, 0x7f, 0x7b, 0x7b, 0x7b,
717*47d7953dSKaustabh Chakraborty 		  0x80, 0x80, 0x7e, 0x7a, 0x7c, 0x7d,
718*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
719*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x00, 0x10 },
720*47d7953dSKaustabh Chakraborty 	}, {
721*47d7953dSKaustabh Chakraborty 		/* 483 nits */
722*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
723*47d7953dSKaustabh Chakraborty 		  0x01, 0x22, 0x01, 0x1b, 0x01, 0x1c,
724*47d7953dSKaustabh Chakraborty 		  0x7b, 0x7e, 0x80, 0x7d, 0x7d, 0x7d,
725*47d7953dSKaustabh Chakraborty 		  0x7d, 0x7d, 0x7c, 0x7e, 0x7f, 0x7e,
726*47d7953dSKaustabh Chakraborty 		  0x80, 0x7f, 0x7f, 0x7a, 0x7a, 0x7a,
727*47d7953dSKaustabh Chakraborty 		  0x80, 0x80, 0x7e, 0x79, 0x7b, 0x7c,
728*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
729*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x00, 0x10 },
730*47d7953dSKaustabh Chakraborty 	}, {
731*47d7953dSKaustabh Chakraborty 		/* 500 nits */
732*47d7953dSKaustabh Chakraborty 		{ MCS_GAMMACTL,
733*47d7953dSKaustabh Chakraborty 		  0x01, 0x27, 0x01, 0x1f, 0x01, 0x20,
734*47d7953dSKaustabh Chakraborty 		  0x7b, 0x7e, 0x80, 0x7d, 0x7d, 0x7d,
735*47d7953dSKaustabh Chakraborty 		  0x7d, 0x7d, 0x7c, 0x7e, 0x7f, 0x7e,
736*47d7953dSKaustabh Chakraborty 		  0x80, 0x7f, 0x7f, 0x7a, 0x7a, 0x7a,
737*47d7953dSKaustabh Chakraborty 		  0x81, 0x80, 0x7e, 0x79, 0x7b, 0x7c,
738*47d7953dSKaustabh Chakraborty 		  0x00, 0x00, 0x00, },
739*47d7953dSKaustabh Chakraborty 		{ MCS_AIDCTL, 0x00, 0x10 },
740*47d7953dSKaustabh Chakraborty 	},
741*47d7953dSKaustabh Chakraborty };
742*47d7953dSKaustabh Chakraborty 
743*47d7953dSKaustabh Chakraborty struct s6e8aa5x01_ams561ra01_ctx {
744*47d7953dSKaustabh Chakraborty 	struct drm_panel panel;
745*47d7953dSKaustabh Chakraborty 	struct mipi_dsi_device *dsi;
746*47d7953dSKaustabh Chakraborty 	struct backlight_device *bl;
747*47d7953dSKaustabh Chakraborty 	struct gpio_desc *reset_gpio;
748*47d7953dSKaustabh Chakraborty 	struct regulator_bulk_data *supplies;
749*47d7953dSKaustabh Chakraborty 	u32 nr_supplies;
750*47d7953dSKaustabh Chakraborty };
751*47d7953dSKaustabh Chakraborty 
752*47d7953dSKaustabh Chakraborty static const struct regulator_bulk_data s6e8aa5x01_ams561ra01_supplies[] = {
753*47d7953dSKaustabh Chakraborty 	{ .supply = "vdd" },
754*47d7953dSKaustabh Chakraborty 	{ .supply = "vci" },
755*47d7953dSKaustabh Chakraborty };
756*47d7953dSKaustabh Chakraborty 
757*47d7953dSKaustabh Chakraborty static inline struct s6e8aa5x01_ams561ra01_ctx *to_ctx(struct drm_panel *panel)
758*47d7953dSKaustabh Chakraborty {
759*47d7953dSKaustabh Chakraborty 	return container_of(panel, struct s6e8aa5x01_ams561ra01_ctx, panel);
760*47d7953dSKaustabh Chakraborty }
761*47d7953dSKaustabh Chakraborty 
762*47d7953dSKaustabh Chakraborty static int s6e8aa5x01_ams561ra01_update_status(struct backlight_device *bl)
763*47d7953dSKaustabh Chakraborty {
764*47d7953dSKaustabh Chakraborty 	struct s6e8aa5x01_ams561ra01_ctx *ctx = bl_get_data(bl);
765*47d7953dSKaustabh Chakraborty 	struct mipi_dsi_multi_context dsi = { .dsi = ctx->dsi };
766*47d7953dSKaustabh Chakraborty 	u16 lvl = backlight_get_brightness(bl);
767*47d7953dSKaustabh Chakraborty 
768*47d7953dSKaustabh Chakraborty 	if (!ctx->panel.enabled)
769*47d7953dSKaustabh Chakraborty 		return 0;
770*47d7953dSKaustabh Chakraborty 
771*47d7953dSKaustabh Chakraborty 	mipi_dsi_dcs_write_seq_multi(&dsi, MCS_ACCESSPROT, 0x5a, 0x5a);
772*47d7953dSKaustabh Chakraborty 
773*47d7953dSKaustabh Chakraborty 	mipi_dsi_dcs_write_buffer_multi(&dsi,
774*47d7953dSKaustabh Chakraborty 					s6e8aa5x01_ams561ra01_cmds[lvl].gamma,
775*47d7953dSKaustabh Chakraborty 					GAMMA_CMD_LEN);
776*47d7953dSKaustabh Chakraborty 	mipi_dsi_dcs_write_buffer_multi(&dsi,
777*47d7953dSKaustabh Chakraborty 					s6e8aa5x01_ams561ra01_cmds[lvl].aid,
778*47d7953dSKaustabh Chakraborty 					AID_CMD_LEN);
779*47d7953dSKaustabh Chakraborty 	mipi_dsi_dcs_write_seq_multi(&dsi, MCS_GAMMAUPD, 0x03);
780*47d7953dSKaustabh Chakraborty 
781*47d7953dSKaustabh Chakraborty 	mipi_dsi_dcs_write_seq_multi(&dsi, MCS_ACCESSPROT, 0xa5, 0xa5);
782*47d7953dSKaustabh Chakraborty 
783*47d7953dSKaustabh Chakraborty 	return dsi.accum_err;
784*47d7953dSKaustabh Chakraborty }
785*47d7953dSKaustabh Chakraborty 
786*47d7953dSKaustabh Chakraborty static int s6e8aa5x01_ams561ra01_prepare(struct drm_panel *panel)
787*47d7953dSKaustabh Chakraborty {
788*47d7953dSKaustabh Chakraborty 	struct s6e8aa5x01_ams561ra01_ctx *ctx = to_ctx(panel);
789*47d7953dSKaustabh Chakraborty 	struct device *dev = &ctx->dsi->dev;
790*47d7953dSKaustabh Chakraborty 	int ret;
791*47d7953dSKaustabh Chakraborty 
792*47d7953dSKaustabh Chakraborty 	ret = regulator_bulk_enable(ctx->nr_supplies, ctx->supplies);
793*47d7953dSKaustabh Chakraborty 	if (ret < 0) {
794*47d7953dSKaustabh Chakraborty 		dev_err(dev, "failed to enable regulators: %d\n", ret);
795*47d7953dSKaustabh Chakraborty 		return ret;
796*47d7953dSKaustabh Chakraborty 	}
797*47d7953dSKaustabh Chakraborty 
798*47d7953dSKaustabh Chakraborty 	gpiod_set_value_cansleep(ctx->reset_gpio, 0);
799*47d7953dSKaustabh Chakraborty 	usleep_range(5000, 6000);
800*47d7953dSKaustabh Chakraborty 	gpiod_set_value_cansleep(ctx->reset_gpio, 1);
801*47d7953dSKaustabh Chakraborty 	usleep_range(5000, 6000);
802*47d7953dSKaustabh Chakraborty 	gpiod_set_value_cansleep(ctx->reset_gpio, 0);
803*47d7953dSKaustabh Chakraborty 	usleep_range(10000, 11000);
804*47d7953dSKaustabh Chakraborty 
805*47d7953dSKaustabh Chakraborty 	return 0;
806*47d7953dSKaustabh Chakraborty }
807*47d7953dSKaustabh Chakraborty 
808*47d7953dSKaustabh Chakraborty static int s6e8aa5x01_ams561ra01_unprepare(struct drm_panel *panel)
809*47d7953dSKaustabh Chakraborty {
810*47d7953dSKaustabh Chakraborty 	struct s6e8aa5x01_ams561ra01_ctx *ctx = to_ctx(panel);
811*47d7953dSKaustabh Chakraborty 
812*47d7953dSKaustabh Chakraborty 	gpiod_set_value_cansleep(ctx->reset_gpio, 1);
813*47d7953dSKaustabh Chakraborty 	usleep_range(5000, 6000);
814*47d7953dSKaustabh Chakraborty 
815*47d7953dSKaustabh Chakraborty 	regulator_bulk_disable(ctx->nr_supplies, ctx->supplies);
816*47d7953dSKaustabh Chakraborty 
817*47d7953dSKaustabh Chakraborty 	return 0;
818*47d7953dSKaustabh Chakraborty }
819*47d7953dSKaustabh Chakraborty 
820*47d7953dSKaustabh Chakraborty static int s6e8aa5x01_ams561ra01_enable(struct drm_panel *panel)
821*47d7953dSKaustabh Chakraborty {
822*47d7953dSKaustabh Chakraborty 	struct s6e8aa5x01_ams561ra01_ctx *ctx = to_ctx(panel);
823*47d7953dSKaustabh Chakraborty 	struct mipi_dsi_multi_context dsi = { .dsi = ctx->dsi };
824*47d7953dSKaustabh Chakraborty 
825*47d7953dSKaustabh Chakraborty 	mipi_dsi_dcs_exit_sleep_mode_multi(&dsi);
826*47d7953dSKaustabh Chakraborty 	mipi_dsi_msleep(&dsi, 100);
827*47d7953dSKaustabh Chakraborty 
828*47d7953dSKaustabh Chakraborty 	mipi_dsi_dcs_write_seq_multi(&dsi, MCS_ACCESSPROT, 0x5a, 0x5a);
829*47d7953dSKaustabh Chakraborty 
830*47d7953dSKaustabh Chakraborty 	mipi_dsi_dcs_write_seq_multi(&dsi, MCS_PENTILE, 0xd8, 0xd8, 0x00);
831*47d7953dSKaustabh Chakraborty 	mipi_dsi_dcs_write_seq_multi(&dsi, MCS_PCD, 0x5c);
832*47d7953dSKaustabh Chakraborty 	mipi_dsi_dcs_write_seq_multi(&dsi, MCS_ERRFLAG, 0xed, 0xc7, 0x23, 0x67);
833*47d7953dSKaustabh Chakraborty 	mipi_dsi_dcs_write_seq_multi(&dsi, MCS_DISPCTL, 0x0c, 0x0c, 0xb9, 0x01);
834*47d7953dSKaustabh Chakraborty 	mipi_dsi_dcs_write_seq_multi(&dsi, MCS_LTPSCTL,
835*47d7953dSKaustabh Chakraborty 				0x00, 0x45, 0x10, 0x10, 0x08, 0x32, 0x54, 0x00,
836*47d7953dSKaustabh Chakraborty 				0x00, 0x00, 0x00, 0x07, 0x06, 0x00, 0x00, 0x00,
837*47d7953dSKaustabh Chakraborty 				0x00, 0x00, 0x48, 0x5e, 0x00, 0x00, 0x00, 0x00,
838*47d7953dSKaustabh Chakraborty 				0x00, 0x03, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00,
839*47d7953dSKaustabh Chakraborty 				0x08, 0x05, 0x2a, 0x54, 0x03, 0xcc, 0x00, 0xff,
840*47d7953dSKaustabh Chakraborty 				0xfb, 0x03, 0x0d, 0x00, 0x11, 0x0f, 0x02, 0x03,
841*47d7953dSKaustabh Chakraborty 				0x0b, 0x0c, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
842*47d7953dSKaustabh Chakraborty 				0x13, 0x13, 0x13, 0x13, 0x00, 0x02, 0x03, 0x0b,
843*47d7953dSKaustabh Chakraborty 				0x0c, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
844*47d7953dSKaustabh Chakraborty 				0x13, 0x13);
845*47d7953dSKaustabh Chakraborty 
846*47d7953dSKaustabh Chakraborty 	mipi_dsi_dcs_write_seq_multi(&dsi, MCS_ACCESSPROT, 0xa5, 0xa5);
847*47d7953dSKaustabh Chakraborty 
848*47d7953dSKaustabh Chakraborty 	mipi_dsi_dcs_set_display_on_multi(&dsi);
849*47d7953dSKaustabh Chakraborty 
850*47d7953dSKaustabh Chakraborty 	return dsi.accum_err;
851*47d7953dSKaustabh Chakraborty }
852*47d7953dSKaustabh Chakraborty 
853*47d7953dSKaustabh Chakraborty static int s6e8aa5x01_ams561ra01_disable(struct drm_panel *panel)
854*47d7953dSKaustabh Chakraborty {
855*47d7953dSKaustabh Chakraborty 	struct s6e8aa5x01_ams561ra01_ctx *ctx = to_ctx(panel);
856*47d7953dSKaustabh Chakraborty 	struct mipi_dsi_multi_context dsi = { .dsi = ctx->dsi };
857*47d7953dSKaustabh Chakraborty 
858*47d7953dSKaustabh Chakraborty 	mipi_dsi_dcs_set_display_off_multi(&dsi);
859*47d7953dSKaustabh Chakraborty 	mipi_dsi_msleep(&dsi, 100);
860*47d7953dSKaustabh Chakraborty 
861*47d7953dSKaustabh Chakraborty 	mipi_dsi_dcs_enter_sleep_mode_multi(&dsi);
862*47d7953dSKaustabh Chakraborty 	mipi_dsi_msleep(&dsi, 150);
863*47d7953dSKaustabh Chakraborty 
864*47d7953dSKaustabh Chakraborty 	return dsi.accum_err;
865*47d7953dSKaustabh Chakraborty }
866*47d7953dSKaustabh Chakraborty 
867*47d7953dSKaustabh Chakraborty static const struct drm_display_mode s6e8aa5x01_ams561ra01_mode = {
868*47d7953dSKaustabh Chakraborty 	.clock = (720 + 62 + 2 + 26) * (1480 + 12 + 2 + 10) * 60 / 1000,
869*47d7953dSKaustabh Chakraborty 	.hdisplay = 720,
870*47d7953dSKaustabh Chakraborty 	.hsync_start = 720 + 62,
871*47d7953dSKaustabh Chakraborty 	.hsync_end = 720 + 62 + 2,
872*47d7953dSKaustabh Chakraborty 	.htotal = 720 + 62 + 2 + 26,
873*47d7953dSKaustabh Chakraborty 	.vdisplay = 1480,
874*47d7953dSKaustabh Chakraborty 	.vsync_start = 1480 + 12,
875*47d7953dSKaustabh Chakraborty 	.vsync_end = 1480 + 12 + 2,
876*47d7953dSKaustabh Chakraborty 	.vtotal = 1480 + 12 + 2 + 10,
877*47d7953dSKaustabh Chakraborty 	.width_mm = 62,
878*47d7953dSKaustabh Chakraborty 	.height_mm = 128,
879*47d7953dSKaustabh Chakraborty 	.type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED,
880*47d7953dSKaustabh Chakraborty };
881*47d7953dSKaustabh Chakraborty 
882*47d7953dSKaustabh Chakraborty static int s6e8aa5x01_ams561ra01_get_modes(struct drm_panel *panel,
883*47d7953dSKaustabh Chakraborty 					   struct drm_connector *connector)
884*47d7953dSKaustabh Chakraborty {
885*47d7953dSKaustabh Chakraborty 	return drm_connector_helper_get_modes_fixed(connector,
886*47d7953dSKaustabh Chakraborty 						    &s6e8aa5x01_ams561ra01_mode);
887*47d7953dSKaustabh Chakraborty }
888*47d7953dSKaustabh Chakraborty 
889*47d7953dSKaustabh Chakraborty static const struct backlight_ops s6e8aa5x01_ams561ra01_bl_ops = {
890*47d7953dSKaustabh Chakraborty 	.update_status = s6e8aa5x01_ams561ra01_update_status,
891*47d7953dSKaustabh Chakraborty };
892*47d7953dSKaustabh Chakraborty 
893*47d7953dSKaustabh Chakraborty static const struct drm_panel_funcs s6e8aa5x01_ams561ra01_panel_funcs = {
894*47d7953dSKaustabh Chakraborty 	.prepare = s6e8aa5x01_ams561ra01_prepare,
895*47d7953dSKaustabh Chakraborty 	.unprepare = s6e8aa5x01_ams561ra01_unprepare,
896*47d7953dSKaustabh Chakraborty 	.enable = s6e8aa5x01_ams561ra01_enable,
897*47d7953dSKaustabh Chakraborty 	.disable = s6e8aa5x01_ams561ra01_disable,
898*47d7953dSKaustabh Chakraborty 	.get_modes = s6e8aa5x01_ams561ra01_get_modes,
899*47d7953dSKaustabh Chakraborty };
900*47d7953dSKaustabh Chakraborty 
901*47d7953dSKaustabh Chakraborty static int s6e8aa5x01_ams561ra01_probe(struct mipi_dsi_device *dsi)
902*47d7953dSKaustabh Chakraborty {
903*47d7953dSKaustabh Chakraborty 	struct device *dev = &dsi->dev;
904*47d7953dSKaustabh Chakraborty 	struct s6e8aa5x01_ams561ra01_ctx *ctx;
905*47d7953dSKaustabh Chakraborty 	int ret;
906*47d7953dSKaustabh Chakraborty 
907*47d7953dSKaustabh Chakraborty 	ctx = devm_drm_panel_alloc(dev, struct s6e8aa5x01_ams561ra01_ctx, panel,
908*47d7953dSKaustabh Chakraborty 				   &s6e8aa5x01_ams561ra01_panel_funcs,
909*47d7953dSKaustabh Chakraborty 				   DRM_MODE_CONNECTOR_DSI);
910*47d7953dSKaustabh Chakraborty 	if (IS_ERR(ctx))
911*47d7953dSKaustabh Chakraborty 		return PTR_ERR(ctx);
912*47d7953dSKaustabh Chakraborty 
913*47d7953dSKaustabh Chakraborty 	ctx->dsi = dsi;
914*47d7953dSKaustabh Chakraborty 	mipi_dsi_set_drvdata(dsi, ctx);
915*47d7953dSKaustabh Chakraborty 
916*47d7953dSKaustabh Chakraborty 	ctx->nr_supplies = ARRAY_SIZE(s6e8aa5x01_ams561ra01_supplies);
917*47d7953dSKaustabh Chakraborty 	ret = devm_regulator_bulk_get_const(dev, ctx->nr_supplies,
918*47d7953dSKaustabh Chakraborty 					    s6e8aa5x01_ams561ra01_supplies,
919*47d7953dSKaustabh Chakraborty 					    &ctx->supplies);
920*47d7953dSKaustabh Chakraborty 	if (ret < 0)
921*47d7953dSKaustabh Chakraborty 		return dev_err_probe(dev, ret, "failed to get regulators\n");
922*47d7953dSKaustabh Chakraborty 
923*47d7953dSKaustabh Chakraborty 	ctx->reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_ASIS);
924*47d7953dSKaustabh Chakraborty 	if (IS_ERR(ctx->reset_gpio))
925*47d7953dSKaustabh Chakraborty 		return dev_err_probe(dev, PTR_ERR(ctx->reset_gpio),
926*47d7953dSKaustabh Chakraborty 				     "failed to get reset-gpios\n");
927*47d7953dSKaustabh Chakraborty 
928*47d7953dSKaustabh Chakraborty 	ctx->bl = devm_backlight_device_register(dev, dev_name(dev), dev, ctx,
929*47d7953dSKaustabh Chakraborty 						 &s6e8aa5x01_ams561ra01_bl_ops,
930*47d7953dSKaustabh Chakraborty 						 NULL);
931*47d7953dSKaustabh Chakraborty 	if (IS_ERR(ctx->bl))
932*47d7953dSKaustabh Chakraborty 		return dev_err_probe(dev, PTR_ERR(ctx->bl),
933*47d7953dSKaustabh Chakraborty 				     "failed to register backlight device\n");
934*47d7953dSKaustabh Chakraborty 
935*47d7953dSKaustabh Chakraborty 	ctx->bl->props.type = BACKLIGHT_PLATFORM;
936*47d7953dSKaustabh Chakraborty 	ctx->bl->props.brightness = ARRAY_SIZE(s6e8aa5x01_ams561ra01_cmds) - 1;
937*47d7953dSKaustabh Chakraborty 	ctx->bl->props.max_brightness = ctx->bl->props.brightness;
938*47d7953dSKaustabh Chakraborty 
939*47d7953dSKaustabh Chakraborty 	dsi->lanes = 4;
940*47d7953dSKaustabh Chakraborty 	dsi->format = MIPI_DSI_FMT_RGB888;
941*47d7953dSKaustabh Chakraborty 	dsi->mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST |
942*47d7953dSKaustabh Chakraborty 			  MIPI_DSI_MODE_VIDEO_NO_HFP;
943*47d7953dSKaustabh Chakraborty 
944*47d7953dSKaustabh Chakraborty 	ctx->panel.prepare_prev_first = true;
945*47d7953dSKaustabh Chakraborty 	drm_panel_add(&ctx->panel);
946*47d7953dSKaustabh Chakraborty 
947*47d7953dSKaustabh Chakraborty 	ret = devm_mipi_dsi_attach(dev, dsi);
948*47d7953dSKaustabh Chakraborty 	if (ret < 0) {
949*47d7953dSKaustabh Chakraborty 		drm_panel_remove(&ctx->panel);
950*47d7953dSKaustabh Chakraborty 		return dev_err_probe(dev, ret, "failed to attach to DSI host\n");
951*47d7953dSKaustabh Chakraborty 	}
952*47d7953dSKaustabh Chakraborty 
953*47d7953dSKaustabh Chakraborty 	return 0;
954*47d7953dSKaustabh Chakraborty }
955*47d7953dSKaustabh Chakraborty 
956*47d7953dSKaustabh Chakraborty static void s6e8aa5x01_ams561ra01_remove(struct mipi_dsi_device *dsi)
957*47d7953dSKaustabh Chakraborty {
958*47d7953dSKaustabh Chakraborty 	struct s6e8aa5x01_ams561ra01_ctx *ctx = mipi_dsi_get_drvdata(dsi);
959*47d7953dSKaustabh Chakraborty 
960*47d7953dSKaustabh Chakraborty 	drm_panel_remove(&ctx->panel);
961*47d7953dSKaustabh Chakraborty }
962*47d7953dSKaustabh Chakraborty 
963*47d7953dSKaustabh Chakraborty static const struct of_device_id s6e8aa5x01_ams561ra01_of_device_id[] = {
964*47d7953dSKaustabh Chakraborty 	{ .compatible = "samsung,s6e8aa5x01-ams561ra01" },
965*47d7953dSKaustabh Chakraborty 	{ }
966*47d7953dSKaustabh Chakraborty };
967*47d7953dSKaustabh Chakraborty MODULE_DEVICE_TABLE(of, s6e8aa5x01_ams561ra01_of_device_id);
968*47d7953dSKaustabh Chakraborty 
969*47d7953dSKaustabh Chakraborty static struct mipi_dsi_driver s6e8aa5x01_ams561ra01_dsi_driver = {
970*47d7953dSKaustabh Chakraborty 	.probe = s6e8aa5x01_ams561ra01_probe,
971*47d7953dSKaustabh Chakraborty 	.remove = s6e8aa5x01_ams561ra01_remove,
972*47d7953dSKaustabh Chakraborty 	.driver = {
973*47d7953dSKaustabh Chakraborty 		.name = "panel-samsung-s6e8aa5x01-ams561ra01",
974*47d7953dSKaustabh Chakraborty 		.of_match_table = s6e8aa5x01_ams561ra01_of_device_id,
975*47d7953dSKaustabh Chakraborty 	},
976*47d7953dSKaustabh Chakraborty };
977*47d7953dSKaustabh Chakraborty module_mipi_dsi_driver(s6e8aa5x01_ams561ra01_dsi_driver);
978*47d7953dSKaustabh Chakraborty 
979*47d7953dSKaustabh Chakraborty MODULE_AUTHOR("Kaustabh Chakraborty <kauschluss@disroot.org>");
980*47d7953dSKaustabh Chakraborty MODULE_DESCRIPTION("Samsung AMS561RA01 Panel with S6E8AA5X01 Controller");
981*47d7953dSKaustabh Chakraborty MODULE_LICENSE("GPL");
982