diff mbox

[v2,2/3] drm/panel: add support for EDT panels

Message ID 35c081171a3d9a9401767601c02a12e266b37dd0.1400103181.git.stefan@agner.ch (mailing list archive)
State New, archived
Headers show

Commit Message

Stefan Agner May 14, 2014, 9:45 p.m. UTC
From: Stefan Agner <stefan@agner.ch>

This panels are sold by Toradex for Colibri T20/T30 and Apalis T30
evaluation kits.

Signed-off-by: Stefan Agner <stefan@agner.ch>
---
 .../devicetree/bindings/panel/edt,et057090dhu.txt  |  7 +++
 .../devicetree/bindings/panel/edt,et070080dh6.txt  |  7 +++
 drivers/gpu/drm/panel/panel-simple.c               | 52 ++++++++++++++++++++++
 3 files changed, 66 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/panel/edt,et057090dhu.txt
 create mode 100644 Documentation/devicetree/bindings/panel/edt,et070080dh6.txt

Comments

Thierry Reding May 15, 2014, 7:51 a.m. UTC | #1
On Wed, May 14, 2014 at 11:45:57PM +0200, stefan@agner.ch wrote:
> From: Stefan Agner <stefan@agner.ch>
> 
> This panels are sold by Toradex for Colibri T20/T30 and Apalis T30
> evaluation kits.
> 
> Signed-off-by: Stefan Agner <stefan@agner.ch>

Panel patches should go to the dri-devel mailing list as well.

Also a patch was posted only yesterday for a panel that seems to be the
exact same one as this, even though the name differs minimally, see:

	https://patchwork.kernel.org/patch/4175251/

Adding Philipp on Cc so you guys can work together whether this is
indeed the same panel. The only differences seem to be in the vertical
front and back porches, but I suspect that either settings will work on
both Tegra and i.MX.

Thierry
Stefan Agner May 15, 2014, 8:24 a.m. UTC | #2
Hi Thierry, hi Philipp,

Am 2014-05-15 09:51, schrieb Thierry Reding:
> On Wed, May 14, 2014 at 11:45:57PM +0200, stefan@agner.ch wrote:
>> From: Stefan Agner <stefan@agner.ch>
>>
>> This panels are sold by Toradex for Colibri T20/T30 and Apalis T30
>> evaluation kits.
>>
>> Signed-off-by: Stefan Agner <stefan@agner.ch>
> 
> Panel patches should go to the dri-devel mailing list as well.
> 
> Also a patch was posted only yesterday for a panel that seems to be the
> exact same one as this, even though the name differs minimally, see:
> 
> 	https://patchwork.kernel.org/patch/4175251/
> 
> Adding Philipp on Cc so you guys can work together whether this is
> indeed the same panel. The only differences seem to be in the vertical
> front and back porches, but I suspect that either settings will work on
> both Tegra and i.MX.

Its etm0700g0dh6 vs. et070080dh6, Philipp's panel is with captive multi
touch, (hence the M I guess). The panel itself really looks the same.

I found this overview of EDT displays:
http://www.dmbtechnics.com/scripts/passthru.php?id=7

There seem to be quite a lot variants with the same panel...

Regarding timings, I just checked the documentation, Philipp's timing
really matches the documented ones, I miscalculated the vertical back
porch.

How do we resolve that?

I would suggest that I split out that patch and remove the et070080dh6
panel and send the other as a single patch to the dri-devel mailing list
as well.

Philipp, could you add my display type (et070080dh6) to the compatible
list of your mode/panel entry?

Does this sound reasonable?

--
Stefan
Philipp Zabel May 15, 2014, 8:27 a.m. UTC | #3
Am Donnerstag, den 15.05.2014, 09:51 +0200 schrieb Thierry Reding:
> On Wed, May 14, 2014 at 11:45:57PM +0200, stefan@agner.ch wrote:
> > From: Stefan Agner <stefan@agner.ch>
> > 
> > This panels are sold by Toradex for Colibri T20/T30 and Apalis T30
> > evaluation kits.
> > 
> > Signed-off-by: Stefan Agner <stefan@agner.ch>
> 
> Panel patches should go to the dri-devel mailing list as well.
> 
> Also a patch was posted only yesterday for a panel that seems to be the
> exact same one as this, even though the name differs minimally, see:
> 
> 	https://patchwork.kernel.org/patch/4175251/
> 
> Adding Philipp on Cc so you guys can work together whether this is
> indeed the same panel. The only differences seem to be in the vertical
> front and back porches, but I suspect that either settings will work on
> both Tegra and i.MX.

