All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yury Norov <yury.norov@gmail.com>
To: Bjorn Helgaas <helgaas@kernel.org>
Cc: "Nicolas Frattaroli" <nicolas.frattaroli@collabora.com>,
	"Rasmus Villemoes" <linux@rasmusvillemoes.dk>,
	"Jaehoon Chung" <jh80.chung@samsung.com>,
	"Ulf Hansson" <ulf.hansson@linaro.org>,
	"Heiko Stuebner" <heiko@sntech.de>,
	"Shreeya Patel" <shreeya.patel@collabora.com>,
	"Mauro Carvalho Chehab" <mchehab@kernel.org>,
	"Sandy Huang" <hjc@rock-chips.com>,
	"Andy Yan" <andy.yan@rock-chips.com>,
	"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
	"Maxime Ripard" <mripard@kernel.org>,
	"Thomas Zimmermann" <tzimmermann@suse.de>,
	"David Airlie" <airlied@gmail.com>,
	"Simona Vetter" <simona@ffwll.ch>,
	"Vinod Koul" <vkoul@kernel.org>,
	"Kishon Vijay Abraham I" <kishon@kernel.org>,
	"Nicolas Frattaroli" <frattaroli.nicolas@gmail.com>,
	"Liam Girdwood" <lgirdwood@gmail.com>,
	"Mark Brown" <broonie@kernel.org>,
	"Jaroslav Kysela" <perex@perex.cz>,
	"Takashi Iwai" <tiwai@suse.com>,
	"Andrew Lunn" <andrew+netdev@lunn.ch>,
	"David S. Miller" <davem@davemloft.net>,
	"Eric Dumazet" <edumazet@google.com>,
	"Jakub Kicinski" <kuba@kernel.org>,
	"Paolo Abeni" <pabeni@redhat.com>,
	"Maxime Coquelin" <mcoquelin.stm32@gmail.com>,
	"Alexandre Torgue" <alexandre.torgue@foss.st.com>,
	"Shawn Lin" <shawn.lin@rock-chips.com>,
	"Lorenzo Pieralisi" <lpieralisi@kernel.org>,
	"Krzysztof Wilczyński" <kwilczynski@kernel.org>,
	"Manivannan Sadhasivam" <mani@kernel.org>,
	"Rob Herring" <robh@kernel.org>,
	"Bjorn Helgaas" <bhelgaas@google.com>,
	"Chanwoo Choi" <cw00.choi@samsung.com>,
	"MyungJoo Ham" <myungjoo.ham@samsung.com>,
	"Kyungmin Park" <kyungmin.park@samsung.com>,
	"Qin Jian" <qinjian@cqplus1.com>,
	"Michael Turquette" <mturquette@baylibre.com>,
	"Stephen Boyd" <sboyd@kernel.org>,
	"Nathan Chancellor" <nathan@kernel.org>,
	"Nick Desaulniers" <nick.desaulniers+lkml@gmail.com>,
	"Bill Wendling" <morbo@google.com>,
	"Justin Stitt" <justinstitt@google.com>,
	kernel@collabora.com, linux-kernel@vger.kernel.org,
	linux-mmc@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-rockchip@lists.infradead.org, linux-media@vger.kernel.org,
	dri-devel@lists.freedesktop.org, linux-phy@lists.infradead.org,
	linux-sound@vger.kernel.org, netdev@vger.kernel.org,
	linux-stm32@st-md-mailman.stormreply.com,
	linux-pci@vger.kernel.org, linux-pm@vger.kernel.org,
	linux-clk@vger.kernel.org, llvm@lists.linux.dev
Subject: Re: [PATCH 16/20] PCI: rockchip: switch to HWORD_UPDATE* macros
Date: Thu, 12 Jun 2025 15:52:09 -0400	[thread overview]
Message-ID: <aEsv6X5JSQkpmwvP@yury> (raw)
In-Reply-To: <20250612193728.GA924118@bhelgaas>

On Thu, Jun 12, 2025 at 02:37:28PM -0500, Bjorn Helgaas wrote:
> On Thu, Jun 12, 2025 at 08:56:18PM +0200, Nicolas Frattaroli wrote:
> > The era of hand-rolled HIWORD_UPDATE macros is over, at least for those
> > drivers that use constant masks.
> > 
> > The Rockchip PCI driver, like many other Rockchip drivers, has its very
> > own definition of HIWORD_UPDATE.
> > 
> > Remove it, and replace its usage with either HWORD_UPDATE, or two new
> > header local macros for setting/clearing a bit with the high mask, which
> > use HWORD_UPDATE_CONST internally. In the process, ENCODE_LANES needed
> > to be adjusted, as HWORD_UPDATE* shifts the value for us.
> > 
> > That this is equivalent was verified by first making all HWORD_UPDATE
> > instances HWORD_UPDATE_CONST, then doing a static_assert() comparing it
> > to the old macro (and for those with parameters, static_asserting for
> > the full range of possible values with the old encode macro).
> > 
> > What we get out of this is compile time error checking to make sure the
> > value actually fits in the mask, and that the mask fits in the register,
> > and also generally less icky code that writes shifted values when it
> > actually just meant to set and clear a handful of bits.
> > 
> > Signed-off-by: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
> 
> Looks good to me.  I assume you want to merge these via a non-PCI tree
> since this depends on patch 01/20.  PCI subject convention would
> capitalize "Switch":

Hi,

I'd like to take patch #1 and the explicitly acked following patches in
my bitmap-for-next.Those who would prefer to move the material in their
per-driver branches (like net, as mentioned by Andrew Lunn) can wait
till the end of next merge window, and then apply the patches cleanly.

Thanks,
Yury

