Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp97383pxk; Tue, 1 Sep 2020 17:28:22 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz0ptCekso8gonJvlSNnn1mLyNLqEW2khZ7b90RpZ3+mY5Cz7fz8hPCD8YGW+olay3APYSN X-Received: by 2002:a50:8c66:: with SMTP id p93mr4226613edp.156.1599006502501; Tue, 01 Sep 2020 17:28:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1599006502; cv=none; d=google.com; s=arc-20160816; b=Frytd2K2Ay8CIBUhGySI+K2gvhRM1csEQ9ZaLlp1GwNycSGW15VVU6wg/MVBfBtC5V 2ULTZe8T/6YGzuEQq9xRDzldqHSS+gbI1gDVbhJ/4j4IGcHbuwdrxR/rUSdw/xRPzh9C hpNafNRyI0IcG/5p7XHGcvGFGxBuWGisBVMHvu49zYfz9bYoCOs4pLE02z4jVzVIY99G 8FAB00sb9WMufheUF368J+XSV1h5J8fjQAZLx4UGDjYowFBiVrzZU6dJZ+DlC5EOdLbl a9Q/Mzx+kmJMH8AaRkyEJbeUyCOWKYjLPiIEXmQVeAGKMSCylPOCtiTzennm6wSLb6zf Ztcg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :dkim-signature; bh=O6RI5720XyCEzWsdX/PnvsBywv3cRyHpxtpcHDkMXsA=; b=F9vuFiYuxBfSBZCOmgTrUYk5ChxJDp6UUOyNXfS3WWMwskidg3+u1msEHHT2zkSzyl 9m/ZKIBb8QwcQOppZvlnDihkjlUVkpDrKkg+dq6zMdrs+hSBEUS/CJjDqRdC27+3pswk nSjYdwbMYEswbudn5DqGr/5riqM0/XFkdD+9hL40untcBdl6t8yQORx71Qbg8vNGbYd6 hPhooQyQcqnWgBDgyKEpwoFicVCNE8lFky8URY0xFl9Bemy9UhOpvN8u7t5p6DVlYFKf pYjy5le9dl4e0FhPiNcKswEfzQPGHuSwnPUCkFICJix0QM/lnom0b6XkAwvuNXhsDwDb Yiaw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass (test mode) header.i=@ideasonboard.com header.s=mail header.b=Ao8TNLwC; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id x7si1679842eje.505.2020.09.01.17.27.22; Tue, 01 Sep 2020 17:28:22 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass (test mode) header.i=@ideasonboard.com header.s=mail header.b=Ao8TNLwC; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726489AbgIBA0d (ORCPT + 99 others); Tue, 1 Sep 2020 20:26:33 -0400 Received: from perceval.ideasonboard.com ([213.167.242.64]:34548 "EHLO perceval.ideasonboard.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726298AbgIBA0c (ORCPT ); Tue, 1 Sep 2020 20:26:32 -0400 Received: from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi [62.78.145.57]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id C1B1AAF2; Wed, 2 Sep 2020 02:26:29 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1599006389; bh=GrN9fJ8LgOOnhT1gG8KHelijPX0Qx2QQtxml9aRHrv0=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=Ao8TNLwCwxWKkc7l/Rnkw6rQVLCNmnHEgsb+1eCoz/s5TraoNjReFTOzMqXdLoEcm +CjTwikwMRuvxa1Vi5C/SICcSGgvXRuVzGjHVSFvk+NEExtkNIWcEtgHrPpKaNvhy1 /ZYDDAbn58iuJl9sHzIizLJQzW01/BKNoNeCk/+k= Date: Wed, 2 Sep 2020 03:26:08 +0300 From: Laurent Pinchart To: Swapnil Jakhade Cc: vkoul@kernel.org, kishon@ti.com, linux-kernel@vger.kernel.org, maxime@cerno.tech, mparab@cadence.com, yamonkar@cadence.com, nsekhar@ti.com, tomi.valkeinen@ti.com, jsarha@ti.com, praneeth@ti.com Subject: Re: [PATCH v5 1/2] phy: Add new PHY attribute max_link_rate and APIs to get/set PHY attributes Message-ID: <20200902002608.GD14351@pendragon.ideasonboard.com> References: <1598293711-23362-1-git-send-email-sjakhade@cadence.com> <1598293711-23362-2-git-send-email-sjakhade@cadence.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <1598293711-23362-2-git-send-email-sjakhade@cadence.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Swapnil, Thank you for the patch. On Mon, Aug 24, 2020 at 08:28:30PM +0200, Swapnil Jakhade wrote: > Add new PHY attribute max_link_rate to struct phy_attrs. > Add a pair of PHY APIs to get/set all the PHY attributes. > Use phy_get_attrs() to get attribute values and phy_set_attrs() > to set attribute values. > > Signed-off-by: Yuti Amonkar > Signed-off-by: Swapnil Jakhade > Acked-by: Kishon Vijay Abraham I > --- > include/linux/phy/phy.h | 43 +++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 43 insertions(+) > > diff --git a/include/linux/phy/phy.h b/include/linux/phy/phy.h > index bcee8eba62b3..924cd1a3deea 100644 > --- a/include/linux/phy/phy.h > +++ b/include/linux/phy/phy.h > @@ -115,10 +115,12 @@ struct phy_ops { > /** > * struct phy_attrs - represents phy attributes > * @bus_width: Data path width implemented by PHY > + * @max_link_rate: Maximum link rate supported by PHY (in Mbps) > * @mode: PHY mode > */ > struct phy_attrs { > u32 bus_width; > + u32 max_link_rate; > enum phy_mode mode; > }; > > @@ -231,6 +233,37 @@ static inline void phy_set_bus_width(struct phy *phy, int bus_width) > { > phy->attrs.bus_width = bus_width; > } > + > +/** > + * phy_get_attrs() - get the values for PHY attributes. > + * @phy: the phy for which to get the attributes > + * @attrs: current PHY attributes that will be returned > + * > + * Intended to be used by phy consumers to get the current PHY attributes > + * stored in struct phy_attrs. > + */ > +static inline void phy_get_attrs(struct phy *phy, struct phy_attrs *attrs) > +{ > + mutex_lock(&phy->mutex); > + memcpy(attrs, &phy->attrs, sizeof(struct phy_attrs)); > + mutex_unlock(&phy->mutex); Why is the mutex required, what does it guard against ? > +} > + > +/** > + * phy_set_attrs() - set PHY attributes with new values. > + * @phy: the phy for which to set the attributes > + * @attrs: the &struct phy_attrs containing new PHY attributes to be set > + * > + * This can be used by PHY providers or PHY consumers to set the PHY > + * attributes. The locking is used to protect updating attributes when > + * PHY consumer is doing some PHY ops. > + */ > +static inline void phy_set_attrs(struct phy *phy, const struct phy_attrs *attrs) > +{ > + mutex_lock(&phy->mutex); > + memcpy(&phy->attrs, attrs, sizeof(struct phy_attrs)); > + mutex_unlock(&phy->mutex); > +} > struct phy *phy_get(struct device *dev, const char *string); > struct phy *phy_optional_get(struct device *dev, const char *string); > struct phy *devm_phy_get(struct device *dev, const char *string); > @@ -389,6 +422,16 @@ static inline void phy_set_bus_width(struct phy *phy, int bus_width) > return; > } > > +static inline void phy_get_attrs(struct phy *phy, struct phy_attrs *attrs) > +{ > + return; You can drop the return statement. > +} > + > +static inline void phy_set_attrs(struct phy *phy, const struct phy_attrs *attrs) > +{ > + return; Here too. > +} > + > static inline struct phy *phy_get(struct device *dev, const char *string) > { > return ERR_PTR(-ENOSYS); -- Regards, Laurent Pinchart