The ETM0700G0DH6 Datasheet lists 2 lines as the typical vsync pulse
width, 525 lines as the vertical period, and 35 lines as the vsync -de
time, which is vsync len + back porch.
So vertical timings 480 + 10 + 2 + 33 = 525 should be valid for the
ET0700G0DH6 panel:

https://www.glynshop.com/erp/owweb/Daten/DSS/EDT/Products/Specifications/Active%20Displays/ET0700G0DH6.pdf
et070080dh6

I have not seen the data sheet for ET070080DH6.

regards
Philipp
Thierry Reding May 15, 2014, 9:08 a.m. UTC | #4
On Thu, May 15, 2014 at 10:27:29AM +0200, Philipp Zabel wrote:
> Am Donnerstag, den 15.05.2014, 09:51 +0200 schrieb Thierry Reding:
> > On Wed, May 14, 2014 at 11:45:57PM +0200, stefan@agner.ch wrote:
> > > From: Stefan Agner <stefan@agner.ch>
> > > 
> > > This panels are sold by Toradex for Colibri T20/T30 and Apalis T30
> > > evaluation kits.
> > > 
> > > Signed-off-by: Stefan Agner <stefan@agner.ch>
> > 
> > Panel patches should go to the dri-devel mailing list as well.
> > 
> > Also a patch was posted only yesterday for a panel that seems to be the
> > exact same one as this, even though the name differs minimally, see:
> > 
> > 	https://patchwork.kernel.org/patch/4175251/
> > 
> > Adding Philipp on Cc so you guys can work together whether this is
> > indeed the same panel. The only differences seem to be in the vertical
> > front and back porches, but I suspect that either settings will work on
> > both Tegra and i.MX.
> 
> The ETM0700G0DH6 Datasheet lists 2 lines as the typical vsync pulse
> width, 525 lines as the vertical period, and 35 lines as the vsync -de
> time, which is vsync len + back porch.
> So vertical timings 480 + 10 + 2 + 33 = 525 should be valid for the
> ET0700G0DH6 panel:

Shouldn't that work with 480 + 8 + 2 + 35 too? It seems to me that it
should still be safe for that panel. Similarily I'd expect your timings
to work on the ET070080DH6.

Irrespective of that they both seem to have different capabilities so
two compatible values should be fine. However for the purpose of the
simple panel driver they could be made to share the same timings if it
works for both panels and devices.

As for the touch panel on the ETM0700G0DH6, do you happen to know how
that's usually connected? I suspect it needs external hardware to
capture the YU, XL, YD and XR pins and turn that into raw coordinates
and pen down interrupts.

Thierry
Thierry Reding May 15, 2014, 9:12 a.m. UTC | #5
On Thu, May 15, 2014 at 10:24:39AM +0200, Stefan Agner wrote:
> Hi Thierry, hi Philipp,
> 
> Am 2014-05-15 09:51, schrieb Thierry Reding:
> > On Wed, May 14, 2014 at 11:45:57PM +0200, stefan@agner.ch wrote:
> >> From: Stefan Agner <stefan@agner.ch>
> >>
> >> This panels are sold by Toradex for Colibri T20/T30 and Apalis T30
> >> evaluation kits.
> >>
> >> Signed-off-by: Stefan Agner <stefan@agner.ch>
> > 
> > Panel patches should go to the dri-devel mailing list as well.
> > 
> > Also a patch was posted only yesterday for a panel that seems to be the
> > exact same one as this, even though the name differs minimally, see:
> > 
> > 	https://patchwork.kernel.org/patch/4175251/
> > 
> > Adding Philipp on Cc so you guys can work together whether this is
> > indeed the same panel. The only differences seem to be in the vertical
> > front and back porches, but I suspect that either settings will work on
> > both Tegra and i.MX.
> 
> Its etm0700g0dh6 vs. et070080dh6, Philipp's panel is with captive multi
> touch, (hence the M I guess). The panel itself really looks the same.
> 
> I found this overview of EDT displays:
> http://www.dmbtechnics.com/scripts/passthru.php?id=7
> 
> There seem to be quite a lot variants with the same panel...
> 
> Regarding timings, I just checked the documentation, Philipp's timing
> really matches the documented ones, I miscalculated the vertical back
> porch.

