drm/panel: simple: add Tianma P0700WXF1MBAA panel

Add the Tianma P0700WXF1MBAA 7" 1280x800 LVDS RGB TFT LCD panel.

Reuse the timings of the TM070JDHG34-00 as they are identical, even though
they are described differently by the datasheet as noted in the
comment. Power up/down timing are slightly different, so add a new struct
panel_desc for that.

Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
Link: https://lore.kernel.org/r/20250411-tianma-p0700wxf1mbaa-v3-3-acbefe9ea669@bootlin.com
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://lore.kernel.org/r/20250411-tianma-p0700wxf1mbaa-v3-3-acbefe9ea669@bootlin.com
This commit is contained in:
Luca Ceresoli 2025-04-11 21:19:46 +02:00 committed by Neil Armstrong
parent 716c75afd8
commit 178ac97535

View File

@ -4442,10 +4442,10 @@ static const struct panel_desc tianma_tm070jvhg33 = {
};
/*
* The datasheet computes total blanking as back porch + front porch, not
* including sync pulse width. This is for both H and V. To make the total
* blanking and period correct, subtract the pulse width from the front
* porch.
* The TM070JDHG34-00 datasheet computes total blanking as back porch +
* front porch, not including sync pulse width. This is for both H and
* V. To make the total blanking and period correct, subtract the pulse
* width from the front porch.
*
* This works well for the Min and Typ values, but for Max values the sync
* pulse width is higher than back porch + front porch, so work around that
@ -4454,6 +4454,10 @@ static const struct panel_desc tianma_tm070jvhg33 = {
*
* Exact datasheet values are added as a comment where they differ from the
* ones implemented for the above reason.
*
* The P0700WXF1MBAA datasheet is even less detailed, only listing period
* and total blanking time, however the resulting values are the same as
* the TM070JDHG34-00.
*/
static const struct display_timing tianma_tm070jdhg34_00_timing = {
.pixelclock = { 68400000, 71900000, 78100000 },
@ -4486,6 +4490,24 @@ static const struct panel_desc tianma_tm070jdhg34_00 = {
.connector_type = DRM_MODE_CONNECTOR_LVDS,
};
static const struct panel_desc tianma_p0700wxf1mbaa = {
.timings = &tianma_tm070jdhg34_00_timing,
.num_timings = 1,
.bpc = 8,
.size = {
.width = 150, /* 149.76 */
.height = 94, /* 93.60 */
},
.delay = {
.prepare = 18, /* Tr + Tp1 */
.enable = 152, /* Tp2 + Tp5 */
.disable = 152, /* Tp6 + Tp4 */
.unprepare = 120, /* Tp3 */
},
.bus_format = MEDIA_BUS_FMT_RGB888_1X7X4_SPWG,
.connector_type = DRM_MODE_CONNECTOR_LVDS,
};
static const struct display_timing tianma_tm070rvhg71_timing = {
.pixelclock = { 27700000, 29200000, 39600000 },
.hactive = { 800, 800, 800 },
@ -5274,6 +5296,9 @@ static const struct of_device_id platform_of_match[] = {
}, {
.compatible = "tfc,s9700rtwv43tr-01b",
.data = &tfc_s9700rtwv43tr_01b,
}, {
.compatible = "tianma,p0700wxf1mbaa",
.data = &tianma_p0700wxf1mbaa,
}, {
.compatible = "tianma,tm070jdhg30",
.data = &tianma_tm070jdhg30,