From: hs@denx.de (Heiko Schocher)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2] arm, imx6, dts: add DT for aristainetos2 board
Date: Tue, 19 May 2015 15:44:26 +0200 [thread overview]
Message-ID: <555B3E3A.8000605@denx.de> (raw)
In-Reply-To: <1432025280.3182.6.camel@pengutronix.de>
Hello Philipp,
Am 19.05.2015 10:48, schrieb Philipp Zabel:
> Hi Heiko, Shawn,
>
> Am Dienstag, den 19.05.2015, 09:09 +0200 schrieb Heiko Schocher:
> [...]
>>> What is this? I failed to find it in Documentation/devicetree/bindings/
>>
>> Ah, this is not documentated, see commit:
>>
>> commit 628f435be4359e6ae8ecfdda9b492053be76a057
>> Author: Philipp Zabel <p.zabel@pengutronix.de>
>> Date: Tue Feb 25 11:55:04 2014 +0100
>>
>> imx-drm: parallel-display: Add drm_panel support
>>
>> added Philipp to cc ...
>
> This was meant to be a temporary solution to connect a drm_panel to the
> parallel-display when the of-graph bindings were not yet available.
> I'd very much prefer to switch to the common of-graph bindings similarly
> to the LDB driver instead. Could you check if this would work for you:
Yes, your patch works for me (with appropriate changes in the dts file)
You can add my
Tested-by: Heiko Schocher <hs@denx.de>
for this patch, thanks!
@Shawn: How do I proceed now with my patch for the aristainetos2 board
support? Should I base my v3 of the aristainetos2 on this patch,
or should I wait with this change, until the patch from Philipp
is accepted and post a follow up?
bye,
Heiko
>
> -----8<-----
> From: Philipp Zabel <p.zabel@pengutronix.de>
> Subject: [PATCH] drm/imx: parallel-display: fix drm_panel support
>
> 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 OF graph bindings, just as the LDB driver:
>
> 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 <p.zabel@pengutronix.de>
> ---
> .../devicetree/bindings/drm/imx/fsl-imx-drm.txt | 26 ++++++++++++++++++++--
> drivers/gpu/drm/imx/parallel-display.c | 21 ++++++++++++-----
> 2 files changed, 39 insertions(+), 8 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/drm/imx/fsl-imx-drm.txt b/Documentation/devicetree/bindings/drm/imx/fsl-imx-drm.txt
> index e75f0e5..971c3ee 100644
> --- a/Documentation/devicetree/bindings/drm/imx/fsl-imx-drm.txt
> +++ b/Documentation/devicetree/bindings/drm/imx/fsl-imx-drm.txt
> @@ -65,8 +65,10 @@ Optional properties:
> - edid: verbatim EDID data block describing attached display.
> - ddc: phandle describing the i2c bus handling the display data
> channel
> -- port: A port node with endpoint definitions as defined in
> +- port@[0-1]: Port nodes with endpoint definitions as defined in
> Documentation/devicetree/bindings/media/video-interfaces.txt.
> + Port 0 is the input port connected to the IPU display interface,
> + port 1 is the output port connected to a panel.
>
> example:
>
> @@ -75,9 +77,29 @@ display at di0 {
> edid = [edid-data];
> interface-pix-fmt = "rgb24";
>
> - port {
> + port at 0 {
> + reg = <0>;
> +
> display_in: endpoint {
> remote-endpoint = <&ipu_di0_disp0>;
> };
> };
> +
> + port at 1 {
> + reg = <1>;
> +
> + display_out: endpoint {
> + remote-endpoint = <&panel_in>;
> + };
> + };
> +};
> +
> +panel {
> + ...
> +
> + port {
> + panel_in: endpoint {
> + remote-endpoint = <&display_out>;
> + };
> + };
> };
> diff --git a/drivers/gpu/drm/imx/parallel-display.c b/drivers/gpu/drm/imx/parallel-display.c
> index 74a9ce4..b4deb9c 100644
> --- a/drivers/gpu/drm/imx/parallel-display.c
> +++ b/drivers/gpu/drm/imx/parallel-display.c
> @@ -21,6 +21,7 @@
> #include <drm/drm_panel.h>
> #include <linux/videodev2.h>
> #include <video/of_display_timing.h>
> +#include <linux/of_graph.h>
>
> #include "imx-drm.h"
>
> @@ -208,7 +209,7 @@ static int imx_pd_bind(struct device *dev, struct device *master, void *data)
> {
> struct drm_device *drm = data;
> struct device_node *np = dev->of_node;
> - struct device_node *panel_node;
> + struct device_node *port;
> const u8 *edidp;
> struct imx_parallel_display *imxpd;
> int ret;
> @@ -234,11 +235,19 @@ static int imx_pd_bind(struct device *dev, struct device *master, void *data)
> imxpd->bus_format = MEDIA_BUS_FMT_RGB666_1X24_CPADHI;
> }
>
> - panel_node = of_parse_phandle(np, "fsl,panel", 0);
> - if (panel_node) {
> - imxpd->panel = of_drm_find_panel(panel_node);
> - if (!imxpd->panel)
> - return -EPROBE_DEFER;
> + /* port at 1 is the output port */
> + port = of_graph_get_port_by_id(np, 1);
> + if (port) {
> + struct device_node *endpoint, *remote;
> +
> + endpoint = of_get_child_by_name(port, "endpoint");
> + if (endpoint) {
> + remote = of_graph_get_remote_port_parent(endpoint);
> + if (remote)
> + imxpd->panel = of_drm_find_panel(remote);
> + if (!imxpd->panel)
> + return -EPROBE_DEFER;
> + }
> }
>
> imxpd->dev = dev;
>
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
WARNING: multiple messages have this Message-ID (diff)
From: Heiko Schocher <hs@denx.de>
To: Philipp Zabel <p.zabel@pengutronix.de>
Cc: Shawn Guo <shawnguo@kernel.org>,
linux-kernel@vger.kernel.org, Shawn Guo <shawn.guo@linaro.org>,
Sascha Hauer <kernel@pengutronix.de>,
linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org
Subject: Re: [PATCH v2] arm, imx6, dts: add DT for aristainetos2 board
Date: Tue, 19 May 2015 15:44:26 +0200 [thread overview]
Message-ID: <555B3E3A.8000605@denx.de> (raw)
In-Reply-To: <1432025280.3182.6.camel@pengutronix.de>
Hello Philipp,
Am 19.05.2015 10:48, schrieb Philipp Zabel:
> Hi Heiko, Shawn,
>
> Am Dienstag, den 19.05.2015, 09:09 +0200 schrieb Heiko Schocher:
> [...]
>>> What is this? I failed to find it in Documentation/devicetree/bindings/
>>
>> Ah, this is not documentated, see commit:
>>
>> commit 628f435be4359e6ae8ecfdda9b492053be76a057
>> Author: Philipp Zabel <p.zabel@pengutronix.de>
>> Date: Tue Feb 25 11:55:04 2014 +0100
>>
>> imx-drm: parallel-display: Add drm_panel support
>>
>> added Philipp to cc ...
>
> This was meant to be a temporary solution to connect a drm_panel to the
> parallel-display when the of-graph bindings were not yet available.
> I'd very much prefer to switch to the common of-graph bindings similarly
> to the LDB driver instead. Could you check if this would work for you:
Yes, your patch works for me (with appropriate changes in the dts file)
You can add my
Tested-by: Heiko Schocher <hs@denx.de>
for this patch, thanks!
@Shawn: How do I proceed now with my patch for the aristainetos2 board
support? Should I base my v3 of the aristainetos2 on this patch,
or should I wait with this change, until the patch from Philipp
is accepted and post a follow up?
bye,
Heiko
>
> -----8<-----
> From: Philipp Zabel <p.zabel@pengutronix.de>
> Subject: [PATCH] drm/imx: parallel-display: fix drm_panel support
>
> 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 OF graph bindings, just as the LDB driver:
>
> parallel-display {
> compatible = "fsl,imx-parallel-display";
> ...
>
> port@1 {
> reg = <1>;
>
> parallel_out: endpoint {
> remote_endpoint = <&panel_in>;
> };
> };
> };
>
> panel {
> ...
>
> port {
> panel_in: endpoint {
> remote-endpoint = <¶llel_out>;
> };
> };
> };
>
> Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
> ---
> .../devicetree/bindings/drm/imx/fsl-imx-drm.txt | 26 ++++++++++++++++++++--
> drivers/gpu/drm/imx/parallel-display.c | 21 ++++++++++++-----
> 2 files changed, 39 insertions(+), 8 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/drm/imx/fsl-imx-drm.txt b/Documentation/devicetree/bindings/drm/imx/fsl-imx-drm.txt
> index e75f0e5..971c3ee 100644
> --- a/Documentation/devicetree/bindings/drm/imx/fsl-imx-drm.txt
> +++ b/Documentation/devicetree/bindings/drm/imx/fsl-imx-drm.txt
> @@ -65,8 +65,10 @@ Optional properties:
> - edid: verbatim EDID data block describing attached display.
> - ddc: phandle describing the i2c bus handling the display data
> channel
> -- port: A port node with endpoint definitions as defined in
> +- port@[0-1]: Port nodes with endpoint definitions as defined in
> Documentation/devicetree/bindings/media/video-interfaces.txt.
> + Port 0 is the input port connected to the IPU display interface,
> + port 1 is the output port connected to a panel.
>
> example:
>
> @@ -75,9 +77,29 @@ display@di0 {
> edid = [edid-data];
> interface-pix-fmt = "rgb24";
>
> - port {
> + port@0 {
> + reg = <0>;
> +
> display_in: endpoint {
> remote-endpoint = <&ipu_di0_disp0>;
> };
> };
> +
> + port@1 {
> + reg = <1>;
> +
> + display_out: endpoint {
> + remote-endpoint = <&panel_in>;
> + };
> + };
> +};
> +
> +panel {
> + ...
> +
> + port {
> + panel_in: endpoint {
> + remote-endpoint = <&display_out>;
> + };
> + };
> };
> diff --git a/drivers/gpu/drm/imx/parallel-display.c b/drivers/gpu/drm/imx/parallel-display.c
> index 74a9ce4..b4deb9c 100644
> --- a/drivers/gpu/drm/imx/parallel-display.c
> +++ b/drivers/gpu/drm/imx/parallel-display.c
> @@ -21,6 +21,7 @@
> #include <drm/drm_panel.h>
> #include <linux/videodev2.h>
> #include <video/of_display_timing.h>
> +#include <linux/of_graph.h>
>
> #include "imx-drm.h"
>
> @@ -208,7 +209,7 @@ static int imx_pd_bind(struct device *dev, struct device *master, void *data)
> {
> struct drm_device *drm = data;
> struct device_node *np = dev->of_node;
> - struct device_node *panel_node;
> + struct device_node *port;
> const u8 *edidp;
> struct imx_parallel_display *imxpd;
> int ret;
> @@ -234,11 +235,19 @@ static int imx_pd_bind(struct device *dev, struct device *master, void *data)
> imxpd->bus_format = MEDIA_BUS_FMT_RGB666_1X24_CPADHI;
> }
>
> - panel_node = of_parse_phandle(np, "fsl,panel", 0);
> - if (panel_node) {
> - imxpd->panel = of_drm_find_panel(panel_node);
> - if (!imxpd->panel)
> - return -EPROBE_DEFER;
> + /* port@1 is the output port */
> + port = of_graph_get_port_by_id(np, 1);
> + if (port) {
> + struct device_node *endpoint, *remote;
> +
> + endpoint = of_get_child_by_name(port, "endpoint");
> + if (endpoint) {
> + remote = of_graph_get_remote_port_parent(endpoint);
> + if (remote)
> + imxpd->panel = of_drm_find_panel(remote);
> + if (!imxpd->panel)
> + return -EPROBE_DEFER;
> + }
> }
>
> imxpd->dev = dev;
>
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
next prev parent reply other threads:[~2015-05-19 13:44 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-11 9:02 [PATCH v2] arm, imx6, dts: add DT for aristainetos2 board Heiko Schocher
2015-05-11 9:02 ` Heiko Schocher
2015-05-11 9:02 ` Heiko Schocher
2015-05-18 11:31 ` Shawn Guo
2015-05-18 11:31 ` Shawn Guo
2015-05-18 11:31 ` Shawn Guo
2015-05-19 7:09 ` Heiko Schocher
2015-05-19 7:09 ` Heiko Schocher
2015-05-19 7:43 ` Shawn Guo
2015-05-19 7:43 ` Shawn Guo
2015-05-19 8:48 ` Philipp Zabel
2015-05-19 8:48 ` Philipp Zabel
2015-05-19 13:44 ` Heiko Schocher [this message]
2015-05-19 13:44 ` Heiko Schocher
2015-05-19 14:33 ` Philipp Zabel
2015-05-19 14:33 ` Philipp Zabel
2015-05-20 5:14 ` Heiko Schocher
2015-05-20 5:14 ` Heiko Schocher
2015-05-20 5:14 ` Heiko Schocher
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=555B3E3A.8000605@denx.de \
--to=hs@denx.de \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.