Okay, so that means that the panel works for you with the same timings
that Philipp has in the ETM0700G0DH6 patch? If so then I definitely
think we should be sharing the timings in the driver by making the two
compatible entries point to the same driver data.

> How do we resolve that?
> 
> I would suggest that I split out that patch and remove the et070080dh6
> panel and send the other as a single patch to the dri-devel mailing list
> as well.

Yes, that would work.

> Philipp, could you add my display type (et070080dh6) to the compatible
> list of your mode/panel entry?

I also noticed that Philipp's patch doesn't actually introduce the
device tree bindings, so that will have to be added as well.

Thierry
Philipp Zabel May 15, 2014, 9:30 a.m. UTC | #6
Am Donnerstag, den 15.05.2014, 11:08 +0200 schrieb Thierry Reding:
> On Thu, May 15, 2014 at 10:27:29AM +0200, Philipp Zabel wrote:
> > Am Donnerstag, den 15.05.2014, 09:51 +0200 schrieb Thierry Reding:
> > > On Wed, May 14, 2014 at 11:45:57PM +0200, stefan@agner.ch wrote:
> > > > From: Stefan Agner <stefan@agner.ch>
> > > > 
> > > > This panels are sold by Toradex for Colibri T20/T30 and Apalis T30
> > > > evaluation kits.
> > > > 
> > > > Signed-off-by: Stefan Agner <stefan@agner.ch>
> > > 
> > > Panel patches should go to the dri-devel mailing list as well.
> > > 
> > > Also a patch was posted only yesterday for a panel that seems to be the
> > > exact same one as this, even though the name differs minimally, see:
> > > 
> > > 	https://patchwork.kernel.org/patch/4175251/
> > > 
> > > Adding Philipp on Cc so you guys can work together whether this is
> > > indeed the same panel. The only differences seem to be in the vertical
> > > front and back porches, but I suspect that either settings will work on
> > > both Tegra and i.MX.
> > 
> > The ETM0700G0DH6 Datasheet lists 2 lines as the typical vsync pulse
> > width, 525 lines as the vertical period, and 35 lines as the vsync -de
> > time, which is vsync len + back porch.
> > So vertical timings 480 + 10 + 2 + 33 = 525 should be valid for the
> > ET0700G0DH6 panel:
> 
> Shouldn't that work with 480 + 8 + 2 + 35 too? It seems to me that it
> should still be safe for that panel. Similarily I'd expect your timings
> to work on the ET070080DH6.
>
> Irrespective of that they both seem to have different capabilities so
> two compatible values should be fine. However for the purpose of the
> simple panel driver they could be made to share the same timings if it
> works for both panels and devices.

Yes. As I understand, the 480 + 10 + 2 + 33 timing should be correct for
both panels.

> As for the touch panel on the ETM0700G0DH6, do you happen to know how
> that's usually connected? I suspect it needs external hardware to
> capture the YU, XL, YD and XR pins and turn that into raw coordinates
> and pen down interrupts.

The ETM0700G0DH6 has a capacitive touch screen with an EDT-FT5406
controller connected via I2C, at least on the panels that I have seen.

