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
next prev parent 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.