Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/panel: novatek-nt36523: transition to mipi_dsi wrapped functions

Changes the novatek-nt36523 panel to use multi style functions for
improved error handling.

Reviewed-by: Douglas Anderson <dianders@chromium.org>
Signed-off-by: Tejas Vipin <tejasvipin76@gmail.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20250315182522.628187-1-tejasvipin76@gmail.com

authored by

Tejas Vipin and committed by
Douglas Anderson
15a22617 837f9b91

+801 -838
+801 -838
drivers/gpu/drm/panel/panel-novatek-nt36523.c
··· 23 23 24 24 #define DSI_NUM_MIN 1 25 25 26 - #define mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, cmd, seq...) \ 27 - do { \ 28 - mipi_dsi_dcs_write_seq(dsi0, cmd, seq); \ 29 - mipi_dsi_dcs_write_seq(dsi1, cmd, seq); \ 26 + #define mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, cmd, seq...) \ 27 + do { \ 28 + dsi_ctx.dsi = dsi0; \ 29 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, cmd, seq); \ 30 + dsi_ctx.dsi = dsi1; \ 31 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, cmd, seq); \ 30 32 } while (0) 31 33 32 34 struct panel_info { ··· 69 67 { 70 68 struct mipi_dsi_device *dsi0 = pinfo->dsi[0]; 71 69 struct mipi_dsi_device *dsi1 = pinfo->dsi[1]; 70 + struct mipi_dsi_multi_context dsi_ctx = { .dsi = NULL }; 72 71 /* No datasheet, so write magic init sequence directly */ 73 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x10); 74 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 75 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xb9, 0x05); 76 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x20); 77 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 78 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x18, 0x40); 79 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x10); 80 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 81 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xb9, 0x02); 82 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x23); 83 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 84 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x00, 0x80); 85 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x01, 0x84); 86 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x05, 0x2d); 87 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x06, 0x00); 88 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x07, 0x00); 89 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x08, 0x01); 90 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x09, 0x45); 91 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x11, 0x02); 92 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x12, 0x80); 93 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x15, 0x83); 94 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x16, 0x0c); 95 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x29, 0x0a); 96 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x30, 0xff); 97 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x31, 0xfe); 98 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x32, 0xfd); 99 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x33, 0xfb); 100 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x34, 0xf8); 101 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x35, 0xf5); 102 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x36, 0xf3); 103 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x37, 0xf2); 104 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x38, 0xf2); 105 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x39, 0xf2); 106 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x3a, 0xef); 107 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x3b, 0xec); 108 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x3d, 0xe9); 109 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x3f, 0xe5); 110 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x40, 0xe5); 111 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x41, 0xe5); 112 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x2a, 0x13); 113 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x45, 0xff); 114 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x46, 0xf4); 115 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x47, 0xe7); 116 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x48, 0xda); 117 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x49, 0xcd); 118 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x4a, 0xc0); 119 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x4b, 0xb3); 120 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x4c, 0xb2); 121 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x4d, 0xb2); 122 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x4e, 0xb2); 123 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x4f, 0x99); 124 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x50, 0x80); 125 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x51, 0x68); 126 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x52, 0x66); 127 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x53, 0x66); 128 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x54, 0x66); 129 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x2b, 0x0e); 130 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x58, 0xff); 131 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x59, 0xfb); 132 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x5a, 0xf7); 133 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x5b, 0xf3); 134 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x5c, 0xef); 135 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x5d, 0xe3); 136 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x5e, 0xda); 137 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x5f, 0xd8); 138 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x60, 0xd8); 139 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x61, 0xd8); 140 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x62, 0xcb); 141 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x63, 0xbf); 142 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x64, 0xb3); 143 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x65, 0xb2); 144 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x66, 0xb2); 145 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x67, 0xb2); 146 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x2a); 147 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 148 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x25, 0x47); 149 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x30, 0x47); 150 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x39, 0x47); 151 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x26); 152 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 153 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x19, 0x10); 154 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x1a, 0xe0); 155 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x1b, 0x10); 156 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x1c, 0x00); 157 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x2a, 0x10); 158 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x2b, 0xe0); 159 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x10); 160 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 161 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0xf0); 162 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 163 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x84, 0x08); 164 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x85, 0x0c); 165 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x20); 166 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 167 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x51, 0x00); 168 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x25); 169 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 170 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x91, 0x1f); 171 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x92, 0x0f); 172 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x93, 0x01); 173 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x94, 0x18); 174 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x95, 0x03); 175 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x96, 0x01); 176 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x10); 177 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xb0, 0x01); 178 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x25); 179 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 180 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x19, 0x1f); 181 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x1b, 0x1b); 182 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x24); 183 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 184 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xb8, 0x28); 185 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x27); 186 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 187 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xd0, 0x31); 188 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xd1, 0x20); 189 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xd2, 0x30); 190 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xd4, 0x08); 191 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xde, 0x80); 192 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xdf, 0x02); 193 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x26); 194 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 195 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x00, 0x81); 196 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x01, 0xb0); 197 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x22); 198 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 199 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x9f, 0x50); 200 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x6f, 0x01); 201 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x70, 0x11); 202 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x73, 0x01); 203 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x74, 0x49); 204 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x76, 0x01); 205 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x77, 0x49); 206 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xa0, 0x3f); 207 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xa9, 0x50); 208 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xaa, 0x28); 209 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xab, 0x28); 210 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xad, 0x10); 211 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xb8, 0x00); 212 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xb9, 0x49); 213 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xba, 0x49); 214 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xbb, 0x49); 215 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xbe, 0x04); 216 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xbf, 0x49); 217 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xc0, 0x04); 218 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xc1, 0x59); 219 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xc2, 0x00); 220 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xc5, 0x00); 221 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xc6, 0x01); 222 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xc7, 0x48); 223 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xca, 0x43); 224 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xcb, 0x3c); 225 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xce, 0x00); 226 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xcf, 0x43); 227 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xd0, 0x3c); 228 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xd3, 0x43); 229 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xd4, 0x3c); 230 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xd7, 0x00); 231 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xdc, 0x43); 232 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xdd, 0x3c); 233 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xe1, 0x43); 234 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xe2, 0x3c); 235 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xf2, 0x00); 236 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xf3, 0x01); 237 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xf4, 0x48); 238 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x25); 239 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 240 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x13, 0x01); 241 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x14, 0x23); 242 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xbc, 0x01); 243 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xbd, 0x23); 244 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x2a); 245 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 246 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x97, 0x3c); 247 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x98, 0x02); 248 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x99, 0x95); 249 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x9a, 0x03); 250 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x9b, 0x00); 251 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x9c, 0x0b); 252 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x9d, 0x0a); 253 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x9e, 0x90); 254 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x22); 255 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 256 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x9f, 0x50); 257 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x23); 258 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 259 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xa3, 0x50); 260 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0xe0); 261 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 262 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x14, 0x60); 263 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x16, 0xc0); 264 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x4f, 0x02); 265 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0xf0); 266 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 267 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x3a, 0x08); 268 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0xd0); 269 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 270 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x02, 0xaf); 271 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x09, 0xee); 272 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x1c, 0x99); 273 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x1d, 0x09); 274 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x10); 275 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 276 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x51, 0x0f, 0xff); 277 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x53, 0x2c); 278 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x35, 0x00); 279 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xbb, 0x13); 280 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x3b, 0x03, 0xac, 0x1a, 0x04, 0x04); 281 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x11); 282 - msleep(70); 283 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x29); 72 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x10); 73 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 74 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xb9, 0x05); 75 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x20); 76 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 77 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x18, 0x40); 78 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x10); 79 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 80 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xb9, 0x02); 81 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x23); 82 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 83 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x00, 0x80); 84 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x01, 0x84); 85 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x05, 0x2d); 86 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x06, 0x00); 87 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x07, 0x00); 88 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x08, 0x01); 89 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x09, 0x45); 90 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x11, 0x02); 91 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x12, 0x80); 92 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x15, 0x83); 93 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x16, 0x0c); 94 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x29, 0x0a); 95 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x30, 0xff); 96 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x31, 0xfe); 97 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x32, 0xfd); 98 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x33, 0xfb); 99 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x34, 0xf8); 100 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x35, 0xf5); 101 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x36, 0xf3); 102 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x37, 0xf2); 103 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x38, 0xf2); 104 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x39, 0xf2); 105 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x3a, 0xef); 106 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x3b, 0xec); 107 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x3d, 0xe9); 108 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x3f, 0xe5); 109 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x40, 0xe5); 110 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x41, 0xe5); 111 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x2a, 0x13); 112 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x45, 0xff); 113 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x46, 0xf4); 114 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x47, 0xe7); 115 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x48, 0xda); 116 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x49, 0xcd); 117 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x4a, 0xc0); 118 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x4b, 0xb3); 119 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x4c, 0xb2); 120 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x4d, 0xb2); 121 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x4e, 0xb2); 122 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x4f, 0x99); 123 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x50, 0x80); 124 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x51, 0x68); 125 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x52, 0x66); 126 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x53, 0x66); 127 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x54, 0x66); 128 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x2b, 0x0e); 129 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x58, 0xff); 130 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x59, 0xfb); 131 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x5a, 0xf7); 132 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x5b, 0xf3); 133 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x5c, 0xef); 134 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x5d, 0xe3); 135 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x5e, 0xda); 136 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x5f, 0xd8); 137 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x60, 0xd8); 138 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x61, 0xd8); 139 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x62, 0xcb); 140 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x63, 0xbf); 141 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x64, 0xb3); 142 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x65, 0xb2); 143 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x66, 0xb2); 144 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x67, 0xb2); 145 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x2a); 146 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 147 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x25, 0x47); 148 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x30, 0x47); 149 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x39, 0x47); 150 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x26); 151 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 152 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x19, 0x10); 153 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x1a, 0xe0); 154 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x1b, 0x10); 155 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x1c, 0x00); 156 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x2a, 0x10); 157 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x2b, 0xe0); 158 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x10); 159 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 160 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0xf0); 161 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 162 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x84, 0x08); 163 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x85, 0x0c); 164 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x20); 165 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 166 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x51, 0x00); 167 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x25); 168 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 169 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x91, 0x1f); 170 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x92, 0x0f); 171 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x93, 0x01); 172 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x94, 0x18); 173 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x95, 0x03); 174 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x96, 0x01); 175 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x10); 176 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xb0, 0x01); 177 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x25); 178 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 179 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x19, 0x1f); 180 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x1b, 0x1b); 181 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x24); 182 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 183 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xb8, 0x28); 184 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x27); 185 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 186 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xd0, 0x31); 187 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xd1, 0x20); 188 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xd2, 0x30); 189 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xd4, 0x08); 190 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xde, 0x80); 191 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xdf, 0x02); 192 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x26); 193 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 194 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x00, 0x81); 195 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x01, 0xb0); 196 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x22); 197 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 198 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x9f, 0x50); 199 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x6f, 0x01); 200 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x70, 0x11); 201 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x73, 0x01); 202 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x74, 0x49); 203 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x76, 0x01); 204 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x77, 0x49); 205 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xa0, 0x3f); 206 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xa9, 0x50); 207 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xaa, 0x28); 208 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xab, 0x28); 209 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xad, 0x10); 210 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xb8, 0x00); 211 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xb9, 0x49); 212 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xba, 0x49); 213 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xbb, 0x49); 214 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xbe, 0x04); 215 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xbf, 0x49); 216 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xc0, 0x04); 217 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xc1, 0x59); 218 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xc2, 0x00); 219 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xc5, 0x00); 220 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xc6, 0x01); 221 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xc7, 0x48); 222 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xca, 0x43); 223 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xcb, 0x3c); 224 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xce, 0x00); 225 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xcf, 0x43); 226 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xd0, 0x3c); 227 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xd3, 0x43); 228 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xd4, 0x3c); 229 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xd7, 0x00); 230 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xdc, 0x43); 231 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xdd, 0x3c); 232 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xe1, 0x43); 233 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xe2, 0x3c); 234 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xf2, 0x00); 235 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xf3, 0x01); 236 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xf4, 0x48); 237 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x25); 238 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 239 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x13, 0x01); 240 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x14, 0x23); 241 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xbc, 0x01); 242 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xbd, 0x23); 243 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x2a); 244 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 245 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x97, 0x3c); 246 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x98, 0x02); 247 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x99, 0x95); 248 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x9a, 0x03); 249 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x9b, 0x00); 250 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x9c, 0x0b); 251 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x9d, 0x0a); 252 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x9e, 0x90); 253 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x22); 254 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 255 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x9f, 0x50); 256 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x23); 257 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 258 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xa3, 0x50); 259 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0xe0); 260 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 261 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x14, 0x60); 262 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x16, 0xc0); 263 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x4f, 0x02); 264 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0xf0); 265 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 266 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x3a, 0x08); 267 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0xd0); 268 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 269 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x02, 0xaf); 270 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x09, 0xee); 271 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x1c, 0x99); 272 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x1d, 0x09); 273 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x10); 274 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 275 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x51, 0x0f, 0xff); 276 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x53, 0x2c); 277 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x35, 0x00); 278 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xbb, 0x13); 279 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x3b, 0x03, 0xac, 0x1a, 0x04, 0x04); 280 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x11); 281 + mipi_dsi_msleep(&dsi_ctx, 70); 282 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x29); 284 283 285 - return 0; 284 + return dsi_ctx.accum_err; 286 285 } 287 286 288 287 static int elish_csot_init_sequence(struct panel_info *pinfo) 289 288 { 290 289 struct mipi_dsi_device *dsi0 = pinfo->dsi[0]; 291 290 struct mipi_dsi_device *dsi1 = pinfo->dsi[1]; 291 + struct mipi_dsi_multi_context dsi_ctx = { .dsi = NULL }; 292 292 /* No datasheet, so write magic init sequence directly */ 293 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x10); 294 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 295 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xb9, 0x05); 296 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x20); 297 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 298 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x18, 0x40); 299 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x10); 300 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 301 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xb9, 0x02); 302 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0xd0); 303 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 304 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x02, 0xaf); 305 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x00, 0x30); 306 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x09, 0xee); 307 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x1c, 0x99); 308 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x1d, 0x09); 309 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0xf0); 310 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 311 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x3a, 0x08); 312 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0xe0); 313 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 314 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x4f, 0x02); 315 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x20); 316 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 317 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x58, 0x40); 318 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x10); 319 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 320 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x35, 0x00); 321 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x23); 322 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 323 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x00, 0x80); 324 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x01, 0x84); 325 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x05, 0x2d); 326 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x06, 0x00); 327 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x07, 0x00); 328 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x08, 0x01); 329 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x09, 0x45); 330 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x11, 0x02); 331 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x12, 0x80); 332 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x15, 0x83); 333 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x16, 0x0c); 334 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x29, 0x0a); 335 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x30, 0xff); 336 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x31, 0xfe); 337 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x32, 0xfd); 338 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x33, 0xfb); 339 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x34, 0xf8); 340 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x35, 0xf5); 341 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x36, 0xf3); 342 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x37, 0xf2); 343 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x38, 0xf2); 344 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x39, 0xf2); 345 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x3a, 0xef); 346 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x3b, 0xec); 347 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x3d, 0xe9); 348 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x3f, 0xe5); 349 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x40, 0xe5); 350 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x41, 0xe5); 351 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x2a, 0x13); 352 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x45, 0xff); 353 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x46, 0xf4); 354 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x47, 0xe7); 355 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x48, 0xda); 356 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x49, 0xcd); 357 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x4a, 0xc0); 358 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x4b, 0xb3); 359 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x4c, 0xb2); 360 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x4d, 0xb2); 361 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x4e, 0xb2); 362 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x4f, 0x99); 363 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x50, 0x80); 364 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x51, 0x68); 365 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x52, 0x66); 366 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x53, 0x66); 367 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x54, 0x66); 368 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x2b, 0x0e); 369 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x58, 0xff); 370 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x59, 0xfb); 371 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x5a, 0xf7); 372 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x5b, 0xf3); 373 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x5c, 0xef); 374 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x5d, 0xe3); 375 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x5e, 0xda); 376 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x5f, 0xd8); 377 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x60, 0xd8); 378 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x61, 0xd8); 379 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x62, 0xcb); 380 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x63, 0xbf); 381 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x64, 0xb3); 382 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x65, 0xb2); 383 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x66, 0xb2); 384 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x67, 0xb2); 385 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x10); 386 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 387 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x51, 0x0f, 0xff); 388 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x53, 0x2c); 389 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x55, 0x00); 390 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xbb, 0x13); 391 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x3b, 0x03, 0xac, 0x1a, 0x04, 0x04); 392 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x2a); 393 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 394 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x25, 0x46); 395 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x30, 0x46); 396 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x39, 0x46); 397 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x26); 398 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 399 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x01, 0xb0); 400 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x19, 0x10); 401 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x1a, 0xe0); 402 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x1b, 0x10); 403 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x1c, 0x00); 404 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x2a, 0x10); 405 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x2b, 0xe0); 406 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0xf0); 407 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 408 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x84, 0x08); 409 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x85, 0x0c); 410 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x20); 411 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 412 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x51, 0x00); 413 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x25); 414 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 415 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x91, 0x1f); 416 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x92, 0x0f); 417 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x93, 0x01); 418 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x94, 0x18); 419 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x95, 0x03); 420 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x96, 0x01); 421 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x10); 422 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xb0, 0x01); 423 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x25); 424 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 425 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x19, 0x1f); 426 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x1b, 0x1b); 427 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x24); 428 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 429 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xb8, 0x28); 430 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x27); 431 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 432 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xd0, 0x31); 433 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xd1, 0x20); 434 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xd4, 0x08); 435 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xde, 0x80); 436 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xdf, 0x02); 437 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x26); 438 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 439 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x00, 0x81); 440 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x01, 0xb0); 441 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x22); 442 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 443 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x6f, 0x01); 444 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x70, 0x11); 445 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x73, 0x01); 446 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x74, 0x4d); 447 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xa0, 0x3f); 448 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xa9, 0x50); 449 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xaa, 0x28); 450 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xab, 0x28); 451 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xad, 0x10); 452 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xb8, 0x00); 453 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xb9, 0x4b); 454 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xba, 0x96); 455 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xbb, 0x4b); 456 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xbe, 0x07); 457 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xbf, 0x4b); 458 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xc0, 0x07); 459 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xc1, 0x5c); 460 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xc2, 0x00); 461 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xc5, 0x00); 462 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xc6, 0x3f); 463 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xc7, 0x00); 464 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xca, 0x08); 465 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xcb, 0x40); 466 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xce, 0x00); 467 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xcf, 0x08); 468 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xd0, 0x40); 469 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xd3, 0x08); 470 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xd4, 0x40); 471 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x25); 472 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 473 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xbc, 0x01); 474 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xbd, 0x1c); 475 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x2a); 476 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xfb, 0x01); 477 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x9a, 0x03); 478 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0xff, 0x10); 479 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x11); 480 - msleep(70); 481 - mipi_dsi_dual_dcs_write_seq(dsi0, dsi1, 0x29); 293 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x10); 294 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 295 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xb9, 0x05); 296 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x20); 297 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 298 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x18, 0x40); 299 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x10); 300 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 301 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xb9, 0x02); 302 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0xd0); 303 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 304 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x02, 0xaf); 305 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x00, 0x30); 306 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x09, 0xee); 307 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x1c, 0x99); 308 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x1d, 0x09); 309 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0xf0); 310 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 311 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x3a, 0x08); 312 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0xe0); 313 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 314 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x4f, 0x02); 315 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x20); 316 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 317 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x58, 0x40); 318 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x10); 319 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 320 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x35, 0x00); 321 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x23); 322 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 323 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x00, 0x80); 324 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x01, 0x84); 325 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x05, 0x2d); 326 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x06, 0x00); 327 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x07, 0x00); 328 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x08, 0x01); 329 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x09, 0x45); 330 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x11, 0x02); 331 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x12, 0x80); 332 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x15, 0x83); 333 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x16, 0x0c); 334 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x29, 0x0a); 335 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x30, 0xff); 336 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x31, 0xfe); 337 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x32, 0xfd); 338 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x33, 0xfb); 339 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x34, 0xf8); 340 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x35, 0xf5); 341 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x36, 0xf3); 342 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x37, 0xf2); 343 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x38, 0xf2); 344 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x39, 0xf2); 345 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x3a, 0xef); 346 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x3b, 0xec); 347 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x3d, 0xe9); 348 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x3f, 0xe5); 349 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x40, 0xe5); 350 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x41, 0xe5); 351 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x2a, 0x13); 352 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x45, 0xff); 353 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x46, 0xf4); 354 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x47, 0xe7); 355 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x48, 0xda); 356 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x49, 0xcd); 357 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x4a, 0xc0); 358 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x4b, 0xb3); 359 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x4c, 0xb2); 360 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x4d, 0xb2); 361 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x4e, 0xb2); 362 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x4f, 0x99); 363 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x50, 0x80); 364 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x51, 0x68); 365 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x52, 0x66); 366 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x53, 0x66); 367 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x54, 0x66); 368 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x2b, 0x0e); 369 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x58, 0xff); 370 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x59, 0xfb); 371 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x5a, 0xf7); 372 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x5b, 0xf3); 373 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x5c, 0xef); 374 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x5d, 0xe3); 375 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x5e, 0xda); 376 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x5f, 0xd8); 377 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x60, 0xd8); 378 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x61, 0xd8); 379 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x62, 0xcb); 380 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x63, 0xbf); 381 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x64, 0xb3); 382 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x65, 0xb2); 383 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x66, 0xb2); 384 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x67, 0xb2); 385 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x10); 386 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 387 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x51, 0x0f, 0xff); 388 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x53, 0x2c); 389 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x55, 0x00); 390 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xbb, 0x13); 391 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x3b, 0x03, 0xac, 0x1a, 0x04, 0x04); 392 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x2a); 393 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 394 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x25, 0x46); 395 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x30, 0x46); 396 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x39, 0x46); 397 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x26); 398 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 399 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x01, 0xb0); 400 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x19, 0x10); 401 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x1a, 0xe0); 402 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x1b, 0x10); 403 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x1c, 0x00); 404 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x2a, 0x10); 405 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x2b, 0xe0); 406 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0xf0); 407 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 408 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x84, 0x08); 409 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x85, 0x0c); 410 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x20); 411 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 412 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x51, 0x00); 413 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x25); 414 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 415 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x91, 0x1f); 416 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x92, 0x0f); 417 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x93, 0x01); 418 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x94, 0x18); 419 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x95, 0x03); 420 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x96, 0x01); 421 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x10); 422 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xb0, 0x01); 423 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x25); 424 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 425 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x19, 0x1f); 426 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x1b, 0x1b); 427 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x24); 428 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 429 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xb8, 0x28); 430 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x27); 431 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 432 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xd0, 0x31); 433 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xd1, 0x20); 434 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xd4, 0x08); 435 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xde, 0x80); 436 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xdf, 0x02); 437 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x26); 438 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 439 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x00, 0x81); 440 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x01, 0xb0); 441 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x22); 442 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 443 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x6f, 0x01); 444 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x70, 0x11); 445 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x73, 0x01); 446 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x74, 0x4d); 447 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xa0, 0x3f); 448 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xa9, 0x50); 449 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xaa, 0x28); 450 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xab, 0x28); 451 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xad, 0x10); 452 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xb8, 0x00); 453 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xb9, 0x4b); 454 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xba, 0x96); 455 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xbb, 0x4b); 456 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xbe, 0x07); 457 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xbf, 0x4b); 458 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xc0, 0x07); 459 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xc1, 0x5c); 460 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xc2, 0x00); 461 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xc5, 0x00); 462 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xc6, 0x3f); 463 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xc7, 0x00); 464 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xca, 0x08); 465 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xcb, 0x40); 466 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xce, 0x00); 467 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xcf, 0x08); 468 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xd0, 0x40); 469 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xd3, 0x08); 470 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xd4, 0x40); 471 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x25); 472 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 473 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xbc, 0x01); 474 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xbd, 0x1c); 475 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x2a); 476 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xfb, 0x01); 477 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x9a, 0x03); 478 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0xff, 0x10); 479 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x11); 480 + mipi_dsi_msleep(&dsi_ctx, 70); 481 + mipi_dsi_dual_dcs_write_seq_multi(dsi_ctx, dsi0, dsi1, 0x29); 482 482 483 - return 0; 483 + return dsi_ctx.accum_err; 484 484 } 485 485 486 486 static int j606f_boe_init_sequence(struct panel_info *pinfo) 487 487 { 488 488 struct mipi_dsi_device *dsi = pinfo->dsi[0]; 489 - struct device *dev = &dsi->dev; 490 - int ret; 489 + struct mipi_dsi_multi_context dsi_ctx = { .dsi = dsi }; 491 490 492 - mipi_dsi_dcs_write_seq(dsi, 0xff, 0x20); 493 - mipi_dsi_dcs_write_seq(dsi, 0xfb, 0x01); 494 - mipi_dsi_dcs_write_seq(dsi, 0x05, 0xd9); 495 - mipi_dsi_dcs_write_seq(dsi, 0x07, 0x78); 496 - mipi_dsi_dcs_write_seq(dsi, 0x08, 0x5a); 497 - mipi_dsi_dcs_write_seq(dsi, 0x0d, 0x63); 498 - mipi_dsi_dcs_write_seq(dsi, 0x0e, 0x91); 499 - mipi_dsi_dcs_write_seq(dsi, 0x0f, 0x73); 500 - mipi_dsi_dcs_write_seq(dsi, 0x95, 0xeb); 501 - mipi_dsi_dcs_write_seq(dsi, 0x96, 0xeb); 502 - mipi_dsi_dcs_write_seq(dsi, MIPI_DCS_SET_PARTIAL_ROWS, 0x11); 503 - mipi_dsi_dcs_write_seq(dsi, 0x6d, 0x66); 504 - mipi_dsi_dcs_write_seq(dsi, 0x75, 0xa2); 505 - mipi_dsi_dcs_write_seq(dsi, 0x77, 0xb3); 506 - mipi_dsi_dcs_write_seq(dsi, 0xb0, 0x00, 0x08, 0x00, 0x23, 0x00, 0x4d, 0x00, 0x6d, 0x00, 507 - 0x89, 0x00, 0xa1, 0x00, 0xb6, 0x00, 0xc9); 508 - mipi_dsi_dcs_write_seq(dsi, 0xb1, 0x00, 0xda, 0x01, 0x13, 0x01, 0x3c, 0x01, 0x7e, 0x01, 509 - 0xab, 0x01, 0xf7, 0x02, 0x2f, 0x02, 0x31); 510 - mipi_dsi_dcs_write_seq(dsi, 0xb2, 0x02, 0x67, 0x02, 0xa6, 0x02, 0xd1, 0x03, 0x08, 0x03, 511 - 0x2e, 0x03, 0x5b, 0x03, 0x6b, 0x03, 0x7b); 512 - mipi_dsi_dcs_write_seq(dsi, 0xb3, 0x03, 0x8e, 0x03, 0xa2, 0x03, 0xb7, 0x03, 0xe7, 0x03, 513 - 0xfd, 0x03, 0xff); 514 - mipi_dsi_dcs_write_seq(dsi, 0xb4, 0x00, 0x08, 0x00, 0x23, 0x00, 0x4d, 0x00, 0x6d, 0x00, 515 - 0x89, 0x00, 0xa1, 0x00, 0xb6, 0x00, 0xc9); 516 - mipi_dsi_dcs_write_seq(dsi, 0xb5, 0x00, 0xda, 0x01, 0x13, 0x01, 0x3c, 0x01, 0x7e, 0x01, 517 - 0xab, 0x01, 0xf7, 0x02, 0x2f, 0x02, 0x31); 518 - mipi_dsi_dcs_write_seq(dsi, 0xb6, 0x02, 0x67, 0x02, 0xa6, 0x02, 0xd1, 0x03, 0x08, 0x03, 519 - 0x2e, 0x03, 0x5b, 0x03, 0x6b, 0x03, 0x7b); 520 - mipi_dsi_dcs_write_seq(dsi, 0xb7, 0x03, 0x8e, 0x03, 0xa2, 0x03, 0xb7, 0x03, 0xe7, 0x03, 521 - 0xfd, 0x03, 0xff); 522 - mipi_dsi_dcs_write_seq(dsi, 0xb8, 0x00, 0x08, 0x00, 0x23, 0x00, 0x4d, 0x00, 0x6d, 0x00, 523 - 0x89, 0x00, 0xa1, 0x00, 0xb6, 0x00, 0xc9); 524 - mipi_dsi_dcs_write_seq(dsi, 0xb9, 0x00, 0xda, 0x01, 0x13, 0x01, 0x3c, 0x01, 0x7e, 0x01, 525 - 0xab, 0x01, 0xf7, 0x02, 0x2f, 0x02, 0x31); 526 - mipi_dsi_dcs_write_seq(dsi, 0xba, 0x02, 0x67, 0x02, 0xa6, 0x02, 0xd1, 0x03, 0x08, 0x03, 527 - 0x2e, 0x03, 0x5b, 0x03, 0x6b, 0x03, 0x7b); 528 - mipi_dsi_dcs_write_seq(dsi, 0xbb, 0x03, 0x8e, 0x03, 0xa2, 0x03, 0xb7, 0x03, 0xe7, 0x03, 529 - 0xfd, 0x03, 0xff); 530 - mipi_dsi_dcs_write_seq(dsi, 0xff, 0x21); 531 - mipi_dsi_dcs_write_seq(dsi, 0xfb, 0x01); 532 - mipi_dsi_dcs_write_seq(dsi, 0xb0, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x45, 0x00, 0x65, 0x00, 533 - 0x81, 0x00, 0x99, 0x00, 0xae, 0x00, 0xc1); 534 - mipi_dsi_dcs_write_seq(dsi, 0xb1, 0x00, 0xd2, 0x01, 0x0b, 0x01, 0x34, 0x01, 0x76, 0x01, 535 - 0xa3, 0x01, 0xef, 0x02, 0x27, 0x02, 0x29); 536 - mipi_dsi_dcs_write_seq(dsi, 0xb2, 0x02, 0x5f, 0x02, 0x9e, 0x02, 0xc9, 0x03, 0x00, 0x03, 537 - 0x26, 0x03, 0x53, 0x03, 0x63, 0x03, 0x73); 538 - mipi_dsi_dcs_write_seq(dsi, 0xb3, 0x03, 0x86, 0x03, 0x9a, 0x03, 0xaf, 0x03, 0xdf, 0x03, 539 - 0xf5, 0x03, 0xf7); 540 - mipi_dsi_dcs_write_seq(dsi, 0xb4, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x45, 0x00, 0x65, 0x00, 541 - 0x81, 0x00, 0x99, 0x00, 0xae, 0x00, 0xc1); 542 - mipi_dsi_dcs_write_seq(dsi, 0xb5, 0x00, 0xd2, 0x01, 0x0b, 0x01, 0x34, 0x01, 0x76, 0x01, 543 - 0xa3, 0x01, 0xef, 0x02, 0x27, 0x02, 0x29); 544 - mipi_dsi_dcs_write_seq(dsi, 0xb6, 0x02, 0x5f, 0x02, 0x9e, 0x02, 0xc9, 0x03, 0x00, 0x03, 545 - 0x26, 0x03, 0x53, 0x03, 0x63, 0x03, 0x73); 546 - mipi_dsi_dcs_write_seq(dsi, 0xb7, 0x03, 0x86, 0x03, 0x9a, 0x03, 0xaf, 0x03, 0xdf, 0x03, 547 - 0xf5, 0x03, 0xf7); 548 - mipi_dsi_dcs_write_seq(dsi, 0xb8, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x45, 0x00, 0x65, 0x00, 549 - 0x81, 0x00, 0x99, 0x00, 0xae, 0x00, 0xc1); 550 - mipi_dsi_dcs_write_seq(dsi, 0xb9, 0x00, 0xd2, 0x01, 0x0b, 0x01, 0x34, 0x01, 0x76, 0x01, 551 - 0xa3, 0x01, 0xef, 0x02, 0x27, 0x02, 0x29); 552 - mipi_dsi_dcs_write_seq(dsi, 0xba, 0x02, 0x5f, 0x02, 0x9e, 0x02, 0xc9, 0x03, 0x00, 0x03, 553 - 0x26, 0x03, 0x53, 0x03, 0x63, 0x03, 0x73); 554 - mipi_dsi_dcs_write_seq(dsi, 0xbb, 0x03, 0x86, 0x03, 0x9a, 0x03, 0xaf, 0x03, 0xdf, 0x03, 555 - 0xf5, 0x03, 0xf7); 556 - mipi_dsi_dcs_write_seq(dsi, 0xff, 0x23); 557 - mipi_dsi_dcs_write_seq(dsi, 0xfb, 0x01); 558 - mipi_dsi_dcs_write_seq(dsi, 0x00, 0x80); 559 - mipi_dsi_dcs_write_seq(dsi, 0x07, 0x00); 560 - mipi_dsi_dcs_write_seq(dsi, 0x11, 0x01); 561 - mipi_dsi_dcs_write_seq(dsi, 0x12, 0x77); 562 - mipi_dsi_dcs_write_seq(dsi, 0x15, 0x07); 563 - mipi_dsi_dcs_write_seq(dsi, 0x16, 0x07); 564 - mipi_dsi_dcs_write_seq(dsi, 0xff, 0x24); 565 - mipi_dsi_dcs_write_seq(dsi, 0xfb, 0x01); 566 - mipi_dsi_dcs_write_seq(dsi, 0x00, 0x00); 567 - mipi_dsi_dcs_write_seq(dsi, 0x01, 0x00); 568 - mipi_dsi_dcs_write_seq(dsi, 0x02, 0x1c); 569 - mipi_dsi_dcs_write_seq(dsi, 0x03, 0x1c); 570 - mipi_dsi_dcs_write_seq(dsi, 0x04, 0x1d); 571 - mipi_dsi_dcs_write_seq(dsi, 0x05, 0x1d); 572 - mipi_dsi_dcs_write_seq(dsi, 0x06, 0x04); 573 - mipi_dsi_dcs_write_seq(dsi, 0x07, 0x04); 574 - mipi_dsi_dcs_write_seq(dsi, 0x08, 0x0f); 575 - mipi_dsi_dcs_write_seq(dsi, 0x09, 0x0f); 576 - mipi_dsi_dcs_write_seq(dsi, 0x0a, 0x0e); 577 - mipi_dsi_dcs_write_seq(dsi, 0x0b, 0x0e); 578 - mipi_dsi_dcs_write_seq(dsi, 0x0c, 0x0d); 579 - mipi_dsi_dcs_write_seq(dsi, 0x0d, 0x0d); 580 - mipi_dsi_dcs_write_seq(dsi, 0x0e, 0x0c); 581 - mipi_dsi_dcs_write_seq(dsi, 0x0f, 0x0c); 582 - mipi_dsi_dcs_write_seq(dsi, 0x10, 0x08); 583 - mipi_dsi_dcs_write_seq(dsi, 0x11, 0x08); 584 - mipi_dsi_dcs_write_seq(dsi, 0x12, 0x00); 585 - mipi_dsi_dcs_write_seq(dsi, 0x13, 0x00); 586 - mipi_dsi_dcs_write_seq(dsi, 0x14, 0x00); 587 - mipi_dsi_dcs_write_seq(dsi, 0x15, 0x00); 588 - mipi_dsi_dcs_write_seq(dsi, 0x16, 0x00); 589 - mipi_dsi_dcs_write_seq(dsi, 0x17, 0x00); 590 - mipi_dsi_dcs_write_seq(dsi, 0x18, 0x1c); 591 - mipi_dsi_dcs_write_seq(dsi, 0x19, 0x1c); 592 - mipi_dsi_dcs_write_seq(dsi, 0x1a, 0x1d); 593 - mipi_dsi_dcs_write_seq(dsi, 0x1b, 0x1d); 594 - mipi_dsi_dcs_write_seq(dsi, 0x1c, 0x04); 595 - mipi_dsi_dcs_write_seq(dsi, 0x1d, 0x04); 596 - mipi_dsi_dcs_write_seq(dsi, 0x1e, 0x0f); 597 - mipi_dsi_dcs_write_seq(dsi, 0x1f, 0x0f); 598 - mipi_dsi_dcs_write_seq(dsi, 0x20, 0x0e); 599 - mipi_dsi_dcs_write_seq(dsi, 0x21, 0x0e); 600 - mipi_dsi_dcs_write_seq(dsi, 0x22, 0x0d); 601 - mipi_dsi_dcs_write_seq(dsi, 0x23, 0x0d); 602 - mipi_dsi_dcs_write_seq(dsi, 0x24, 0x0c); 603 - mipi_dsi_dcs_write_seq(dsi, 0x25, 0x0c); 604 - mipi_dsi_dcs_write_seq(dsi, MIPI_DCS_SET_GAMMA_CURVE, 0x08); 605 - mipi_dsi_dcs_write_seq(dsi, 0x27, 0x08); 606 - mipi_dsi_dcs_write_seq(dsi, 0x28, 0x00); 607 - mipi_dsi_dcs_write_seq(dsi, 0x29, 0x00); 608 - mipi_dsi_dcs_write_seq(dsi, 0x2a, 0x00); 609 - mipi_dsi_dcs_write_seq(dsi, 0x2b, 0x00); 610 - mipi_dsi_dcs_write_seq(dsi, MIPI_DCS_WRITE_LUT, 0x20); 611 - mipi_dsi_dcs_write_seq(dsi, 0x2f, 0x0a); 612 - mipi_dsi_dcs_write_seq(dsi, MIPI_DCS_SET_PARTIAL_ROWS, 0x44); 613 - mipi_dsi_dcs_write_seq(dsi, 0x33, 0x0c); 614 - mipi_dsi_dcs_write_seq(dsi, 0x34, 0x32); 615 - mipi_dsi_dcs_write_seq(dsi, 0x37, 0x44); 616 - mipi_dsi_dcs_write_seq(dsi, 0x38, 0x40); 617 - mipi_dsi_dcs_write_seq(dsi, 0x39, 0x00); 491 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xff, 0x20); 492 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xfb, 0x01); 493 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x05, 0xd9); 494 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x07, 0x78); 495 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x08, 0x5a); 496 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0d, 0x63); 497 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0e, 0x91); 498 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0f, 0x73); 499 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x95, 0xeb); 500 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x96, 0xeb); 501 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, MIPI_DCS_SET_PARTIAL_ROWS, 0x11); 502 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6d, 0x66); 503 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x75, 0xa2); 504 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x77, 0xb3); 505 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xb0, 0x00, 0x08, 0x00, 0x23, 0x00, 0x4d, 0x00, 0x6d, 506 + 0x00, 0x89, 0x00, 0xa1, 0x00, 0xb6, 0x00, 0xc9); 507 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xb1, 0x00, 0xda, 0x01, 0x13, 0x01, 0x3c, 0x01, 0x7e, 508 + 0x01, 0xab, 0x01, 0xf7, 0x02, 0x2f, 0x02, 0x31); 509 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xb2, 0x02, 0x67, 0x02, 0xa6, 0x02, 0xd1, 0x03, 0x08, 510 + 0x03, 0x2e, 0x03, 0x5b, 0x03, 0x6b, 0x03, 0x7b); 511 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xb3, 0x03, 0x8e, 0x03, 0xa2, 0x03, 0xb7, 0x03, 0xe7, 512 + 0x03, 0xfd, 0x03, 0xff); 513 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xb4, 0x00, 0x08, 0x00, 0x23, 0x00, 0x4d, 0x00, 0x6d, 514 + 0x00, 0x89, 0x00, 0xa1, 0x00, 0xb6, 0x00, 0xc9); 515 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xb5, 0x00, 0xda, 0x01, 0x13, 0x01, 0x3c, 0x01, 0x7e, 516 + 0x01, 0xab, 0x01, 0xf7, 0x02, 0x2f, 0x02, 0x31); 517 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xb6, 0x02, 0x67, 0x02, 0xa6, 0x02, 0xd1, 0x03, 0x08, 518 + 0x03, 0x2e, 0x03, 0x5b, 0x03, 0x6b, 0x03, 0x7b); 519 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xb7, 0x03, 0x8e, 0x03, 0xa2, 0x03, 0xb7, 0x03, 0xe7, 520 + 0x03, 0xfd, 0x03, 0xff); 521 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xb8, 0x00, 0x08, 0x00, 0x23, 0x00, 0x4d, 0x00, 0x6d, 522 + 0x00, 0x89, 0x00, 0xa1, 0x00, 0xb6, 0x00, 0xc9); 523 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xb9, 0x00, 0xda, 0x01, 0x13, 0x01, 0x3c, 0x01, 0x7e, 524 + 0x01, 0xab, 0x01, 0xf7, 0x02, 0x2f, 0x02, 0x31); 525 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xba, 0x02, 0x67, 0x02, 0xa6, 0x02, 0xd1, 0x03, 0x08, 526 + 0x03, 0x2e, 0x03, 0x5b, 0x03, 0x6b, 0x03, 0x7b); 527 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xbb, 0x03, 0x8e, 0x03, 0xa2, 0x03, 0xb7, 0x03, 0xe7, 528 + 0x03, 0xfd, 0x03, 0xff); 529 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xff, 0x21); 530 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xfb, 0x01); 531 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xb0, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x45, 0x00, 0x65, 532 + 0x00, 0x81, 0x00, 0x99, 0x00, 0xae, 0x00, 0xc1); 533 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xb1, 0x00, 0xd2, 0x01, 0x0b, 0x01, 0x34, 0x01, 0x76, 534 + 0x01, 0xa3, 0x01, 0xef, 0x02, 0x27, 0x02, 0x29); 535 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xb2, 0x02, 0x5f, 0x02, 0x9e, 0x02, 0xc9, 0x03, 0x00, 536 + 0x03, 0x26, 0x03, 0x53, 0x03, 0x63, 0x03, 0x73); 537 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xb3, 0x03, 0x86, 0x03, 0x9a, 0x03, 0xaf, 0x03, 0xdf, 538 + 0x03, 0xf5, 0x03, 0xf7); 539 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xb4, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x45, 0x00, 0x65, 540 + 0x00, 0x81, 0x00, 0x99, 0x00, 0xae, 0x00, 0xc1); 541 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xb5, 0x00, 0xd2, 0x01, 0x0b, 0x01, 0x34, 0x01, 0x76, 542 + 0x01, 0xa3, 0x01, 0xef, 0x02, 0x27, 0x02, 0x29); 543 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xb6, 0x02, 0x5f, 0x02, 0x9e, 0x02, 0xc9, 0x03, 0x00, 544 + 0x03, 0x26, 0x03, 0x53, 0x03, 0x63, 0x03, 0x73); 545 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xb7, 0x03, 0x86, 0x03, 0x9a, 0x03, 0xaf, 0x03, 0xdf, 546 + 0x03, 0xf5, 0x03, 0xf7); 547 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xb8, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x45, 0x00, 0x65, 548 + 0x00, 0x81, 0x00, 0x99, 0x00, 0xae, 0x00, 0xc1); 549 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xb9, 0x00, 0xd2, 0x01, 0x0b, 0x01, 0x34, 0x01, 0x76, 550 + 0x01, 0xa3, 0x01, 0xef, 0x02, 0x27, 0x02, 0x29); 551 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xba, 0x02, 0x5f, 0x02, 0x9e, 0x02, 0xc9, 0x03, 0x00, 552 + 0x03, 0x26, 0x03, 0x53, 0x03, 0x63, 0x03, 0x73); 553 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xbb, 0x03, 0x86, 0x03, 0x9a, 0x03, 0xaf, 0x03, 0xdf, 554 + 0x03, 0xf5, 0x03, 0xf7); 555 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xff, 0x23); 556 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xfb, 0x01); 557 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x00, 0x80); 558 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x07, 0x00); 559 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x11, 0x01); 560 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x12, 0x77); 561 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x15, 0x07); 562 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x16, 0x07); 563 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xff, 0x24); 564 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xfb, 0x01); 565 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x00, 0x00); 566 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x01, 0x00); 567 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x02, 0x1c); 568 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x03, 0x1c); 569 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x04, 0x1d); 570 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x05, 0x1d); 571 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x06, 0x04); 572 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x07, 0x04); 573 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x08, 0x0f); 574 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x09, 0x0f); 575 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0a, 0x0e); 576 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0b, 0x0e); 577 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0c, 0x0d); 578 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0d, 0x0d); 579 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0e, 0x0c); 580 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0f, 0x0c); 581 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x10, 0x08); 582 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x11, 0x08); 583 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x12, 0x00); 584 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x13, 0x00); 585 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x14, 0x00); 586 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x15, 0x00); 587 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x16, 0x00); 588 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x17, 0x00); 589 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x18, 0x1c); 590 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x19, 0x1c); 591 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1a, 0x1d); 592 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1b, 0x1d); 593 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1c, 0x04); 594 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1d, 0x04); 595 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1e, 0x0f); 596 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1f, 0x0f); 597 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x20, 0x0e); 598 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x21, 0x0e); 599 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x22, 0x0d); 600 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x23, 0x0d); 601 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x24, 0x0c); 602 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x25, 0x0c); 603 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, MIPI_DCS_SET_GAMMA_CURVE, 0x08); 604 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x27, 0x08); 605 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x28, 0x00); 606 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x29, 0x00); 607 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x2a, 0x00); 608 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x2b, 0x00); 609 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, MIPI_DCS_WRITE_LUT, 0x20); 610 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x2f, 0x0a); 611 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, MIPI_DCS_SET_PARTIAL_ROWS, 0x44); 612 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x33, 0x0c); 613 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x34, 0x32); 614 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x37, 0x44); 615 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x38, 0x40); 616 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x39, 0x00); 618 617 619 - ret = mipi_dsi_dcs_set_pixel_format(dsi, 0x9a); 620 - if (ret < 0) { 621 - dev_err(dev, "Failed to set pixel format: %d\n", ret); 622 - return ret; 623 - } 618 + mipi_dsi_dcs_set_pixel_format_multi(&dsi_ctx, 0x9a); 624 619 625 - mipi_dsi_dcs_write_seq(dsi, 0x3b, 0xa0); 626 - mipi_dsi_dcs_write_seq(dsi, MIPI_DCS_SET_3D_CONTROL, 0x42); 627 - mipi_dsi_dcs_write_seq(dsi, 0x3f, 0x06); 628 - mipi_dsi_dcs_write_seq(dsi, 0x43, 0x06); 629 - mipi_dsi_dcs_write_seq(dsi, 0x47, 0x66); 630 - mipi_dsi_dcs_write_seq(dsi, 0x4a, 0x9a); 631 - mipi_dsi_dcs_write_seq(dsi, 0x4b, 0xa0); 632 - mipi_dsi_dcs_write_seq(dsi, 0x4c, 0x91); 633 - mipi_dsi_dcs_write_seq(dsi, 0x4d, 0x21); 634 - mipi_dsi_dcs_write_seq(dsi, 0x4e, 0x43); 620 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x3b, 0xa0); 621 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, MIPI_DCS_SET_3D_CONTROL, 0x42); 622 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x3f, 0x06); 623 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x43, 0x06); 624 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x47, 0x66); 625 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x4a, 0x9a); 626 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x4b, 0xa0); 627 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x4c, 0x91); 628 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x4d, 0x21); 629 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x4e, 0x43); 635 630 636 - ret = mipi_dsi_dcs_set_display_brightness(dsi, 18); 637 - if (ret < 0) { 638 - dev_err(dev, "Failed to set display brightness: %d\n", ret); 639 - return ret; 640 - } 631 + mipi_dsi_dcs_set_display_brightness_multi(&dsi_ctx, 18); 641 632 642 - mipi_dsi_dcs_write_seq(dsi, 0x52, 0x34); 643 - mipi_dsi_dcs_write_seq(dsi, 0x55, 0x82, 0x02); 644 - mipi_dsi_dcs_write_seq(dsi, 0x56, 0x04); 645 - mipi_dsi_dcs_write_seq(dsi, 0x58, 0x21); 646 - mipi_dsi_dcs_write_seq(dsi, 0x59, 0x30); 647 - mipi_dsi_dcs_write_seq(dsi, 0x5a, 0xba); 648 - mipi_dsi_dcs_write_seq(dsi, 0x5b, 0xa0); 649 - mipi_dsi_dcs_write_seq(dsi, MIPI_DCS_SET_CABC_MIN_BRIGHTNESS, 0x00, 0x06); 650 - mipi_dsi_dcs_write_seq(dsi, 0x5f, 0x00); 651 - mipi_dsi_dcs_write_seq(dsi, 0x65, 0x82); 652 - mipi_dsi_dcs_write_seq(dsi, 0x7e, 0x20); 653 - mipi_dsi_dcs_write_seq(dsi, 0x7f, 0x3c); 654 - mipi_dsi_dcs_write_seq(dsi, 0x82, 0x04); 655 - mipi_dsi_dcs_write_seq(dsi, 0x97, 0xc0); 656 - mipi_dsi_dcs_write_seq(dsi, 0xb6, 657 - 0x05, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 658 - 0x05, 0x00, 0x00); 659 - mipi_dsi_dcs_write_seq(dsi, 0x92, 0xc4); 660 - mipi_dsi_dcs_write_seq(dsi, 0x93, 0x1a); 661 - mipi_dsi_dcs_write_seq(dsi, 0x94, 0x5f); 662 - mipi_dsi_dcs_write_seq(dsi, 0xd7, 0x55); 663 - mipi_dsi_dcs_write_seq(dsi, 0xda, 0x0a); 664 - mipi_dsi_dcs_write_seq(dsi, 0xde, 0x08); 665 - mipi_dsi_dcs_write_seq(dsi, 0xdb, 0x05); 666 - mipi_dsi_dcs_write_seq(dsi, 0xdc, 0xc4); 667 - mipi_dsi_dcs_write_seq(dsi, 0xdd, 0x22); 668 - mipi_dsi_dcs_write_seq(dsi, 0xdf, 0x05); 669 - mipi_dsi_dcs_write_seq(dsi, 0xe0, 0xc4); 670 - mipi_dsi_dcs_write_seq(dsi, 0xe1, 0x05); 671 - mipi_dsi_dcs_write_seq(dsi, 0xe2, 0xc4); 672 - mipi_dsi_dcs_write_seq(dsi, 0xe3, 0x05); 673 - mipi_dsi_dcs_write_seq(dsi, 0xe4, 0xc4); 674 - mipi_dsi_dcs_write_seq(dsi, 0xe5, 0x05); 675 - mipi_dsi_dcs_write_seq(dsi, 0xe6, 0xc4); 676 - mipi_dsi_dcs_write_seq(dsi, 0x5c, 0x88); 677 - mipi_dsi_dcs_write_seq(dsi, 0x5d, 0x08); 678 - mipi_dsi_dcs_write_seq(dsi, 0x8d, 0x88); 679 - mipi_dsi_dcs_write_seq(dsi, 0x8e, 0x08); 680 - mipi_dsi_dcs_write_seq(dsi, 0xb5, 0x90); 681 - mipi_dsi_dcs_write_seq(dsi, 0xff, 0x25); 682 - mipi_dsi_dcs_write_seq(dsi, 0xfb, 0x01); 683 - mipi_dsi_dcs_write_seq(dsi, 0x05, 0x00); 684 - mipi_dsi_dcs_write_seq(dsi, 0x19, 0x07); 685 - mipi_dsi_dcs_write_seq(dsi, 0x1f, 0xba); 686 - mipi_dsi_dcs_write_seq(dsi, 0x20, 0xa0); 687 - mipi_dsi_dcs_write_seq(dsi, MIPI_DCS_SET_GAMMA_CURVE, 0xba); 688 - mipi_dsi_dcs_write_seq(dsi, 0x27, 0xa0); 689 - mipi_dsi_dcs_write_seq(dsi, 0x33, 0xba); 690 - mipi_dsi_dcs_write_seq(dsi, 0x34, 0xa0); 691 - mipi_dsi_dcs_write_seq(dsi, 0x3f, 0xe0); 692 - mipi_dsi_dcs_write_seq(dsi, MIPI_DCS_SET_VSYNC_TIMING, 0x00); 693 - mipi_dsi_dcs_write_seq(dsi, 0x44, 0x00); 694 - mipi_dsi_dcs_write_seq(dsi, MIPI_DCS_GET_SCANLINE, 0x40); 695 - mipi_dsi_dcs_write_seq(dsi, 0x48, 0xba); 696 - mipi_dsi_dcs_write_seq(dsi, 0x49, 0xa0); 697 - mipi_dsi_dcs_write_seq(dsi, 0x5b, 0x00); 698 - mipi_dsi_dcs_write_seq(dsi, 0x5c, 0x00); 699 - mipi_dsi_dcs_write_seq(dsi, 0x5d, 0x00); 700 - mipi_dsi_dcs_write_seq(dsi, MIPI_DCS_SET_CABC_MIN_BRIGHTNESS, 0xd0); 701 - mipi_dsi_dcs_write_seq(dsi, 0x61, 0xba); 702 - mipi_dsi_dcs_write_seq(dsi, 0x62, 0xa0); 703 - mipi_dsi_dcs_write_seq(dsi, 0xf1, 0x10); 704 - mipi_dsi_dcs_write_seq(dsi, 0xff, 0x2a); 705 - mipi_dsi_dcs_write_seq(dsi, 0xfb, 0x01); 706 - mipi_dsi_dcs_write_seq(dsi, 0x64, 0x16); 707 - mipi_dsi_dcs_write_seq(dsi, 0x67, 0x16); 708 - mipi_dsi_dcs_write_seq(dsi, 0x6a, 0x16); 709 - mipi_dsi_dcs_write_seq(dsi, 0x70, 0x30); 710 - mipi_dsi_dcs_write_seq(dsi, MIPI_DCS_READ_PPS_START, 0xf3); 711 - mipi_dsi_dcs_write_seq(dsi, 0xa3, 0xff); 712 - mipi_dsi_dcs_write_seq(dsi, 0xa4, 0xff); 713 - mipi_dsi_dcs_write_seq(dsi, 0xa5, 0xff); 714 - mipi_dsi_dcs_write_seq(dsi, 0xd6, 0x08); 715 - mipi_dsi_dcs_write_seq(dsi, 0xff, 0x26); 716 - mipi_dsi_dcs_write_seq(dsi, 0xfb, 0x01); 717 - mipi_dsi_dcs_write_seq(dsi, 0x00, 0xa1); 718 - mipi_dsi_dcs_write_seq(dsi, 0x0a, 0xf2); 719 - mipi_dsi_dcs_write_seq(dsi, 0x04, 0x28); 720 - mipi_dsi_dcs_write_seq(dsi, 0x06, 0x30); 721 - mipi_dsi_dcs_write_seq(dsi, 0x0c, 0x13); 722 - mipi_dsi_dcs_write_seq(dsi, 0x0d, 0x0a); 723 - mipi_dsi_dcs_write_seq(dsi, 0x0f, 0x0a); 724 - mipi_dsi_dcs_write_seq(dsi, 0x11, 0x00); 725 - mipi_dsi_dcs_write_seq(dsi, 0x12, 0x50); 726 - mipi_dsi_dcs_write_seq(dsi, 0x13, 0x51); 727 - mipi_dsi_dcs_write_seq(dsi, 0x14, 0x65); 728 - mipi_dsi_dcs_write_seq(dsi, 0x15, 0x00); 729 - mipi_dsi_dcs_write_seq(dsi, 0x16, 0x10); 730 - mipi_dsi_dcs_write_seq(dsi, 0x17, 0xa0); 731 - mipi_dsi_dcs_write_seq(dsi, 0x18, 0x86); 732 - mipi_dsi_dcs_write_seq(dsi, 0x19, 0x11); 733 - mipi_dsi_dcs_write_seq(dsi, 0x1a, 0x7b); 734 - mipi_dsi_dcs_write_seq(dsi, 0x1b, 0x10); 735 - mipi_dsi_dcs_write_seq(dsi, 0x1c, 0xbb); 736 - mipi_dsi_dcs_write_seq(dsi, 0x22, 0x00); 737 - mipi_dsi_dcs_write_seq(dsi, 0x23, 0x00); 738 - mipi_dsi_dcs_write_seq(dsi, 0x2a, 0x11); 739 - mipi_dsi_dcs_write_seq(dsi, 0x2b, 0x7b); 740 - mipi_dsi_dcs_write_seq(dsi, 0x1d, 0x00); 741 - mipi_dsi_dcs_write_seq(dsi, 0x1e, 0xc3); 742 - mipi_dsi_dcs_write_seq(dsi, 0x1f, 0xc3); 743 - mipi_dsi_dcs_write_seq(dsi, 0x24, 0x00); 744 - mipi_dsi_dcs_write_seq(dsi, 0x25, 0xc3); 745 - mipi_dsi_dcs_write_seq(dsi, 0x2f, 0x05); 746 - mipi_dsi_dcs_write_seq(dsi, MIPI_DCS_SET_PARTIAL_ROWS, 0xc3); 747 - mipi_dsi_dcs_write_seq(dsi, MIPI_DCS_SET_PARTIAL_COLUMNS, 0x00); 748 - mipi_dsi_dcs_write_seq(dsi, 0x32, 0xc3); 749 - mipi_dsi_dcs_write_seq(dsi, 0x39, 0x00); 633 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x52, 0x34); 634 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x55, 0x82, 0x02); 635 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x56, 0x04); 636 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x58, 0x21); 637 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x59, 0x30); 638 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5a, 0xba); 639 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5b, 0xa0); 640 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, MIPI_DCS_SET_CABC_MIN_BRIGHTNESS, 0x00, 0x06); 641 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5f, 0x00); 642 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x65, 0x82); 643 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x7e, 0x20); 644 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x7f, 0x3c); 645 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x82, 0x04); 646 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x97, 0xc0); 647 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xb6, 648 + 0x05, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 649 + 0x05, 0x00, 0x00); 650 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x92, 0xc4); 651 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x93, 0x1a); 652 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x94, 0x5f); 653 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xd7, 0x55); 654 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xda, 0x0a); 655 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xde, 0x08); 656 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xdb, 0x05); 657 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xdc, 0xc4); 658 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xdd, 0x22); 659 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xdf, 0x05); 660 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe0, 0xc4); 661 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe1, 0x05); 662 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe2, 0xc4); 663 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe3, 0x05); 664 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe4, 0xc4); 665 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe5, 0x05); 666 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe6, 0xc4); 667 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5c, 0x88); 668 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5d, 0x08); 669 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x8d, 0x88); 670 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x8e, 0x08); 671 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xb5, 0x90); 672 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xff, 0x25); 673 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xfb, 0x01); 674 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x05, 0x00); 675 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x19, 0x07); 676 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1f, 0xba); 677 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x20, 0xa0); 678 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, MIPI_DCS_SET_GAMMA_CURVE, 0xba); 679 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x27, 0xa0); 680 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x33, 0xba); 681 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x34, 0xa0); 682 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x3f, 0xe0); 683 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, MIPI_DCS_SET_VSYNC_TIMING, 0x00); 684 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x44, 0x00); 685 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, MIPI_DCS_GET_SCANLINE, 0x40); 686 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x48, 0xba); 687 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x49, 0xa0); 688 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5b, 0x00); 689 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5c, 0x00); 690 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5d, 0x00); 691 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, MIPI_DCS_SET_CABC_MIN_BRIGHTNESS, 0xd0); 692 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x61, 0xba); 693 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x62, 0xa0); 694 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xf1, 0x10); 695 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xff, 0x2a); 696 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xfb, 0x01); 697 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x64, 0x16); 698 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x67, 0x16); 699 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x6a, 0x16); 700 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x70, 0x30); 701 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, MIPI_DCS_READ_PPS_START, 0xf3); 702 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xa3, 0xff); 703 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xa4, 0xff); 704 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xa5, 0xff); 705 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xd6, 0x08); 706 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xff, 0x26); 707 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xfb, 0x01); 708 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x00, 0xa1); 709 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0a, 0xf2); 710 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x04, 0x28); 711 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x06, 0x30); 712 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0c, 0x13); 713 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0d, 0x0a); 714 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x0f, 0x0a); 715 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x11, 0x00); 716 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x12, 0x50); 717 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x13, 0x51); 718 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x14, 0x65); 719 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x15, 0x00); 720 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x16, 0x10); 721 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x17, 0xa0); 722 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x18, 0x86); 723 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x19, 0x11); 724 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1a, 0x7b); 725 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1b, 0x10); 726 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1c, 0xbb); 727 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x22, 0x00); 728 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x23, 0x00); 729 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x2a, 0x11); 730 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x2b, 0x7b); 731 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1d, 0x00); 732 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1e, 0xc3); 733 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1f, 0xc3); 734 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x24, 0x00); 735 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x25, 0xc3); 736 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x2f, 0x05); 737 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, MIPI_DCS_SET_PARTIAL_ROWS, 0xc3); 738 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, MIPI_DCS_SET_PARTIAL_COLUMNS, 0x00); 739 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x32, 0xc3); 740 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x39, 0x00); 750 741 751 - ret = mipi_dsi_dcs_set_pixel_format(dsi, 0xc3); 752 - if (ret < 0) { 753 - dev_err(dev, "Failed to set pixel format: %d\n", ret); 754 - return ret; 755 - } 742 + mipi_dsi_dcs_set_pixel_format_multi(&dsi_ctx, 0xc3); 756 743 757 - mipi_dsi_dcs_write_seq(dsi, 0x20, 0x01); 758 - mipi_dsi_dcs_write_seq(dsi, 0x33, 0x11); 759 - mipi_dsi_dcs_write_seq(dsi, 0x34, 0x78); 760 - mipi_dsi_dcs_write_seq(dsi, 0x35, 0x16); 761 - mipi_dsi_dcs_write_seq(dsi, 0xc8, 0x04); 762 - mipi_dsi_dcs_write_seq(dsi, 0xc9, 0x82); 763 - mipi_dsi_dcs_write_seq(dsi, 0xca, 0x4e); 764 - mipi_dsi_dcs_write_seq(dsi, 0xcb, 0x00); 765 - mipi_dsi_dcs_write_seq(dsi, MIPI_DCS_READ_PPS_CONTINUE, 0x4c); 766 - mipi_dsi_dcs_write_seq(dsi, 0xaa, 0x47); 767 - mipi_dsi_dcs_write_seq(dsi, 0xff, 0x27); 768 - mipi_dsi_dcs_write_seq(dsi, 0xfb, 0x01); 769 - mipi_dsi_dcs_write_seq(dsi, 0x56, 0x06); 770 - mipi_dsi_dcs_write_seq(dsi, 0x58, 0x80); 771 - mipi_dsi_dcs_write_seq(dsi, 0x59, 0x53); 772 - mipi_dsi_dcs_write_seq(dsi, 0x5a, 0x00); 773 - mipi_dsi_dcs_write_seq(dsi, 0x5b, 0x14); 774 - mipi_dsi_dcs_write_seq(dsi, 0x5c, 0x00); 775 - mipi_dsi_dcs_write_seq(dsi, 0x5d, 0x01); 776 - mipi_dsi_dcs_write_seq(dsi, MIPI_DCS_SET_CABC_MIN_BRIGHTNESS, 0x20); 777 - mipi_dsi_dcs_write_seq(dsi, 0x5f, 0x10); 778 - mipi_dsi_dcs_write_seq(dsi, 0x60, 0x00); 779 - mipi_dsi_dcs_write_seq(dsi, 0x61, 0x1d); 780 - mipi_dsi_dcs_write_seq(dsi, 0x62, 0x00); 781 - mipi_dsi_dcs_write_seq(dsi, 0x63, 0x01); 782 - mipi_dsi_dcs_write_seq(dsi, 0x64, 0x24); 783 - mipi_dsi_dcs_write_seq(dsi, 0x65, 0x1c); 784 - mipi_dsi_dcs_write_seq(dsi, 0x66, 0x00); 785 - mipi_dsi_dcs_write_seq(dsi, 0x67, 0x01); 786 - mipi_dsi_dcs_write_seq(dsi, 0x68, 0x25); 787 - mipi_dsi_dcs_write_seq(dsi, 0x00, 0x00); 788 - mipi_dsi_dcs_write_seq(dsi, 0x78, 0x00); 789 - mipi_dsi_dcs_write_seq(dsi, 0xc3, 0x00); 790 - mipi_dsi_dcs_write_seq(dsi, 0xd1, 0x24); 791 - mipi_dsi_dcs_write_seq(dsi, 0xd2, 0x30); 792 - mipi_dsi_dcs_write_seq(dsi, 0xff, 0x2a); 793 - mipi_dsi_dcs_write_seq(dsi, 0xfb, 0x01); 794 - mipi_dsi_dcs_write_seq(dsi, 0x22, 0x2f); 795 - mipi_dsi_dcs_write_seq(dsi, 0x23, 0x08); 796 - mipi_dsi_dcs_write_seq(dsi, 0x24, 0x00); 797 - mipi_dsi_dcs_write_seq(dsi, 0x25, 0xc3); 798 - mipi_dsi_dcs_write_seq(dsi, MIPI_DCS_SET_GAMMA_CURVE, 0xf8); 799 - mipi_dsi_dcs_write_seq(dsi, 0x27, 0x00); 800 - mipi_dsi_dcs_write_seq(dsi, 0x28, 0x1a); 801 - mipi_dsi_dcs_write_seq(dsi, 0x29, 0x00); 802 - mipi_dsi_dcs_write_seq(dsi, 0x2a, 0x1a); 803 - mipi_dsi_dcs_write_seq(dsi, 0x2b, 0x00); 804 - mipi_dsi_dcs_write_seq(dsi, MIPI_DCS_WRITE_LUT, 0x1a); 805 - mipi_dsi_dcs_write_seq(dsi, 0xff, 0xe0); 806 - mipi_dsi_dcs_write_seq(dsi, 0xfb, 0x01); 807 - mipi_dsi_dcs_write_seq(dsi, 0x14, 0x60); 808 - mipi_dsi_dcs_write_seq(dsi, 0x16, 0xc0); 809 - mipi_dsi_dcs_write_seq(dsi, 0xff, 0xf0); 810 - mipi_dsi_dcs_write_seq(dsi, 0xfb, 0x01); 744 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x20, 0x01); 745 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x33, 0x11); 746 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x34, 0x78); 747 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x35, 0x16); 748 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xc8, 0x04); 749 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xc9, 0x82); 750 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xca, 0x4e); 751 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xcb, 0x00); 752 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, MIPI_DCS_READ_PPS_CONTINUE, 0x4c); 753 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xaa, 0x47); 754 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xff, 0x27); 755 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xfb, 0x01); 756 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x56, 0x06); 757 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x58, 0x80); 758 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x59, 0x53); 759 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5a, 0x00); 760 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5b, 0x14); 761 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5c, 0x00); 762 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5d, 0x01); 763 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, MIPI_DCS_SET_CABC_MIN_BRIGHTNESS, 0x20); 764 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5f, 0x10); 765 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x60, 0x00); 766 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x61, 0x1d); 767 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x62, 0x00); 768 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x63, 0x01); 769 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x64, 0x24); 770 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x65, 0x1c); 771 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x66, 0x00); 772 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x67, 0x01); 773 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x68, 0x25); 774 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x00, 0x00); 775 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x78, 0x00); 776 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xc3, 0x00); 777 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xd1, 0x24); 778 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xd2, 0x30); 779 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xff, 0x2a); 780 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xfb, 0x01); 781 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x22, 0x2f); 782 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x23, 0x08); 783 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x24, 0x00); 784 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x25, 0xc3); 785 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, MIPI_DCS_SET_GAMMA_CURVE, 0xf8); 786 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x27, 0x00); 787 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x28, 0x1a); 788 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x29, 0x00); 789 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x2a, 0x1a); 790 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x2b, 0x00); 791 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, MIPI_DCS_WRITE_LUT, 0x1a); 792 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xff, 0xe0); 793 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xfb, 0x01); 794 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x14, 0x60); 795 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x16, 0xc0); 796 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xff, 0xf0); 797 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xfb, 0x01); 811 798 812 - ret = mipi_dsi_dcs_set_pixel_format(dsi, 0x08); 813 - if (ret < 0) { 814 - dev_err(dev, "Failed to set pixel format: %d\n", ret); 815 - return ret; 816 - } 799 + mipi_dsi_dcs_set_pixel_format_multi(&dsi_ctx, 0x08); 817 800 818 - mipi_dsi_dcs_write_seq(dsi, 0xff, 0x24); 819 - mipi_dsi_dcs_write_seq(dsi, 0xfb, 0x01); 801 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xff, 0x24); 802 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xfb, 0x01); 820 803 821 - ret = mipi_dsi_dcs_set_pixel_format(dsi, 0x5d); 822 - if (ret < 0) { 823 - dev_err(dev, "Failed to set pixel format: %d\n", ret); 824 - return ret; 825 - } 804 + mipi_dsi_dcs_set_pixel_format_multi(&dsi_ctx, 0x5d); 826 805 827 - mipi_dsi_dcs_write_seq(dsi, 0x3b, 0x60); 828 - mipi_dsi_dcs_write_seq(dsi, 0x4a, 0x5d); 829 - mipi_dsi_dcs_write_seq(dsi, 0x4b, 0x60); 830 - mipi_dsi_dcs_write_seq(dsi, 0x5a, 0x70); 831 - mipi_dsi_dcs_write_seq(dsi, 0x5b, 0x60); 832 - mipi_dsi_dcs_write_seq(dsi, 0x91, 0x44); 833 - mipi_dsi_dcs_write_seq(dsi, 0x92, 0x75); 834 - mipi_dsi_dcs_write_seq(dsi, 0xdb, 0x05); 835 - mipi_dsi_dcs_write_seq(dsi, 0xdc, 0x75); 836 - mipi_dsi_dcs_write_seq(dsi, 0xdd, 0x22); 837 - mipi_dsi_dcs_write_seq(dsi, 0xdf, 0x05); 838 - mipi_dsi_dcs_write_seq(dsi, 0xe0, 0x75); 839 - mipi_dsi_dcs_write_seq(dsi, 0xe1, 0x05); 840 - mipi_dsi_dcs_write_seq(dsi, 0xe2, 0x75); 841 - mipi_dsi_dcs_write_seq(dsi, 0xe3, 0x05); 842 - mipi_dsi_dcs_write_seq(dsi, 0xe4, 0x75); 843 - mipi_dsi_dcs_write_seq(dsi, 0xe5, 0x05); 844 - mipi_dsi_dcs_write_seq(dsi, 0xe6, 0x75); 845 - mipi_dsi_dcs_write_seq(dsi, 0x5c, 0x00); 846 - mipi_dsi_dcs_write_seq(dsi, 0x5d, 0x00); 847 - mipi_dsi_dcs_write_seq(dsi, 0x8d, 0x00); 848 - mipi_dsi_dcs_write_seq(dsi, 0x8e, 0x00); 849 - mipi_dsi_dcs_write_seq(dsi, 0xff, 0x25); 850 - mipi_dsi_dcs_write_seq(dsi, 0xfb, 0x01); 851 - mipi_dsi_dcs_write_seq(dsi, 0x1f, 0x70); 852 - mipi_dsi_dcs_write_seq(dsi, 0x20, 0x60); 853 - mipi_dsi_dcs_write_seq(dsi, MIPI_DCS_SET_GAMMA_CURVE, 0x70); 854 - mipi_dsi_dcs_write_seq(dsi, 0x27, 0x60); 855 - mipi_dsi_dcs_write_seq(dsi, 0x33, 0x70); 856 - mipi_dsi_dcs_write_seq(dsi, 0x34, 0x60); 857 - mipi_dsi_dcs_write_seq(dsi, 0x48, 0x70); 858 - mipi_dsi_dcs_write_seq(dsi, 0x49, 0x60); 859 - mipi_dsi_dcs_write_seq(dsi, 0x5b, 0x00); 860 - mipi_dsi_dcs_write_seq(dsi, 0x61, 0x70); 861 - mipi_dsi_dcs_write_seq(dsi, 0x62, 0x60); 862 - mipi_dsi_dcs_write_seq(dsi, 0xff, 0x26); 863 - mipi_dsi_dcs_write_seq(dsi, 0xfb, 0x01); 864 - mipi_dsi_dcs_write_seq(dsi, 0x02, 0x31); 865 - mipi_dsi_dcs_write_seq(dsi, 0x19, 0x0a); 866 - mipi_dsi_dcs_write_seq(dsi, 0x1a, 0x7f); 867 - mipi_dsi_dcs_write_seq(dsi, 0x1b, 0x0a); 868 - mipi_dsi_dcs_write_seq(dsi, 0x1c, 0x0c); 869 - mipi_dsi_dcs_write_seq(dsi, 0x2a, 0x0a); 870 - mipi_dsi_dcs_write_seq(dsi, 0x2b, 0x7f); 871 - mipi_dsi_dcs_write_seq(dsi, 0x1e, 0x75); 872 - mipi_dsi_dcs_write_seq(dsi, 0x1f, 0x75); 873 - mipi_dsi_dcs_write_seq(dsi, 0x25, 0x75); 874 - mipi_dsi_dcs_write_seq(dsi, MIPI_DCS_SET_PARTIAL_ROWS, 0x75); 875 - mipi_dsi_dcs_write_seq(dsi, MIPI_DCS_SET_PARTIAL_COLUMNS, 0x05); 876 - mipi_dsi_dcs_write_seq(dsi, 0x32, 0x8d); 806 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x3b, 0x60); 807 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x4a, 0x5d); 808 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x4b, 0x60); 809 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5a, 0x70); 810 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5b, 0x60); 811 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x91, 0x44); 812 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x92, 0x75); 813 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xdb, 0x05); 814 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xdc, 0x75); 815 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xdd, 0x22); 816 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xdf, 0x05); 817 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe0, 0x75); 818 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe1, 0x05); 819 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe2, 0x75); 820 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe3, 0x05); 821 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe4, 0x75); 822 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe5, 0x05); 823 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xe6, 0x75); 824 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5c, 0x00); 825 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5d, 0x00); 826 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x8d, 0x00); 827 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x8e, 0x00); 828 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xff, 0x25); 829 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xfb, 0x01); 830 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1f, 0x70); 831 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x20, 0x60); 832 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, MIPI_DCS_SET_GAMMA_CURVE, 0x70); 833 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x27, 0x60); 834 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x33, 0x70); 835 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x34, 0x60); 836 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x48, 0x70); 837 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x49, 0x60); 838 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x5b, 0x00); 839 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x61, 0x70); 840 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x62, 0x60); 841 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xff, 0x26); 842 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xfb, 0x01); 843 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x02, 0x31); 844 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x19, 0x0a); 845 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1a, 0x7f); 846 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1b, 0x0a); 847 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1c, 0x0c); 848 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x2a, 0x0a); 849 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x2b, 0x7f); 850 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1e, 0x75); 851 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x1f, 0x75); 852 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x25, 0x75); 853 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, MIPI_DCS_SET_PARTIAL_ROWS, 0x75); 854 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, MIPI_DCS_SET_PARTIAL_COLUMNS, 0x05); 855 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x32, 0x8d); 877 856 878 - ret = mipi_dsi_dcs_set_pixel_format(dsi, 0x75); 879 - if (ret < 0) { 880 - dev_err(dev, "Failed to set pixel format: %d\n", ret); 881 - return ret; 882 - } 857 + mipi_dsi_dcs_set_pixel_format_multi(&dsi_ctx, 0x75); 883 858 884 - mipi_dsi_dcs_write_seq(dsi, 0xff, 0x2a); 885 - mipi_dsi_dcs_write_seq(dsi, 0xfb, 0x01); 886 - mipi_dsi_dcs_write_seq(dsi, 0x25, 0x75); 887 - mipi_dsi_dcs_write_seq(dsi, 0xff, 0x10); 888 - mipi_dsi_dcs_write_seq(dsi, 0xfb, 0x01); 889 - mipi_dsi_dcs_write_seq(dsi, 0xb9, 0x01); 890 - mipi_dsi_dcs_write_seq(dsi, 0xff, 0x20); 891 - mipi_dsi_dcs_write_seq(dsi, 0xfb, 0x01); 892 - mipi_dsi_dcs_write_seq(dsi, 0x18, 0x40); 893 - mipi_dsi_dcs_write_seq(dsi, 0xff, 0x10); 894 - mipi_dsi_dcs_write_seq(dsi, 0xfb, 0x01); 895 - mipi_dsi_dcs_write_seq(dsi, 0xb9, 0x02); 859 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xff, 0x2a); 860 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xfb, 0x01); 861 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x25, 0x75); 862 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xff, 0x10); 863 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xfb, 0x01); 864 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xb9, 0x01); 865 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xff, 0x20); 866 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xfb, 0x01); 867 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x18, 0x40); 868 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xff, 0x10); 869 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xfb, 0x01); 870 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xb9, 0x02); 896 871 897 - ret = mipi_dsi_dcs_set_tear_on(dsi, MIPI_DSI_DCS_TEAR_MODE_VBLANK); 898 - if (ret < 0) { 899 - dev_err(dev, "Failed to set tear on: %d\n", ret); 900 - return ret; 901 - } 872 + mipi_dsi_dcs_set_tear_on_multi(&dsi_ctx, MIPI_DSI_DCS_TEAR_MODE_VBLANK); 902 873 903 - mipi_dsi_dcs_write_seq(dsi, 0xbb, 0x13); 904 - mipi_dsi_dcs_write_seq(dsi, 0x3b, 0x03, 0x5f, 0x1a, 0x04, 0x04); 905 - mipi_dsi_dcs_write_seq(dsi, 0xff, 0x10); 906 - usleep_range(10000, 11000); 907 - mipi_dsi_dcs_write_seq(dsi, 0xfb, 0x01); 874 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xbb, 0x13); 875 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x3b, 0x03, 0x5f, 0x1a, 0x04, 0x04); 876 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xff, 0x10); 877 + mipi_dsi_usleep_range(&dsi_ctx, 10000, 11000); 878 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0xfb, 0x01); 908 879 909 - ret = mipi_dsi_dcs_set_display_brightness(dsi, 0); 910 - if (ret < 0) { 911 - dev_err(dev, "Failed to set display brightness: %d\n", ret); 912 - return ret; 913 - } 880 + mipi_dsi_dcs_set_display_brightness_multi(&dsi_ctx, 0); 914 881 915 - mipi_dsi_dcs_write_seq(dsi, MIPI_DCS_WRITE_CONTROL_DISPLAY, 0x2c); 916 - mipi_dsi_dcs_write_seq(dsi, MIPI_DCS_WRITE_POWER_SAVE, 0x00); 917 - mipi_dsi_dcs_write_seq(dsi, 0x68, 0x05, 0x01); 882 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, MIPI_DCS_WRITE_CONTROL_DISPLAY, 0x2c); 883 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, MIPI_DCS_WRITE_POWER_SAVE, 0x00); 884 + mipi_dsi_dcs_write_seq_multi(&dsi_ctx, 0x68, 0x05, 0x01); 918 885 919 - ret = mipi_dsi_dcs_exit_sleep_mode(dsi); 920 - if (ret < 0) { 921 - dev_err(dev, "Failed to exit sleep mode: %d\n", ret); 922 - return ret; 923 - } 924 - msleep(100); 886 + mipi_dsi_dcs_exit_sleep_mode_multi(&dsi_ctx); 887 + mipi_dsi_msleep(&dsi_ctx, 100); 925 888 926 - ret = mipi_dsi_dcs_set_display_on(dsi); 927 - if (ret < 0) { 928 - dev_err(dev, "Failed to set display on: %d\n", ret); 929 - return ret; 930 - } 931 - msleep(30); 889 + mipi_dsi_dcs_set_display_on_multi(&dsi_ctx); 890 + mipi_dsi_msleep(&dsi_ctx, 30); 932 891 933 - return 0; 892 + return dsi_ctx.accum_err; 934 893 } 935 894 936 895 static const struct drm_display_mode elish_boe_modes[] = { ··· 1026 1063 static int nt36523_disable(struct drm_panel *panel) 1027 1064 { 1028 1065 struct panel_info *pinfo = to_panel_info(panel); 1029 - int i, ret; 1066 + int i; 1030 1067 1031 1068 for (i = 0; i < DSI_NUM_MIN + pinfo->desc->is_dual_dsi; i++) { 1032 - ret = mipi_dsi_dcs_set_display_off(pinfo->dsi[i]); 1033 - if (ret < 0) 1034 - dev_err(&pinfo->dsi[i]->dev, "failed to set display off: %d\n", ret); 1069 + struct mipi_dsi_multi_context dsi_ctx = { .dsi = pinfo->dsi[i]}; 1070 + 1071 + mipi_dsi_dcs_set_display_off_multi(&dsi_ctx); 1035 1072 } 1036 1073 1037 1074 for (i = 0; i < DSI_NUM_MIN + pinfo->desc->is_dual_dsi; i++) { 1038 - ret = mipi_dsi_dcs_enter_sleep_mode(pinfo->dsi[i]); 1039 - if (ret < 0) 1040 - dev_err(&pinfo->dsi[i]->dev, "failed to enter sleep mode: %d\n", ret); 1075 + struct mipi_dsi_multi_context dsi_ctx = { .dsi = pinfo->dsi[i]}; 1076 + 1077 + mipi_dsi_dcs_enter_sleep_mode_multi(&dsi_ctx); 1041 1078 } 1042 1079 1043 1080 msleep(70);