regards
Philipp
Philipp Zabel May 15, 2014, 9:35 a.m. UTC | #7
Am Donnerstag, den 15.05.2014, 11:12 +0200 schrieb Thierry Reding:
> On Thu, May 15, 2014 at 10:24:39AM +0200, Stefan Agner wrote:
> > Hi Thierry, hi Philipp,
> > 
> > Am 2014-05-15 09:51, schrieb Thierry Reding:
> > > On Wed, May 14, 2014 at 11:45:57PM +0200, stefan@agner.ch wrote:
> > >> From: Stefan Agner <stefan@agner.ch>
> > >>
> > >> This panels are sold by Toradex for Colibri T20/T30 and Apalis T30
> > >> evaluation kits.
> > >>
> > >> Signed-off-by: Stefan Agner <stefan@agner.ch>
> > > 
> > > Panel patches should go to the dri-devel mailing list as well.
> > > 
> > > Also a patch was posted only yesterday for a panel that seems to be the
> > > exact same one as this, even though the name differs minimally, see:
> > > 
> > > 	https://patchwork.kernel.org/patch/4175251/
> > > 
> > > Adding Philipp on Cc so you guys can work together whether this is
> > > indeed the same panel. The only differences seem to be in the vertical
> > > front and back porches, but I suspect that either settings will work on
> > > both Tegra and i.MX.
> > 
> > Its etm0700g0dh6 vs. et070080dh6, Philipp's panel is with captive multi
> > touch, (hence the M I guess). The panel itself really looks the same.
> > 
> > I found this overview of EDT displays:
> > http://www.dmbtechnics.com/scripts/passthru.php?id=7
> > 
> > There seem to be quite a lot variants with the same panel...
> > 
> > Regarding timings, I just checked the documentation, Philipp's timing
> > really matches the documented ones, I miscalculated the vertical back
> > porch.
> 
> Okay, so that means that the panel works for you with the same timings
> that Philipp has in the ETM0700G0DH6 patch? If so then I definitely
> think we should be sharing the timings in the driver by making the two
> compatible entries point to the same driver data.
> 
> > How do we resolve that?
> > 
> > I would suggest that I split out that patch and remove the et070080dh6
> > panel and send the other as a single patch to the dri-devel mailing list
> > as well.
> 
> Yes, that would work.
> 
> > Philipp, could you add my display type (et070080dh6) to the compatible
> > list of your mode/panel entry?
> 
> I also noticed that Philipp's patch doesn't actually introduce the
> device tree bindings, so that will have to be added as well.

Hmm, yes. Should I take over the edt,et070080dh6.txt from Stefan's
series and repost all, or can I just hand in the missing
edt,etm0700g0dh6.txt separately?

regards
Philipp
Stefan Agner May 15, 2014, 9:36 a.m. UTC | #8
Am 2014-05-15 11:08, schrieb Thierry Reding:
> On Thu, May 15, 2014 at 10:27:29AM +0200, Philipp Zabel wrote:
>> The ETM0700G0DH6 Datasheet lists 2 lines as the typical vsync pulse
>> width, 525 lines as the vertical period, and 35 lines as the vsync -de
>> time, which is vsync len + back porch.
>> So vertical timings 480 + 10 + 2 + 33 = 525 should be valid for the
>> ET0700G0DH6 panel:
> 
> Shouldn't that work with 480 + 8 + 2 + 35 too? It seems to me that it
> should still be safe for that panel. Similarily I'd expect your timings
> to work on the ET070080DH6.

Am 2014-05-15 11:12, schrieb Thierry Reding:
> Okay, so that means that the panel works for you with the same timings
> that Philipp has in the ETM0700G0DH6 patch? If so then I definitely
> think we should be sharing the timings in the driver by making the two
> compatible entries point to the same driver data.

FWIW, I checked and it works with both timings. And I bet it is really
the same panel its just a different touch on top.

> Irrespective of that they both seem to have different capabilities so
> two compatible values should be fine. However for the purpose of the
> simple panel driver they could be made to share the same timings if it
> works for both panels and devices.
> 
> As for the touch panel on the ETM0700G0DH6, do you happen to know how
> that's usually connected? I suspect it needs external hardware to
> capture the YU, XL, YD and XR pins and turn that into raw coordinates
> and pen down interrupts.

For Colibri Evaluation Board, those pins are routed to the generic
4-wire pins of the Colibri SO-DIMM. On the Colibri T30 module, those
pins are connected to a STMPE811. I also added that to the device tree
once, however it does not work properly atm, I need to debug this and
will send a patch at a later time.

--
Stefan
Stefan Agner May 15, 2014, 9:39 a.m. UTC | #9
Am 2014-05-15 11:35, schrieb Philipp Zabel:
> Am Donnerstag, den 15.05.2014, 11:12 +0200 schrieb Thierry Reding:
<snip>
>> I also noticed that Philipp's patch doesn't actually introduce the
>> device tree bindings, so that will have to be added as well.
> 
> Hmm, yes. Should I take over the edt,et070080dh6.txt from Stefan's
> series and repost all, or can I just hand in the missing
> edt,etm0700g0dh6.txt separately?