>   PCI: rockchip: Switch to HWORD_UPDATE* macros
> 
> Acked-by: Bjorn Helgaas <bhelgaas@google.com>
> 
> > ---
> >  drivers/pci/controller/pcie-rockchip.h | 35 +++++++++++++++++-----------------
> >  1 file changed, 18 insertions(+), 17 deletions(-)
> > 
> > diff --git a/drivers/pci/controller/pcie-rockchip.h b/drivers/pci/controller/pcie-rockchip.h
> > index 5864a20323f21a004bfee4ac6d3a1328c4ab4d8a..5f2e45f062d94cd75983f7ad0c5b708e5b4cfb6f 100644
> > --- a/drivers/pci/controller/pcie-rockchip.h
> > +++ b/drivers/pci/controller/pcie-rockchip.h
> > @@ -11,6 +11,7 @@
> >  #ifndef _PCIE_ROCKCHIP_H
> >  #define _PCIE_ROCKCHIP_H
> >  
> > +#include <linux/bitfield.h>
> >  #include <linux/clk.h>
> >  #include <linux/kernel.h>
> >  #include <linux/pci.h>
> > @@ -21,10 +22,10 @@
> >   * The upper 16 bits of PCIE_CLIENT_CONFIG are a write mask for the lower 16
> >   * bits.  This allows atomic updates of the register without locking.
> >   */
> > -#define HIWORD_UPDATE(mask, val)	(((mask) << 16) | (val))
> > -#define HIWORD_UPDATE_BIT(val)		HIWORD_UPDATE(val, val)
> > +#define HWORD_SET_BIT(val)		(HWORD_UPDATE_CONST((val), 1))
> > +#define HWORD_CLR_BIT(val)		(HWORD_UPDATE_CONST((val), 0))
> >  
> > -#define ENCODE_LANES(x)			((((x) >> 1) & 3) << 4)
> > +#define ENCODE_LANES(x)			((((x) >> 1) & 3))
> >  #define MAX_LANE_NUM			4
> >  #define MAX_REGION_LIMIT		32
> >  #define MIN_EP_APERTURE			28
> > @@ -32,21 +33,21 @@
> >  
> >  #define PCIE_CLIENT_BASE		0x0
> >  #define PCIE_CLIENT_CONFIG		(PCIE_CLIENT_BASE + 0x00)
> > -#define   PCIE_CLIENT_CONF_ENABLE	  HIWORD_UPDATE_BIT(0x0001)
> > -#define   PCIE_CLIENT_CONF_DISABLE       HIWORD_UPDATE(0x0001, 0)
> > -#define   PCIE_CLIENT_LINK_TRAIN_ENABLE	  HIWORD_UPDATE_BIT(0x0002)
> > -#define   PCIE_CLIENT_LINK_TRAIN_DISABLE  HIWORD_UPDATE(0x0002, 0)
> > -#define   PCIE_CLIENT_ARI_ENABLE	  HIWORD_UPDATE_BIT(0x0008)
> > -#define   PCIE_CLIENT_CONF_LANE_NUM(x)	  HIWORD_UPDATE(0x0030, ENCODE_LANES(x))
> > -#define   PCIE_CLIENT_MODE_RC		  HIWORD_UPDATE_BIT(0x0040)
> > -#define   PCIE_CLIENT_MODE_EP            HIWORD_UPDATE(0x0040, 0)
> > -#define   PCIE_CLIENT_GEN_SEL_1		  HIWORD_UPDATE(0x0080, 0)
> > -#define   PCIE_CLIENT_GEN_SEL_2		  HIWORD_UPDATE_BIT(0x0080)
> > +#define   PCIE_CLIENT_CONF_ENABLE		HWORD_SET_BIT(0x0001)
> > +#define   PCIE_CLIENT_CONF_DISABLE		HWORD_CLR_BIT(0x0001)
> > +#define   PCIE_CLIENT_LINK_TRAIN_ENABLE		HWORD_SET_BIT(0x0002)
> > +#define   PCIE_CLIENT_LINK_TRAIN_DISABLE	HWORD_CLR_BIT(0x0002)
> > +#define   PCIE_CLIENT_ARI_ENABLE		HWORD_SET_BIT(0x0008)
> > +#define   PCIE_CLIENT_CONF_LANE_NUM(x)		HWORD_UPDATE(0x0030, ENCODE_LANES(x))
> > +#define   PCIE_CLIENT_MODE_RC			HWORD_SET_BIT(0x0040)
> > +#define   PCIE_CLIENT_MODE_EP			HWORD_CLR_BIT(0x0040)
> > +#define   PCIE_CLIENT_GEN_SEL_1			HWORD_CLR_BIT(0x0080)
> > +#define   PCIE_CLIENT_GEN_SEL_2			HWORD_SET_BIT(0x0080)
> >  #define PCIE_CLIENT_LEGACY_INT_CTRL	(PCIE_CLIENT_BASE + 0x0c)
> > -#define   PCIE_CLIENT_INT_IN_ASSERT		HIWORD_UPDATE_BIT(0x0002)
> > -#define   PCIE_CLIENT_INT_IN_DEASSERT		HIWORD_UPDATE(0x0002, 0)
> > -#define   PCIE_CLIENT_INT_PEND_ST_PEND		HIWORD_UPDATE_BIT(0x0001)
> > -#define   PCIE_CLIENT_INT_PEND_ST_NORMAL	HIWORD_UPDATE(0x0001, 0)
> > +#define   PCIE_CLIENT_INT_IN_ASSERT		HWORD_SET_BIT(0x0002)
> > +#define   PCIE_CLIENT_INT_IN_DEASSERT		HWORD_CLR_BIT(0x0002)
> > +#define   PCIE_CLIENT_INT_PEND_ST_PEND		HWORD_SET_BIT(0x0001)
> > +#define   PCIE_CLIENT_INT_PEND_ST_NORMAL	HWORD_CLR_BIT(0x0001)
> >  #define PCIE_CLIENT_SIDE_BAND_STATUS	(PCIE_CLIENT_BASE + 0x20)
> >  #define   PCIE_CLIENT_PHY_ST			BIT(12)
> >  #define PCIE_CLIENT_DEBUG_OUT_0		(PCIE_CLIENT_BASE + 0x3c)
> > 
> > -- 
> > 2.49.0
> > 

