Received: by 2002:a05:6358:f14:b0:e5:3b68:ec04 with SMTP id b20csp4154505rwj; Tue, 20 Dec 2022 06:49:11 -0800 (PST) X-Google-Smtp-Source: AMrXdXvjopbMBWXZrMTqz5zIASJIGLa215iaRuVq/s14wxuJ9PU/Xiqg9l4FKooC2hrXEujiGvM1 X-Received: by 2002:aa7:c046:0:b0:476:50e8:93a2 with SMTP id k6-20020aa7c046000000b0047650e893a2mr14241756edo.37.1671547751119; Tue, 20 Dec 2022 06:49:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1671547751; cv=none; d=google.com; s=arc-20160816; b=FnQOiypsw9cR6gsmJbYJXtxsQEg4LdRUqooXAu1h0/oYwkGuAQw4cg9GL4LcCdtGiE pfeG/HIwmiLILXYHB/Q+/NPi9X4s/3vUiC0zAei5wMDvzZleBIqbvffOjPF8Vk1+bY5X gq9+jUKKOv62/Gw2lrx0ZlrKF5toxWB/60zoKym6eET9ihldUco5e8oQ2N/cs2WrWS1d 75Wx+OJpOpjRKOtx0C/4q6mZmfm5rPRCoGEPPyyOo+D6RyMZoGWDNZFfK6SNe95IfziJ f1uknqJJWrWVT2BHk6mYI77AjCEXs78BdilcgzftiyI+ZYLbglOGwfpDgTY0sXJ/qsZJ Ef7g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=Ed6VG1SUV9HFxf34JgZ6AH3VGOZoZxogcfSaZTFZm9I=; b=1IY1h+ythz+3idyXFr2n3gQKfElDl6RO2iax+/u6/q0LkCxEL4jAlHEtnzRVLdUo+p JbV1Z3SQ1nTB/C2OUrItfUFfdzTEJUwP+3sPw6qDbIiPLbPE77DHZwGeM3CyBI2iyvug w/VRl2IhDnf7jigQDjiaTnvURkRU57cc73+aAX0Bn3C2WybY2tehrpEAFRYifs9RdSC0 POF1uMZdt2KUE+zJdOaIJmgkHxj1cIkAx0tXTQpaYKXFmxD3qGz4mby0tGL5qhmLsJL/ cvt+3ZWt00ckrXgKHqJmkeW+mTFaZUhI/AdcrugSTBukUfypPyT+4G0eXjfet/DXKR2J CXqg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@lunn.ch header.s=20171124 header.b="zAdj56n/"; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=lunn.ch Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id sz7-20020a1709078b0700b007c18a102d8csi2058233ejc.673.2022.12.20.06.48.54; Tue, 20 Dec 2022 06:49:11 -0800 (PST) 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; dkim=pass header.i=@lunn.ch header.s=20171124 header.b="zAdj56n/"; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=lunn.ch Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233364AbiLTOWk (ORCPT + 69 others); Tue, 20 Dec 2022 09:22:40 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49434 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233892AbiLTOVV (ORCPT ); Tue, 20 Dec 2022 09:21:21 -0500 Received: from vps0.lunn.ch (vps0.lunn.ch [156.67.10.101]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 91DEB1C13A; Tue, 20 Dec 2022 06:20:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lunn.ch; s=20171124; h=In-Reply-To:Content-Disposition:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:From:Sender:Reply-To:Subject: Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding: Content-ID:Content-Description:Content-Disposition:In-Reply-To:References; bh=Ed6VG1SUV9HFxf34JgZ6AH3VGOZoZxogcfSaZTFZm9I=; b=zAdj56n/Xxduddp9qDLpkEzYSc GnDJte7DR8iWrFBthqvUh9jK2fKMPqeibjs/Ziu0nfsyDa/X/gKY3QQ8E82ryLF/ubmXUzxSLCv8l awdDAhSCnEKeP472VhCIcVoS/RJA89fzgYItFYUi6TAVto2IF1J7F+pHorubC+Y0Jc9A=; Received: from andrew by vps0.lunn.ch with local (Exim 4.94.2) (envelope-from ) id 1p7dTg-0005wx-3p; Tue, 20 Dec 2022 15:20:20 +0100 Date: Tue, 20 Dec 2022 15:20:20 +0100 From: Andrew Lunn To: Yanhong Wang Cc: linux-riscv@lists.infradead.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Emil Renner Berthing , Richard Cochran , Heiner Kallweit , Peter Geis Subject: Re: [PATCH v2 6/9] net: phy: motorcomm: Add YT8531 phy support Message-ID: References: <20221216070632.11444-1-yanhong.wang@starfivetech.com> <20221216070632.11444-7-yanhong.wang@starfivetech.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20221216070632.11444-7-yanhong.wang@starfivetech.com> X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS 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 > Signed-off-by: Yanhong Wang > --- > drivers/net/phy/Kconfig | 3 +- > drivers/net/phy/motorcomm.c | 202 ++++++++++++++++++++++++++++++++++++ > 2 files changed, 204 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig > index c57a0262fb64..86399254d9ff 100644 > --- a/drivers/net/phy/Kconfig > +++ b/drivers/net/phy/Kconfig > @@ -258,9 +258,10 @@ config MICROSEMI_PHY > > config MOTORCOMM_PHY > tristate "Motorcomm PHYs" > + default SOC_STARFIVE Please don't do this. Look at the other PHY drivers. How many have a default like this? Generally, if you are doing something which no other driver does, you are doing something wrong. > --- a/drivers/net/phy/motorcomm.c > +++ b/drivers/net/phy/motorcomm.c > @@ -3,13 +3,17 @@ > * Driver for Motorcomm PHYs > * > * Author: Peter Geis > + * > */ Please avoid changes like this. It distracts from the real code changes. > > +#include > #include > #include > +#include > #include > > #define PHY_ID_YT8511 0x0000010a > +#define PHY_ID_YT8531 0x4f51e91b > > #define YT8511_PAGE_SELECT 0x1e > #define YT8511_PAGE 0x1f > @@ -17,6 +21,10 @@ > #define YT8511_EXT_DELAY_DRIVE 0x0d > #define YT8511_EXT_SLEEP_CTRL 0x27 > > +#define YTPHY_EXT_SMI_SDS_PHY 0xa000 > +#define YTPHY_EXT_CHIP_CONFIG 0xa001 > +#define YTPHY_EXT_RGMII_CONFIG1 0xa003 > + > /* 2b00 25m from pll > * 2b01 25m from xtl *default* > * 2b10 62.m from pll > @@ -38,6 +46,51 @@ > #define YT8511_DELAY_FE_TX_EN (0xf << 12) > #define YT8511_DELAY_FE_TX_DIS (0x2 << 12) > > +struct ytphy_reg_field { > + char *name; > + u32 mask; > + u8 dflt; /* Default value */ > +}; This should be next to where it is used. But once you have delay in ps, i suspect you will throw this away. > > +static int ytphy_config_init(struct phy_device *phydev) Is this specific to the 8531? If so, put 8531 in the function name? Do any of these delay configurations also apply to the 8511? > +{ > + struct device_node *of_node; > + u32 val; > + u32 mask; > + u32 cfg; > + int ret; > + int i = 0; Reverse Christmas tree. i needs to be earlier, val needs to be later. > + of_node = phydev->mdio.dev.of_node; > + if (of_node) { > + ret = of_property_read_u32(of_node, ytphy_rxden_grp[0].name, &cfg); > + if (!ret) { > + mask = ytphy_rxden_grp[0].mask; > + val = ytphy_read_ext(phydev, YTPHY_EXT_CHIP_CONFIG); > + > + /* check the cfg overflow or not */ > + cfg = cfg > mask >> (ffs(mask) - 1) ? mask : cfg; > + > + val &= ~mask; > + val |= FIELD_PREP(mask, cfg); > + ytphy_write_ext(phydev, YTPHY_EXT_CHIP_CONFIG, val); > + } > + > + val = ytphy_read_ext(phydev, YTPHY_EXT_RGMII_CONFIG1); > + for (i = 0; i < ARRAY_SIZE(ytphy_rxtxd_grp); i++) { > + ret = of_property_read_u32(of_node, ytphy_rxtxd_grp[i].name, &cfg); > + if (!ret) { > + mask = ytphy_rxtxd_grp[i].mask; > + > + /* check the cfg overflow or not */ > + cfg = cfg > mask >> (ffs(mask) - 1) ? mask : cfg; > + > + val &= ~mask; > + val |= cfg << (ffs(mask) - 1); > + } > + } > + return ytphy_write_ext(phydev, YTPHY_EXT_RGMII_CONFIG1, val); > + } > + > + phydev_err(phydev, "Get of node fail\n"); What about the case of the PHY is used on a board without device tree? ACPI could be used, or there could be nothing because it is on a USB dongle etc. You should of defined in your device tree binding what the defaults are when properties are missing. So apply them when there is no DT available. Then we at least have the PHY in a known state. Andrew