* [PATCH v1 0/3] This series adds ethernet support for RPi4. @ 2019-10-11 18:48 matthias.bgg 2019-10-11 18:48 ` [PATCH v1 1/3] dt-bindings: net: bcmgenet add property for max DMA burst size matthias.bgg 2019-10-11 18:48 ` [PATCH v1 2/3] net: bcmgenet: use optional max DMA burst size property matthias.bgg 0 siblings, 2 replies; 5+ messages in thread From: matthias.bgg @ 2019-10-11 18:48 UTC (permalink / raw) To: Florian Fainelli, David S . Miller Cc: Nicolas Saenz Julienne, Matthias Brugger, linux-rpi-kernel, linux-arm-kernel, Stefan Wahren, Matthias Brugger, Doug Berger, Eric Anholt, Mark Rutland, Rob Herring, bcm-kernel-feedback-list, devicetree, linux-kernel, netdev From: Matthias Brugger <mbrugger@suse.com> Raspberry Pi 4 uses the broadcom genet chip in version five. This chip has a dma controller integrated. Up to now the maximal burst size was hard-coded to 0x10. But it turns out that Raspberry Pi 4 does only work with the smaller maximal burst size of 0x8. This series adds a new optional property to the driver, dma-burst-sz. The very same property is already used by another drivers in the kernel. Matthias Brugger (3): dt-bindings: net: bcmgenet add property for max DMA burst size net: bcmgenet: use optional max DMA burst size property ARM: dts: bcm2711: Enable GENET support for the RPi4 .../devicetree/bindings/net/brcm,bcmgenet.txt | 2 ++ arch/arm/boot/dts/bcm2711-rpi-4-b.dts | 22 +++++++++++++++++++ arch/arm/boot/dts/bcm2711.dtsi | 18 +++++++++++++++ .../net/ethernet/broadcom/genet/bcmgenet.c | 13 +++++++++-- .../net/ethernet/broadcom/genet/bcmgenet.h | 1 + 5 files changed, 54 insertions(+), 2 deletions(-) -- 2.23.0 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v1 1/3] dt-bindings: net: bcmgenet add property for max DMA burst size 2019-10-11 18:48 [PATCH v1 0/3] This series adds ethernet support for RPi4 matthias.bgg @ 2019-10-11 18:48 ` matthias.bgg 2019-10-11 19:07 ` Florian Fainelli 2019-10-11 18:48 ` [PATCH v1 2/3] net: bcmgenet: use optional max DMA burst size property matthias.bgg 1 sibling, 1 reply; 5+ messages in thread From: matthias.bgg @ 2019-10-11 18:48 UTC (permalink / raw) To: Florian Fainelli, David S . Miller Cc: Nicolas Saenz Julienne, Matthias Brugger, linux-rpi-kernel, linux-arm-kernel, Stefan Wahren, Matthias Brugger, Mark Rutland, Rob Herring, devicetree, linux-kernel, netdev From: Matthias Brugger <mbrugger@suse.com> The maximal usable DMA burst size can vary in different SoCs. Add a optional property to configure the DMA channels properly. Signed-off-by: Matthias Brugger <mbrugger@suse.com> --- Documentation/devicetree/bindings/net/brcm,bcmgenet.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/devicetree/bindings/net/brcm,bcmgenet.txt b/Documentation/devicetree/bindings/net/brcm,bcmgenet.txt index 3956af1d30f3..10a7169ec902 100644 --- a/Documentation/devicetree/bindings/net/brcm,bcmgenet.txt +++ b/Documentation/devicetree/bindings/net/brcm,bcmgenet.txt @@ -30,6 +30,8 @@ Optional properties: See Documentation/devicetree/bindings/net/fixed-link.txt for information on the property specifics +- dma-burst-sz: Maximal length of a burst. + Required child nodes: - mdio bus node: this node should always be present regardless of the PHY -- 2.23.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v1 1/3] dt-bindings: net: bcmgenet add property for max DMA burst size 2019-10-11 18:48 ` [PATCH v1 1/3] dt-bindings: net: bcmgenet add property for max DMA burst size matthias.bgg @ 2019-10-11 19:07 ` Florian Fainelli 0 siblings, 0 replies; 5+ messages in thread From: Florian Fainelli @ 2019-10-11 19:07 UTC (permalink / raw) To: matthias.bgg, David S . Miller Cc: Nicolas Saenz Julienne, linux-rpi-kernel, linux-arm-kernel, Stefan Wahren, Matthias Brugger, Mark Rutland, Rob Herring, devicetree, linux-kernel, netdev On 10/11/19 11:48 AM, matthias.bgg@kernel.org wrote: > From: Matthias Brugger <mbrugger@suse.com> > > The maximal usable DMA burst size can vary in different SoCs. > Add a optional property to configure the DMA channels properly. > > Signed-off-by: Matthias Brugger <mbrugger@suse.com> There are enough differences in the integration of GENET in 2711 (versus any other STB chip where it has been used) that a brcm,bcm2711-genet-v5 compatible string would be in order. From there, you can derive the DMA burst size without using additional properties. -- Florian ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v1 2/3] net: bcmgenet: use optional max DMA burst size property 2019-10-11 18:48 [PATCH v1 0/3] This series adds ethernet support for RPi4 matthias.bgg 2019-10-11 18:48 ` [PATCH v1 1/3] dt-bindings: net: bcmgenet add property for max DMA burst size matthias.bgg @ 2019-10-11 18:48 ` matthias.bgg 2019-10-11 19:01 ` Nicolas Saenz Julienne 1 sibling, 1 reply; 5+ messages in thread From: matthias.bgg @ 2019-10-11 18:48 UTC (permalink / raw) To: Florian Fainelli, David S . Miller Cc: Nicolas Saenz Julienne, Matthias Brugger, linux-rpi-kernel, linux-arm-kernel, Stefan Wahren, Matthias Brugger, Doug Berger, bcm-kernel-feedback-list, linux-kernel, netdev From: Matthias Brugger <mbrugger@suse.com> Depending on the HW, the maximal usable DMA burst size can vary. If not set accordingly a timeout in the transmit queue happens and no package can be sent. Read to optional max-burst-sz property, if not present, fallback to the standard value. Signed-off-by: Matthias Brugger <mbrugger@suse.com> --- drivers/net/ethernet/broadcom/genet/bcmgenet.c | 13 +++++++++++-- drivers/net/ethernet/broadcom/genet/bcmgenet.h | 1 + 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c index 12cb77ef1081..a7bb822a6d83 100644 --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c @@ -2576,7 +2576,8 @@ static int bcmgenet_init_dma(struct bcmgenet_priv *priv) } /* Init rDma */ - bcmgenet_rdma_writel(priv, DMA_MAX_BURST_LENGTH, DMA_SCB_BURST_SIZE); + bcmgenet_rdma_writel(priv, priv->dma_max_burst_length, + DMA_SCB_BURST_SIZE); /* Initialize Rx queues */ ret = bcmgenet_init_rx_queues(priv->dev); @@ -2589,7 +2590,8 @@ static int bcmgenet_init_dma(struct bcmgenet_priv *priv) } /* Init tDma */ - bcmgenet_tdma_writel(priv, DMA_MAX_BURST_LENGTH, DMA_SCB_BURST_SIZE); + bcmgenet_tdma_writel(priv, priv->dma_max_burst_length, + DMA_SCB_BURST_SIZE); /* Initialize Tx queues */ bcmgenet_init_tx_queues(priv->dev); @@ -3522,6 +3524,13 @@ static int bcmgenet_probe(struct platform_device *pdev) clk_prepare_enable(priv->clk); + if (dn) { + of_property_read_u32(dn, "dma-burst-sz", + &priv->dma_max_burst_length); + } else { + priv->dma_max_burst_length = DMA_MAX_BURST_LENGTH; + } + bcmgenet_set_hw_params(priv); /* Mii wait queue */ diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.h b/drivers/net/ethernet/broadcom/genet/bcmgenet.h index 4a8fc03d82fd..897f356eb376 100644 --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.h +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.h @@ -663,6 +663,7 @@ struct bcmgenet_priv { bool crc_fwd_en; unsigned int dma_rx_chk_bit; + unsigned int dma_max_burst_length; u32 msg_enable; -- 2.23.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v1 2/3] net: bcmgenet: use optional max DMA burst size property 2019-10-11 18:48 ` [PATCH v1 2/3] net: bcmgenet: use optional max DMA burst size property matthias.bgg @ 2019-10-11 19:01 ` Nicolas Saenz Julienne 0 siblings, 0 replies; 5+ messages in thread From: Nicolas Saenz Julienne @ 2019-10-11 19:01 UTC (permalink / raw) To: matthias.bgg, Florian Fainelli, David S . Miller Cc: linux-rpi-kernel, linux-arm-kernel, Stefan Wahren, Matthias Brugger, Doug Berger, bcm-kernel-feedback-list, linux-kernel, netdev [-- Attachment #1: Type: text/plain, Size: 2816 bytes --] Hi Matthias! One small comment, I'll test everything later on. On Fri, 2019-10-11 at 20:48 +0200, matthias.bgg@kernel.org wrote: > From: Matthias Brugger <mbrugger@suse.com> > > Depending on the HW, the maximal usable DMA burst size can vary. > If not set accordingly a timeout in the transmit queue happens and no > package can be sent. Read to optional max-burst-sz property, if not > present, fallback to the standard value. > > Signed-off-by: Matthias Brugger <mbrugger@suse.com> > --- > > drivers/net/ethernet/broadcom/genet/bcmgenet.c | 13 +++++++++++-- > drivers/net/ethernet/broadcom/genet/bcmgenet.h | 1 + > 2 files changed, 12 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c > b/drivers/net/ethernet/broadcom/genet/bcmgenet.c > index 12cb77ef1081..a7bb822a6d83 100644 > --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c > +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c > @@ -2576,7 +2576,8 @@ static int bcmgenet_init_dma(struct bcmgenet_priv *priv) > } > > /* Init rDma */ > - bcmgenet_rdma_writel(priv, DMA_MAX_BURST_LENGTH, DMA_SCB_BURST_SIZE); > + bcmgenet_rdma_writel(priv, priv->dma_max_burst_length, > + DMA_SCB_BURST_SIZE); > > /* Initialize Rx queues */ > ret = bcmgenet_init_rx_queues(priv->dev); > @@ -2589,7 +2590,8 @@ static int bcmgenet_init_dma(struct bcmgenet_priv *priv) > } > > /* Init tDma */ > - bcmgenet_tdma_writel(priv, DMA_MAX_BURST_LENGTH, DMA_SCB_BURST_SIZE); > + bcmgenet_tdma_writel(priv, priv->dma_max_burst_length, > + DMA_SCB_BURST_SIZE); > > /* Initialize Tx queues */ > bcmgenet_init_tx_queues(priv->dev); > @@ -3522,6 +3524,13 @@ static int bcmgenet_probe(struct platform_device *pdev) > > clk_prepare_enable(priv->clk); > > + if (dn) { > + of_property_read_u32(dn, "dma-burst-sz", > + &priv->dma_max_burst_length); You set the 'dma-burst-sz' binding as optional, though this assumes that if a device node is available dma_max_burst_length comes from the device tree. I think you should check of_property_read_u32's return value and on failure default to DMA_MAX_BURST_LENGTH. > + } else { > + priv->dma_max_burst_length = DMA_MAX_BURST_LENGTH; > + } > + > bcmgenet_set_hw_params(priv); > > /* Mii wait queue */ > diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.h > b/drivers/net/ethernet/broadcom/genet/bcmgenet.h > index 4a8fc03d82fd..897f356eb376 100644 > --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.h > +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.h > @@ -663,6 +663,7 @@ struct bcmgenet_priv { > bool crc_fwd_en; > > unsigned int dma_rx_chk_bit; > + unsigned int dma_max_burst_length; > > u32 msg_enable; > Regards, Nicolas [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 488 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2019-10-11 19:08 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-10-11 18:48 [PATCH v1 0/3] This series adds ethernet support for RPi4 matthias.bgg 2019-10-11 18:48 ` [PATCH v1 1/3] dt-bindings: net: bcmgenet add property for max DMA burst size matthias.bgg 2019-10-11 19:07 ` Florian Fainelli 2019-10-11 18:48 ` [PATCH v1 2/3] net: bcmgenet: use optional max DMA burst size property matthias.bgg 2019-10-11 19:01 ` Nicolas Saenz Julienne
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).