* [PATCH] drm/panel: Add simple panel mode for the ARM RTSMv8
@ 2018-10-18 12:27 Linus Walleij
2018-10-18 12:44 ` Liviu Dudau
2018-10-18 13:56 ` Robin Murphy
0 siblings, 2 replies; 5+ messages in thread
From: Linus Walleij @ 2018-10-18 12:27 UTC (permalink / raw)
To: Thierry Reding, dri-devel
Cc: Lorenzo Pieralisi, Liviu Dudau, Mali DP Maintainers,
Sudeep Holla, Robin Murphy
Having failed any attempts at a more generic solution,
I fall back to the very specific solution: define a simple
panel for the ARM RTSMv8 emulated platform.
I am doing this so we can convert all old users from the
previous fbdev driver to the PL111 DRM driver.
This works fine as far as I can test, provided the
device tree for RTSMv8 is augmented accordingly.
Cc: Sudeep Holla <sudeep.holla@arm.com>
Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: Liviu Dudau <liviu.dudau@arm.com>
Cc: Mali DP Maintainers <malidp@foss.arm.com>
Cc: Robin Murphy <robin.murphy@arm.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
drivers/gpu/drm/panel/panel-simple.c | 30 ++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c
index 97964f7f2ace..b36fb1db16fb 100644
--- a/drivers/gpu/drm/panel/panel-simple.c
+++ b/drivers/gpu/drm/panel/panel-simple.c
@@ -2323,6 +2323,33 @@ static const struct panel_desc winstar_wf35ltiacd = {
.bus_format = MEDIA_BUS_FMT_RGB888_1X24,
};
+static const struct drm_display_mode arm_rtsmv8_mode[] = {
+ {
+ .clock = 65000,
+ .hdisplay = 1024,
+ .hsync_start = 1024 + 24,
+ .hsync_end = 1024 + 24 + 136,
+ .htotal = 1024 + 24 + 136 + 160,
+ .vdisplay = 768,
+ .vsync_start = 768 + 3,
+ .vsync_end = 768 + 3 + 6,
+ .vtotal = 768 + 3 + 6 + 29,
+ .vrefresh = 60,
+ .flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC,
+ },
+};
+
+static const struct panel_desc arm_rtsmv8 = {
+ .modes = arm_rtsmv8_mode,
+ .num_modes = 1,
+ .bpc = 8,
+ .size = {
+ .width = 400,
+ .height = 300,
+ },
+ .bus_format = MEDIA_BUS_FMT_RGB888_1X24,
+};
+
static const struct of_device_id platform_of_match[] = {
{
.compatible = "ampire,am-480272h3tmqw-t01h",
@@ -2330,6 +2357,9 @@ static const struct of_device_id platform_of_match[] = {
}, {
.compatible = "ampire,am800480r3tmqwa1h",
.data = &ire_am800480r3tmqwa1h,
+ }, {
+ .compatible = "arm,rtsmv8-display",
+ .data = &arm_rtsmv8,
}, {
.compatible = "auo,b101aw03",
.data = &auo_b101aw03,
--
2.17.2
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] drm/panel: Add simple panel mode for the ARM RTSMv8
2018-10-18 12:27 [PATCH] drm/panel: Add simple panel mode for the ARM RTSMv8 Linus Walleij
@ 2018-10-18 12:44 ` Liviu Dudau
2018-10-18 12:54 ` Linus Walleij
2018-10-18 13:56 ` Robin Murphy
1 sibling, 1 reply; 5+ messages in thread
From: Liviu Dudau @ 2018-10-18 12:44 UTC (permalink / raw)
To: Linus Walleij
Cc: Lorenzo Pieralisi, dri-devel, Thierry Reding,
Mali DP Maintainers, Sudeep Holla, Robin Murphy
Hi Linus,
On Thu, Oct 18, 2018 at 02:27:42PM +0200, Linus Walleij wrote:
> Having failed any attempts at a more generic solution,
> I fall back to the very specific solution: define a simple
> panel for the ARM RTSMv8 emulated platform.
<Sad face>
>
> I am doing this so we can convert all old users from the
> previous fbdev driver to the PL111 DRM driver.
>
> This works fine as far as I can test, provided the
> device tree for RTSMv8 is augmented accordingly.
While this patch looks good to me (you can add my Reviewed-by if you
want), I'm surprised to see no other patches for the users of the panel.
Is it all in a DTS change?
Best regards,
Liviu
>
> Cc: Sudeep Holla <sudeep.holla@arm.com>
> Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
> Cc: Liviu Dudau <liviu.dudau@arm.com>
> Cc: Mali DP Maintainers <malidp@foss.arm.com>
> Cc: Robin Murphy <robin.murphy@arm.com>
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
> ---
> drivers/gpu/drm/panel/panel-simple.c | 30 ++++++++++++++++++++++++++++
> 1 file changed, 30 insertions(+)
>
> diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c
> index 97964f7f2ace..b36fb1db16fb 100644
> --- a/drivers/gpu/drm/panel/panel-simple.c
> +++ b/drivers/gpu/drm/panel/panel-simple.c
> @@ -2323,6 +2323,33 @@ static const struct panel_desc winstar_wf35ltiacd = {
> .bus_format = MEDIA_BUS_FMT_RGB888_1X24,
> };
>
> +static const struct drm_display_mode arm_rtsmv8_mode[] = {
> + {
> + .clock = 65000,
> + .hdisplay = 1024,
> + .hsync_start = 1024 + 24,
> + .hsync_end = 1024 + 24 + 136,
> + .htotal = 1024 + 24 + 136 + 160,
> + .vdisplay = 768,
> + .vsync_start = 768 + 3,
> + .vsync_end = 768 + 3 + 6,
> + .vtotal = 768 + 3 + 6 + 29,
> + .vrefresh = 60,
> + .flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC,
> + },
> +};
> +
> +static const struct panel_desc arm_rtsmv8 = {
> + .modes = arm_rtsmv8_mode,
> + .num_modes = 1,
> + .bpc = 8,
> + .size = {
> + .width = 400,
> + .height = 300,
> + },
> + .bus_format = MEDIA_BUS_FMT_RGB888_1X24,
> +};
> +
> static const struct of_device_id platform_of_match[] = {
> {
> .compatible = "ampire,am-480272h3tmqw-t01h",
> @@ -2330,6 +2357,9 @@ static const struct of_device_id platform_of_match[] = {
> }, {
> .compatible = "ampire,am800480r3tmqwa1h",
> .data = &ire_am800480r3tmqwa1h,
> + }, {
> + .compatible = "arm,rtsmv8-display",
> + .data = &arm_rtsmv8,
> }, {
> .compatible = "auo,b101aw03",
> .data = &auo_b101aw03,
> --
> 2.17.2
>
--
====================
| I would like to |
| fix the world, |
| but they're not |
| giving me the |
\ source code! /
---------------
¯\_(ツ)_/¯
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] drm/panel: Add simple panel mode for the ARM RTSMv8
2018-10-18 12:44 ` Liviu Dudau
@ 2018-10-18 12:54 ` Linus Walleij
0 siblings, 0 replies; 5+ messages in thread
From: Linus Walleij @ 2018-10-18 12:54 UTC (permalink / raw)
To: Liviu Dudau
Cc: Lorenzo Pieralisi, open list:DRM PANEL DRIVERS, thierry.reding,
Mali DP Maintainers, Sudeep Holla, Robin Murphy
On Thu, Oct 18, 2018 at 2:44 PM Liviu Dudau <liviu.dudau@arm.com> wrote:
> While this patch looks good to me (you can add my Reviewed-by if you
> want),
Thanks.
> I'm surprised to see no other patches for the users of the panel.
> Is it all in a DTS change?
Yes I am expecting to send that out if I can get this merged. Then
Sudeep gets to switch all the vexpress machines to DRM in one go
(DTS + defconfig updates).
It looks like this for RTSMv8:
diff --git a/arch/arm64/boot/dts/arm/rtsm_ve-aemv8a.dts
b/arch/arm64/boot/dts/arm/rtsm_ve-aemv8a.dts
index 602f63f72c37..d1383b056b6a 100644
--- a/arch/arm64/boot/dts/arm/rtsm_ve-aemv8a.dts
+++ b/arch/arm64/boot/dts/arm/rtsm_ve-aemv8a.dts
@@ -78,6 +78,20 @@
<0x00000008 0x80000000 0 0x80000000>;
};
+ reserved-memory {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ /* Chipselect 2,00000000 is physically at 0x18000000 */
+ vram: vram@18000000 {
+ /* 8 MB of designated video RAM */
+ compatible = "shared-dma-pool";
+ reg = <0x00000000 0x18000000 0 0x00800000>;
+ no-map;
+ };
+ };
+
gic: interrupt-controller@2c001000 {
compatible = "arm,cortex-a15-gic", "arm,cortex-a9-gic";
#interrupt-cells = <3>;
@@ -107,6 +121,15 @@
<0 63 4>;
};
+ panel {
+ compatible = "arm,rtsmv8-display";
+ port {
+ panel_in: endpoint {
+ remote-endpoint = <&clcd_pads>;
+ };
+ };
+ };
+
smb@8000000 {
compatible = "simple-bus";
diff --git a/arch/arm64/boot/dts/arm/rtsm_ve-motherboard.dtsi
b/arch/arm64/boot/dts/arm/rtsm_ve-motherboard.dtsi
index d2dbc3f39263..b25f3cbd3da8 100644
--- a/arch/arm64/boot/dts/arm/rtsm_ve-motherboard.dtsi
+++ b/arch/arm64/boot/dts/arm/rtsm_ve-motherboard.dtsi
@@ -24,11 +24,6 @@
bank-width = <4>;
};
- v2m_video_ram: vram@2,00000000 {
- compatible = "arm,vexpress-vram";
- reg = <2 0x00000000 0x00800000>;
- };
-
ethernet@2,02000000 {
compatible = "smsc,lan91c111";
reg = <2 0x02000000 0x10000>;
@@ -187,38 +182,16 @@
interrupts = <14>;
clocks = <&v2m_oscclk1>,
<&v2m_clk24mhz>;
clock-names = "clcdclk", "apb_pclk";
- arm,pl11x,framebuffer =
<0x18000000 0x00180000>;
- memory-region = <&v2m_video_ram>;
- max-memory-bandwidth =
<130000000>; /* 16bpp @ 63.5MHz */
+ /* 800x600 16bpp @36MHz works fine */
+ max-memory-bandwidth = <54000000>;
+ memory-region = <&vram>;
port {
- v2m_clcd_pads: endpoint {
-
remote-endpoint = <&v2m_clcd_panel>;
+ clcd_pads: endpoint {
+
remote-endpoint = <&panel_in>;
arm,pl11x,tft-r0g0b0-pads = <0 8 16>;
};
};
-
- panel {
- compatible = "panel-dpi";
-
- port {
-
v2m_clcd_panel: endpoint {
-
remote-endpoint = <&v2m_clcd_pads>;
- };
- };
-
- panel-timing {
-
clock-frequency = <63500127>;
- hactive = <1024>;
- hback-porch = <152>;
- hfront-porch = <48>;
- hsync-len = <104>;
- vactive = <768>;
- vback-porch = <23>;
- vfront-porch = <3>;
- vsync-len = <4>;
- };
- };
};
virtio-block@130000 {
Yours,
Linus Walleij
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] drm/panel: Add simple panel mode for the ARM RTSMv8
2018-10-18 12:27 [PATCH] drm/panel: Add simple panel mode for the ARM RTSMv8 Linus Walleij
2018-10-18 12:44 ` Liviu Dudau
@ 2018-10-18 13:56 ` Robin Murphy
2018-10-18 14:18 ` Linus Walleij
1 sibling, 1 reply; 5+ messages in thread
From: Robin Murphy @ 2018-10-18 13:56 UTC (permalink / raw)
To: Linus Walleij, Thierry Reding, dri-devel
Cc: Mali DP Maintainers, Lorenzo Pieralisi, Liviu Dudau, Sudeep Holla
Hi Linus,
On 18/10/18 13:27, Linus Walleij wrote:
> Having failed any attempts at a more generic solution,
> I fall back to the very specific solution: define a simple
> panel for the ARM RTSMv8 emulated platform.
From the bits of the discussion that I've caught it does seem like this
framebuffer-grovelling business might turn out to be fairly unique to
RTSM/Fast Models, so I guess it's a reasonable compromise.
> I am doing this so we can convert all old users from the
> previous fbdev driver to the PL111 DRM driver.
>
> This works fine as far as I can test, provided the
> device tree for RTSMv8 is augmented accordingly.
>
> Cc: Sudeep Holla <sudeep.holla@arm.com>
> Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
> Cc: Liviu Dudau <liviu.dudau@arm.com>
> Cc: Mali DP Maintainers <malidp@foss.arm.com>
> Cc: Robin Murphy <robin.murphy@arm.com>
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
> ---
> drivers/gpu/drm/panel/panel-simple.c | 30 ++++++++++++++++++++++++++++
Nit: binding doc?
> 1 file changed, 30 insertions(+)
>
> diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c
> index 97964f7f2ace..b36fb1db16fb 100644
> --- a/drivers/gpu/drm/panel/panel-simple.c
> +++ b/drivers/gpu/drm/panel/panel-simple.c
> @@ -2323,6 +2323,33 @@ static const struct panel_desc winstar_wf35ltiacd = {
> .bus_format = MEDIA_BUS_FMT_RGB888_1X24,
> };
>
> +static const struct drm_display_mode arm_rtsmv8_mode[] = {
> + {
> + .clock = 65000,
> + .hdisplay = 1024,
> + .hsync_start = 1024 + 24,
> + .hsync_end = 1024 + 24 + 136,
> + .htotal = 1024 + 24 + 136 + 160,
> + .vdisplay = 768,
> + .vsync_start = 768 + 3,
> + .vsync_end = 768 + 3 + 6,
> + .vtotal = 768 + 3 + 6 + 29,
> + .vrefresh = 60,
> + .flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC,
> + },
> +};
> +
> +static const struct panel_desc arm_rtsmv8 = {
> + .modes = arm_rtsmv8_mode,
> + .num_modes = 1,
> + .bpc = 8,
> + .size = {
> + .width = 400,
> + .height = 300,
> + },
> + .bus_format = MEDIA_BUS_FMT_RGB888_1X24,
> +};
> +
> static const struct of_device_id platform_of_match[] = {
> {
> .compatible = "ampire,am-480272h3tmqw-t01h",
> @@ -2330,6 +2357,9 @@ static const struct of_device_id platform_of_match[] = {
> }, {
> .compatible = "ampire,am800480r3tmqwa1h",
> .data = &ire_am800480r3tmqwa1h,
> + }, {
> + .compatible = "arm,rtsmv8-display",
Nit: "arm,rtsm-display" would probably be a more accurate choice, since
the implementation dates back to long before v8 of anything relevant ;)
Robin.
> + .data = &arm_rtsmv8,
> }, {
> .compatible = "auo,b101aw03",
> .data = &auo_b101aw03,
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] drm/panel: Add simple panel mode for the ARM RTSMv8
2018-10-18 13:56 ` Robin Murphy
@ 2018-10-18 14:18 ` Linus Walleij
0 siblings, 0 replies; 5+ messages in thread
From: Linus Walleij @ 2018-10-18 14:18 UTC (permalink / raw)
To: Robin Murphy, open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS
Cc: Lorenzo Pieralisi, Liviu Dudau, open list:DRM PANEL DRIVERS,
thierry.reding, Mali DP Maintainers, Sudeep Holla
On Thu, Oct 18, 2018 at 3:56 PM Robin Murphy <robin.murphy@arm.com> wrote:
> On 18/10/18 13:27, Linus Walleij wrote:
> > Having failed any attempts at a more generic solution,
> > I fall back to the very specific solution: define a simple
> > panel for the ARM RTSMv8 emulated platform.
>
> From the bits of the discussion that I've caught it does seem like this
> framebuffer-grovelling business might turn out to be fairly unique to
> RTSM/Fast Models, so I guess it's a reasonable compromise.
Yeah it's no big deal.
> + .compatible = "arm,rtsmv8-display",
>
> Nit: binding doc?
I was actually thinking of not documenting this binding.
The DT bindings discussion stalled with supporting virtual stuff and
we actually reached the conclusion in a totally different discussion
(about gpio-mockup.c) that there is a place for devices which have
compatible strings and use the infrastructure but does not have
documented bindings. Those devices would be virtual or simulation
thingies with no physical real-world counterpart.
I don't know for 100% whether I got that right so I'll loop in the
DT maintainers for a proper statement.
> Nit: "arm,rtsm-display" would probably be a more accurate choice, since
> the implementation dates back to long before v8 of anything relevant ;)
Works for me :) I'll spin a v2 with that changed.
Yours,
Linus Walleij
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2018-10-18 14:18 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-18 12:27 [PATCH] drm/panel: Add simple panel mode for the ARM RTSMv8 Linus Walleij
2018-10-18 12:44 ` Liviu Dudau
2018-10-18 12:54 ` Linus Walleij
2018-10-18 13:56 ` Robin Murphy
2018-10-18 14:18 ` Linus Walleij
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).