drm: imx: multi-display support questions

2015-05-26 Thread Gary Bisson
Hi all,

After a few days of experimentation on multi-display support on i.MX6, I
have some questions regarding the status of the imx-drm driver.

Here is description of my testing setup:
- Nitrogen6x (a SabreLite would work the same)
- Mainline kernel 4.1-rc2 + a few patches for display support (some are
  pending, other are scheduled for 4.2)
https://patchwork.kernel.org/project/linux-arm-kernel/list/?submitter=132811
https://patchwork.kernel.org/patch/6439221/
https://patchwork.kernel.org/patch/6439231/
https://patchwork.kernel.org/patch/6212451/
- Available displays:
  - 1 LVDS 10" Hannstar HSD100PXN1 display
  - 1 LCD 7" Okaya display
  - 1 HDMI 1080p TV
- U-boot script used to boot the mainline kernel properly:
https://github.com/boundarydevices/u-boot-imx6/blob/staging/board/boundary/nitrogen6x/6x_bootscript-mainline.txt
- Basic Buildroot filesystem with libdrm and its test binaries

First of all, using the standard imx_v6_v7_defconfig, everything runs
fine with a single-display setup, no matter if it is using LVDS, RGB or
HDMI interface.

But in multi-display setup, the first observation is that
CONFIG_DRM_IMX_FB_HELPER seems to be problematic. When this option is
set, only one display can be used either using the /dev/fb0 or 'modetest
-s' from libdrm test binaries. As soon as the option is removed, every
display can be used properly with the following commands:
# modetest -M imx-drm -s 32:800x480
# modetest -M imx-drm -s 34:1920x1080
# modetest -M imx-drm -s 36:1024x768

Is this option only meant for single-display setup? Has it been tested
in multi-display?
It seems limited to fb0 creation, would it be possible to make the
driver create as many fbs as the number of monitors?

Also, when trying to display different patterns on each and every
display at once, I have been using the example provided by David
Herrmann:
https://github.com/dvdhrm/docs/blob/master/drm-howto/modeset.c
This shows a clocking issue when using both DRM_IMX_PARALLEL_DISPLAY and
DRM_IMX_LDB at the same time. Although the driver is smart enough to
connect ipu1_di0 to the RGB interface and ipu1_di1 to the LVDS
interface, the clock set by the LDB driver (65MHz) is overwritten when
the parallel interface is enabled as they both share pll5_video.

Has anyone successfully tried using both drivers, LVDS and parallel, at
the same time?

Then I've run into Steve's series that seems to address some clocking
issues.
http://lists.freedesktop.org/archives/dri-devel/2014-October/070996.html

Is there the equivalent series for the driver since it has moved from
staging?

Hope the above description is sufficient, if needed I can provide
modeprint/modetest/clk_summary outputs.

Regards,
Gary


drm: imx: multi-display support questions

2015-05-27 Thread Gary Bisson
Philipp, All,

On Wed, May 27, 2015 at 11:38 AM, Philipp Zabel  
wrote:
> Hi Gary,
>
> Am Dienstag, den 26.05.2015, 16:47 +0200 schrieb Gary Bisson:
>> Hi all,
>>
>> After a few days of experimentation on multi-display support on i.MX6, I
>> have some questions regarding the status of the imx-drm driver.
>>
>> Here is description of my testing setup:
>> - Nitrogen6x (a SabreLite would work the same)
>> - Mainline kernel 4.1-rc2 + a few patches for display support (some are
>>   pending, other are scheduled for 4.2)
>> https://patchwork.kernel.org/project/linux-arm-kernel/list/?submitter=132811
>> https://patchwork.kernel.org/patch/6439221/
>> https://patchwork.kernel.org/patch/6439231/
>> https://patchwork.kernel.org/patch/6212451/
>> - Available displays:
>>   - 1 LVDS 10" Hannstar HSD100PXN1 display
>>   - 1 LCD 7" Okaya display
>>   - 1 HDMI 1080p TV
>> - U-boot script used to boot the mainline kernel properly:
>> https://github.com/boundarydevices/u-boot-imx6/blob/staging/board/boundary/nitrogen6x/6x_bootscript-mainline.txt
>> - Basic Buildroot filesystem with libdrm and its test binaries
>>
>> First of all, using the standard imx_v6_v7_defconfig, everything runs
>> fine with a single-display setup, no matter if it is using LVDS, RGB or
>> HDMI interface.
>>
>> But in multi-display setup, the first observation is that
>> CONFIG_DRM_IMX_FB_HELPER seems to be problematic. When this option is
>> set, only one display can be used either using the /dev/fb0 or 'modetest
>> -s' from libdrm test binaries. As soon as the option is removed, every
>> display can be used properly with the following commands:
>> # modetest -M imx-drm -s 32:800x480
>> # modetest -M imx-drm -s 34:1920x1080
>> # modetest -M imx-drm -s 36:1024x768
>>
>> Is this option only meant for single-display setup? Has it been tested
>> in multi-display?
>>
>> It seems limited to fb0 creation, would it be possible to make the
>> driver create as many fbs as the number of monitors?
>
> According to the kerneldoc comment for drm_fb_helper_initial_config
> (which is used by imx-drm via drm_fbdev_cma_init), it should set up a
> single /dev/fb cloned over all connectors. This works here with LVDS and
> HDMI.

