From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on sa.local.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,RP_MATCHES_RCVD autolearn=ham autolearn_force=no version=3.4.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=basealt.ru; s=dkim; t=1772188377; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=WHXKFNb2kDTDaKFNp8/o6C5CCY0kBuF3zf/K9q3Q9Uw=; b=gLrNgRJnjFqpx9K9vRwJWpYgAVRW5gWhSMhB9FRF7qVftG087LX+uCJYINOU/O79bV8dLm 8XKTZQI7wqB3+zDLbsZkLWT8yc70IRcaalS3N3g55Jg7A73hwgdQEU1ESpg+0c8XczcsIJ RWg+bssZVMRRSY7Kq7/s29dbzJYtXU2xmIbtUQMudtzrFkN4vbidgnnQbSJJi7TBXIDGVu eAGNGInXNkF22lnQfCHj2zDSWsH2Tpv1jDZdDhvhUUJaBeeI6QsAo6hQunJtBARJG8kUHK VRFtMvQO0gN3z19JlhkjwPqZ+EA8Gpc+mXXDJtFp76qwGNmNCLFFRFJxJ/ZahQ== From: Daniil Gnusarev To: gnusarevda@basealt.ru, devel-kernel@lists.altlinux.org Date: Fri, 27 Feb 2026 14:32:21 +0400 Message-ID: <20260227103236.785736-21-gnusarevda@basealt.ru> X-Mailer: git-send-email 2.42.2 In-Reply-To: <20260227103236.785736-1-gnusarevda@basealt.ru> References: <20260227103236.785736-1-gnusarevda@basealt.ru> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [d-kernel] [PATCH 20/35] sound: baikal-i2s: paper over RX overrun warnings on Baikal-M X-BeenThere: devel-kernel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux kernel packages development List-Id: ALT Linux kernel packages development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Feb 2026 10:33:12 -0000 Archived-At: List-Archive: List-Post: i2s_irq_handler: avoid flooding system with RX overrun warnings Co-developed-by: Alexey Sheplyakov Signed-off-by: Daniil Gnusarev Do-not-upstream: this is a feature of Baikal-M --- sound/soc/baikal/baikal-i2s.c | 9 +++++++-- sound/soc/baikal/local.h | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/sound/soc/baikal/baikal-i2s.c b/sound/soc/baikal/baikal-i2s.c index db10cff1215952..622c0353028136 100644 --- a/sound/soc/baikal/baikal-i2s.c +++ b/sound/soc/baikal/baikal-i2s.c @@ -98,6 +98,7 @@ static inline void i2s_enable_irqs(struct dw_i2s_dev *dev, u32 stream, static irqreturn_t i2s_irq_handler(int irq, void *dev_id) { + unsigned int rxor_count; struct dw_i2s_dev *dev = dev_id; bool irq_valid = false; u32 isr[4]; @@ -130,13 +131,17 @@ static irqreturn_t i2s_irq_handler(int irq, void *dev_id) /* Error Handling: TX */ if (isr[i] & ISR_TXFO) { - dev_err(dev->dev, "TX overrun (ch_id=%d)\n", i); + dev_err_ratelimited(dev->dev, "TX overrun (ch_id=%d)\n", i); irq_valid = true; } /* Error Handling: RX */ if (isr[i] & ISR_RXFO) { - dev_err(dev->dev, "RX overrun (ch_id=%d)\n", i); + rxor_count = READ_ONCE(dev->rx_overrun_count); + if (!(rxor_count & 0x3ff)) + dev_err_ratelimited(dev->dev, "RX overrun (ch_id=%d)\n", i); + rxor_count++; + WRITE_ONCE(dev->rx_overrun_count, rxor_count); irq_valid = true; } } diff --git a/sound/soc/baikal/local.h b/sound/soc/baikal/local.h index b1754e0f3bd8d8..d1cd07e540b457 100644 --- a/sound/soc/baikal/local.h +++ b/sound/soc/baikal/local.h @@ -119,6 +119,7 @@ struct dw_i2s_dev { bool *period_elapsed); unsigned int tx_ptr; unsigned int rx_ptr; + unsigned int rx_overrun_count; }; #if IS_ENABLED(CONFIG_SND_BAIKAL_PIO_PCM) -- 2.42.2