WARNING: multiple messages have this Message-ID (diff)
From: Yury Norov <yury.norov@gmail.com>
To: Bjorn Helgaas <helgaas@kernel.org>
Cc: "Nicolas Frattaroli" <nicolas.frattaroli@collabora.com>,
	"Rasmus Villemoes" <linux@rasmusvillemoes.dk>,
	"Jaehoon Chung" <jh80.chung@samsung.com>,
	"Ulf Hansson" <ulf.hansson@linaro.org>,
	"Heiko Stuebner" <heiko@sntech.de>,
	"Shreeya Patel" <shreeya.patel@collabora.com>,
	"Mauro Carvalho Chehab" <mchehab@kernel.org>,
	"Sandy Huang" <hjc@rock-chips.com>,
	"Andy Yan" <andy.yan@rock-chips.com>,
	"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
	"Maxime Ripard" <mripard@kernel.org>,
	"Thomas Zimmermann" <tzimmermann@suse.de>,
	"David Airlie" <airlied@gmail.com>,
	"Simona Vetter" <simona@ffwll.ch>,
	"Vinod Koul" <vkoul@kernel.org>,
	"Kishon Vijay Abraham I" <kishon@kernel.org>,
	"Nicolas Frattaroli" <frattaroli.nicolas@gmail.com>,
	"Liam Girdwood" <lgirdwood@gmail.com>,
	"Mark Brown" <broonie@kernel.org>,
	"Jaroslav Kysela" <perex@perex.cz>,
	"Takashi Iwai" <tiwai@suse.com>,
	"Andrew Lunn" <andrew+netdev@lunn.ch>,
	"David S. Miller" <davem@davemloft.net>,
	"Eric Dumazet" <edumazet@google.com>,
	"Jakub Kicinski" <kuba@kernel.org>,
	"Paolo Abeni" <pabeni@redhat.com>,
	"Maxime Coquelin" <mcoquelin.stm32@gmail.com>,
	"Alexandre Torgue" <alexandre.torgue@foss.st.com>,
	"Shawn Lin" <shawn.lin@rock-chips.com>,
	"Lorenzo Pieralisi" <lpieralisi@kernel.org>,
	"Krzysztof Wilczyński" <kwilczynski@kernel.org>,
	"Manivannan Sadhasivam" <mani@kernel.org>,
	"Rob Herring" <robh@kernel.org>,
	"Bjorn Helgaas" <bhelgaas@google.com>,
	"Chanwoo Choi" <cw00.choi@samsung.com>,
	"MyungJoo Ham" <myungjoo.ham@samsung.com>,
	"Kyungmin Park" <kyungmin.park@samsung.com>,
	"Qin Jian" <qinjian@cqplus1.com>,
	"Michael Turquette" <mturquette@baylibre.com>,
	"Stephen Boyd" <sboyd@kernel.org>,
	"Nathan Chancellor" <nathan@kernel.org>,
	"Nick Desaulniers" <nick.desaulniers+lkml@gmail.com>,
	"Bill Wendling" <morbo@google.com>,
	"Justin Stitt" <justinstitt@google.com>,
	kernel@collabora.com, linux-kernel@vger.kernel.org,
	linux-mmc@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-rockchip@lists.infradead.org, linux-media@vger.kernel.org,
	dri-devel@lists.freedesktop.org, linux-phy@lists.infradead.org,
	linux-sound@vger.kernel.org, netdev@vger.kernel.org,
	linux-stm32@st-md-mailman.stormreply.com,
	linux-pci@vger.kernel.org, linux-pm@vger.kernel.org,
	linux-clk@vger.kernel.org, llvm@lists.linux.dev
Subject: Re: [PATCH 16/20] PCI: rockchip: switch to HWORD_UPDATE* macros
Date: Thu, 12 Jun 2025 15:52:09 -0400	[thread overview]
Message-ID: <aEsv6X5JSQkpmwvP@yury> (raw)
In-Reply-To: <20250612193728.GA924118@bhelgaas>

On Thu, Jun 12, 2025 at 02:37:28PM -0500, Bjorn Helgaas wrote:
> On Thu, Jun 12, 2025 at 08:56:18PM +0200, Nicolas Frattaroli wrote:
> > The era of hand-rolled HIWORD_UPDATE macros is over, at least for those
> > drivers that use constant masks.
> > 
> > The Rockchip PCI driver, like many other Rockchip drivers, has its very
> > own definition of HIWORD_UPDATE.
> > 
> > Remove it, and replace its usage with either HWORD_UPDATE, or two new
> > header local macros for setting/clearing a bit with the high mask, which
> > use HWORD_UPDATE_CONST internally. In the process, ENCODE_LANES needed
> > to be adjusted, as HWORD_UPDATE* shifts the value for us.
> > 
> > That this is equivalent was verified by first making all HWORD_UPDATE
> > instances HWORD_UPDATE_CONST, then doing a static_assert() comparing it
> > to the old macro (and for those with parameters, static_asserting for
> > the full range of possible values with the old encode macro).
> > 
> > What we get out of this is compile time error checking to make sure the
> > value actually fits in the mask, and that the mask fits in the register,
> > and also generally less icky code that writes shifted values when it
> > actually just meant to set and clear a handful of bits.
> > 
> > Signed-off-by: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
> 
> Looks good to me.  I assume you want to merge these via a non-PCI tree
> since this depends on patch 01/20.  PCI subject convention would
> capitalize "Switch":

