Commit 178ac975 authored by Luca Ceresoli's avatar Luca Ceresoli Committed by Neil Armstrong
Browse files

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: default avatarDmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: default avatarLuca Ceresoli <luca.ceresoli@bootlin.com>
Link: https://lore.kernel.org/r/20250411-tianma-p0700wxf1mbaa-v3-3-acbefe9ea669@bootlin.com


Signed-off-by: default avatarNeil Armstrong <neil.armstrong@linaro.org>
Link: https://lore.kernel.org/r/20250411-tianma-p0700wxf1mbaa-v3-3-acbefe9ea669@bootlin.com
parent 716c75af
Loading
Loading
Loading
Loading
+29 −4
Original line number Diff line number Diff line
@@ -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,