Does it require the two displays to have the exact same resolution?
I'm wondering what is wrong with my setup but with a 1024x768 LVDS and
a 1920x1080 HDMI display no image is shown on the HDMI (no signal).
The CRTC settings show that both have the same origin (0,0) so I
expected the LVDS to display a part of what the HDMI *should* display.

I get the following traces when trying to display something on HDMI:
# modetest -M imx-drm -s 34:1920x1080
setting mode 1920x1080-50Hz at XR24 on connectors 34, crtc 18
[  350.915681] imx-ipuv3 240.ipu: DC stop timeout after 50 ms

Then trying to display something through the fbdev results in the LVDS
being updated but still no signal on HDMI.
# cat /dev/urandom > /dev/fb0

Once again, as soon as I remove the IMX_FB_HELPER configuration
everything runs fine.

>> Also, when trying to display different patterns on each and every
>> display at once, I have been using the example provided by David
>> Herrmann:
>> https://github.com/dvdhrm/docs/blob/master/drm-howto/modeset.c
>> This shows a clocking issue when using both DRM_IMX_PARALLEL_DISPLAY and
>> DRM_IMX_LDB at the same time. Although the driver is smart enough to
>> connect ipu1_di0 to the RGB interface and ipu1_di1 to the LVDS
>> interface, the clock set by the LDB driver (65MHz) is overwritten when
>> the parallel interface is enabled as they both share pll5_video.
>>
>> Has anyone successfully tried using both drivers, LVDS and parallel, at
>> the same time?
>
> For parallel and LVDS we'd either need to force the parallel panel to be
> clocked by the IPU internal clock, or move one or the other external
> clock source off of pll5_video.

Do you have a preference for one solution over the other?

> I have used a LVDS panel which could be driven from the mmdc_ch1_axi
> clock, but there are some issues when switching the LDB_DI clock
> parents:
> http://marc.info/?l=linux-arm-kernel&m=142055950831840&w=2

I will look into this approach.

>> Then I've run into Steve's series that seems to address some clocking
>> issues.
>> http://lists.freedesktop.org/archives/dri-devel/2014-October/070996.html
>>
>> Is there the equivalent series for the driver since it has moved from
>> staging?
>
> A few of the patches have been reposted and some of them applied.
> I'm not aware of a rebased version of the DI clock parent patch.

Ok, thanks, I'll check and see what I need to get all the displays to
work together.

Regards,
Gary


[PATCH] drm/panel: Add display timing for Okaya RS800480T-7X0GP

2015-05-28 Thread Gary Bisson
Add support for the Okaya RS800480T-7X0GP to the DRM simple panel
driver.

The RS800480T-7X0GP is a WVGA (800x480) panel with an 18-bit parallel
LCD interface. It supports pixel clocks in the range of 30-40 MHz.

This panel details can be found at:
http://boundarydevices.com/product/7-800x480-display/

Signed-off-by: Gary Bisson 
---
Hi all,

This patch is the follow-up of a request from Philipp to add the Okaya display
to the simple panel driver.
http://lists.infradead.org/pipermail/linux-arm-kernel/2015-May/346657.html

Regards,
Gary
---
 .../bindings/panel/okaya,rs800480t_7x0gp.txt   |  7 ++
 .../devicetree/bindings/vendor-prefixes.txt|  1 +
 drivers/gpu/drm/panel/panel-simple.c   | 27 ++
 3 files changed, 35 insertions(+)
 create mode 100644 
Documentation/devicetree/bindings/panel/okaya,rs800480t_7x0gp.txt

diff --git a/Documentation/devicetree/bindings/panel/okaya,rs800480t_7x0gp.txt 
b/Documentation/devicetree/bindings/panel/okaya,rs800480t_7x0gp.txt
new file mode 100644
index 000..f7c729d
--- /dev/null
+++ b/Documentation/devicetree/bindings/panel/okaya,rs800480t_7x0gp.txt
@@ -0,0 +1,7 @@
+OKAYA Electric America, Inc. RS800480T-7X0GP 7" WVGA LCD panel
+
+Required properties:
+- compatible: should be "okaya,rs800480t_7x0gp"
+
+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/vendor-prefixes.txt 
b/Documentation/devicetree/bindings/vendor-prefixes.txt
index 4f35a00..06ce91c 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.txt
+++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
@@ -145,6 +145,7 @@ nintendoNintendo
 nokia  Nokia
 nvidia NVIDIA
 nxpNXP Semiconductors
+okaya  OKAYA Electric America, Inc.
 onnn   ON Semiconductor Corp.
 opencores  OpenCores.org
 ortustech  Ortus Technology Co., Ltd.
diff --git a/drivers/gpu/drm/panel/panel-simple.c 
b/drivers/gpu/drm/panel/panel-simple.c
index 97b66b8..e511a22 100644
--- a/drivers/gpu/drm/panel/panel-simple.c
+++ b/drivers/gpu/drm/panel/panel-simple.c
@@ -942,6 +942,30 @@ static const struct panel_desc lg_lp129qe = {
},
 };