Hi,

I'd like to take patch #1 and the explicitly acked following patches in
my bitmap-for-next.Those who would prefer to move the material in their
per-driver branches (like net, as mentioned by Andrew Lunn) can wait
till the end of next merge window, and then apply the patches cleanly.

Thanks,
Yury

>   PCI: rockchip: Switch to HWORD_UPDATE* macros
> 
> Acked-by: Bjorn Helgaas <bhelgaas@google.com>
> 
> > ---
> >  drivers/pci/controller/pcie-rockchip.h | 35 +++++++++++++++++-----------------
> >  1 file changed, 18 insertions(+), 17 deletions(-)
> > 
> > diff --git a/drivers/pci/controller/pcie-rockchip.h b/drivers/pci/controller/pcie-rockchip.h
> > index 5864a20323f21a004bfee4ac6d3a1328c4ab4d8a..5f2e45f062d94cd75983f7ad0c5b708e5b4cfb6f 100644
> > --- a/drivers/pci/controller/pcie-rockchip.h
> > +++ b/drivers/pci/controller/pcie-rockchip.h
> > @@ -11,6 +11,7 @@
> >  #ifndef _PCIE_ROCKCHIP_H
> >  #define _PCIE_ROCKCHIP_H
> >  
> > +#include <linux/bitfield.h>
> >  #include <linux/clk.h>
> >  #include <linux/kernel.h>
> >  #include <linux/pci.h>
> > @@ -21,10 +22,10 @@
> >   * The upper 16 bits of PCIE_CLIENT_CONFIG are a write mask for the lower 16
> >   * bits.  This allows atomic updates of the register without locking.
> >   */
> > -#define HIWORD_UPDATE(mask, val)	(((mask) << 16) | (val))
> > -#define HIWORD_UPDATE_BIT(val)		HIWORD_UPDATE(val, val)
> > +#define HWORD_SET_BIT(val)		(HWORD_UPDATE_CONST((val), 1))
> > +#define HWORD_CLR_BIT(val)		(HWORD_UPDATE_CONST((val), 0))
> >  
> > -#define ENCODE_LANES(x)			((((x) >> 1) & 3) << 4)
> > +#define ENCODE_LANES(x)			((((x) >> 1) & 3))
> >  #define MAX_LANE_NUM			4
> >  #define MAX_REGION_LIMIT		32
> >  #define MIN_EP_APERTURE			28
> > @@ -32,21 +33,21 @@
> >  
> >  #define PCIE_CLIENT_BASE		0x0
> >  #define PCIE_CLIENT_CONFIG		(PCIE_CLIENT_BASE + 0x00)
> > -#define   PCIE_CLIENT_CONF_ENABLE	  HIWORD_UPDATE_BIT(0x0001)
> > -#define   PCIE_CLIENT_CONF_DISABLE       HIWORD_UPDATE(0x0001, 0)
> > -#define   PCIE_CLIENT_LINK_TRAIN_ENABLE	  HIWORD_UPDATE_BIT(0x0002)
> > -#define   PCIE_CLIENT_LINK_TRAIN_DISABLE  HIWORD_UPDATE(0x0002, 0)
> > -#define   PCIE_CLIENT_ARI_ENABLE	  HIWORD_UPDATE_BIT(0x0008)
> > -#define   PCIE_CLIENT_CONF_LANE_NUM(x)	  HIWORD_UPDATE(0x0030, ENCODE_LANES(x))
> > -#define   PCIE_CLIENT_MODE_RC		  HIWORD_UPDATE_BIT(0x0040)
> > -#define   PCIE_CLIENT_MODE_EP            HIWORD_UPDATE(0x0040, 0)
> > -#define   PCIE_CLIENT_GEN_SEL_1		  HIWORD_UPDATE(0x0080, 0)
> > -#define   PCIE_CLIENT_GEN_SEL_2		  HIWORD_UPDATE_BIT(0x0080)
> > +#define   PCIE_CLIENT_CONF_ENABLE		HWORD_SET_BIT(0x0001)
> > +#define   PCIE_CLIENT_CONF_DISABLE		HWORD_CLR_BIT(0x0001)
> > +#define   PCIE_CLIENT_LINK_TRAIN_ENABLE		HWORD_SET_BIT(0x0002)
> > +#define   PCIE_CLIENT_LINK_TRAIN_DISABLE	HWORD_CLR_BIT(0x0002)
> > +#define   PCIE_CLIENT_ARI_ENABLE		HWORD_SET_BIT(0x0008)
> > +#define   PCIE_CLIENT_CONF_LANE_NUM(x)		HWORD_UPDATE(0x0030, ENCODE_LANES(x))
> > +#define   PCIE_CLIENT_MODE_RC			HWORD_SET_BIT(0x0040)
> > +#define   PCIE_CLIENT_MODE_EP			HWORD_CLR_BIT(0x0040)
> > +#define   PCIE_CLIENT_GEN_SEL_1			HWORD_CLR_BIT(0x0080)
> > +#define   PCIE_CLIENT_GEN_SEL_2			HWORD_SET_BIT(0x0080)
> >  #define PCIE_CLIENT_LEGACY_INT_CTRL	(PCIE_CLIENT_BASE + 0x0c)
> > -#define   PCIE_CLIENT_INT_IN_ASSERT		HIWORD_UPDATE_BIT(0x0002)
> > -#define   PCIE_CLIENT_INT_IN_DEASSERT		HIWORD_UPDATE(0x0002, 0)
> > -#define   PCIE_CLIENT_INT_PEND_ST_PEND		HIWORD_UPDATE_BIT(0x0001)
> > -#define   PCIE_CLIENT_INT_PEND_ST_NORMAL	HIWORD_UPDATE(0x0001, 0)
> > +#define   PCIE_CLIENT_INT_IN_ASSERT		HWORD_SET_BIT(0x0002)
> > +#define   PCIE_CLIENT_INT_IN_DEASSERT		HWORD_CLR_BIT(0x0002)
> > +#define   PCIE_CLIENT_INT_PEND_ST_PEND		HWORD_SET_BIT(0x0001)
> > +#define   PCIE_CLIENT_INT_PEND_ST_NORMAL	HWORD_CLR_BIT(0x0001)
> >  #define PCIE_CLIENT_SIDE_BAND_STATUS	(PCIE_CLIENT_BASE + 0x20)
> >  #define   PCIE_CLIENT_PHY_ST			BIT(12)
> >  #define PCIE_CLIENT_DEBUG_OUT_0		(PCIE_CLIENT_BASE + 0x3c)
> > 
> > -- 
> > 2.49.0
> > 

