Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp5701241rwd; Wed, 24 May 2023 05:47:39 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4cSuKezYOz/0+3nklQSqgSM0oSm76xerFXEtOjP3kyrrFItnbweUQDxfVx+IUBAZj53qp0 X-Received: by 2002:a05:6a20:918b:b0:104:e240:c365 with SMTP id v11-20020a056a20918b00b00104e240c365mr19047112pzd.44.1684932459697; Wed, 24 May 2023 05:47:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1684932459; cv=none; d=google.com; s=arc-20160816; b=xVVcGPYiu51oBIDkZ3LRUVXs+AAFXc2PoLU0l7AnSwewIuorbg0gIRlHNo0jIbY3zi PypLvmDHmL4jddPXL8R1TvU2IxUUL7ErNbyE/USKnbtE2zSvWD5g8CGasgAiG0EFlFgg bY508oX4SSJEYT7FKdW2zt0J3tH5Uhg0PEW1IdR92n+TEHBtpeH/cvWM4MKCDzQWB5Zl wxQXztW3VWD/z0x71NpK/z1PJn9BXlokI42R8Zb/K8lWK6Sf8Z/fqFaP0cCBBijpf0iW nySIMsgKDfOIDyN1mqWvLVxN6iMJ01AwcdHUZkCzOpSqUaItxfFUk6gBAu+COBSXT4ep NSNg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=9Y7U1F+lkIXakyMVhtQaEDACerOXpKvYPEOEDGHjikc=; b=1Fsj7aLyotEBDKPJTpJgMXeRLNDHips02iMOJf6Yqagg4DJ6TKUKG32knPVI4FFnZy MrT1HT+WnvGVXip8sLADjSGhk1jf9WbXE0FFilBCpD2o9b9AFuAKap79ZBo8rwbdMY17 d5mWLs56Rjgaob2qB+Silxa+9QeYG8PqGJDAZEa1g9TWfdj4EjaKID+KdAQfw9PlWNVE eS+vaDZTk1RysSZA8e3s5gq6dxblFXyEBAvASGCO9j4FnT6uDE46yr2Ia8ecdQt2jyJN zcybikQ65Os821fAHh42JtkzVczoj04kZXErviXGMOSXIOp8MwLeqnAP3opusst3tvSI WDxw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id m123-20020a625881000000b0063b652ff9cdsi8090604pfb.404.2023.05.24.05.47.27; Wed, 24 May 2023 05:47:39 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232939AbjEXMce (ORCPT + 99 others); Wed, 24 May 2023 08:32:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51964 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231205AbjEXMcd (ORCPT ); Wed, 24 May 2023 08:32:33 -0400 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B3E26189 for ; Wed, 24 May 2023 05:32:31 -0700 (PDT) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1q1nfE-0006vq-2r; Wed, 24 May 2023 14:32:24 +0200 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1q1nfC-002TzA-SI; Wed, 24 May 2023 14:32:22 +0200 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1q1nfB-00APZs-MT; Wed, 24 May 2023 14:32:21 +0200 From: Oleksij Rempel To: "David S. Miller" , Andrew Lunn , Eric Dumazet , Florian Fainelli , Jakub Kicinski , Paolo Abeni , Vladimir Oltean , Woojung Huh , Arun Ramadoss Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, UNGLinuxDriver@microchip.com, "Russell King (Oracle)" Subject: [PATCH net-next v1 1/5] net: dsa: microchip: improving error handling for 8-bit register RMW operations Date: Wed, 24 May 2023 14:32:16 +0200 Message-Id: <20230524123220.2481565-2-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230524123220.2481565-1-o.rempel@pengutronix.de> References: <20230524123220.2481565-1-o.rempel@pengutronix.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch refines the error handling mechanism for 8-bit register read-modify-write operations. In case of a failure, it now logs an error message detailing the problematic offset. This enhancement aids in debugging by providing more precise information when these operations encounter issues. Furthermore, the ksz_prmw8() function has been updated to return error values rather than void, enabling calling functions to appropriately respond to errors. Signed-off-by: Oleksij Rempel --- drivers/net/dsa/microchip/ksz_common.h | 28 ++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/drivers/net/dsa/microchip/ksz_common.h b/drivers/net/dsa/microchip/ksz_common.h index 8abecaf6089e..b86f1e27a0c3 100644 --- a/drivers/net/dsa/microchip/ksz_common.h +++ b/drivers/net/dsa/microchip/ksz_common.h @@ -508,7 +508,14 @@ static inline int ksz_write64(struct ksz_device *dev, u32 reg, u64 value) static inline int ksz_rmw8(struct ksz_device *dev, int offset, u8 mask, u8 val) { - return regmap_update_bits(dev->regmap[0], offset, mask, val); + int ret; + + ret = regmap_update_bits(dev->regmap[0], offset, mask, val); + if (ret) + dev_err(dev->dev, "can't rmw 8bit reg 0x%x: %pe\n", offset, + ERR_PTR(ret)); + + return ret; } static inline int ksz_pread8(struct ksz_device *dev, int port, int offset, @@ -549,12 +556,21 @@ static inline int ksz_pwrite32(struct ksz_device *dev, int port, int offset, data); } -static inline void ksz_prmw8(struct ksz_device *dev, int port, int offset, - u8 mask, u8 val) +static inline int ksz_prmw8(struct ksz_device *dev, int port, int offset, + u8 mask, u8 val) { - regmap_update_bits(dev->regmap[0], - dev->dev_ops->get_port_addr(port, offset), - mask, val); + int ret; + + ret = regmap_update_bits(dev->regmap[0], + dev->dev_ops->get_port_addr(port, offset), + mask, val); + if (ret) + dev_err(dev->dev, "can't rmw 8bit reg 0x%x: %pe\n", + dev->dev_ops->get_port_addr(port, offset), + ERR_PTR(ret)); + + return ret; + } static inline void ksz_regmap_lock(void *__mtx) -- 2.39.2