Re: [PATCH 3/5] drm: convert drivers to use of_graph_get_remote_node
From: Neil Armstrong
Date: Mon Feb 06 2017 - 05:17:10 EST
On 02/04/2017 04:36 AM, Rob Herring wrote:
> Convert drivers to use the new of_graph_get_remote_node() helper
> instead of parsing the endpoint node and then getting the remote device
> node. Now drivers can just specify the device node and which
> port/endpoint and get back the connected remote device node. The details
> of the graph binding are nicely abstracted into the core OF graph code.
>
> This changes some error messages to debug messages (in the graph core).
> Graph connections are often "no connects" depending on the particular
> board, so we want to avoid spurious messages. Plus the kernel is not a
> DT validator.
>
> Signed-off-by: Rob Herring <robh@xxxxxxxxxx>
> ---
> drivers/gpu/drm/arm/hdlcd_drv.c | 22 ++-------
> drivers/gpu/drm/arm/malidp_drv.c | 29 ++---------
> drivers/gpu/drm/bridge/adv7511/adv7533.c | 12 +----
> drivers/gpu/drm/bridge/dumb-vga-dac.c | 15 ++----
> drivers/gpu/drm/bridge/ti-tfp410.c | 15 ++----
> drivers/gpu/drm/exynos/exynos_drm_dpi.c | 16 +-----
> drivers/gpu/drm/exynos/exynos_drm_dsi.c | 13 ++---
> drivers/gpu/drm/exynos/exynos_drm_mic.c | 27 +---------
> drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c | 26 ++--------
> drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 30 +----------
> drivers/gpu/drm/mediatek/mtk_dpi.c | 12 ++---
> drivers/gpu/drm/mediatek/mtk_hdmi.c | 26 ++--------
> drivers/gpu/drm/meson/meson_drv.c | 12 ++---
> drivers/gpu/drm/meson/meson_venc_cvbs.c | 19 ++-----
> drivers/gpu/drm/msm/dsi/dsi_host.c | 3 +-
> drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c | 28 +----------
> drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 18 +++----
> drivers/gpu/drm/tilcdc/tilcdc_crtc.c | 11 +----
> drivers/gpu/drm/tilcdc/tilcdc_external.c | 66 +++----------------------
> drivers/gpu/drm/vc4/vc4_dpi.c | 15 ++----
> 20 files changed, 64 insertions(+), 351 deletions(-)
>
[...]
> diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
> index ff1f6019b97b..37cb9c755ed7 100644
> --- a/drivers/gpu/drm/meson/meson_drv.c
> +++ b/drivers/gpu/drm/meson/meson_drv.c
> @@ -163,14 +163,14 @@ static struct drm_driver meson_driver = {
>
> static bool meson_vpu_has_available_connectors(struct device *dev)
> {
> - struct device_node *ep, *remote;
> + struct device_node *remote;
> + int i;
>
> - /* Parses each endpoint and check if remote exists */
> - for_each_endpoint_of_node(dev->of_node, ep) {
> - /* If the endpoint node exists, consider it enabled */
> - remote = of_graph_get_remote_port(ep);
> - if (remote)
> + for_each_of_graph_remote_node(dev->of_node, remote, i, 2) {
> + if (remote) {
> + of_node_put(remote);
> return true;
> + }
> }
>
> return false;
> diff --git a/drivers/gpu/drm/meson/meson_venc_cvbs.c b/drivers/gpu/drm/meson/meson_venc_cvbs.c
> index a2bcc70a03ef..8566de2edb62 100644
> --- a/drivers/gpu/drm/meson/meson_venc_cvbs.c
> +++ b/drivers/gpu/drm/meson/meson_venc_cvbs.c
> @@ -217,25 +217,14 @@ static const struct drm_encoder_helper_funcs
>
> static bool meson_venc_cvbs_connector_is_available(struct meson_drm *priv)
> {
> - struct device_node *ep, *remote;
> + struct device_node *remote;
>
> - /* CVBS VDAC output is on the first port, first endpoint */
> - ep = of_graph_get_endpoint_by_regs(priv->dev->of_node, 0, 0);
> - if (!ep)
> + remote = of_graph_get_remote_node(priv->dev->of_node, 0, 0);
> + if (!remote)
> return false;
>
> -
> - /* If the endpoint node exists, consider it enabled */
> - remote = of_graph_get_remote_port(ep);
> - if (remote) {
> - of_node_put(ep);
> - return true;
> - }
> -
> - of_node_put(ep);
> of_node_put(remote);
> -
> - return false;
> + return true;
> }
>
> int meson_venc_cvbs_create(struct meson_drm *priv)
[...]
Hi Rob,
For the meson changes :
Acked-by: Neil Armstrong <narmstrong@xxxxxxxxxxxx>
Thanks !
Neil