-- 
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy

WARNING: multiple messages have this Message-ID (diff)
From: Yury Norov <yury.norov@gmail.com>
To: Bjorn Helgaas <helgaas@kernel.org>
Cc: "Ulf Hansson" <ulf.hansson@linaro.org>,
	"Rob Herring" <robh@kernel.org>,
	"Heiko Stuebner" <heiko@sntech.de>,
	"Liam Girdwood" <lgirdwood@gmail.com>,
	linux-pci@vger.kernel.org, "Shawn Lin" <shawn.lin@rock-chips.com>,
	llvm@lists.linux.dev,
	"Rasmus Villemoes" <linux@rasmusvillemoes.dk>,
	"Alexandre Torgue" <alexandre.torgue@foss.st.com>,
	dri-devel@lists.freedesktop.org,
	"Sandy Huang" <hjc@rock-chips.com>,
	"Eric Dumazet" <edumazet@google.com>,
	"Bill Wendling" <morbo@google.com>,
	"Nick Desaulniers" <nick.desaulniers+lkml@gmail.com>,
	linux-phy@lists.infradead.org, kernel@collabora.com,
	"David Airlie" <airlied@gmail.com>,
	linux-stm32@st-md-mailman.stormreply.com,
	"Krzysztof Wilczyński" <kwilczynski@kernel.org>,
	"Simona Vetter" <simona@ffwll.ch>,
	"Jaehoon Chung" <jh80.chung@samsung.com>,
	"Mauro Carvalho Chehab" <mchehab@kernel.org>,
	linux-rockchip@lists.infradead.org, linux-pm@vger.kernel.org,
	"Kyungmin Park" <kyungmin.park@samsung.com>,
	linux-clk@vger.kernel.org,
	"Nicolas Frattaroli" <frattaroli.nicolas@gmail.com>,
	"Chanwoo Choi" <cw00.choi@samsung.com>,
	"Michael Turquette" <mturquette@baylibre.com>,
	"MyungJoo Ham" <myungjoo.ham@samsung.com>,
	"Jakub Kicinski" <kuba@kernel.org>,
	"Paolo Abeni" <pabeni@redhat.com>,
	"Lorenzo Pieralisi" <lpieralisi@kernel.org>,
	linux-media@vger.kernel.org,
	"Kishon Vijay Abraham I" <kishon@kernel.org>,
	"Maxime Coquelin" <mcoquelin.stm32@gmail.com>,
	"Manivannan Sadhasivam" <mani@kernel.org>,
	linux-kernel@vger.kernel.org,
	"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
	"Maxime Ripard" <mripard@kernel.org>,
	"Nathan Chancellor" <nathan@kernel.org>,
	"Mark Brown" <broonie@kernel.org>,
	linux-sound@vger.kernel.org,
	"Bjorn Helgaas" <bhelgaas@google.com>,
	"Jaroslav Kysela" <perex@perex.cz>,
	linux-arm-kernel@lists.infradead.org,
	"Qin Jian" <qinjian@cqplus1.com>,
	"Stephen Boyd" <sboyd@kernel.org>,
	netdev@vger.kernel.org, linux-mmc@vger.kernel.org,
	"Takashi Iwai" <tiwai@suse.com>,
	"David S. Miller" <davem@davemloft.net>,
	"Andrew Lunn" <andrew+netdev@lunn.ch>,
	"Vinod Koul" <vkoul@kernel.org>,
	"Thomas Zimmermann" <tzimmermann@suse.de>,
	"Justin Stitt" <justinstitt@google.com>,
	"Andy Yan" <andy.yan@rock-chips.com>,
	"Shreeya Patel" <shreeya.patel@collabora.com>
Subject: Re: [PATCH 16/20] PCI: rockchip: switch to HWORD_UPDATE* macros
Date: Thu, 12 Jun 2025 15:52:09 -0400	[thread overview]
Message-ID: <aEsv6X5JSQkpmwvP@yury> (raw)
In-Reply-To: <20250612193728.GA924118@bhelgaas>