+static const struct display_timing okaya_rs800480t_7x0gp_timing = {
+   .pixelclock = { 3000, 3000, 4000 },
+   .hactive = { 800, 800, 800 },
+   .hfront_porch = { 40, 40, 40 },
+   .hback_porch = { 40, 40, 40 },
+   .hsync_len = { 1, 48, 48 },
+   .vactive = { 480, 480, 480 },
+   .vfront_porch = { 13, 13, 13 },
+   .vback_porch = { 29, 29, 29 },
+   .vsync_len = { 3, 3, 3 },
+   .flags = DISPLAY_FLAGS_DE_HIGH,
+};
+
+static const struct panel_desc okaya_rs800480t_7x0gp = {
+   .timings = &okaya_rs800480t_7x0gp_timing,
+   .num_timings = 1,
+   .bpc = 6,
+   .size = {
+   .width = 154,
+   .height = 87,
+   },
+   .bus_format = MEDIA_BUS_FMT_RGB666_1X18,
+};
+
 static const struct drm_display_mode ortustech_com43h4m85ulc_mode  = {
.clock = 25000,
.hdisplay = 480,
@@ -1112,6 +1136,9 @@ static const struct of_device_id platform_of_match[] = {
.compatible = "lg,lp129qe",
.data = &lg_lp129qe,
}, {
+   .compatible = "okaya,rs800480t_7x0gp",
+   .data = &okaya_rs800480t_7x0gp,
+   }, {
.compatible = "ortustech,com43h4m85ulc",
.data = &ortustech_com43h4m85ulc,
}, {
-- 
2.1.4



[PATCH 0/2] Add support for Tianma TM070JDHG30 display

2016-12-02 Thread Gary Bisson
Hi all,

This series adds support for the Tianma TM070JDHG30 7" display (1280x800).
http://usa.tianma.com/products-technology/product/tm070jdhg30-00
https://boundarydevices.com/product/bd070lic2/

The first patch adds Tianma as a new vendor prefix whereas the second patch
adds the display to the simple panel driver.

Regards,
Gary

Gary Bisson (2):
  of: Add vendor prefix for Tianma Micro-electronics
  drm/panel: simple: Add support for Tianma TM070JDHG30

 .../bindings/display/panel/tianma,tm070jdhg30.txt  |  7 ++
 .../devicetree/bindings/vendor-prefixes.txt|  1 +
 drivers/gpu/drm/panel/panel-simple.c   | 27 ++
 3 files changed, 35 insertions(+)
 create mode 100644 
Documentation/devicetree/bindings/display/panel/tianma,tm070jdhg30.txt

-- 
2.9.3



[PATCH 1/2] of: Add vendor prefix for Tianma Micro-electronics

2016-12-02 Thread Gary Bisson
Tianma Micro-electronics Co., Ltd. (Tianma) specializes in providing
display solutions and efficient support services worldwide.

More info:
http://en.tianma.com/about.shtml

Signed-off-by: Gary Bisson 
---
 Documentation/devicetree/bindings/vendor-prefixes.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt 
b/Documentation/devicetree/bindings/vendor-prefixes.txt
index 163f84b..3d1ec68 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.txt
+++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
@@ -291,6 +291,7 @@ technologic Technologic Systems
 terasicTerasic Inc.
 thine  THine Electronics, Inc.
 ti Texas Instruments
+tianma Tianma Micro-electronics Co., Ltd.
 tlmTrusted Logic Mobility
 topeet  Topeet
 toradexToradex AG
-- 
2.9.3



[PATCH 2/2] drm/panel: simple: Add support for Tianma TM070JDHG30

2016-12-02 Thread Gary Bisson
The Tianma TM070JDHG30 is a 7" LVDS display with a resolution of
1280x800.
http://usa.tianma.com/products-technology/product/tm070jdhg30-00

You can also find this product along with a FT5x06 touch controller
from Boundary Devices:
https://boundarydevices.com/product/bd070lic2/

Signed-off-by: Gary Bisson 
---
 .../bindings/display/panel/tianma,tm070jdhg30.txt  |  7 ++
 drivers/gpu/drm/panel/panel-simple.c   | 27 ++
 2 files changed, 34 insertions(+)
 create mode 100644 
Documentation/devicetree/bindings/display/panel/tianma,tm070jdhg30.txt

diff --git 
a/Documentation/devicetree/bindings/display/panel/tianma,tm070jdhg30.txt 
b/Documentation/devicetree/bindings/display/panel/tianma,tm070jdhg30.txt
new file mode 100644
index 000..eb9501a
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/panel/tianma,tm070jdhg30.txt
@@ -0,0 +1,7 @@
+Tianma Micro-electronics TM070JDHG30 7.0" WXGA TFT LCD panel
+
+Required properties:
+- compatible: should be "tianma,tm070jdhg30"
+
+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 113db3c..bc3dd46 100644
--- a/drivers/gpu/drm/panel/panel-simple.c
+++ b/drivers/gpu/drm/panel/panel-simple.c
@@ -1471,6 +1471,30 @@ static const struct panel_desc starry_kr122ea0sra = {
},
 };

+static const struct display_timing tianma_tm070jdhg30_timing = {
+   .pixelclock = { 6260, 6820, 7810 },
+   .hactive = { 1280, 1280, 1280 },
+   .hfront_porch = { 15, 64, 159 },
+   .hback_porch = { 5, 5, 5 },
+   .hsync_len = { 1, 1, 256 },
+   .vactive = { 800, 800, 800 },
+   .vfront_porch = { 3, 40, 99 },
+   .vback_porch = { 2, 2, 2 },
+   .vsync_len = { 1, 1, 128 },
+   .flags = DISPLAY_FLAGS_DE_HIGH,
+};
+
+static const struct panel_desc tianma_tm070jdhg30 = {
+   .timings = &tianma_tm070jdhg30_timing,
+   .num_timings = 1,
+   .bpc = 8,
+   .size = {
+   .width = 151,
+   .height = 95,
+   },
+   .bus_format = MEDIA_BUS_FMT_RGB888_1X7X4_SPWG,
+};
+
 static const struct drm_display_mode tpk_f07a_0102_mode = {
.clock = 33260,
.hdisplay = 800,
@@ -1689,6 +1713,9 @@ static const struct of_device_id platform_of_match[] = {
.compatible = "starry,kr122ea0sra",
.data = &starry_kr122ea0sra,
}, {
+   .compatible = "tianma,tm070jdhg30",
+   .data = &tianma_tm070jdhg30,
+   }, {
.compatible = "tpk,f07a-0102",
.data = &tpk_f07a_0102,
}, {
-- 
2.9.3



[PATCH v3 2/2] drm/panel: Add display timing for Okaya RS800480T-7X0GP

2015-08-13 Thread Gary Bisson
Hi Thierry,

On Thu, Aug 13, 2015 at 2:32 PM, Thierry Reding
 wrote:
> On Wed, Jun 10, 2015 at 06:44:23PM +0200, Gary Bisson wrote:
>> Add support for the Okaya RS800480T-7X0GP to the DRM simple panel
>> driver.
>>
>> The RS800480T-7X0GP is a WVGA (800x480) panel with an 18-bit parallel
>> LCD interface. It supports pixel clocks in the range of 30-40 MHz.
>>
>> This panel details can be found at:
>> http://boundarydevices.com/product/7-800x480-display/
>>
>> Signed-off-by: Gary Bisson 
>> ---
>>  .../bindings/panel/okaya,rs800480t_7x0gp.txt   |  7 +
>>  drivers/gpu/drm/panel/panel-simple.c   | 33 
>> ++
>>  2 files changed, 40 insertions(+)
>>  create mode 100644 
>> Documentation/devicetree/bindings/panel/okaya,rs800480t_7x0gp.txt
>>
>> diff --git 
>> a/Documentation/devicetree/bindings/panel/okaya,rs800480t_7x0gp.txt 
>> b/Documentation/devicetree/bindings/panel/okaya,rs800480t_7x0gp.txt
>> new file mode 100644
>> index 000..f7c729d
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/panel/okaya,rs800480t_7x0gp.txt
>> @@ -0,0 +1,7 @@
>> +OKAYA Electric America, Inc. RS800480T-7X0GP 7" WVGA LCD panel
>> +
>> +Required properties:
>> +- compatible: should be "okaya,rs800480t_7x0gp"
>
> Underscores are not typically used in compatible strings, so I've
> changed this to "okaya,rs800480t-7x0gp".

Thanks! I'll make sure not to use underscores for such names in the future.

Regards,
Gary


[PATCH] drm/imx: parallel-display: allow to determine bus format from the connected panel

2015-11-23 Thread Gary Bisson
Philipp, All,

On Fri, Nov 20, 2015 at 01:46:39PM +0100, Philipp Zabel wrote:
> Similarly to commit 5e501ed7253b3 ("drm/imx: imx-ldb: allow to determine
> bus format from the connected panel"), if a panel is connected to the ldb
> output port via the of_graph bindings, the data mapping is determined from
> the display_info.bus_format field provided by the panel instead of from the
> optional interface_pix_fmt device tree property.

Tested with a SabreLite + Okaya rs800480t LCD display on 4.4-rc1 kernel.

Tested-by: Gary Bisson 

One question though, do you want people to remove the interface_pix_fmt
property from the device trees to make it clear the interface depends on
the panel selected?

Regards,
Gary


[PATCH] drm/panel: Add display timing for Okaya RS800480T-7X0GP

2015-06-06 Thread Gary Bisson
Thierry, All,

On Fri, Jun 5, 2015 at 2:28 PM, Thierry Reding  
wrote:
> On Thu, May 28, 2015 at 05:37:46PM +0200, Gary Bisson wrote:
>> Add support for the Okaya RS800480T-7X0GP to the DRM simple panel
>> driver.
>>
>> The RS800480T-7X0GP is a WVGA (800x480) panel with an 18-bit parallel
>> LCD interface. It supports pixel clocks in the range of 30-40 MHz.
>>
>> This panel details can be found at:
>> http://boundarydevices.com/product/7-800x480-display/
>>
>> Signed-off-by: Gary Bisson 
>> ---
>> Hi all,
>>
>> This patch is the follow-up of a request from Philipp to add the Okaya 
>> display
>> to the simple panel driver.
>> http://lists.infradead.org/pipermail/linux-arm-kernel/2015-May/346657.html
>>
>> Regards,
>> Gary
>> ---
>>  .../bindings/panel/okaya,rs800480t_7x0gp.txt   |  7 ++
>>  .../devicetree/bindings/vendor-prefixes.txt|  1 +
>>  drivers/gpu/drm/panel/panel-simple.c   | 27 
>> ++
>>  3 files changed, 35 insertions(+)
>>  create mode 100644 
>> Documentation/devicetree/bindings/panel/okaya,rs800480t_7x0gp.txt
>>
>> diff --git 
>> a/Documentation/devicetree/bindings/panel/okaya,rs800480t_7x0gp.txt 
>> b/Documentation/devicetree/bindings/panel/okaya,rs800480t_7x0gp.txt
>> new file mode 100644
>> index 000..f7c729d
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/panel/okaya,rs800480t_7x0gp.txt
>> @@ -0,0 +1,7 @@
>> +OKAYA Electric America, Inc. RS800480T-7X0GP 7" WVGA LCD panel
>> +
>> +Required properties:
>> +- compatible: should be "okaya,rs800480t_7x0gp"
>> +
>> +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/vendor-prefixes.txt 
>> b/Documentation/devicetree/bindings/vendor-prefixes.txt
>> index 4f35a00..06ce91c 100644
>> --- a/Documentation/devicetree/bindings/vendor-prefixes.txt
>> +++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
>> @@ -145,6 +145,7 @@ nintendo  Nintendo
>>  nokiaNokia
>>  nvidia   NVIDIA
>>  nxp  NXP Semiconductors
>> +okayaOKAYA Electric America, Inc.
>>  onnn ON Semiconductor Corp.
>>  opencoresOpenCores.org
>>  ortustechOrtus Technology Co., Ltd.
>
> Can you split this change into a separate patch? It needs an Acked-by
> from one of the device tree binding maintainers, so make sure to Cc them
> when you repost. scripts/get_maintainer.pl will list them for you.

Sure, will do.

>> +static const struct display_timing okaya_rs800480t_7x0gp_timing = {
>> + .pixelclock = { 3000, 3000, 4000 },
>> + .hactive = { 800, 800, 800 },
>> + .hfront_porch = { 40, 40, 40 },
>> + .hback_porch = { 40, 40, 40 },
>> + .hsync_len = { 1, 48, 48 },
>> + .vactive = { 480, 480, 480 },
>> + .vfront_porch = { 13, 13, 13 },
>> + .vback_porch = { 29, 29, 29 },
>> + .vsync_len = { 3, 3, 3 },
>
> It strikes me as odd that the porches and VSYNC width should be fixed
> for the panel. Is this really the case?

Well this is the values provided by Okaya. Here is a link to the
datasheet, details are located in page 8:
http://boundarydevices.com/datasheets/RS800480T-7X0GP-A.pdf

Thanks for the feedback,
Gary


[PATCH v2 0/2] Add display timing for Okaya RS800480T-7X0

2015-06-09 Thread Gary Bisson
Hi all,

This patch is the follow-up of a request from Philipp to add the Okaya display
to the simple panel driver.
http://lists.infradead.org/pipermail/linux-arm-kernel/2015-May/346657.html

v2:
- split into 2 patches, adding Okaya to the vendor prefixes should be its own
patch as suggested by Thierry
https://patchwork.kernel.org/patch/6503261/

Regards,
Gary

Gary Bisson (2):
  of: add Okaya Electric America vendor prefix
  drm/panel: Add display timing for Okaya RS800480T-7X0GP

 .../bindings/panel/okaya,rs800480t_7x0gp.txt   |  7 ++
 .../devicetree/bindings/vendor-prefixes.txt|  1 +
 drivers/gpu/drm/panel/panel-simple.c   | 27 ++
 3 files changed, 35 insertions(+)
 create mode 100644 
Documentation/devicetree/bindings/panel/okaya,rs800480t_7x0gp.txt

-- 
2.1.4



[PATCH v2 1/2] of: add Okaya Electric America vendor prefix

2015-06-09 Thread Gary Bisson
This patch adds vendor prefix for Okaya Electronic America, a provider
of LCD modules and display technologies.

Signed-off-by: Gary Bisson 
---
 Documentation/devicetree/bindings/vendor-prefixes.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt 
b/Documentation/devicetree/bindings/vendor-prefixes.txt
index ee2ce7b..37d2de79 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.txt
+++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
@@ -148,6 +148,7 @@ nintendoNintendo
 nokia  Nokia
 nvidia NVIDIA
 nxpNXP Semiconductors
+okaya  Okaya Electric America, Inc.
 onnn   ON Semiconductor Corp.
 opencores  OpenCores.org
 ortustech  Ortus Technology Co., Ltd.
-- 
2.1.4



[PATCH v2 2/2] drm/panel: Add display timing for Okaya RS800480T-7X0GP

2015-06-09 Thread Gary Bisson
Add support for the Okaya RS800480T-7X0GP to the DRM simple panel
driver.

The RS800480T-7X0GP is a WVGA (800x480) panel with an 18-bit parallel
LCD interface. It supports pixel clocks in the range of 30-40 MHz.

This panel details can be found at:
http://boundarydevices.com/product/7-800x480-display/

Signed-off-by: Gary Bisson 
---
 .../bindings/panel/okaya,rs800480t_7x0gp.txt   |  7 ++
 drivers/gpu/drm/panel/panel-simple.c   | 27 ++
 2 files changed, 34 insertions(+)
 create mode 100644 
Documentation/devicetree/bindings/panel/okaya,rs800480t_7x0gp.txt

diff --git a/Documentation/devicetree/bindings/panel/okaya,rs800480t_7x0gp.txt 
b/Documentation/devicetree/bindings/panel/okaya,rs800480t_7x0gp.txt
new file mode 100644
index 000..f7c729d
--- /dev/null
+++ b/Documentation/devicetree/bindings/panel/okaya,rs800480t_7x0gp.txt
@@ -0,0 +1,7 @@
+OKAYA Electric America, Inc. RS800480T-7X0GP 7" WVGA LCD panel
+
+Required properties:
+- compatible: should be "okaya,rs800480t_7x0gp"
+
+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 97b66b8..e511a22 100644
--- a/drivers/gpu/drm/panel/panel-simple.c
+++ b/drivers/gpu/drm/panel/panel-simple.c
@@ -942,6 +942,30 @@ static const struct panel_desc lg_lp129qe = {
},
 };

+static const struct display_timing okaya_rs800480t_7x0gp_timing = {
+   .pixelclock = { 3000, 3000, 4000 },
+   .hactive = { 800, 800, 800 },
+   .hfront_porch = { 40, 40, 40 },
+   .hback_porch = { 40, 40, 40 },
+   .hsync_len = { 1, 48, 48 },
+   .vactive = { 480, 480, 480 },
+   .vfront_porch = { 13, 13, 13 },
+   .vback_porch = { 29, 29, 29 },
+   .vsync_len = { 3, 3, 3 },
+   .flags = DISPLAY_FLAGS_DE_HIGH,
+};
+
+static const struct panel_desc okaya_rs800480t_7x0gp = {
+   .timings = &okaya_rs800480t_7x0gp_timing,
+   .num_timings = 1,
+   .bpc = 6,
+   .size = {
+   .width = 154,
+   .height = 87,
+   },
+   .bus_format = MEDIA_BUS_FMT_RGB666_1X18,
+};
+
 static const struct drm_display_mode ortustech_com43h4m85ulc_mode  = {
.clock = 25000,
.hdisplay = 480,
@@ -1112,6 +1136,9 @@ static const struct of_device_id platform_of_match[] = {
.compatible = "lg,lp129qe",
.data = &lg_lp129qe,
}, {
+   .compatible = "okaya,rs800480t_7x0gp",
+   .data = &okaya_rs800480t_7x0gp,
+   }, {
.compatible = "ortustech,com43h4m85ulc",
.data = &ortustech_com43h4m85ulc,
}, {
-- 
2.1.4



[PATCH v2 2/2] drm/panel: Add display timing for Okaya RS800480T-7X0GP

2015-06-10 Thread Gary Bisson
Hi Philipp,

On Tue, Jun 9, 2015 at 7:39 PM, Philipp Zabel  wrote:
> Hi Gary,
>
> Am Dienstag, den 09.06.2015, 17:59 +0200 schrieb Gary Bisson:
>> Add support for the Okaya RS800480T-7X0GP to the DRM simple panel
>> driver.
>>
>> The RS800480T-7X0GP is a WVGA (800x480) panel with an 18-bit parallel
>> LCD interface. It supports pixel clocks in the range of 30-40 MHz.
>>
>> This panel details can be found at:
>> http://boundarydevices.com/product/7-800x480-display/
>>
>> Signed-off-by: Gary Bisson 
>> ---
>>  .../bindings/panel/okaya,rs800480t_7x0gp.txt   |  7 ++
>>  drivers/gpu/drm/panel/panel-simple.c   | 27 
>> ++
>>  2 files changed, 34 insertions(+)
>>  create mode 100644 
>> Documentation/devicetree/bindings/panel/okaya,rs800480t_7x0gp.txt
>>
>> diff --git 
>> a/Documentation/devicetree/bindings/panel/okaya,rs800480t_7x0gp.txt 
>> b/Documentation/devicetree/bindings/panel/okaya,rs800480t_7x0gp.txt
>> new file mode 100644
>> index 000..f7c729d
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/panel/okaya,rs800480t_7x0gp.txt
>> @@ -0,0 +1,7 @@
>> +OKAYA Electric America, Inc. RS800480T-7X0GP 7" WVGA LCD panel
>> +
>> +Required properties:
>> +- compatible: should be "okaya,rs800480t_7x0gp"
>> +
>> +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 97b66b8..e511a22 100644
>> --- a/drivers/gpu/drm/panel/panel-simple.c
>> +++ b/drivers/gpu/drm/panel/panel-simple.c
>> @@ -942,6 +942,30 @@ static const struct panel_desc lg_lp129qe = {
>>   },
>>  };
>>
>> +static const struct display_timing okaya_rs800480t_7x0gp_timing = {
>> + .pixelclock = { 3000, 3000, 4000 },
>> + .hactive = { 800, 800, 800 },
>> + .hfront_porch = { 40, 40, 40 },
>> + .hback_porch = { 40, 40, 40 },
>> + .hsync_len = { 1, 48, 48 },
>> + .vactive = { 480, 480, 480 },
>> + .vfront_porch = { 13, 13, 13 },
>> + .vback_porch = { 29, 29, 29 },
>> + .vsync_len = { 3, 3, 3 },
>> + .flags = DISPLAY_FLAGS_DE_HIGH,
>> +};
>> +
>> +static const struct panel_desc okaya_rs800480t_7x0gp = {
>> + .timings = &okaya_rs800480t_7x0gp_timing,
>> + .num_timings = 1,
>> + .bpc = 6,
>> + .size = {
>> + .width = 154,
>> + .height = 87,
>> + },
>
> Are there any poweron/poweroff sequencing delays in the datasheet that
> should be met? Parallel displays often specify a few ms delay after the
> voltage supply is stable and before pixel data should be driven on the
> bus (.delay.prepare), as well as afterwards, before activating the
> backlight (.delay.enable).

You are right I forgot to add those delays. I will submit a v3.

That gives prepare = unprepare = 40.5ms (rounded up to 41) and enable
= disable = 50ms based on the values provided at page 6/20 of the
following doc:
http://boundarydevices.com/datasheets/RS800480T-7X0GP-A.pdf

Regards,
Gary


[PATCH v3 0/2] Add display timing for Okaya RS800480T-7X0

2015-06-10 Thread Gary Bisson
Hi all,

This patch is the follow-up of a request from Philipp to add the Okaya display
to the simple panel driver.
http://lists.infradead.org/pipermail/linux-arm-kernel/2015-May/346657.html

v2:
- split into 2 patches, adding Okaya to the vendor prefixes should be its own
patch as suggested by Thierry
https://patchwork.kernel.org/patch/6503261/

v3:
- add poweron/poweroff sequencing delays as suggested by Philipp. Values are
based on datasheet available at:
http://boundarydevices.com/datasheets/RS800480T-7X0GP-A.pdf

Regards,
Gary

Gary Bisson (2):
  of: add Okaya Electric America vendor prefix
  drm/panel: Add display timing for Okaya RS800480T-7X0GP

 .../bindings/panel/okaya,rs800480t_7x0gp.txt   |  7 +
 .../devicetree/bindings/vendor-prefixes.txt|  1 +
 drivers/gpu/drm/panel/panel-simple.c   | 33 ++
 3 files changed, 41 insertions(+)
 create mode 100644 
Documentation/devicetree/bindings/panel/okaya,rs800480t_7x0gp.txt

-- 
2.1.4



[PATCH v3 1/2] of: add Okaya Electric America vendor prefix

2015-06-10 Thread Gary Bisson
This patch adds vendor prefix for Okaya Electronic America, a provider
of LCD modules and display technologies.

Signed-off-by: Gary Bisson 
---
 Documentation/devicetree/bindings/vendor-prefixes.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt 
b/Documentation/devicetree/bindings/vendor-prefixes.txt
index ee2ce7b..37d2de79 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.txt
+++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
@@ -148,6 +148,7 @@ nintendoNintendo
 nokia  Nokia
 nvidia NVIDIA
 nxpNXP Semiconductors
+okaya  Okaya Electric America, Inc.
 onnn   ON Semiconductor Corp.
 opencores  OpenCores.org
 ortustech  Ortus Technology Co., Ltd.
-- 
2.1.4



[PATCH v3 2/2] drm/panel: Add display timing for Okaya RS800480T-7X0GP

2015-06-10 Thread Gary Bisson
Add support for the Okaya RS800480T-7X0GP to the DRM simple panel
driver.

The RS800480T-7X0GP is a WVGA (800x480) panel with an 18-bit parallel
LCD interface. It supports pixel clocks in the range of 30-40 MHz.

This panel details can be found at:
http://boundarydevices.com/product/7-800x480-display/

Signed-off-by: Gary Bisson 
---
 .../bindings/panel/okaya,rs800480t_7x0gp.txt   |  7 +
 drivers/gpu/drm/panel/panel-simple.c   | 33 ++
 2 files changed, 40 insertions(+)
 create mode 100644 
Documentation/devicetree/bindings/panel/okaya,rs800480t_7x0gp.txt

diff --git a/Documentation/devicetree/bindings/panel/okaya,rs800480t_7x0gp.txt 
b/Documentation/devicetree/bindings/panel/okaya,rs800480t_7x0gp.txt
new file mode 100644
index 000..f7c729d
--- /dev/null
+++ b/Documentation/devicetree/bindings/panel/okaya,rs800480t_7x0gp.txt
@@ -0,0 +1,7 @@
+OKAYA Electric America, Inc. RS800480T-7X0GP 7" WVGA LCD panel
+
+Required properties:
+- compatible: should be "okaya,rs800480t_7x0gp"
+
+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 f94201b..5262be1 100644
--- a/drivers/gpu/drm/panel/panel-simple.c
+++ b/drivers/gpu/drm/panel/panel-simple.c
@@ -943,6 +943,36 @@ static const struct panel_desc lg_lp129qe = {
},
 };

+static const struct display_timing okaya_rs800480t_7x0gp_timing = {
+   .pixelclock = { 3000, 3000, 4000 },
+   .hactive = { 800, 800, 800 },
+   .hfront_porch = { 40, 40, 40 },
+   .hback_porch = { 40, 40, 40 },
+   .hsync_len = { 1, 48, 48 },
+   .vactive = { 480, 480, 480 },
+   .vfront_porch = { 13, 13, 13 },
+   .vback_porch = { 29, 29, 29 },
+   .vsync_len = { 3, 3, 3 },
+   .flags = DISPLAY_FLAGS_DE_HIGH,
+};
+
+static const struct panel_desc okaya_rs800480t_7x0gp = {
+   .timings = &okaya_rs800480t_7x0gp_timing,
+   .num_timings = 1,
+   .bpc = 6,
+   .size = {
+   .width = 154,
+   .height = 87,
+   },
+   .delay = {
+   .prepare = 41,
+   .enable = 50,
+   .unprepare = 41,
+   .disable = 50,
+   },
+   .bus_format = MEDIA_BUS_FMT_RGB666_1X18,
+};
+
 static const struct drm_display_mode ortustech_com43h4m85ulc_mode  = {
.clock = 25000,
.hdisplay = 480,
@@ -1113,6 +1143,9 @@ static const struct of_device_id platform_of_match[] = {
.compatible = "lg,lp129qe",
.data = &lg_lp129qe,
}, {
+   .compatible = "okaya,rs800480t_7x0gp",
+   .data = &okaya_rs800480t_7x0gp,
+   }, {
.compatible = "ortustech,com43h4m85ulc",
.data = &ortustech_com43h4m85ulc,
}, {
-- 
2.1.4



drm: imx: multi-display support questions

2015-06-29 Thread Gary Bisson
Hi Fabio,

On Mon, Jun 29, 2015 at 6:08 PM, Fabio Estevam  wrote:
> Hi Gary,
>
> On Mon, Jun 29, 2015 at 1:04 PM, Gary Bisson
>  wrote:
>
>> Thank you for your e-mail and sorry for the delay in my response. I
>> confirm this patch, ported over to my dtsi file, makes the HDMI and
>> LVDS work together.
>>
>> I'll check with Eric but we will most likely use the same
>> configuration for our platforms.
>
> What do you mean by "use the same configuration for our platforms"?

I meant the clock tree configuration, having LDB under the PLL3.

> I was planning to send the two attached patches.

I am ok with it but I'd like Eric to ack it too as he might have some remarks.

Regards,
Gary


drm: imx: multi-display support questions

2015-06-29 Thread Gary Bisson
Hi Fabio,

On Tue, Jun 23, 2015 at 7:50 PM, Fabio Estevam  wrote:
> On Tue, Jun 23, 2015 at 2:49 PM, Fabio Estevam  wrote:
>> Hi Gary,
>>
>> On Wed, May 27, 2015 at 10:31 AM, Gary Bisson
>>  wrote:
>>
>>> Ok, thanks, I'll check and see what I need to get all the displays to
>>> work together.
>>
>> With this patch:
>> http://lists.infradead.org/pipermail/linux-arm-kernel/2015-June/352189.html
>>
>> I am able to get HDMI and LVDS working on a mx6q-sabresd.
>
> Sorry, the correct URL is:
> http://lists.infradead.org/pipermail/linux-arm-kernel/2015-June/352179.html

Thank you for your e-mail and sorry for the delay in my response. I
confirm this patch, ported over to my dtsi file, makes the HDMI and
LVDS work together.

I'll check with Eric but we will most likely use the same
configuration for our platforms.

Regards,
Gary


drm: imx: multi-display support questions

2015-06-29 Thread Gary Bisson
Fabio, Eric,

On Mon, Jun 29, 2015 at 6:22 PM, Eric Nelson
 wrote:
> Thanks Fabio,
>
> On 06/29/2015 09:08 AM, Fabio Estevam wrote:
>> Hi Gary,
>>
>> On Mon, Jun 29, 2015 at 1:04 PM, Gary Bisson
>>  wrote:
>>
>>> Thank you for your e-mail and sorry for the delay in my response. I
>>> confirm this patch, ported over to my dtsi file, makes the HDMI and
>>> LVDS work together.
>>>
>>> I'll check with Eric but we will most likely use the same
>>> configuration for our platforms.
>>
>> What do you mean by "use the same configuration for our platforms"?
>>
>> I was planning to send the two attached patches.
>>
>> Are you and Eric OK with them?
>>
>
> These look good to me.
>
> Gary, did you test one of these against either of our 1280x800 panels?

Yes I've tested with both Hannstar 10" 1024x768 and 7" 1280x800. I
will answer to the patches sent for Sabrelite and Nitrogen6x.

Regards,
Gary


drm/imx: parallel-display: fix drm_panel support

2015-07-09 Thread Gary Bisson
Hi Philipp

On Tue, May 19, 2015 at 04:28:12PM +0200, Philipp Zabel wrote:
> The parallel-display driver used an undocumented, non-standard property
> "fsl,panel" to optionally associate with a drm_panel device. This patch
> fixes the driver to use the same OF graph bindings as the LDB driver
> instead:
> 
> parallel-display {
> compatible = "fsl,imx-parallel-display";
> ...
> 
> port at 1 {
> reg = <1>;
> 
> parallel_out: endpoint {
> remote_endpoint = <&panel_in>;
> };
> };
> };
> 
> panel {
> ...
> 
> port {
> panel_in: endpoint {
> remote-endpoint = <¶llel_out>;
> };
> };
> };
> 
> Signed-off-by: Philipp Zabel 
> 
> ---

Tested on Nitrogen6x and Sabrelite using a Okaya RS800480T-7X0GP
display. Below are the different patches submitted that make use of this
change:
https://patchwork.kernel.org/patch/6585541/
https://patchwork.kernel.org/patch/6585551/
https://patchwork.kernel.org/patch/6504711/
https://patchwork.kernel.org/patch/6504731/

Tested-by: Gary Bisson 

Regards,
Gary


[PATCH v3 0/2] Add display timing for Okaya RS800480T-7X0

2015-08-05 Thread Gary Bisson
Hi all,

On Wed, Jun 10, 2015 at 6:44 PM, Gary Bisson
 wrote:
> Hi all,
>
> This patch is the follow-up of a request from Philipp to add the Okaya display
> to the simple panel driver.
> http://lists.infradead.org/pipermail/linux-arm-kernel/2015-May/346657.html
>
> v2:
> - split into 2 patches, adding Okaya to the vendor prefixes should be its own
> patch as suggested by Thierry
> https://patchwork.kernel.org/patch/6503261/
>
> v3:
> - add poweron/poweroff sequencing delays as suggested by Philipp. Values are
> based on datasheet available at:
> http://boundarydevices.com/datasheets/RS800480T-7X0GP-A.pdf

Now that Philipp's change that fixes the drm_panel support in the
parallel-display has been merged, would it be ok to merge the okaya
timings?
http://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/commit/?id=553a59fc

Regards,
Gary