Just sent a revision of my patch which doesn't contain that text file
anymore, hence for me it would be preferable if you can add both
files...

--
Stefan
diff mbox

Patch

diff --git a/Documentation/devicetree/bindings/panel/edt,et057090dhu.txt b/Documentation/devicetree/bindings/panel/edt,et057090dhu.txt
new file mode 100644
index 0000000..4903d7b
--- /dev/null
+++ b/Documentation/devicetree/bindings/panel/edt,et057090dhu.txt
@@ -0,0 +1,7 @@ 
+Emerging Display Technology Corp. 5.7" VGA TFT LCD panel
+
+Required properties:
+- compatible: should be "edt,et057090dhu"
+
+This binding is compatible with the simple-panel binding, which is specified
+in simple-panel.txt in this directory.
diff --git a/Documentation/devicetree/bindings/panel/edt,et070080dh6.txt b/Documentation/devicetree/bindings/panel/edt,et070080dh6.txt
new file mode 100644
index 0000000..64986b1
--- /dev/null
+++ b/Documentation/devicetree/bindings/panel/edt,et070080dh6.txt
@@ -0,0 +1,7 @@ 
+Emerging Display Technology Corp. 7.0" WVGA TFT LCD panel
+
+Required properties:
+- compatible: should be "edt,et070080dh6"
+
+This binding is compatible with the simple-panel binding, which is specified
+in simple-panel.txt in this directory.
diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c
index 309f29e..7e4103f 100644
--- a/drivers/gpu/drm/panel/panel-simple.c
+++ b/drivers/gpu/drm/panel/panel-simple.c
@@ -306,6 +306,52 @@  static const struct panel_desc chunghwa_claa101wa01a = {
 	},
 };
 
+static const struct drm_display_mode edt_et057090dhu_mode = {
+	.clock = 25175,
+	.hdisplay = 640,
+	.hsync_start = 640 + 16,
+	.hsync_end = 640 + 16 + 30,
+	.htotal = 640 + 16 + 30 + 114,
+	.vdisplay = 480,
+	.vsync_start = 480 + 10,
+	.vsync_end = 480 + 10 + 3,
+	.vtotal = 480 + 10 + 3 + 32,
+	.vrefresh = 60,
+	.flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC,
+};
+
+static const struct panel_desc edt_et057090dhu = {
+	.modes = &edt_et057090dhu_mode,
+	.num_modes = 1,
+	.size = {
+		.width = 115,
+		.height = 86,
+	},
+};
+
+static const struct drm_display_mode edt_et070080dh6_mode = {
+	.clock = 33260,
+	.hdisplay = 800,
+	.hsync_start = 800 + 40,
+	.hsync_end = 800 + 40 + 128,
+	.htotal = 800 + 40 + 128 + 88,
+	.vdisplay = 480,
+	.vsync_start = 480 + 8,
+	.vsync_end = 480 + 8 + 2,
+	.vtotal = 480 + 8 + 2 + 35,
+	.vrefresh = 60,
+	.flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC,
+};
+
+static const struct panel_desc edt_et070080dh6 = {
+	.modes = &edt_et070080dh6_mode,
+	.num_modes = 1,
+	.size = {
+		.width = 152,
+		.height = 91,
+	},
+};
+
 static const struct drm_display_mode chunghwa_claa101wb01_mode = {
 	.clock = 69300,
 	.hdisplay = 1366,
@@ -383,6 +429,12 @@  static const struct of_device_id platform_of_match[] = {
 		.compatible = "chunghwa,claa101wb01",
 		.data = &chunghwa_claa101wb01
 	}, {
+		.compatible = "edt,et057090dhu",
+		.data = &edt_et057090dhu,
+	}, {
+		.compatible = "edt,et070080dh6",
+		.data = &edt_et070080dh6,
+	}, {
 		.compatible = "lg,lp129qe",
 		.data = &lg_lp129qe,
 	}, {