drm/dp/mst: fix in RAD element access
authorMykola Lysenko <Mykola.Lysenko@amd.com>
Fri, 25 Dec 2015 08:14:48 +0000 (16:14 +0800)
committerSasha Levin <sasha.levin@oracle.com>
Mon, 1 Feb 2016 19:54:27 +0000 (14:54 -0500)
[ Upstream commit 7a11a334aa6af4c65c6a0d81b60c97fc18673532 ]

This is needed to receive correct port
number from RAD, so MSTB could be found

Acked-by: Dave Airlie <airlied@gmail.com>
Signed-off-by: Mykola Lysenko <Mykola.Lysenko@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
drivers/gpu/drm/drm_dp_mst_topology.c

index c7c1e1f..2d3bad4 100644 (file)
@@ -1034,7 +1034,7 @@ static void build_mst_prop_path(struct drm_dp_mst_port *port,
        snprintf(proppath, proppath_size, "mst:%d", mstb->mgr->conn_base_id);
        for (i = 0; i < (mstb->lct - 1); i++) {
                int shift = (i % 2) ? 0 : 4;
-               int port_num = mstb->rad[i / 2] >> shift;
+               int port_num = (mstb->rad[i / 2] >> shift) & 0xf;
                snprintf(temp, sizeof(temp), "-%d", port_num);
                strlcat(proppath, temp, proppath_size);
        }
@@ -1175,7 +1175,7 @@ static struct drm_dp_mst_branch *drm_dp_get_mst_branch_device(struct drm_dp_mst_
 
        for (i = 0; i < lct - 1; i++) {
                int shift = (i % 2) ? 0 : 4;
-               int port_num = rad[i / 2] >> shift;
+               int port_num = (rad[i / 2] >> shift) & 0xf;
 
                list_for_each_entry(port, &mstb->ports, next) {
                        if (port->port_num == port_num) {