aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/panel/panel-simple.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/panel/panel-simple.c')
-rw-r--r--drivers/gpu/drm/panel/panel-simple.c99
1 files changed, 98 insertions, 1 deletions
diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c
index f94201b6e882..f97b73ec4713 100644
--- a/drivers/gpu/drm/panel/panel-simple.c
+++ b/drivers/gpu/drm/panel/panel-simple.c
@@ -713,7 +713,12 @@ static const struct display_timing hannstar_hsd070pww1_timing = {
713 .hactive = { 1280, 1280, 1280 }, 713 .hactive = { 1280, 1280, 1280 },
714 .hfront_porch = { 1, 1, 10 }, 714 .hfront_porch = { 1, 1, 10 },
715 .hback_porch = { 1, 1, 10 }, 715 .hback_porch = { 1, 1, 10 },
716 .hsync_len = { 52, 158, 661 }, 716 /*
717 * According to the data sheet, the minimum horizontal blanking interval
718 * is 54 clocks (1 + 52 + 1), but tests with a Nitrogen6X have shown the
719 * minimum working horizontal blanking interval to be 60 clocks.
720 */
721 .hsync_len = { 58, 158, 661 },
717 .vactive = { 800, 800, 800 }, 722 .vactive = { 800, 800, 800 },
718 .vfront_porch = { 1, 1, 10 }, 723 .vfront_porch = { 1, 1, 10 },
719 .vback_porch = { 1, 1, 10 }, 724 .vback_porch = { 1, 1, 10 },
@@ -729,6 +734,7 @@ static const struct panel_desc hannstar_hsd070pww1 = {
729 .width = 151, 734 .width = 151,
730 .height = 94, 735 .height = 94,
731 }, 736 },
737 .bus_format = MEDIA_BUS_FMT_RGB666_1X7X3_SPWG,
732}; 738};
733 739
734static const struct display_timing hannstar_hsd100pxn1_timing = { 740static const struct display_timing hannstar_hsd100pxn1_timing = {
@@ -943,6 +949,60 @@ static const struct panel_desc lg_lp129qe = {
943 }, 949 },
944}; 950};
945 951
952static const struct drm_display_mode nec_nl4827hc19_05b_mode = {
953 .clock = 10870,
954 .hdisplay = 480,
955 .hsync_start = 480 + 2,
956 .hsync_end = 480 + 2 + 41,
957 .htotal = 480 + 2 + 41 + 2,
958 .vdisplay = 272,
959 .vsync_start = 272 + 2,
960 .vsync_end = 272 + 2 + 4,
961 .vtotal = 272 + 2 + 4 + 2,
962 .vrefresh = 74,
963};
964
965static const struct panel_desc nec_nl4827hc19_05b = {
966 .modes = &nec_nl4827hc19_05b_mode,
967 .num_modes = 1,
968 .bpc = 8,
969 .size = {
970 .width = 95,
971 .height = 54,
972 },
973 .bus_format = MEDIA_BUS_FMT_RGB888_1X24
974};
975
976static const struct display_timing okaya_rs800480t_7x0gp_timing = {
977 .pixelclock = { 30000000, 30000000, 40000000 },
978 .hactive = { 800, 800, 800 },
979 .hfront_porch = { 40, 40, 40 },
980 .hback_porch = { 40, 40, 40 },
981 .hsync_len = { 1, 48, 48 },
982 .vactive = { 480, 480, 480 },
983 .vfront_porch = { 13, 13, 13 },
984 .vback_porch = { 29, 29, 29 },
985 .vsync_len = { 3, 3, 3 },
986 .flags = DISPLAY_FLAGS_DE_HIGH,
987};
988
989static const struct panel_desc okaya_rs800480t_7x0gp = {
990 .timings = &okaya_rs800480t_7x0gp_timing,
991 .num_timings = 1,
992 .bpc = 6,
993 .size = {
994 .width = 154,
995 .height = 87,
996 },
997 .delay = {
998 .prepare = 41,
999 .enable = 50,
1000 .unprepare = 41,
1001 .disable = 50,
1002 },
1003 .bus_format = MEDIA_BUS_FMT_RGB666_1X18,
1004};
1005
946static const struct drm_display_mode ortustech_com43h4m85ulc_mode = { 1006static const struct drm_display_mode ortustech_com43h4m85ulc_mode = {
947 .clock = 25000, 1007 .clock = 25000,
948 .hdisplay = 480, 1008 .hdisplay = 480,
@@ -1113,6 +1173,12 @@ static const struct of_device_id platform_of_match[] = {
1113 .compatible = "lg,lp129qe", 1173 .compatible = "lg,lp129qe",
1114 .data = &lg_lp129qe, 1174 .data = &lg_lp129qe,
1115 }, { 1175 }, {
1176 .compatible = "nec,nl4827hc19-05b",
1177 .data = &nec_nl4827hc19_05b,
1178 }, {
1179 .compatible = "okaya,rs800480t-7x0gp",
1180 .data = &okaya_rs800480t_7x0gp,
1181 }, {
1116 .compatible = "ortustech,com43h4m85ulc", 1182 .compatible = "ortustech,com43h4m85ulc",
1117 .data = &ortustech_com43h4m85ulc, 1183 .data = &ortustech_com43h4m85ulc,
1118 }, { 1184 }, {
@@ -1169,6 +1235,34 @@ struct panel_desc_dsi {
1169 unsigned int lanes; 1235 unsigned int lanes;
1170}; 1236};
1171 1237
1238static const struct drm_display_mode auo_b080uan01_mode = {
1239 .clock = 154500,
1240 .hdisplay = 1200,
1241 .hsync_start = 1200 + 62,
1242 .hsync_end = 1200 + 62 + 4,
1243 .htotal = 1200 + 62 + 4 + 62,
1244 .vdisplay = 1920,
1245 .vsync_start = 1920 + 9,
1246 .vsync_end = 1920 + 9 + 2,
1247 .vtotal = 1920 + 9 + 2 + 8,
1248 .vrefresh = 60,
1249};
1250
1251static const struct panel_desc_dsi auo_b080uan01 = {
1252 .desc = {
1253 .modes = &auo_b080uan01_mode,
1254 .num_modes = 1,
1255 .bpc = 8,
1256 .size = {
1257 .width = 108,
1258 .height = 272,
1259 },
1260 },
1261 .flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_CLOCK_NON_CONTINUOUS,
1262 .format = MIPI_DSI_FMT_RGB888,
1263 .lanes = 4,
1264};
1265
1172static const struct drm_display_mode lg_ld070wx3_sl01_mode = { 1266static const struct drm_display_mode lg_ld070wx3_sl01_mode = {
1173 .clock = 71000, 1267 .clock = 71000,
1174 .hdisplay = 800, 1268 .hdisplay = 800,
@@ -1256,6 +1350,9 @@ static const struct panel_desc_dsi panasonic_vvx10f004b00 = {
1256 1350
1257static const struct of_device_id dsi_of_match[] = { 1351static const struct of_device_id dsi_of_match[] = {
1258 { 1352 {
1353 .compatible = "auo,b080uan01",
1354 .data = &auo_b080uan01
1355 }, {
1259 .compatible = "lg,ld070wx3-sl01", 1356 .compatible = "lg,ld070wx3-sl01",
1260 .data = &lg_ld070wx3_sl01 1357 .data = &lg_ld070wx3_sl01
1261 }, { 1358 }, {