On Thu, Jun 12, 2025 at 02:37:28PM -0500, Bjorn Helgaas wrote:
> On Thu, Jun 12, 2025 at 08:56:18PM +0200, Nicolas Frattaroli wrote:
> > The era of hand-rolled HIWORD_UPDATE macros is over, at least for those
> > drivers that use constant masks.
> > 
> > The Rockchip PCI driver, like many other Rockchip drivers, has its very
> > own definition of HIWORD_UPDATE.
> > 
> > Remove it, and replace its usage with either HWORD_UPDATE, or two new
> > header local macros for setting/clearing a bit with the high mask, which
> > use HWORD_UPDATE_CONST internally. In the process, ENCODE_LANES needed
> > to be adjusted, as HWORD_UPDATE* shifts the value for us.
> > 
> > That this is equivalent was verified by first making all HWORD_UPDATE
> > instances HWORD_UPDATE_CONST, then doing a static_assert() comparing it
> > to the old macro (and for those with parameters, static_asserting for
> > the full range of possible values with the old encode macro).
> > 
> > What we get out of this is compile time error checking to make sure the
> > value actually fits in the mask, and that the mask fits in the register,
> > and also generally less icky code that writes shifted values when it
> > actually just meant to set and clear a handful of bits.
> > 
> > Signed-off-by: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
> 
> Looks good to me.  I assume you want to merge these via a non-PCI tree
> since this depends on patch 01/20.  PCI subject convention would
> capitalize "Switch":

Hi,

I'd like to take patch #1 and the explicitly acked following patches in
my bitmap-for-next.Those who would prefer to move the material in their
per-driver branches (like net, as mentioned by Andrew Lunn) can wait
till the end of next merge window, and then apply the patches cleanly.

Thanks,
Yury

>   PCI: rockchip: Switch to HWORD_UPDATE* macros
> 
> Acked-by: Bjorn Helgaas <bhelgaas@google.com>
> 
> > ---
> >  drivers/pci/controller/pcie-rockchip.h | 35 +++++++++++++++++-----------------
> >  1 file changed, 18 insertions(+), 17 deletions(-)
> > 
> > diff --git a/drivers/pci/controller/pcie-rockchip.h b/drivers/pci/controller/pcie-rockchip.h
> > index 5864a20323f21a004bfee4ac6d3a1328c4ab4d8a..5f2e45f062d94cd75983f7ad0c5b708e5b4cfb6f 100644
> > --- a/drivers/pci/controller/pcie-rockchip.h
> > +++ b/drivers/pci/controller/pcie-rockchip.h
> > @@ -11,6 +11,7 @@
> >  #ifndef _PCIE_ROCKCHIP_H
> >  #define _PCIE_ROCKCHIP_H
> >  
> > +#include <linux/bitfield.h>
> >  #include <linux/clk.h>
> >  #include <linux/kernel.h>
> >  #include <linux/pci.h>
> > @@ -21,10 +22,10 @@
> >   * The upper 16 bits of PCIE_CLIENT_CONFIG are a write mask for the lower 16
> >   * bits.  This allows atomic updates of the register without locking.
> >   */
> > -#define HIWORD_UPDATE(mask, val)	(((mask) << 16) | (val))
> > -#define HIWORD_UPDATE_BIT(val)		HIWORD_UPDATE(val, val)
> > +#define HWORD_SET_BIT(val)		(HWORD_UPDATE_CONST((val), 1))
> > +#define HWORD_CLR_BIT(val)		(HWORD_UPDATE_CONST((val), 0))
> >  
> > -#define ENCODE_LANES(x)			((((x) >> 1) & 3) << 4)
> > +#define ENCODE_LANES(x)			((((x) >> 1) & 3))
> >  #define MAX_LANE_NUM			4
> >  #define MAX_REGION_LIMIT		32
> >  #define MIN_EP_APERTURE			28
> > @@ -32,21 +33,21 @@
> >  
> >  #define PCIE_CLIENT_BASE		0x0
> >  #define PCIE_CLIENT_CONFIG		(PCIE_CLIENT_BASE + 0x00)
> > -#define   PCIE_CLIENT_CONF_ENABLE	  HIWORD_UPDATE_BIT(0x0001)
> > -#define   PCIE_CLIENT_CONF_DISABLE       HIWORD_UPDATE(0x0001, 0)
> > -#define   PCIE_CLIENT_LINK_TRAIN_ENABLE	  HIWORD_UPDATE_BIT(0x0002)
> > -#define   PCIE_CLIENT_LINK_TRAIN_DISABLE  HIWORD_UPDATE(0x0002, 0)
> > -#define   PCIE_CLIENT_ARI_ENABLE	  HIWORD_UPDATE_BIT(0x0008)
> > -#define   PCIE_CLIENT_CONF_LANE_NUM(x)	  HIWORD_UPDATE(0x0030, ENCODE_LANES(x))
> > -#define   PCIE_CLIENT_MODE_RC		  HIWORD_UPDATE_BIT(0x0040)
> > -#define   PCIE_CLIENT_MODE_EP            HIWORD_UPDATE(0x0040, 0)
> > -#define   PCIE_CLIENT_GEN_SEL_1		  HIWORD_UPDATE(0x0080, 0)
> > -#define   PCIE_CLIENT_GEN_SEL_2		  HIWORD_UPDATE_BIT(0x0080)
> > +#define   PCIE_CLIENT_CONF_ENABLE		HWORD_SET_BIT(0x0001)
> > +#define   PCIE_CLIENT_CONF_DISABLE		HWORD_CLR_BIT(0x0001)
> > +#define   PCIE_CLIENT_LINK_TRAIN_ENABLE		HWORD_SET_BIT(0x0002)
> > +#define   PCIE_CLIENT_LINK_TRAIN_DISABLE	HWORD_CLR_BIT(0x0002)
> > +#define   PCIE_CLIENT_ARI_ENABLE		HWORD_SET_BIT(0x0008)
> > +#define   PCIE_CLIENT_CONF_LANE_NUM(x)		HWORD_UPDATE(0x0030, ENCODE_LANES(x))
> > +#define   PCIE_CLIENT_MODE_RC			HWORD_SET_BIT(0x0040)
> > +#define   PCIE_CLIENT_MODE_EP			HWORD_CLR_BIT(0x0040)
> > +#define   PCIE_CLIENT_GEN_SEL_1			HWORD_CLR_BIT(0x0080)
> > +#define   PCIE_CLIENT_GEN_SEL_2			HWORD_SET_BIT(0x0080)
> >  #define PCIE_CLIENT_LEGACY_INT_CTRL	(PCIE_CLIENT_BASE + 0x0c)
> > -#define   PCIE_CLIENT_INT_IN_ASSERT		HIWORD_UPDATE_BIT(0x0002)
> > -#define   PCIE_CLIENT_INT_IN_DEASSERT		HIWORD_UPDATE(0x0002, 0)
> > -#define   PCIE_CLIENT_INT_PEND_ST_PEND		HIWORD_UPDATE_BIT(0x0001)
> > -#define   PCIE_CLIENT_INT_PEND_ST_NORMAL	HIWORD_UPDATE(0x0001, 0)
> > +#define   PCIE_CLIENT_INT_IN_ASSERT		HWORD_SET_BIT(0x0002)
> > +#define   PCIE_CLIENT_INT_IN_DEASSERT		HWORD_CLR_BIT(0x0002)
> > +#define   PCIE_CLIENT_INT_PEND_ST_PEND		HWORD_SET_BIT(0x0001)
> > +#define   PCIE_CLIENT_INT_PEND_ST_NORMAL	HWORD_CLR_BIT(0x0001)
> >  #define PCIE_CLIENT_SIDE_BAND_STATUS	(PCIE_CLIENT_BASE + 0x20)
> >  #define   PCIE_CLIENT_PHY_ST			BIT(12)
> >  #define PCIE_CLIENT_DEBUG_OUT_0		(PCIE_CLIENT_BASE + 0x3c)
> > 
> > -- 
> > 2.49.0
> > 

