Skip to content

Commit 97f0d2e

Browse files
Marek Vasutsuperna9999
authored andcommitted
drm/panel: ilitek-ili9881c: Add configuration for 5" Raspberry Pi 720x1280
Add configuration for the 5" Raspberry Pi 720x1280 DSI panel based on ili9881. This uses 10px longer horizontal sync pulse and 10px shorter HBP to avoid very short hsync pulse. Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://lore.kernel.org/r/20250904205743.186177-2-marek.vasut+renesas@mailbox.org
1 parent 86769c7 commit 97f0d2e

1 file changed

Lines changed: 214 additions & 0 deletions

File tree

drivers/gpu/drm/panel/panel-ilitek-ili9881c.c

Lines changed: 214 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1224,6 +1224,194 @@ static const struct ili9881c_instr am8001280g_init[] = {
12241224
ILI9881C_COMMAND_INSTR(MIPI_DCS_WRITE_POWER_SAVE, 0x00),
12251225
};
12261226

1227+
static const struct ili9881c_instr rpi_5inch_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, 0x73),
1233+
ILI9881C_COMMAND_INSTR(0x05, 0x00),
1234+
ILI9881C_COMMAND_INSTR(0x06, 0x06),
1235+
ILI9881C_COMMAND_INSTR(0x07, 0x02),
1236+
ILI9881C_COMMAND_INSTR(0x08, 0x00),
1237+
ILI9881C_COMMAND_INSTR(0x09, 0x01),
1238+
ILI9881C_COMMAND_INSTR(0x0a, 0x01),
1239+
ILI9881C_COMMAND_INSTR(0x0b, 0x01),
1240+
ILI9881C_COMMAND_INSTR(0x0c, 0x01),
1241+
ILI9881C_COMMAND_INSTR(0x0d, 0x01),
1242+
ILI9881C_COMMAND_INSTR(0x0e, 0x01),
1243+
ILI9881C_COMMAND_INSTR(0x0f, 0x01),
1244+
ILI9881C_COMMAND_INSTR(0x10, 0x01),
1245+
ILI9881C_COMMAND_INSTR(0x11, 0x00),
1246+
ILI9881C_COMMAND_INSTR(0x12, 0x00),
1247+
ILI9881C_COMMAND_INSTR(0x13, 0x01),
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, 0xc0),
1259+
ILI9881C_COMMAND_INSTR(0x1f, 0x80),
1260+
ILI9881C_COMMAND_INSTR(0x20, 0x04),
1261+
ILI9881C_COMMAND_INSTR(0x21, 0x03),
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, 0x03),
1281+
ILI9881C_COMMAND_INSTR(0x35, 0x00),
1282+
ILI9881C_COMMAND_INSTR(0x36, 0x03),
1283+
ILI9881C_COMMAND_INSTR(0x37, 0x00),
1284+
ILI9881C_COMMAND_INSTR(0x38, 0x00),
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, 0x01),
1298+
ILI9881C_COMMAND_INSTR(0x51, 0x23),
1299+
ILI9881C_COMMAND_INSTR(0x52, 0x45),
1300+
ILI9881C_COMMAND_INSTR(0x53, 0x67),
1301+
ILI9881C_COMMAND_INSTR(0x54, 0x89),
1302+
ILI9881C_COMMAND_INSTR(0x55, 0xab),
1303+
ILI9881C_COMMAND_INSTR(0x56, 0x01),
1304+
ILI9881C_COMMAND_INSTR(0x57, 0x23),
1305+
ILI9881C_COMMAND_INSTR(0x58, 0x45),
1306+
ILI9881C_COMMAND_INSTR(0x59, 0x67),
1307+
ILI9881C_COMMAND_INSTR(0x5a, 0x89),
1308+
ILI9881C_COMMAND_INSTR(0x5b, 0xab),
1309+
ILI9881C_COMMAND_INSTR(0x5c, 0xcd),
1310+
ILI9881C_COMMAND_INSTR(0x5d, 0xef),
1311+
ILI9881C_COMMAND_INSTR(0x5e, 0x10),
1312+
ILI9881C_COMMAND_INSTR(0x5f, 0x09),
1313+
ILI9881C_COMMAND_INSTR(0x60, 0x08),
1314+
ILI9881C_COMMAND_INSTR(0x61, 0x0f),
1315+
ILI9881C_COMMAND_INSTR(0x62, 0x0e),
1316+
ILI9881C_COMMAND_INSTR(0x63, 0x0d),
1317+
ILI9881C_COMMAND_INSTR(0x64, 0x0c),
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, 0x02),
1323+
ILI9881C_COMMAND_INSTR(0x6a, 0x02),
1324+
ILI9881C_COMMAND_INSTR(0x6b, 0x02),
1325+
ILI9881C_COMMAND_INSTR(0x6c, 0x02),
1326+
ILI9881C_COMMAND_INSTR(0x6d, 0x02),
1327+
ILI9881C_COMMAND_INSTR(0x6e, 0x02),
1328+
ILI9881C_COMMAND_INSTR(0x6f, 0x02),
1329+
ILI9881C_COMMAND_INSTR(0x70, 0x02),
1330+
ILI9881C_COMMAND_INSTR(0x71, 0x06),
1331+
ILI9881C_COMMAND_INSTR(0x72, 0x07),
1332+
ILI9881C_COMMAND_INSTR(0x73, 0x02),
1333+
ILI9881C_COMMAND_INSTR(0x74, 0x02),
1334+
ILI9881C_COMMAND_INSTR(0x75, 0x06),
1335+
ILI9881C_COMMAND_INSTR(0x76, 0x07),
1336+
ILI9881C_COMMAND_INSTR(0x77, 0x0e),
1337+
ILI9881C_COMMAND_INSTR(0x78, 0x0f),
1338+
ILI9881C_COMMAND_INSTR(0x79, 0x0c),
1339+
ILI9881C_COMMAND_INSTR(0x7a, 0x0d),
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, 0x02),
1345+
ILI9881C_COMMAND_INSTR(0x80, 0x02),
1346+
ILI9881C_COMMAND_INSTR(0x81, 0x02),
1347+
ILI9881C_COMMAND_INSTR(0x82, 0x02),
1348+
ILI9881C_COMMAND_INSTR(0x83, 0x02),
1349+
ILI9881C_COMMAND_INSTR(0x84, 0x02),
1350+
ILI9881C_COMMAND_INSTR(0x85, 0x02),
1351+
ILI9881C_COMMAND_INSTR(0x86, 0x02),
1352+
ILI9881C_COMMAND_INSTR(0x87, 0x09),
1353+
ILI9881C_COMMAND_INSTR(0x88, 0x08),
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, 0x57),
1360+
ILI9881C_COMMAND_INSTR(0x3a, 0xa4),
1361+
ILI9881C_COMMAND_INSTR(0x8d, 0x1a),
1362+
ILI9881C_COMMAND_INSTR(0x87, 0xba),
1363+
ILI9881C_COMMAND_INSTR(0x26, 0x76),
1364+
ILI9881C_COMMAND_INSTR(0xb2, 0xd1),
1365+
ILI9881C_SWITCH_PAGE_INSTR(1),
1366+
ILI9881C_COMMAND_INSTR(0x22, 0x0a),
1367+
ILI9881C_COMMAND_INSTR(0x31, 0x00),
1368+
ILI9881C_COMMAND_INSTR(0x53, 0x35),
1369+
ILI9881C_COMMAND_INSTR(0x55, 0x50),
1370+
ILI9881C_COMMAND_INSTR(0x50, 0xaf),
1371+
ILI9881C_COMMAND_INSTR(0x51, 0xaf),
1372+
ILI9881C_COMMAND_INSTR(0x60, 0x14),
1373+
ILI9881C_COMMAND_INSTR(0xa0, 0x08),
1374+
ILI9881C_COMMAND_INSTR(0xa1, 0x1d),
1375+
ILI9881C_COMMAND_INSTR(0xa2, 0x2c),
1376+
ILI9881C_COMMAND_INSTR(0xa3, 0x14),
1377+
ILI9881C_COMMAND_INSTR(0xa4, 0x19),
1378+
ILI9881C_COMMAND_INSTR(0xa5, 0x2e),
1379+
ILI9881C_COMMAND_INSTR(0xa6, 0x22),
1380+
ILI9881C_COMMAND_INSTR(0xa7, 0x23),
1381+
ILI9881C_COMMAND_INSTR(0xa8, 0x97),
1382+
ILI9881C_COMMAND_INSTR(0xa9, 0x1e),
1383+
ILI9881C_COMMAND_INSTR(0xaa, 0x29),
1384+
ILI9881C_COMMAND_INSTR(0xab, 0x7b),
1385+
ILI9881C_COMMAND_INSTR(0xac, 0x18),
1386+
ILI9881C_COMMAND_INSTR(0xad, 0x17),
1387+
ILI9881C_COMMAND_INSTR(0xae, 0x4b),
1388+
ILI9881C_COMMAND_INSTR(0xaf, 0x1f),
1389+
ILI9881C_COMMAND_INSTR(0xb0, 0x27),
1390+
ILI9881C_COMMAND_INSTR(0xb1, 0x52),
1391+
ILI9881C_COMMAND_INSTR(0xb2, 0x63),
1392+
ILI9881C_COMMAND_INSTR(0xb3, 0x39),
1393+
ILI9881C_COMMAND_INSTR(0xc0, 0x08),
1394+
ILI9881C_COMMAND_INSTR(0xc1, 0x1d),
1395+
ILI9881C_COMMAND_INSTR(0xc2, 0x2c),
1396+
ILI9881C_COMMAND_INSTR(0xc3, 0x14),
1397+
ILI9881C_COMMAND_INSTR(0xc4, 0x19),
1398+
ILI9881C_COMMAND_INSTR(0xc5, 0x2e),
1399+
ILI9881C_COMMAND_INSTR(0xc6, 0x22),
1400+
ILI9881C_COMMAND_INSTR(0xc7, 0x23),
1401+
ILI9881C_COMMAND_INSTR(0xc8, 0x97),
1402+
ILI9881C_COMMAND_INSTR(0xc9, 0x1e),
1403+
ILI9881C_COMMAND_INSTR(0xca, 0x29),
1404+
ILI9881C_COMMAND_INSTR(0xcb, 0x7b),
1405+
ILI9881C_COMMAND_INSTR(0xcc, 0x18),
1406+
ILI9881C_COMMAND_INSTR(0xcd, 0x17),
1407+
ILI9881C_COMMAND_INSTR(0xce, 0x4b),
1408+
ILI9881C_COMMAND_INSTR(0xcf, 0x1f),
1409+
ILI9881C_COMMAND_INSTR(0xd0, 0x27),
1410+
ILI9881C_COMMAND_INSTR(0xd1, 0x52),
1411+
ILI9881C_COMMAND_INSTR(0xd2, 0x63),
1412+
ILI9881C_COMMAND_INSTR(0xd3, 0x39),
1413+
};
1414+
12271415
static const struct ili9881c_instr rpi_7inch_init[] = {
12281416
ILI9881C_SWITCH_PAGE_INSTR(3),
12291417
ILI9881C_COMMAND_INSTR(0x01, 0x00),
@@ -1806,6 +1994,23 @@ static const struct drm_display_mode am8001280g_default_mode = {
18061994
.height_mm = 151,
18071995
};
18081996

1997+
static const struct drm_display_mode rpi_5inch_default_mode = {
1998+
.clock = 83333,
1999+
2000+
.hdisplay = 720,
2001+
.hsync_start = 720 + 110,
2002+
.hsync_end = 720 + 110 + 12,
2003+
.htotal = 720 + 110 + 12 + 95,
2004+
2005+
.vdisplay = 1280,
2006+
.vsync_start = 1280 + 100,
2007+
.vsync_end = 1280 + 100 + 2,
2008+
.vtotal = 1280 + 100 + 2 + 100,
2009+
2010+
.width_mm = 62,
2011+
.height_mm = 110,
2012+
};
2013+
18092014
static const struct drm_display_mode rpi_7inch_default_mode = {
18102015
.clock = 83330,
18112016

@@ -2000,6 +2205,14 @@ static const struct ili9881c_desc am8001280g_desc = {
20002205
MIPI_DSI_CLOCK_NON_CONTINUOUS | MIPI_DSI_MODE_LPM,
20012206
};
20022207

2208+
static const struct ili9881c_desc rpi_5inch_desc = {
2209+
.init = rpi_5inch_init,
2210+
.init_length = ARRAY_SIZE(rpi_5inch_init),
2211+
.mode = &rpi_5inch_default_mode,
2212+
.mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_LPM,
2213+
.lanes = 2,
2214+
};
2215+
20032216
static const struct ili9881c_desc rpi_7inch_desc = {
20042217
.init = rpi_7inch_init,
20052218
.init_length = ARRAY_SIZE(rpi_7inch_init),
@@ -2025,6 +2238,7 @@ static const struct of_device_id ili9881c_of_match[] = {
20252238
{ .compatible = "tdo,tl050hdv35", .data = &tl050hdv35_desc },
20262239
{ .compatible = "wanchanglong,w552946aba", .data = &w552946aba_desc },
20272240
{ .compatible = "ampire,am8001280g", .data = &am8001280g_desc },
2241+
{ .compatible = "raspberrypi,dsi-5inch", &rpi_5inch_desc },
20282242
{ .compatible = "raspberrypi,dsi-7inch", &rpi_7inch_desc },
20292243
{ }
20302244
};

0 commit comments

Comments
 (0)