lkml.org 
[lkml]   [2020]   [Feb]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.5 024/542] drm: rcar-du: Recognize "renesas,vsps" in addition to "vsps"
    Date
    From: Geert Uytterhoeven <geert+renesas@glider.be>

    [ Upstream commit 7b627ce80fbd05885b27f711a5f9820f2b40749a ]

    The Renesas-specific "vsps" property lacks a vendor prefix.
    Add a "renesas," prefix to comply with DT best practises.
    Retain backward compatibility with old DTBs by falling back to "vsps"
    when needed.

    Fixes: 6d62ef3ac30be756 ("drm: rcar-du: Expose the VSP1 compositor through KMS planes")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/gpu/drm/rcar-du/rcar_du_kms.c | 17 ++++++++++++-----
    1 file changed, 12 insertions(+), 5 deletions(-)

    diff --git a/drivers/gpu/drm/rcar-du/rcar_du_kms.c b/drivers/gpu/drm/rcar-du/rcar_du_kms.c
    index 0d59f390de19a..662d8075f4116 100644
    --- a/drivers/gpu/drm/rcar-du/rcar_du_kms.c
    +++ b/drivers/gpu/drm/rcar-du/rcar_du_kms.c
    @@ -542,6 +542,7 @@ static int rcar_du_properties_init(struct rcar_du_device *rcdu)
    static int rcar_du_vsps_init(struct rcar_du_device *rcdu)
    {
    const struct device_node *np = rcdu->dev->of_node;
    + const char *vsps_prop_name = "renesas,vsps";
    struct of_phandle_args args;
    struct {
    struct device_node *np;
    @@ -557,15 +558,21 @@ static int rcar_du_vsps_init(struct rcar_du_device *rcdu)
    * entry contains a pointer to the VSP DT node and a bitmask of the
    * connected DU CRTCs.
    */
    - cells = of_property_count_u32_elems(np, "vsps") / rcdu->num_crtcs - 1;
    + ret = of_property_count_u32_elems(np, vsps_prop_name);
    + if (ret < 0) {
    + /* Backward compatibility with old DTBs. */
    + vsps_prop_name = "vsps";
    + ret = of_property_count_u32_elems(np, vsps_prop_name);
    + }
    + cells = ret / rcdu->num_crtcs - 1;
    if (cells > 1)
    return -EINVAL;

    for (i = 0; i < rcdu->num_crtcs; ++i) {
    unsigned int j;

    - ret = of_parse_phandle_with_fixed_args(np, "vsps", cells, i,
    - &args);
    + ret = of_parse_phandle_with_fixed_args(np, vsps_prop_name,
    + cells, i, &args);
    if (ret < 0)
    goto error;

    @@ -587,8 +594,8 @@ static int rcar_du_vsps_init(struct rcar_du_device *rcdu)

    /*
    * Store the VSP pointer and pipe index in the CRTC. If the
    - * second cell of the 'vsps' specifier isn't present, default
    - * to 0 to remain compatible with older DT bindings.
    + * second cell of the 'renesas,vsps' specifier isn't present,
    + * default to 0 to remain compatible with older DT bindings.
    */
    rcdu->crtcs[i].vsp = &rcdu->vsps[j];
    rcdu->crtcs[i].vsp_pipe = cells >= 1 ? args.args[0] : 0;
    --
    2.20.1
    \
     
     \ /
      Last update: 2020-02-14 19:23    [W:8.692 / U:2.776 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site