@@ -1224,6 +1224,199 @@ static const struct ili9881c_instr am8001280g_init[] = {
1224
1224
ILI9881C_COMMAND_INSTR (MIPI_DCS_WRITE_POWER_SAVE , 0x00 ),
1225
1225
};
1226
1226
1227
+ static const struct ili9881c_instr rpi_7inch_init [] = {
1228
+ ILI9881C_SWITCH_PAGE_INSTR (3 ),
1229
+ ILI9881C_COMMAND_INSTR (0x01 , 0x00 ),
1230
+ ILI9881C_COMMAND_INSTR (0x02 , 0x00 ),
1231
+ ILI9881C_COMMAND_INSTR (0x03 , 0x73 ),
1232
+ ILI9881C_COMMAND_INSTR (0x04 , 0x00 ),
1233
+ ILI9881C_COMMAND_INSTR (0x05 , 0x00 ),
1234
+ ILI9881C_COMMAND_INSTR (0x06 , 0x0a ),
1235
+ ILI9881C_COMMAND_INSTR (0x07 , 0x00 ),
1236
+ ILI9881C_COMMAND_INSTR (0x08 , 0x00 ),
1237
+ ILI9881C_COMMAND_INSTR (0x09 , 0x61 ),
1238
+ ILI9881C_COMMAND_INSTR (0x0a , 0x00 ),
1239
+ ILI9881C_COMMAND_INSTR (0x0b , 0x00 ),
1240
+ ILI9881C_COMMAND_INSTR (0x0c , 0x01 ),
1241
+ ILI9881C_COMMAND_INSTR (0x0d , 0x00 ),
1242
+ ILI9881C_COMMAND_INSTR (0x0e , 0x00 ),
1243
+ ILI9881C_COMMAND_INSTR (0x0f , 0x61 ),
1244
+ ILI9881C_COMMAND_INSTR (0x10 , 0x61 ),
1245
+ ILI9881C_COMMAND_INSTR (0x11 , 0x00 ),
1246
+ ILI9881C_COMMAND_INSTR (0x12 , 0x00 ),
1247
+ ILI9881C_COMMAND_INSTR (0x13 , 0x00 ),
1248
+ ILI9881C_COMMAND_INSTR (0x14 , 0x00 ),
1249
+ ILI9881C_COMMAND_INSTR (0x15 , 0x00 ),
1250
+ ILI9881C_COMMAND_INSTR (0x16 , 0x00 ),
1251
+ ILI9881C_COMMAND_INSTR (0x17 , 0x00 ),
1252
+ ILI9881C_COMMAND_INSTR (0x18 , 0x00 ),
1253
+ ILI9881C_COMMAND_INSTR (0x19 , 0x00 ),
1254
+ ILI9881C_COMMAND_INSTR (0x1a , 0x00 ),
1255
+ ILI9881C_COMMAND_INSTR (0x1b , 0x00 ),
1256
+ ILI9881C_COMMAND_INSTR (0x1c , 0x00 ),
1257
+ ILI9881C_COMMAND_INSTR (0x1d , 0x00 ),
1258
+ ILI9881C_COMMAND_INSTR (0x1e , 0x40 ),
1259
+ ILI9881C_COMMAND_INSTR (0x1f , 0x80 ),
1260
+ ILI9881C_COMMAND_INSTR (0x20 , 0x06 ),
1261
+ ILI9881C_COMMAND_INSTR (0x21 , 0x01 ),
1262
+ ILI9881C_COMMAND_INSTR (0x22 , 0x00 ),
1263
+ ILI9881C_COMMAND_INSTR (0x23 , 0x00 ),
1264
+ ILI9881C_COMMAND_INSTR (0x24 , 0x00 ),
1265
+ ILI9881C_COMMAND_INSTR (0x25 , 0x00 ),
1266
+ ILI9881C_COMMAND_INSTR (0x26 , 0x00 ),
1267
+ ILI9881C_COMMAND_INSTR (0x27 , 0x00 ),
1268
+ ILI9881C_COMMAND_INSTR (0x28 , 0x33 ),
1269
+ ILI9881C_COMMAND_INSTR (0x29 , 0x03 ),
1270
+ ILI9881C_COMMAND_INSTR (0x2a , 0x00 ),
1271
+ ILI9881C_COMMAND_INSTR (0x2b , 0x00 ),
1272
+ ILI9881C_COMMAND_INSTR (0x2c , 0x00 ),
1273
+ ILI9881C_COMMAND_INSTR (0x2d , 0x00 ),
1274
+ ILI9881C_COMMAND_INSTR (0x2e , 0x00 ),
1275
+ ILI9881C_COMMAND_INSTR (0x2f , 0x00 ),
1276
+ ILI9881C_COMMAND_INSTR (0x30 , 0x00 ),
1277
+ ILI9881C_COMMAND_INSTR (0x31 , 0x00 ),
1278
+ ILI9881C_COMMAND_INSTR (0x32 , 0x00 ),
1279
+ ILI9881C_COMMAND_INSTR (0x33 , 0x00 ),
1280
+ ILI9881C_COMMAND_INSTR (0x34 , 0x04 ),
1281
+ ILI9881C_COMMAND_INSTR (0x35 , 0x00 ),
1282
+ ILI9881C_COMMAND_INSTR (0x36 , 0x00 ),
1283
+ ILI9881C_COMMAND_INSTR (0x37 , 0x00 ),
1284
+ ILI9881C_COMMAND_INSTR (0x38 , 0x3c ),
1285
+ ILI9881C_COMMAND_INSTR (0x39 , 0x00 ),
1286
+ ILI9881C_COMMAND_INSTR (0x3a , 0x00 ),
1287
+ ILI9881C_COMMAND_INSTR (0x3b , 0x00 ),
1288
+ ILI9881C_COMMAND_INSTR (0x3c , 0x00 ),
1289
+ ILI9881C_COMMAND_INSTR (0x3d , 0x00 ),
1290
+ ILI9881C_COMMAND_INSTR (0x3e , 0x00 ),
1291
+ ILI9881C_COMMAND_INSTR (0x3f , 0x00 ),
1292
+ ILI9881C_COMMAND_INSTR (0x40 , 0x00 ),
1293
+ ILI9881C_COMMAND_INSTR (0x41 , 0x00 ),
1294
+ ILI9881C_COMMAND_INSTR (0x42 , 0x00 ),
1295
+ ILI9881C_COMMAND_INSTR (0x43 , 0x00 ),
1296
+ ILI9881C_COMMAND_INSTR (0x44 , 0x00 ),
1297
+ ILI9881C_COMMAND_INSTR (0x50 , 0x10 ),
1298
+ ILI9881C_COMMAND_INSTR (0x51 , 0x32 ),
1299
+ ILI9881C_COMMAND_INSTR (0x52 , 0x54 ),
1300
+ ILI9881C_COMMAND_INSTR (0x53 , 0x76 ),
1301
+ ILI9881C_COMMAND_INSTR (0x54 , 0x98 ),
1302
+ ILI9881C_COMMAND_INSTR (0x55 , 0xba ),
1303
+ ILI9881C_COMMAND_INSTR (0x56 , 0x10 ),
1304
+ ILI9881C_COMMAND_INSTR (0x57 , 0x32 ),
1305
+ ILI9881C_COMMAND_INSTR (0x58 , 0x54 ),
1306
+ ILI9881C_COMMAND_INSTR (0x59 , 0x76 ),
1307
+ ILI9881C_COMMAND_INSTR (0x5a , 0x98 ),
1308
+ ILI9881C_COMMAND_INSTR (0x5b , 0xba ),
1309
+ ILI9881C_COMMAND_INSTR (0x5c , 0xdc ),
1310
+ ILI9881C_COMMAND_INSTR (0x5d , 0xfe ),
1311
+ ILI9881C_COMMAND_INSTR (0x5e , 0x00 ),
1312
+ ILI9881C_COMMAND_INSTR (0x5f , 0x0e ),
1313
+ ILI9881C_COMMAND_INSTR (0x60 , 0x0f ),
1314
+ ILI9881C_COMMAND_INSTR (0x61 , 0x0c ),
1315
+ ILI9881C_COMMAND_INSTR (0x62 , 0x0d ),
1316
+ ILI9881C_COMMAND_INSTR (0x63 , 0x06 ),
1317
+ ILI9881C_COMMAND_INSTR (0x64 , 0x07 ),
1318
+ ILI9881C_COMMAND_INSTR (0x65 , 0x02 ),
1319
+ ILI9881C_COMMAND_INSTR (0x66 , 0x02 ),
1320
+ ILI9881C_COMMAND_INSTR (0x67 , 0x02 ),
1321
+ ILI9881C_COMMAND_INSTR (0x68 , 0x02 ),
1322
+ ILI9881C_COMMAND_INSTR (0x69 , 0x01 ),
1323
+ ILI9881C_COMMAND_INSTR (0x6a , 0x00 ),
1324
+ ILI9881C_COMMAND_INSTR (0x6b , 0x02 ),
1325
+ ILI9881C_COMMAND_INSTR (0x6c , 0x15 ),
1326
+ ILI9881C_COMMAND_INSTR (0x6d , 0x14 ),
1327
+ ILI9881C_COMMAND_INSTR (0x6e , 0x02 ),
1328
+ ILI9881C_COMMAND_INSTR (0x6f , 0x02 ),
1329
+ ILI9881C_COMMAND_INSTR (0x70 , 0x02 ),
1330
+ ILI9881C_COMMAND_INSTR (0x71 , 0x02 ),
1331
+ ILI9881C_COMMAND_INSTR (0x72 , 0x02 ),
1332
+ ILI9881C_COMMAND_INSTR (0x73 , 0x02 ),
1333
+ ILI9881C_COMMAND_INSTR (0x74 , 0x02 ),
1334
+ ILI9881C_COMMAND_INSTR (0x75 , 0x0e ),
1335
+ ILI9881C_COMMAND_INSTR (0x76 , 0x0f ),
1336
+ ILI9881C_COMMAND_INSTR (0x77 , 0x0c ),
1337
+ ILI9881C_COMMAND_INSTR (0x78 , 0x0d ),
1338
+ ILI9881C_COMMAND_INSTR (0x79 , 0x06 ),
1339
+ ILI9881C_COMMAND_INSTR (0x7a , 0x07 ),
1340
+ ILI9881C_COMMAND_INSTR (0x7b , 0x02 ),
1341
+ ILI9881C_COMMAND_INSTR (0x7c , 0x02 ),
1342
+ ILI9881C_COMMAND_INSTR (0x7d , 0x02 ),
1343
+ ILI9881C_COMMAND_INSTR (0x7e , 0x02 ),
1344
+ ILI9881C_COMMAND_INSTR (0x7f , 0x01 ),
1345
+ ILI9881C_COMMAND_INSTR (0x80 , 0x00 ),
1346
+ ILI9881C_COMMAND_INSTR (0x81 , 0x02 ),
1347
+ ILI9881C_COMMAND_INSTR (0x82 , 0x14 ),
1348
+ ILI9881C_COMMAND_INSTR (0x83 , 0x15 ),
1349
+ ILI9881C_COMMAND_INSTR (0x84 , 0x02 ),
1350
+ ILI9881C_COMMAND_INSTR (0x85 , 0x02 ),
1351
+ ILI9881C_COMMAND_INSTR (0x86 , 0x02 ),
1352
+ ILI9881C_COMMAND_INSTR (0x87 , 0x02 ),
1353
+ ILI9881C_COMMAND_INSTR (0x88 , 0x02 ),
1354
+ ILI9881C_COMMAND_INSTR (0x89 , 0x02 ),
1355
+ ILI9881C_COMMAND_INSTR (0x8A , 0x02 ),
1356
+ ILI9881C_SWITCH_PAGE_INSTR (4 ),
1357
+ ILI9881C_COMMAND_INSTR (0x6C , 0x15 ),
1358
+ ILI9881C_COMMAND_INSTR (0x6E , 0x2A ),
1359
+ ILI9881C_COMMAND_INSTR (0x6F , 0x33 ),
1360
+ ILI9881C_COMMAND_INSTR (0x3B , 0x98 ),
1361
+ ILI9881C_COMMAND_INSTR (0x3a , 0x94 ),
1362
+ ILI9881C_COMMAND_INSTR (0x8D , 0x14 ),
1363
+ ILI9881C_COMMAND_INSTR (0x87 , 0xBA ),
1364
+ ILI9881C_COMMAND_INSTR (0x26 , 0x76 ),
1365
+ ILI9881C_COMMAND_INSTR (0xB2 , 0xD1 ),
1366
+ ILI9881C_COMMAND_INSTR (0xB5 , 0x06 ),
1367
+ ILI9881C_COMMAND_INSTR (0x38 , 0x01 ),
1368
+ ILI9881C_COMMAND_INSTR (0x39 , 0x00 ),
1369
+ ILI9881C_SWITCH_PAGE_INSTR (1 ),
1370
+ ILI9881C_COMMAND_INSTR (0x22 , 0x0A ),
1371
+ ILI9881C_COMMAND_INSTR (0x31 , 0x00 ),
1372
+ ILI9881C_COMMAND_INSTR (0x53 , 0x7d ),
1373
+ ILI9881C_COMMAND_INSTR (0x55 , 0x8f ),
1374
+ ILI9881C_COMMAND_INSTR (0x40 , 0x33 ),
1375
+ ILI9881C_COMMAND_INSTR (0x50 , 0x96 ),
1376
+ ILI9881C_COMMAND_INSTR (0x51 , 0x96 ),
1377
+ ILI9881C_COMMAND_INSTR (0x60 , 0x23 ),
1378
+ ILI9881C_COMMAND_INSTR (0xA0 , 0x08 ),
1379
+ ILI9881C_COMMAND_INSTR (0xA1 , 0x1d ),
1380
+ ILI9881C_COMMAND_INSTR (0xA2 , 0x2a ),
1381
+ ILI9881C_COMMAND_INSTR (0xA3 , 0x10 ),
1382
+ ILI9881C_COMMAND_INSTR (0xA4 , 0x15 ),
1383
+ ILI9881C_COMMAND_INSTR (0xA5 , 0x28 ),
1384
+ ILI9881C_COMMAND_INSTR (0xA6 , 0x1c ),
1385
+ ILI9881C_COMMAND_INSTR (0xA7 , 0x1d ),
1386
+ ILI9881C_COMMAND_INSTR (0xA8 , 0x7e ),
1387
+ ILI9881C_COMMAND_INSTR (0xA9 , 0x1d ),
1388
+ ILI9881C_COMMAND_INSTR (0xAA , 0x29 ),
1389
+ ILI9881C_COMMAND_INSTR (0xAB , 0x6b ),
1390
+ ILI9881C_COMMAND_INSTR (0xAC , 0x1a ),
1391
+ ILI9881C_COMMAND_INSTR (0xAD , 0x18 ),
1392
+ ILI9881C_COMMAND_INSTR (0xAE , 0x4b ),
1393
+ ILI9881C_COMMAND_INSTR (0xAF , 0x20 ),
1394
+ ILI9881C_COMMAND_INSTR (0xB0 , 0x27 ),
1395
+ ILI9881C_COMMAND_INSTR (0xB1 , 0x50 ),
1396
+ ILI9881C_COMMAND_INSTR (0xB2 , 0x64 ),
1397
+ ILI9881C_COMMAND_INSTR (0xB3 , 0x39 ),
1398
+ ILI9881C_COMMAND_INSTR (0xC0 , 0x08 ),
1399
+ ILI9881C_COMMAND_INSTR (0xC1 , 0x1d ),
1400
+ ILI9881C_COMMAND_INSTR (0xC2 , 0x2a ),
1401
+ ILI9881C_COMMAND_INSTR (0xC3 , 0x10 ),
1402
+ ILI9881C_COMMAND_INSTR (0xC4 , 0x15 ),
1403
+ ILI9881C_COMMAND_INSTR (0xC5 , 0x28 ),
1404
+ ILI9881C_COMMAND_INSTR (0xC6 , 0x1c ),
1405
+ ILI9881C_COMMAND_INSTR (0xC7 , 0x1d ),
1406
+ ILI9881C_COMMAND_INSTR (0xC8 , 0x7e ),
1407
+ ILI9881C_COMMAND_INSTR (0xC9 , 0x1d ),
1408
+ ILI9881C_COMMAND_INSTR (0xCA , 0x29 ),
1409
+ ILI9881C_COMMAND_INSTR (0xCB , 0x6b ),
1410
+ ILI9881C_COMMAND_INSTR (0xCC , 0x1a ),
1411
+ ILI9881C_COMMAND_INSTR (0xCD , 0x18 ),
1412
+ ILI9881C_COMMAND_INSTR (0xCE , 0x4b ),
1413
+ ILI9881C_COMMAND_INSTR (0xCF , 0x20 ),
1414
+ ILI9881C_COMMAND_INSTR (0xD0 , 0x27 ),
1415
+ ILI9881C_COMMAND_INSTR (0xD1 , 0x50 ),
1416
+ ILI9881C_COMMAND_INSTR (0xD2 , 0x64 ),
1417
+ ILI9881C_COMMAND_INSTR (0xD3 , 0x39 ),
1418
+ };
1419
+
1227
1420
static inline struct ili9881c * panel_to_ili9881c (struct drm_panel * panel )
1228
1421
{
1229
1422
return container_of (panel , struct ili9881c , panel );
@@ -1450,6 +1643,23 @@ static const struct drm_display_mode am8001280g_default_mode = {
1450
1643
.height_mm = 151 ,
1451
1644
};
1452
1645
1646
+ static const struct drm_display_mode rpi_7inch_default_mode = {
1647
+ .clock = 83330 ,
1648
+
1649
+ .hdisplay = 720 ,
1650
+ .hsync_start = 720 + 239 ,
1651
+ .hsync_end = 720 + 239 + 33 ,
1652
+ .htotal = 720 + 239 + 33 + 50 ,
1653
+
1654
+ .vdisplay = 1280 ,
1655
+ .vsync_start = 1280 + 20 ,
1656
+ .vsync_end = 1280 + 20 + 2 ,
1657
+ .vtotal = 1280 + 20 + 2 + 30 ,
1658
+
1659
+ .width_mm = 90 ,
1660
+ .height_mm = 151 ,
1661
+ };
1662
+
1453
1663
static int ili9881c_get_modes (struct drm_panel * panel ,
1454
1664
struct drm_connector * connector )
1455
1665
{
@@ -1612,13 +1822,22 @@ static const struct ili9881c_desc am8001280g_desc = {
1612
1822
MIPI_DSI_CLOCK_NON_CONTINUOUS | MIPI_DSI_MODE_LPM ,
1613
1823
};
1614
1824
1825
+ static const struct ili9881c_desc rpi_7inch_desc = {
1826
+ .init = rpi_7inch_init ,
1827
+ .init_length = ARRAY_SIZE (rpi_7inch_init ),
1828
+ .mode = & rpi_7inch_default_mode ,
1829
+ .mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_LPM ,
1830
+ .lanes = 2 ,
1831
+ };
1832
+
1615
1833
static const struct of_device_id ili9881c_of_match [] = {
1616
1834
{ .compatible = "bananapi,lhr050h41" , .data = & lhr050h41_desc },
1617
1835
{ .compatible = "feixin,k101-im2byl02" , .data = & k101_im2byl02_desc },
1618
1836
{ .compatible = "startek,kd050hdfia020" , .data = & kd050hdfia020_desc },
1619
1837
{ .compatible = "tdo,tl050hdv35" , .data = & tl050hdv35_desc },
1620
1838
{ .compatible = "wanchanglong,w552946aba" , .data = & w552946aba_desc },
1621
1839
{ .compatible = "ampire,am8001280g" , .data = & am8001280g_desc },
1840
+ { .compatible = "raspberrypi,dsi-7inch" , & rpi_7inch_desc },
1622
1841
{ }
1623
1842
};
1624
1843
MODULE_DEVICE_TABLE (of , ili9881c_of_match );
0 commit comments