From: Maxime Chevallier <maxime.chevallier@bootlin.com>
To: Serge Semin <fancer.lancer@gmail.com>
Cc: Jose Abreu <Jose.Abreu@synopsys.com>,
Andrew Lunn <andrew@lunn.ch>, Conor Dooley <conor+dt@kernel.org>,
Tomer Maimon <tmaimon77@gmail.com>,
devicetree@vger.kernel.org, netdev@vger.kernel.org,
openbmc@lists.ozlabs.org,
Alexandre Torgue <alexandre.torgue@foss.st.com>,
Rob Herring <robh+dt@kernel.org>,
Russell King <linux@armlinux.org.uk>,
Eric Dumazet <edumazet@google.com>,
Jose Abreu <joabreu@synopsys.com>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
"David S. Miller" <davem@davemloft.net>,
linux-kernel@vger.kernel.org,
Heiner Kallweit <hkallweit1@gmail.com>
Subject: Re: [PATCH net-next 09/16] net: mdio: Add Synopsys DW XPCS management interface support
Date: Tue, 5 Dec 2023 13:32:05 +0100 [thread overview]
Message-ID: <20231205133205.3309ab91@device.home> (raw)
In-Reply-To: <20231205103559.9605-10-fancer.lancer@gmail.com>
Hi Serge,
On Tue, 5 Dec 2023 13:35:30 +0300
Serge Semin <fancer.lancer@gmail.com> wrote:
> Synopsys DesignWare XPCS IP-core can be synthesized with the device CSRs
> being accessible over MCI or APB3 interface instead of the MDIO bus (see
> the CSR_INTERFACE HDL parameter). Thus all the PCS registers can be just
> memory mapped and be a subject of standard MMIO operations of course
> taking into account the way the Clause C45 CSRs mapping is defined. This
> commit is about adding a device driver for the DW XPCS Management
> Interface platform device and registering it in the framework of the
> kernel MDIO subsystem.
>
> DW XPCS platform device is supposed to be described by the respective
> compatible string "snps,dw-xpcs-mi", CSRs memory space and optional
> peripheral bus clock source. Note depending on the INDIRECT_ACCESS DW XPCS
> IP-core synthesize parameter the memory-mapped reg-space can be
> represented as either directly or indirectly mapped Clause 45 space. In
> the former case the particular address is determined based on the MMD
> device and the registers offset (5 + 16 bits all together) within the
> device reg-space. In the later case there is only 256 lower address bits
> are utilized for the registers mapping. The upper bits are supposed to be
> written into the respective viewport CSR in order to reach the entire C45
> space.
Too bad the mdio-regmap driver can't be re-used here, it would deal
with reg width for you, for example. I guess the main reason would be
the direct vs indirect accesses ?
I do have a comment tough :
[...]
> +static inline ptrdiff_t dw_xpcs_mmio_addr_format(int dev, int reg)
> +{
> + return FIELD_PREP(0x1f0000, dev) | FIELD_PREP(0xffff, reg);
> +}
> +
> +static inline u16 dw_xpcs_mmio_addr_page(ptrdiff_t csr)
> +{
> + return FIELD_GET(0x1fff00, csr);
> +}
> +
> +static inline ptrdiff_t dw_xpcs_mmio_addr_offset(ptrdiff_t csr)
> +{
> + return FIELD_GET(0xff, csr);
> +}
You shouldn't use inline in C files, only in headers.
Maxime
WARNING: multiple messages have this Message-ID (diff)
From: Maxime Chevallier <maxime.chevallier@bootlin.com>
To: Serge Semin <fancer.lancer@gmail.com>
Cc: Andrew Lunn <andrew@lunn.ch>,
Heiner Kallweit <hkallweit1@gmail.com>,
Russell King <linux@armlinux.org.uk>,
Alexandre Torgue <alexandre.torgue@foss.st.com>,
Jose Abreu <joabreu@synopsys.com>,
Jose Abreu <Jose.Abreu@synopsys.com>,
Tomer Maimon <tmaimon77@gmail.com>,
Rob Herring <robh+dt@kernel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
Conor Dooley <conor+dt@kernel.org>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
openbmc@lists.ozlabs.org, netdev@vger.kernel.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH net-next 09/16] net: mdio: Add Synopsys DW XPCS management interface support
Date: Tue, 5 Dec 2023 13:32:05 +0100 [thread overview]
Message-ID: <20231205133205.3309ab91@device.home> (raw)
In-Reply-To: <20231205103559.9605-10-fancer.lancer@gmail.com>
Hi Serge,
On Tue, 5 Dec 2023 13:35:30 +0300
Serge Semin <fancer.lancer@gmail.com> wrote:
> Synopsys DesignWare XPCS IP-core can be synthesized with the device CSRs
> being accessible over MCI or APB3 interface instead of the MDIO bus (see
> the CSR_INTERFACE HDL parameter). Thus all the PCS registers can be just
> memory mapped and be a subject of standard MMIO operations of course
> taking into account the way the Clause C45 CSRs mapping is defined. This
> commit is about adding a device driver for the DW XPCS Management
> Interface platform device and registering it in the framework of the
> kernel MDIO subsystem.
>
> DW XPCS platform device is supposed to be described by the respective
> compatible string "snps,dw-xpcs-mi", CSRs memory space and optional
> peripheral bus clock source. Note depending on the INDIRECT_ACCESS DW XPCS
> IP-core synthesize parameter the memory-mapped reg-space can be
> represented as either directly or indirectly mapped Clause 45 space. In
> the former case the particular address is determined based on the MMD
> device and the registers offset (5 + 16 bits all together) within the
> device reg-space. In the later case there is only 256 lower address bits
> are utilized for the registers mapping. The upper bits are supposed to be
> written into the respective viewport CSR in order to reach the entire C45
> space.
Too bad the mdio-regmap driver can't be re-used here, it would deal
with reg width for you, for example. I guess the main reason would be
the direct vs indirect accesses ?
I do have a comment tough :
[...]
> +static inline ptrdiff_t dw_xpcs_mmio_addr_format(int dev, int reg)
> +{
> + return FIELD_PREP(0x1f0000, dev) | FIELD_PREP(0xffff, reg);
> +}
> +
> +static inline u16 dw_xpcs_mmio_addr_page(ptrdiff_t csr)
> +{
> + return FIELD_GET(0x1fff00, csr);
> +}
> +
> +static inline ptrdiff_t dw_xpcs_mmio_addr_offset(ptrdiff_t csr)
> +{
> + return FIELD_GET(0xff, csr);
> +}
You shouldn't use inline in C files, only in headers.
Maxime
next prev parent reply other threads:[~2023-12-06 10:18 UTC|newest]
Thread overview: 146+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-05 10:35 [PATCH net-next 00/16] net: pcs: xpcs: Add memory-based management iface support Serge Semin
2023-12-05 10:35 ` Serge Semin
2023-12-05 10:35 ` [PATCH net-next 01/16] net: pcs: xpcs: Drop sentinel entry from 2500basex ifaces list Serge Semin
2023-12-05 10:35 ` Serge Semin
2023-12-05 11:24 ` Vladimir Oltean
2023-12-05 11:24 ` Vladimir Oltean
2023-12-05 11:39 ` Serge Semin
2023-12-05 11:39 ` Serge Semin
2023-12-05 10:35 ` [PATCH net-next 02/16] net: pcs: xpcs: Drop redundant workqueue.h include directive Serge Semin
2023-12-05 10:35 ` Serge Semin
2023-12-05 13:34 ` Andrew Lunn
2023-12-05 13:34 ` Andrew Lunn
2023-12-05 10:35 ` [PATCH net-next 03/16] net: pcs: xpcs: Return EINVAL in the internal methods Serge Semin
2023-12-05 10:35 ` Serge Semin
2023-12-05 13:34 ` Andrew Lunn
2023-12-05 13:34 ` Andrew Lunn
2023-12-05 10:35 ` [PATCH net-next 04/16] net: pcs: xpcs: Explicitly return error on caps validation Serge Semin
2023-12-05 10:35 ` Serge Semin
2023-12-05 10:35 ` [PATCH net-next 05/16] net: pcs: xpcs: Move native device ID macro to linux/pcs/pcs-xpcs.h Serge Semin
2023-12-05 10:35 ` Serge Semin
2023-12-05 10:45 ` Russell King (Oracle)
2023-12-05 10:45 ` Russell King (Oracle)
2023-12-05 11:14 ` Serge Semin
2023-12-05 11:14 ` Serge Semin
2023-12-05 11:22 ` Russell King (Oracle)
2023-12-05 11:22 ` Russell King (Oracle)
2023-12-05 11:48 ` Serge Semin
2023-12-05 11:48 ` Serge Semin
2023-12-05 11:27 ` Vladimir Oltean
2023-12-05 11:27 ` Vladimir Oltean
2023-12-05 11:49 ` Serge Semin
2023-12-05 11:49 ` Serge Semin
2023-12-05 10:35 ` [PATCH net-next 06/16] net: pcs: xpcs: Avoid creating dummy XPCS MDIO device Serge Semin
2023-12-05 10:35 ` Serge Semin
2023-12-05 10:49 ` Russell King (Oracle)
2023-12-05 10:49 ` Russell King (Oracle)
2023-12-05 11:31 ` Serge Semin
2023-12-05 11:31 ` Serge Semin
2023-12-05 13:31 ` Russell King (Oracle)
2023-12-05 13:31 ` Russell King (Oracle)
2023-12-05 13:52 ` Andrew Lunn
2023-12-05 13:52 ` Andrew Lunn
2023-12-05 14:50 ` Russell King (Oracle)
2023-12-05 14:50 ` Russell King (Oracle)
2023-12-12 13:52 ` Serge Semin
2023-12-12 13:52 ` Serge Semin
2023-12-05 11:52 ` Vladimir Oltean
2023-12-05 11:52 ` Vladimir Oltean
2023-12-13 15:27 ` Serge Semin
2023-12-13 15:27 ` Serge Semin
2023-12-19 15:48 ` Serge Semin
2023-12-19 15:48 ` Serge Semin
2023-12-19 16:28 ` Vladimir Oltean
2023-12-19 16:28 ` Vladimir Oltean
2023-12-19 21:48 ` Serge Semin
2023-12-19 21:48 ` Serge Semin
2023-12-05 13:46 ` Russell King (Oracle)
2023-12-05 13:46 ` Russell King (Oracle)
2023-12-05 14:54 ` Russell King (Oracle)
2023-12-05 14:54 ` Russell King (Oracle)
2023-12-12 15:26 ` Serge Semin
2023-12-12 15:26 ` Serge Semin
2023-12-12 19:06 ` Russell King (Oracle)
2023-12-12 19:06 ` Russell King (Oracle)
2023-12-13 15:47 ` Serge Semin
2023-12-13 15:47 ` Serge Semin
2023-12-13 0:01 ` Serge Semin
2023-12-13 0:01 ` Serge Semin
2023-12-13 16:32 ` Russell King (Oracle)
2023-12-13 16:32 ` Russell King (Oracle)
2023-12-14 14:19 ` Serge Semin
2023-12-14 14:19 ` Serge Semin
2023-12-05 10:35 ` [PATCH net-next 07/16] net: pcs: xpcs: Split up xpcs_create() content to sub-functions Serge Semin
2023-12-05 10:35 ` Serge Semin
2023-12-05 10:35 ` [PATCH net-next 08/16] dt-bindings: net: Add Synopsys DW xPCS bindings Serge Semin
2023-12-05 10:35 ` Serge Semin
2023-12-14 17:40 ` Rob Herring
2023-12-14 17:40 ` Rob Herring
2023-12-14 21:27 ` Serge Semin
2023-12-14 21:27 ` Serge Semin
2023-12-05 10:35 ` [PATCH net-next 09/16] net: mdio: Add Synopsys DW XPCS management interface support Serge Semin
2023-12-05 10:35 ` Serge Semin
2023-12-05 12:32 ` Maxime Chevallier [this message]
2023-12-05 12:32 ` Maxime Chevallier
2023-12-06 16:48 ` Serge Semin
2023-12-06 16:48 ` Serge Semin
2023-12-06 17:01 ` Andrew Lunn
2023-12-06 17:01 ` Andrew Lunn
2023-12-07 13:35 ` Serge Semin
2023-12-07 13:35 ` Serge Semin
2023-12-07 14:02 ` Russell King (Oracle)
2023-12-07 14:02 ` Russell King (Oracle)
2023-12-07 14:54 ` Andrew Lunn
2023-12-07 14:54 ` Andrew Lunn
2023-12-08 16:07 ` Serge Semin
2023-12-08 16:07 ` Serge Semin
2023-12-05 10:35 ` [PATCH net-next 10/16] net: pcs: xpcs: Add generic DW XPCS MDIO-device support Serge Semin
2023-12-05 10:35 ` Serge Semin
2023-12-05 11:13 ` Vladimir Oltean
2023-12-05 11:13 ` Vladimir Oltean
2023-12-05 11:35 ` Serge Semin
2023-12-05 11:35 ` Serge Semin
2023-12-05 12:23 ` Vladimir Oltean
2023-12-05 12:23 ` Vladimir Oltean
2023-12-08 14:11 ` Serge Semin
2023-12-08 14:11 ` Serge Semin
2023-12-08 16:33 ` Vladimir Oltean
2023-12-08 16:33 ` Vladimir Oltean
2023-12-14 11:54 ` Serge Semin
2023-12-14 11:54 ` Serge Semin
2023-12-14 12:00 ` Vladimir Oltean
2023-12-14 12:00 ` Vladimir Oltean
2023-12-14 12:28 ` Serge Semin
2023-12-14 12:28 ` Serge Semin
2023-12-05 10:35 ` [PATCH net-next 11/16] net: pcs: xpcs: Change xpcs_create_mdiodev() suffix to "byaddr" Serge Semin
2023-12-05 10:35 ` Serge Semin
2023-12-05 10:35 ` Serge Semin
2023-12-05 23:03 ` kernel test robot
2023-12-05 23:03 ` kernel test robot
2023-12-05 23:03 ` kernel test robot
2023-12-07 14:37 ` Serge Semin
2023-12-07 14:37 ` Serge Semin
2023-12-07 14:37 ` Serge Semin
2023-12-06 0:29 ` kernel test robot
2023-12-06 0:29 ` kernel test robot
2023-12-06 0:29 ` kernel test robot
2023-12-05 10:35 ` [PATCH net-next 12/16] net: pcs: xpcs: Add xpcs_create_bynode() method Serge Semin
2023-12-05 10:35 ` Serge Semin
2023-12-05 10:35 ` [PATCH net-next 13/16] net: stmmac: intel: Register generic MDIO device Serge Semin
2023-12-05 10:35 ` Serge Semin
2023-12-05 10:35 ` Serge Semin
2023-12-06 0:19 ` kernel test robot
2023-12-06 0:19 ` kernel test robot
2023-12-06 0:19 ` kernel test robot
2023-12-07 14:47 ` Serge Semin
2023-12-07 14:47 ` Serge Semin
2023-12-07 14:47 ` Serge Semin
2023-12-05 10:35 ` [PATCH net-next 14/16] net: stmmac: Pass netdev to XPCS setup function Serge Semin
2023-12-05 10:35 ` Serge Semin
2023-12-05 10:35 ` Serge Semin
2023-12-05 10:35 ` [PATCH net-next 15/16] net: stmmac: Add dedicated XPCS cleanup method Serge Semin
2023-12-05 10:35 ` Serge Semin
2023-12-05 10:35 ` Serge Semin
2023-12-05 10:35 ` [PATCH net-next 16/16] net: stmmac: Add externally detected DW XPCS support Serge Semin
2023-12-05 10:35 ` Serge Semin
2023-12-05 10:35 ` Serge Semin
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=20231205133205.3309ab91@device.home \
--to=maxime.chevallier@bootlin.com \
--cc=Jose.Abreu@synopsys.com \
--cc=alexandre.torgue@foss.st.com \
--cc=andrew@lunn.ch \
--cc=conor+dt@kernel.org \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=edumazet@google.com \
--cc=fancer.lancer@gmail.com \
--cc=hkallweit1@gmail.com \
--cc=joabreu@synopsys.com \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=netdev@vger.kernel.org \
--cc=openbmc@lists.ozlabs.org \
--cc=pabeni@redhat.com \
--cc=robh+dt@kernel.org \
--cc=tmaimon77@gmail.com \
/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.