From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4850DC2BBCD for ; Tue, 15 Dec 2020 11:25:09 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id DEF0222258 for ; Tue, 15 Dec 2020 11:25:08 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DEF0222258 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=raspberrypi.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=/zzOzyK/WAejNgMMGTUWkmswwNaZmoTfZj9+nfateto=; b=LZ54RcwAXBSkS+1I1QJJbOhTu uwC4yBce8bXt79MZg6tKdvGaiyiKaGcQsrMJJIvZl54oYFCUGQ6aU+8qWR0TSYcyDWf00WTu0VNaz WDfQogZtiC/o1R2wHGdb1P+CSxqgZAGUQeMYosaapsZgIn6Tso8uFZuT22JnzJzlFr3sPnHiYXEER 2yUGTXbr/qANeVo/fBtromuFRFolBO33awT8yEU0nUjSeMlBY85O2WG25LAmbf/1SfVJXE1wwVl+F jbmZPY1RmX3qfSWci/QJndRH5FGC2FKfrLDDDw1KpSMzOq2nZqXv1abq7+5TOWNtd+Q+e7BmMiVoJ 3lAbcwfcA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kp8Qg-0006QV-OA; Tue, 15 Dec 2020 11:23:42 +0000 Received: from mail-wr1-x441.google.com ([2a00:1450:4864:20::441]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kp8Qd-0006Pp-7q for linux-arm-kernel@lists.infradead.org; Tue, 15 Dec 2020 11:23:40 +0000 Received: by mail-wr1-x441.google.com with SMTP id q18so11953938wrn.1 for ; Tue, 15 Dec 2020 03:23:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=raspberrypi.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=EfMSQatGMWNZ2UIzROdV1pX/rfI9pwbGhSWYVlJrJZE=; b=eXE+Lb4dOZbQV4Mve43qbM4rizFy7cQaqgbo9Sd7txHpXvnvKlsSwuS31p4dUt3g8l TY3A5NbK0k+xkwNjyzP36ek+RmXOTppJsTgpEBkdidDJ4Y/gC6k8qL5F3T5ck+3kti35 tGgnqHmmOMCTtdJV8eSX4EwlxPBd9yK7CNhn+abP3TuwP0EhoRP3IKB7Vt/Hbof/elpP WiF+a0xQrLncak0A9c5ijvEEeeNYVGUsT9Sa7lrLjSrfaI/adqRARKGxBLa5YZqG7l+M X5fp0UKriviDiWVmxgGunA/ylIAXMF59Ahka6iyGuuRHzednnNENC+Eb5oHwKMQIXFgF /zRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=EfMSQatGMWNZ2UIzROdV1pX/rfI9pwbGhSWYVlJrJZE=; b=erz64+W8gX6konIhDojV7/E0HdtpzjIEajIJnJyxG8LGdS0UA+zNvV4UzGbTSpHbqI 1voaduye0O5V9aKZ5EEc5wO+TkBnL4SfxyYsuaIZsH+XN4B9iQZeTR1We008orgHJnCC +ZiKUhCIS3cFfzfc+9tLrjX9n4u7zBY6UFi7mxMZPrBsP6/qB/GGLDHrJtQjMJflrj6d akOCOHvzQ7FoFM1PWi1qB7tX7T2ElblZGYlYPu73ScDjdr6/Rim9Y8SA2SJfX5vAbei0 uhxa57yylitnp2itchGRgp6GKYhmGzZbtLE4rvrGMUb2S+SufYaBs4kseaNfjDWqouct ITog== X-Gm-Message-State: AOAM533ptL2U8TKh95M+vY8CGRP7Hk0s3funR9L9epJeDxtgajt7QfBt DsOTt90TA+ISgjmRC36x9kY8l6wxWU1stCwnXy0n9w== X-Google-Smtp-Source: ABdhPJx+sM7fMbriohJGobmth2ydPm3qvpHoTFwjRws9SUq0A20IN0zEsSlLodomgkvY6en9cyG7kd2SKzCFtcfG9e8= X-Received: by 2002:adf:f7d2:: with SMTP id a18mr11821446wrq.47.1608031418169; Tue, 15 Dec 2020 03:23:38 -0800 (PST) MIME-Version: 1.0 References: <20201210134648.272857-1-maxime@cerno.tech> <20201210134648.272857-4-maxime@cerno.tech> In-Reply-To: <20201210134648.272857-4-maxime@cerno.tech> From: Dave Stevenson Date: Tue, 15 Dec 2020 11:23:22 +0000 Message-ID: Subject: Re: [PATCH 03/15] drm/vc4: hdmi: Fix register offset with longer CEC messages To: Maxime Ripard X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201215_062339_429919_C779B0B6 X-CRM114-Status: GOOD ( 24.67 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jason Cooper , David Airlie , Marc Zyngier , Maarten Lankhorst , LKML , DRI Development , Dom Cobley , Eric Anholt , bcm-kernel-feedback-list@broadcom.com, linux-rpi-kernel@lists.infradead.org, Thomas Zimmermann , Hans Verkuil , Daniel Vetter , Thomas Gleixner , Mauro Carvalho Chehab , linux-arm-kernel@lists.infradead.org, Linux Media Mailing List Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi Dom & Maxime On Thu, 10 Dec 2020 at 13:46, Maxime Ripard wrote: > > From: Dom Cobley > > The code prior to 311e305fdb4e ("drm/vc4: hdmi: Implement a register > layout abstraction") was relying on the fact that the register offset > was incremented by 4 for each readl call. That worked since the register > width is 4 bytes. > > However, since that commit the HDMI_READ macro is now taking an enum, > and the offset doesn't increment by 4 but 1 now. Divide the index by 4 > to fix this. > > Fixes: 311e305fdb4e ("drm/vc4: hdmi: Implement a register layout abstraction") > Signed-off-by: Dom Cobley > Signed-off-by: Maxime Ripard Reviewed-by: Dave Stevenson > --- > drivers/gpu/drm/vc4/vc4_hdmi.c | 17 +++++++++++++++-- > 1 file changed, 15 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c > index 3df1747dd917..28b78ea885ea 100644 > --- a/drivers/gpu/drm/vc4/vc4_hdmi.c > +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c > @@ -1434,13 +1434,20 @@ static irqreturn_t vc4_cec_irq_handler_thread(int irq, void *priv) > > static void vc4_cec_read_msg(struct vc4_hdmi *vc4_hdmi, u32 cntrl1) > { > + struct drm_device *dev = vc4_hdmi->connector.dev; > struct cec_msg *msg = &vc4_hdmi->cec_rx_msg; > unsigned int i; > > msg->len = 1 + ((cntrl1 & VC4_HDMI_CEC_REC_WRD_CNT_MASK) >> > VC4_HDMI_CEC_REC_WRD_CNT_SHIFT); > + > + if (msg->len > 16) { > + drm_err(dev, "Attempting to read too much data (%d)\n", msg->len); > + return; > + } > + > for (i = 0; i < msg->len; i += 4) { > - u32 val = HDMI_READ(HDMI_CEC_RX_DATA_1 + i); > + u32 val = HDMI_READ(HDMI_CEC_RX_DATA_1 + (i >> 2)); > > msg->msg[i] = val & 0xff; > msg->msg[i + 1] = (val >> 8) & 0xff; > @@ -1533,11 +1540,17 @@ static int vc4_hdmi_cec_adap_transmit(struct cec_adapter *adap, u8 attempts, > u32 signal_free_time, struct cec_msg *msg) > { > struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap); > + struct drm_device *dev = vc4_hdmi->connector.dev; > u32 val; > unsigned int i; > > + if (msg->len > 16) { > + drm_err(dev, "Attempting to transmit too much data (%d)\n", msg->len); > + return -ENOMEM; > + } > + > for (i = 0; i < msg->len; i += 4) > - HDMI_WRITE(HDMI_CEC_TX_DATA_1 + i, > + HDMI_WRITE(HDMI_CEC_TX_DATA_1 + (i >> 2), > (msg->msg[i]) | > (msg->msg[i + 1] << 8) | > (msg->msg[i + 2] << 16) | > -- > 2.28.0 > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel