From nobody Sun Sep 7 13:41:52 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 57999EB64DA for ; Tue, 18 Jul 2023 07:00:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231253AbjGRHAS (ORCPT ); Tue, 18 Jul 2023 03:00:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56674 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231132AbjGRHAO (ORCPT ); Tue, 18 Jul 2023 03:00:14 -0400 Received: from mta-64-228.siemens.flowmailer.net (mta-64-228.siemens.flowmailer.net [185.136.64.228]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5A1BC1B3 for ; Tue, 18 Jul 2023 00:00:13 -0700 (PDT) Received: by mta-64-228.siemens.flowmailer.net with ESMTPSA id 20230718070011902d68a3f5230ab2e4 for ; Tue, 18 Jul 2023 09:00:11 +0200 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; s=fm1; d=siemens.com; i=michael.haener@siemens.com; h=Date:From:Subject:To:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:Cc:References:In-Reply-To; bh=PD8Cxd3iso0BrKXzIfhGSHXoX5NHvZZ/NAIdVFvY1is=; b=NyFcNb5AdnTHf4Xa5Ttpy3Oiqe9zg5XKrAIUes29aSwCaeKUQESmjkTztDsir2MolSEfL4 H6vrq09M3qNDIbZ70j5WCukaifIUN/keDVQTDrZMkyTyMITZoiE4Hvd5aMm5u2o+5GqqEjON 4CRIF6ZXBtX2P+nOWGJ7r+KfiknIc=; From: "M. Haener" To: netdev@vger.kernel.org Cc: Michael Haener , linux-kernel@vger.kernel.org, Andrew Lunn , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Russell King , Alexander Sverdlin Subject: [PATCH v3 2/3] net: dsa: mv88e632x: Refactor serdes write Date: Tue, 18 Jul 2023 08:59:30 +0200 Message-ID: <20230718065937.10713-3-michael.haener@siemens.com> In-Reply-To: <20230718065937.10713-1-michael.haener@siemens.com> References: <20230718065937.10713-1-michael.haener@siemens.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Flowmailer-Platform: Siemens Feedback-ID: 519:519-664519:519-21489:flowmailer Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Michael Haener To avoid code duplication, the serdes write functions have been combined. Signed-off-by: Michael Haener --- Changelog: v3: rebased onto main branch v2: rebased onto Russell Kings series dsa/88e6xxx/phylink drivers/net/dsa/mv88e6xxx/chip.c | 4 ++++ drivers/net/dsa/mv88e6xxx/chip.h | 2 ++ drivers/net/dsa/mv88e6xxx/serdes.c | 6 +++--- drivers/net/dsa/mv88e6xxx/serdes.h | 11 +++++++++++ 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/c= hip.c index 81fa66568e25..7e8aaa1383c6 100644 --- a/drivers/net/dsa/mv88e6xxx/chip.c +++ b/drivers/net/dsa/mv88e6xxx/chip.c @@ -4379,6 +4379,7 @@ static const struct mv88e6xxx_ops mv88e6172_ops =3D { .stu_getnext =3D mv88e6352_g1_stu_getnext, .stu_loadpurge =3D mv88e6352_g1_stu_loadpurge, .serdes_read =3D mv88e6352_serdes_read, + .serdes_write =3D mv88e6352_serdes_write, .serdes_get_regs_len =3D mv88e6352_serdes_get_regs_len, .serdes_get_regs =3D mv88e6352_serdes_get_regs, .gpio_ops =3D &mv88e6352_gpio_ops, @@ -4480,6 +4481,7 @@ static const struct mv88e6xxx_ops mv88e6176_ops =3D { .stu_getnext =3D mv88e6352_g1_stu_getnext, .stu_loadpurge =3D mv88e6352_g1_stu_loadpurge, .serdes_read =3D mv88e6352_serdes_read, + .serdes_write =3D mv88e6352_serdes_write, .serdes_irq_mapping =3D mv88e6352_serdes_irq_mapping, .serdes_get_regs_len =3D mv88e6352_serdes_get_regs_len, .serdes_get_regs =3D mv88e6352_serdes_get_regs, @@ -4751,6 +4753,7 @@ static const struct mv88e6xxx_ops mv88e6240_ops =3D { .stu_getnext =3D mv88e6352_g1_stu_getnext, .stu_loadpurge =3D mv88e6352_g1_stu_loadpurge, .serdes_read =3D mv88e6352_serdes_read, + .serdes_write =3D mv88e6352_serdes_write, .serdes_irq_mapping =3D mv88e6352_serdes_irq_mapping, .serdes_get_regs_len =3D mv88e6352_serdes_get_regs_len, .serdes_get_regs =3D mv88e6352_serdes_get_regs, @@ -5164,6 +5167,7 @@ static const struct mv88e6xxx_ops mv88e6352_ops =3D { .stu_getnext =3D mv88e6352_g1_stu_getnext, .stu_loadpurge =3D mv88e6352_g1_stu_loadpurge, .serdes_read =3D mv88e6352_serdes_read, + .serdes_write =3D mv88e6352_serdes_write, .serdes_irq_mapping =3D mv88e6352_serdes_irq_mapping, .gpio_ops =3D &mv88e6352_gpio_ops, .avb_ops =3D &mv88e6352_avb_ops, diff --git a/drivers/net/dsa/mv88e6xxx/chip.h b/drivers/net/dsa/mv88e6xxx/c= hip.h index bbf1e7f6f343..7e9b6eb11216 100644 --- a/drivers/net/dsa/mv88e6xxx/chip.h +++ b/drivers/net/dsa/mv88e6xxx/chip.h @@ -595,6 +595,8 @@ struct mv88e6xxx_ops { =20 int (*serdes_read)(struct mv88e6xxx_chip *chip, int lane, int device, int reg, u16 *val); + int (*serdes_write)(struct mv88e6xxx_chip *chip, int lane, int reg, + u16 val); =20 /* SERDES interrupt handling */ unsigned int (*serdes_irq_mapping)(struct mv88e6xxx_chip *chip, diff --git a/drivers/net/dsa/mv88e6xxx/serdes.c b/drivers/net/dsa/mv88e6xxx= /serdes.c index 5696b94c9155..b988d47ecbdd 100644 --- a/drivers/net/dsa/mv88e6xxx/serdes.c +++ b/drivers/net/dsa/mv88e6xxx/serdes.c @@ -25,8 +25,8 @@ int mv88e6352_serdes_read(struct mv88e6xxx_chip *chip, in= t lane, reg, val); } =20 -static int mv88e6352_serdes_write(struct mv88e6xxx_chip *chip, int reg, - u16 val) +int mv88e6352_serdes_write(struct mv88e6xxx_chip *chip, int lane, int reg, + u16 val) { return mv88e6xxx_phy_page_write(chip, MV88E6352_ADDR_SERDES, MV88E6352_SERDES_PAGE_FIBER, @@ -549,5 +549,5 @@ int mv88e6352_serdes_set_tx_amplitude(struct mv88e6xxx_= chip *chip, int port, ctrl &=3D ~MV88E6352_SERDES_OUT_AMP_MASK; ctrl |=3D reg; =20 - return mv88e6352_serdes_write(chip, MV88E6352_SERDES_SPEC_CTRL2, ctrl); + return mv88e6xxx_serdes_write(chip, lane, MV88E6352_SERDES_SPEC_CTRL2, ct= rl); } diff --git a/drivers/net/dsa/mv88e6xxx/serdes.h b/drivers/net/dsa/mv88e6xxx= /serdes.h index 9b3a5ece33e7..d3e83c674ef7 100644 --- a/drivers/net/dsa/mv88e6xxx/serdes.h +++ b/drivers/net/dsa/mv88e6xxx/serdes.h @@ -124,6 +124,8 @@ int mv88e6352_serdes_read(struct mv88e6xxx_chip *chip, = int lane, int device, int reg, u16 *val); int mv88e6390_serdes_read(struct mv88e6xxx_chip *chip, int lane, int devic= e, int reg, u16 *val); +int mv88e6352_serdes_write(struct mv88e6xxx_chip *chip, int lane, int reg, + u16 val); unsigned int mv88e6352_serdes_irq_mapping(struct mv88e6xxx_chip *chip, int port); unsigned int mv88e6390_serdes_irq_mapping(struct mv88e6xxx_chip *chip, @@ -166,6 +168,15 @@ static inline int mv88e6xxx_serdes_read(struct mv88e6x= xx_chip *chip, int lane, return chip->info->ops->serdes_read(chip, lane, device, reg, val); } =20 +static inline int mv88e6xxx_serdes_write(struct mv88e6xxx_chip *chip, int = lane, + int reg, u16 val) +{ + if (!chip->info->ops->serdes_write) + return -EOPNOTSUPP; + + return chip->info->ops->serdes_write(chip, lane, reg, val); +} + static inline unsigned int mv88e6xxx_serdes_irq_mapping(struct mv88e6xxx_chip *chip, int port) { --=20 2.41.0