_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip

  reply	other threads:[~2025-06-12 19:52 UTC|newest]

Thread overview: 138+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-12 18:56 [PATCH 00/20] BYEWORD_UPDATE: unifying (most) HIWORD_UPDATE macros Nicolas Frattaroli
2025-06-12 18:56 ` Nicolas Frattaroli
2025-06-12 18:56 ` Nicolas Frattaroli
2025-06-12 18:56 ` [PATCH 01/20] bitfield: introduce HWORD_UPDATE bitfield macros Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 19:44   ` Jakub Kicinski
2025-06-12 19:44     ` Jakub Kicinski
2025-06-12 19:44     ` Jakub Kicinski
2025-06-12 19:50     ` Nicolas Frattaroli
2025-06-12 19:50       ` Nicolas Frattaroli
2025-06-12 19:50       ` Nicolas Frattaroli
2025-06-12 20:10       ` Yury Norov
2025-06-12 20:10         ` Yury Norov
2025-06-12 20:10         ` Yury Norov
2025-06-12 22:01         ` Jakub Kicinski
2025-06-12 22:01           ` Jakub Kicinski
2025-06-12 22:01           ` Jakub Kicinski
2025-06-13  8:51   ` Jani Nikula
2025-06-13  8:51     ` Jani Nikula
2025-06-13  8:51     ` Jani Nikula
2025-06-13 11:55     ` Nicolas Frattaroli
2025-06-13 11:55       ` Nicolas Frattaroli
2025-06-13 11:55       ` Nicolas Frattaroli
2025-06-13 12:28       ` Yury Norov
2025-06-13 12:28         ` Yury Norov
2025-06-13 12:28         ` Yury Norov
2025-06-13 14:59         ` Jakub Kicinski
2025-06-13 14:59           ` Jakub Kicinski
2025-06-13 14:59           ` Jakub Kicinski
2025-06-13 13:54   ` Robin Murphy
2025-06-13 13:54     ` Robin Murphy
2025-06-13 13:54     ` Robin Murphy
2025-06-13 14:52     ` Yury Norov
2025-06-13 14:52       ` Yury Norov
2025-06-13 14:52       ` Yury Norov
2025-06-16 12:27       ` Nicolas Frattaroli
2025-06-16 12:27         ` Nicolas Frattaroli
2025-06-16 12:27         ` Nicolas Frattaroli
2025-06-16 13:26         ` Jani Nikula
2025-06-16 13:26           ` Jani Nikula
2025-06-16 13:26           ` Jani Nikula
2025-06-12 18:56 ` [PATCH 02/20] mmc: dw_mmc-rockchip: switch to HWORD_UPDATE macro Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-16 13:29   ` Ulf Hansson
2025-06-16 13:29     ` Ulf Hansson
2025-06-16 13:29     ` Ulf Hansson
2025-06-12 18:56 ` [PATCH 03/20] soc: rockchip: grf: switch to HWORD_UPDATE_CONST macro Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 18:56 ` [PATCH 04/20] media: synopsys: hdmirx: replace macros with bitfield variants Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 18:56 ` [PATCH 05/20] drm/rockchip: lvds: switch to HWORD_UPDATE macro Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 18:56 ` [PATCH 06/20] phy: rockchip-emmc: " Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 18:56 ` [PATCH 07/20] drm/rockchip: dsi: switch to HWORD_UPDATE* macros Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 18:56 ` [PATCH 08/20] drm/rockchip: vop2: switch to HWORD_UPDATE macro Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-13  9:55   ` Cristian Ciocaltea
2025-06-13  9:55     ` Cristian Ciocaltea
2025-06-13  9:55     ` Cristian Ciocaltea
2025-06-12 18:56 ` [PATCH 09/20] phy: rockchip-samsung-dcphy: " Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 18:56 ` [PATCH 10/20] drm/rockchip: dw_hdmi_qp: " Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-13 10:08   ` Cristian Ciocaltea
2025-06-13 10:08     ` Cristian Ciocaltea
2025-06-13 10:08     ` Cristian Ciocaltea
2025-06-12 18:56 ` [PATCH 11/20] drm/rockchip: inno-hdmi: " Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 18:56 ` [PATCH 12/20] phy: rockchip-usb: " Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 18:56 ` [PATCH 13/20] drm/rockchip: dw_hdmi: switch to HWORD_UPDATE* macros Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-13 10:15   ` Cristian Ciocaltea
2025-06-13 10:15     ` Cristian Ciocaltea
2025-06-13 10:15     ` Cristian Ciocaltea
2025-06-12 18:56 ` [PATCH 14/20] ASoC: rockchip: i2s-tdm: switch to HWORD_UPDATE_CONST macro Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-13 11:12   ` Mark Brown
2025-06-13 11:12     ` Mark Brown
2025-06-13 11:12     ` Mark Brown
2025-06-12 18:56 ` [PATCH 15/20] net: stmmac: dwmac-rk: switch to HWORD_UPDATE macro Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 19:08   ` Andrew Lunn
2025-06-12 19:08     ` Andrew Lunn
2025-06-12 19:08     ` Andrew Lunn
2025-06-12 19:16     ` Nicolas Frattaroli
2025-06-12 19:16       ` Nicolas Frattaroli
2025-06-12 19:16       ` Nicolas Frattaroli
2025-06-12 18:56 ` [PATCH 16/20] PCI: rockchip: switch to HWORD_UPDATE* macros Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 19:37   ` Bjorn Helgaas
2025-06-12 19:37     ` Bjorn Helgaas
2025-06-12 19:37     ` Bjorn Helgaas
2025-06-12 19:52     ` Yury Norov [this message]
2025-06-12 19:52       ` Yury Norov
2025-06-12 19:52       ` Yury Norov
2025-06-12 18:56 ` [PATCH 17/20] PCI: dw-rockchip: switch to HWORD_UPDATE macro Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 19:38   ` Bjorn Helgaas
2025-06-12 19:38     ` Bjorn Helgaas
2025-06-12 19:38     ` Bjorn Helgaas
2025-06-13  9:45   ` Niklas Cassel
2025-06-13  9:45     ` Niklas Cassel
2025-06-13  9:45     ` Niklas Cassel
2025-06-13 12:08     ` Nicolas Frattaroli
2025-06-13 12:08       ` Nicolas Frattaroli
2025-06-13 12:08       ` Nicolas Frattaroli
2025-06-12 18:56 ` [PATCH 18/20] PM / devfreq: rockchip-dfi: " Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 18:56 ` [PATCH 19/20] clk: sp7021: " Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 18:56 ` [PATCH 20/20] phy: rockchip-pcie: " Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 18:56   ` Nicolas Frattaroli
2025-06-12 19:45 ` [PATCH 00/20] BYEWORD_UPDATE: unifying (most) HIWORD_UPDATE macros Yury Norov
2025-06-12 19:45   ` Yury Norov
2025-06-12 19:45   ` Yury Norov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aEsv6X5JSQkpmwvP@yury \
    --to=yury.norov@gmail.com \
    --cc=airlied@gmail.com \
    --cc=alexandre.torgue@foss.st.com \
    --cc=andrew+netdev@lunn.ch \
    --cc=andy.yan@rock-chips.com \
    --cc=bhelgaas@google.com \
    --cc=broonie@kernel.org \
    --cc=cw00.choi@samsung.com \
    --cc=davem@davemloft.net \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=edumazet@google.com \
    --cc=frattaroli.nicolas@gmail.com \
    --cc=heiko@sntech.de \
    --cc=helgaas@kernel.org \
    --cc=hjc@rock-chips.com \
    --cc=jh80.chung@samsung.com \
    --cc=justinstitt@google.com \
    --cc=kernel@collabora.com \
    --cc=kishon@kernel.org \
    --cc=kuba@kernel.org \
    --cc=kwilczynski@kernel.org \
    --cc=kyungmin.park@samsung.com \
    --cc=lgirdwood@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux-phy@lists.infradead.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=linux-sound@vger.kernel.org \
    --cc=linux-stm32@st-md-mailman.stormreply.com \
    --cc=linux@rasmusvillemoes.dk \
    --cc=llvm@lists.linux.dev \
    --cc=lpieralisi@kernel.org \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=mani@kernel.org \
    --cc=mchehab@kernel.org \
    --cc=mcoquelin.stm32@gmail.com \
    --cc=morbo@google.com \
    --cc=mripard@kernel.org \
    --cc=mturquette@baylibre.com \
    --cc=myungjoo.ham@samsung.com \
    --cc=nathan@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=nick.desaulniers+lkml@gmail.com \
    --cc=nicolas.frattaroli@collabora.com \
    --cc=pabeni@redhat.com \
    --cc=perex@perex.cz \
    --cc=qinjian@cqplus1.com \
    --cc=robh@kernel.org \
    --cc=sboyd@kernel.org \
    --cc=shawn.lin@rock-chips.com \
    --cc=shreeya.patel@collabora.com \
    --cc=simona@ffwll.ch \
    --cc=tiwai@suse.com \
    --cc=tzimmermann@suse.de \
    --cc=ulf.hansson@linaro.org \
    --cc=vkoul@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.