* [PATCH 0/2] drm/panel: Add support for Innolux LS075AT011 @ 2020-08-19 10:12 Lubomir Rintel 2020-08-19 10:12 ` [PATCH 1/2] dt-bindings: display: simple: add " Lubomir Rintel 2020-08-19 10:12 ` [PATCH 2/2] drm/panel: simple: Add support for " Lubomir Rintel 0 siblings, 2 replies; 5+ messages in thread From: Lubomir Rintel @ 2020-08-19 10:12 UTC (permalink / raw) To: Thierry Reding Cc: Sam Ravnborg, David Airlie, Daniel Vetter, Rob Herring, dri-devel, devicetree, linux-kernel Hi, Please take a look at the patches chanied to this message and consider applying them. They add description of the display panel found on OLPC laptops to the simple panel driver. There is no datasheet for the hardware and thus the timings were determined on a best effort basis. The clock range is gotten from the data sheet of the display controller [1] and the other timings are what OLPC laptops actually use. The panel seems to cope with different sync timings, but I'm not sure wherher there's any value in attempting to figure out what range is actually permissible. I could not figure out the right definitions for the connector and the bus format. I'm not sure how necessary they are, but at least the drm-panel driver insists on connector type being defined so I picked LVDS because that seems to be used for internal laptop screens. The signalling is not actually differential. It uses TTL levels with data sampled on rising and falling clock edges; sort of like this (taken from [1], P.20): __ FSTH / \_______________________________________ ____ ____ ____ ____ __ FCLK / \____/ \____/ \____/ \____/ ____ ____ ____ ____ ____ ____ ____ FD00 ........X____X____X____X____X____X____X____ ____ ____ ____ ____ ____ ____ ____ FD01 ........X____X____X____X____X____X____X____ ____ ____ ____ ____ ____ ____ ____ FD10 ........X____X____X____X____X____X____X____ ____ ____ ____ ____ ____ ____ ____ FD11 ........X____X____X____X____X____X____X____ ____ ____ ____ ____ ____ ____ ____ FD20 ........X____X____X____X____X____X____X____ ____ ____ ____ ____ ____ ____ ____ FD21 ........X____X____X____X____X____X____X____ | | | | data 1 data 2 ... (2x6bit) (2x6bit) I believe the data just carries brightness because each pixel on the panel has a fixed color; with the red, green and blue pixels organized in a pattern [2]. (The HX8837 that drives the color does the conversion from RGB). Tested on an OLPC XO-1.75 laptop. XO-1 and XO-1.5 use the same hardware, but their display controllers are not supported by DRM at the moment. [1] http://wiki.laptop.org/images/0/09/DCON_datasheet_HX8837-A.pdf [2] http://wiki.laptop.org/go/Display Thank you! Lubo ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/2] dt-bindings: display: simple: add Innolux LS075AT011 2020-08-19 10:12 [PATCH 0/2] drm/panel: Add support for Innolux LS075AT011 Lubomir Rintel @ 2020-08-19 10:12 ` Lubomir Rintel 2020-08-25 21:53 ` Rob Herring 2020-08-19 10:12 ` [PATCH 2/2] drm/panel: simple: Add support for " Lubomir Rintel 1 sibling, 1 reply; 5+ messages in thread From: Lubomir Rintel @ 2020-08-19 10:12 UTC (permalink / raw) To: Thierry Reding Cc: Sam Ravnborg, David Airlie, Daniel Vetter, Rob Herring, dri-devel, devicetree, linux-kernel, Lubomir Rintel Add the Innolux LS075AT011 7.5" (1200x900) color/reflective LCD panel to the panel-simple compatible list. This panel is used in the OLPC laptops. Signed-off-by: Lubomir Rintel <lkundrak@v3.sk> --- .../devicetree/bindings/display/panel/panel-simple.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/devicetree/bindings/display/panel/panel-simple.yaml b/Documentation/devicetree/bindings/display/panel/panel-simple.yaml index 6deeeed59e59f..cad63a639e258 100644 --- a/Documentation/devicetree/bindings/display/panel/panel-simple.yaml +++ b/Documentation/devicetree/bindings/display/panel/panel-simple.yaml @@ -153,6 +153,8 @@ properties: - innolux,g121i1-l01 # Innolux Corporation 12.1" G121X1-L03 XGA (1024x768) TFT LCD panel - innolux,g121x1-l03 + # Innolux LS075AT011 7.5" (1200x900) color/reflective LCD panel + - innolux,ls075at011 # Innolux Corporation 11.6" WXGA (1366x768) TFT LCD panel - innolux,n116bge # InnoLux 15.6" WXGA TFT LCD panel -- 2.26.2 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] dt-bindings: display: simple: add Innolux LS075AT011 2020-08-19 10:12 ` [PATCH 1/2] dt-bindings: display: simple: add " Lubomir Rintel @ 2020-08-25 21:53 ` Rob Herring 0 siblings, 0 replies; 5+ messages in thread From: Rob Herring @ 2020-08-25 21:53 UTC (permalink / raw) To: Lubomir Rintel Cc: Thierry Reding, David Airlie, dri-devel, devicetree, Rob Herring, Sam Ravnborg, linux-kernel On Wed, 19 Aug 2020 12:12:05 +0200, Lubomir Rintel wrote: > Add the Innolux LS075AT011 7.5" (1200x900) color/reflective LCD panel to > the panel-simple compatible list. This panel is used in the OLPC laptops. > > Signed-off-by: Lubomir Rintel <lkundrak@v3.sk> > --- > .../devicetree/bindings/display/panel/panel-simple.yaml | 2 ++ > 1 file changed, 2 insertions(+) > Acked-by: Rob Herring <robh@kernel.org> ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 2/2] drm/panel: simple: Add support for Innolux LS075AT011 2020-08-19 10:12 [PATCH 0/2] drm/panel: Add support for Innolux LS075AT011 Lubomir Rintel 2020-08-19 10:12 ` [PATCH 1/2] dt-bindings: display: simple: add " Lubomir Rintel @ 2020-08-19 10:12 ` Lubomir Rintel 2020-10-17 8:07 ` Sam Ravnborg 1 sibling, 1 reply; 5+ messages in thread From: Lubomir Rintel @ 2020-08-19 10:12 UTC (permalink / raw) To: Thierry Reding Cc: Sam Ravnborg, David Airlie, Daniel Vetter, Rob Herring, dri-devel, devicetree, linux-kernel, Lubomir Rintel This adds support for the Innolux LS075AT011 7.5" 1200x900 panel. There's no public data sheet for the panel -- the values have been taken from Open Firmware and the documentation for the display controller that drives the panel and tested on the OLPC laptop. Signed-off-by: Lubomir Rintel <lkundrak@v3.sk> --- drivers/gpu/drm/panel/panel-simple.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c index cb6550d37e858..dfc69457ed2d4 100644 --- a/drivers/gpu/drm/panel/panel-simple.c +++ b/drivers/gpu/drm/panel/panel-simple.c @@ -2121,6 +2121,30 @@ static const struct panel_desc innolux_g121x1_l03 = { }, }; +static const struct display_timing innolux_ls075at011_timing = { + .pixelclock = { 56000000, 57000000, 58000000 }, + .hactive = { 1200, 1200, 1200 }, + .hfront_porch = { 26, 26, 26 }, + .hback_porch = { 24, 24, 24 }, + .hsync_len = { 6, 6, 6 }, + .vactive = { 900, 900, 900 }, + .vfront_porch = { 4, 4, 4 }, + .vback_porch = { 5, 5, 5 }, + .vsync_len = { 3, 3, 3 }, + .flags = DISPLAY_FLAGS_VSYNC_LOW | DISPLAY_FLAGS_HSYNC_LOW, +}; + +static const struct panel_desc innolux_ls075at011 = { + .timings = &innolux_ls075at011_timing, + .num_timings = 1, + .bpc = 8, + .size = { + .width = 152, + .height = 115, + }, + .connector_type = DRM_MODE_CONNECTOR_LVDS, +}; + /* * Datasheet specifies that at 60 Hz refresh rate: * - total horizontal time: { 1506, 1592, 1716 } @@ -3907,6 +3931,9 @@ static const struct of_device_id platform_of_match[] = { }, { .compatible = "innolux,g121x1-l03", .data = &innolux_g121x1_l03, + }, { + .compatible = "innolux,ls075at011", + .data = &innolux_ls075at011, }, { .compatible = "innolux,n116bge", .data = &innolux_n116bge, -- 2.26.2 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] drm/panel: simple: Add support for Innolux LS075AT011 2020-08-19 10:12 ` [PATCH 2/2] drm/panel: simple: Add support for " Lubomir Rintel @ 2020-10-17 8:07 ` Sam Ravnborg 0 siblings, 0 replies; 5+ messages in thread From: Sam Ravnborg @ 2020-10-17 8:07 UTC (permalink / raw) To: Lubomir Rintel Cc: Thierry Reding, devicetree, David Airlie, linux-kernel, dri-devel, Rob Herring Hi Lubomir. Sorry for the late feedback! On Wed, Aug 19, 2020 at 12:12:06PM +0200, Lubomir Rintel wrote: > This adds support for the Innolux LS075AT011 7.5" 1200x900 panel. There's > no public data sheet for the panel -- the values have been taken from Open > Firmware and the documentation for the display controller that drives > the panel and tested on the OLPC laptop. > > Signed-off-by: Lubomir Rintel <lkundrak@v3.sk> > --- > drivers/gpu/drm/panel/panel-simple.c | 27 +++++++++++++++++++++++++++ > 1 file changed, 27 insertions(+) > > diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c > index cb6550d37e858..dfc69457ed2d4 100644 > --- a/drivers/gpu/drm/panel/panel-simple.c > +++ b/drivers/gpu/drm/panel/panel-simple.c > @@ -2121,6 +2121,30 @@ static const struct panel_desc innolux_g121x1_l03 = { > }, > }; > > +static const struct display_timing innolux_ls075at011_timing = { > + .pixelclock = { 56000000, 57000000, 58000000 }, > + .hactive = { 1200, 1200, 1200 }, > + .hfront_porch = { 26, 26, 26 }, > + .hback_porch = { 24, 24, 24 }, > + .hsync_len = { 6, 6, 6 }, > + .vactive = { 900, 900, 900 }, > + .vfront_porch = { 4, 4, 4 }, > + .vback_porch = { 5, 5, 5 }, > + .vsync_len = { 3, 3, 3 }, > + .flags = DISPLAY_FLAGS_VSYNC_LOW | DISPLAY_FLAGS_HSYNC_LOW, > +}; > + > +static const struct panel_desc innolux_ls075at011 = { > + .timings = &innolux_ls075at011_timing, > + .num_timings = 1, > + .bpc = 8, > + .size = { > + .width = 152, > + .height = 115, > + }, > + .connector_type = DRM_MODE_CONNECTOR_LVDS, > +}; For LVDS panels following info is mandatory: .bus_flags .bus_format You have .bpc - so this part is OK. See the checks in panel_simple_probe() - thay are not allowed to trigger for any new panels. Sam ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-10-17 8:07 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-08-19 10:12 [PATCH 0/2] drm/panel: Add support for Innolux LS075AT011 Lubomir Rintel 2020-08-19 10:12 ` [PATCH 1/2] dt-bindings: display: simple: add " Lubomir Rintel 2020-08-25 21:53 ` Rob Herring 2020-08-19 10:12 ` [PATCH 2/2] drm/panel: simple: Add support for " Lubomir Rintel 2020-10-17 8:07 ` Sam Ravnborg
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).