Message ID | 1681863018-28006-1-git-send-email-justinpopo6@gmail.com |
---|---|
Headers | show |
Series | Brcm ASP 2.0 Ethernet controller | expand |
On Fri, Apr 21, 2023 at 12:29 AM Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> wrote: > > On 19/04/2023 02:10, Justin Chen wrote: > > From: Florian Fainelli <f.fainelli@gmail.com> > > > > Add a binding document for the Broadcom ASP 2.0 Ethernet > > controller. > > > > Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> > > Signed-off-by: Justin Chen <justinpopo6@gmail.com> > > --- > > .../devicetree/bindings/net/brcm,asp-v2.0.yaml | 146 +++++++++++++++++++++ > > 1 file changed, 146 insertions(+) > > create mode 100644 Documentation/devicetree/bindings/net/brcm,asp-v2.0.yaml > > > > diff --git a/Documentation/devicetree/bindings/net/brcm,asp-v2.0.yaml b/Documentation/devicetree/bindings/net/brcm,asp-v2.0.yaml > > new file mode 100644 > > index 000000000000..3817d722244f > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/net/brcm,asp-v2.0.yaml > > @@ -0,0 +1,146 @@ > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > > +%YAML 1.2 > > +--- > > +$id: "http://devicetree.org/schemas/net/brcm,asp-v2.0.yaml#" > > +$schema: "http://devicetree.org/meta-schemas/core.yaml#" > > Drop quotes. > > > + > > +title: Broadcom ASP 2.0 Ethernet controller > > + > > +maintainers: > > + - Justin Chen <justinpopo6@gmail.com> > > + - Florian Fainelli <f.fainelli@gmail.com> > > + > > +description: Broadcom Ethernet controller first introduced with 72165 > > + > > +properties: > > + '#address-cells': > > + const: 1 > > + '#size-cells': > > + const: 1 > > + > > + compatible: > > + enum: > > + - brcm,bcm72165-asp-v2.0 > > + - brcm,asp-v2.0 > > + - brcm,asp-v2.1 > > Is this part of SoC? If so, then SoC compatibles are preferred, not IP > block versions. We have the same IP on different chips. So no, it isn't tied to a specific SoC. > > > + > > + reg: > > + maxItems: 1 > > + description: ASP registers > > Drop description. > > > + > > + ranges: true > > + > > + interrupts: > > + minItems: 1 > > + items: > > + - description: RX/TX interrupt > > + - description: Port 0 Wake-on-LAN > > + - description: Port 1 Wake-on-LAN > > + > > + clocks: > > + $ref: /schemas/types.yaml#/definitions/phandle-array > > Drop. > > > + description: Phandle to clock controller > > Drop. > > Instead maxItems. > > > + > > + clock-names: > > + const: sw_asp > > Drop entire property. > > > + > > + ethernet-ports: > > + type: object > > + properties: > > + '#address-cells': > > + const: 1 > > + '#size-cells': > > + const: 0 > > Missing additionalProperties:false. Look at existing bindings how it is > done. > > > + > > + patternProperties: > > + "^port@[0-9]+$": > > + type: object > > + > > + $ref: ethernet-controller.yaml# > > + > > + properties: > > + reg: > > + maxItems: 1 > > + description: Port number > > + > > + channel: > > + maxItems: 1 > > + description: ASP channel number > > + > > + required: > > + - reg > > + - channel > > + > > +patternProperties: > > + "^mdio@[0-9a-f]+$": > > + type: object > > + $ref: "brcm,unimac-mdio.yaml" > > + > > + description: > > + ASP internal UniMAC MDIO bus > > + > > +required: > > + - compatible > > + - reg > > + - interrupts > > + - clocks > > + - clock-names > > + - ranges > > + > > +additionalProperties: false > > + > > +examples: > > + - | > > + asp@9c00000 { > > Node names should be generic. > https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation > > > + compatible = "brcm,asp-v2.0"; > > + reg = <0x9c00000 0x1fff14>; > > + interrupts = <0x0 0x33 0x4>; > > Use proper defines for flags. Not understanding this comment. Can you elaborate? Thanks, Justin > > > + ranges; > > + clocks = <&scmi 14>; > > + clock-names = "sw_asp"; > > + #address-cells = <1>; > > + #size-cells = <1>; > > > Best regards, > Krzysztof >
On 4/24/23 11:14, Justin Chen wrote: > On Fri, Apr 21, 2023 at 12:29 AM Krzysztof Kozlowski > <krzysztof.kozlowski@linaro.org> wrote: >> >> On 19/04/2023 02:10, Justin Chen wrote: >>> From: Florian Fainelli <f.fainelli@gmail.com> >>> >>> Add a binding document for the Broadcom ASP 2.0 Ethernet >>> controller. >>> >>> Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> >>> Signed-off-by: Justin Chen <justinpopo6@gmail.com> >>> --- >>> .../devicetree/bindings/net/brcm,asp-v2.0.yaml | 146 +++++++++++++++++++++ >>> 1 file changed, 146 insertions(+) >>> create mode 100644 Documentation/devicetree/bindings/net/brcm,asp-v2.0.yaml >>> >>> diff --git a/Documentation/devicetree/bindings/net/brcm,asp-v2.0.yaml b/Documentation/devicetree/bindings/net/brcm,asp-v2.0.yaml >>> new file mode 100644 >>> index 000000000000..3817d722244f >>> --- /dev/null >>> +++ b/Documentation/devicetree/bindings/net/brcm,asp-v2.0.yaml >>> @@ -0,0 +1,146 @@ >>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) >>> +%YAML 1.2 >>> +--- >>> +$id: "http://devicetree.org/schemas/net/brcm,asp-v2.0.yaml#" >>> +$schema: "http://devicetree.org/meta-schemas/core.yaml#" >> >> Drop quotes. >> >>> + >>> +title: Broadcom ASP 2.0 Ethernet controller >>> + >>> +maintainers: >>> + - Justin Chen <justinpopo6@gmail.com> >>> + - Florian Fainelli <f.fainelli@gmail.com> >>> + >>> +description: Broadcom Ethernet controller first introduced with 72165 >>> + >>> +properties: >>> + '#address-cells': >>> + const: 1 >>> + '#size-cells': >>> + const: 1 >>> + >>> + compatible: >>> + enum: >>> + - brcm,bcm72165-asp-v2.0 >>> + - brcm,asp-v2.0 >>> + - brcm,asp-v2.1 >> >> Is this part of SoC? If so, then SoC compatibles are preferred, not IP >> block versions. > We have the same IP on different chips. So no, it isn't tied to a specific SoC. > >> >>> + >>> + reg: >>> + maxItems: 1 >>> + description: ASP registers >> >> Drop description. >> >>> + >>> + ranges: true >>> + >>> + interrupts: >>> + minItems: 1 >>> + items: >>> + - description: RX/TX interrupt >>> + - description: Port 0 Wake-on-LAN >>> + - description: Port 1 Wake-on-LAN >>> + >>> + clocks: >>> + $ref: /schemas/types.yaml#/definitions/phandle-array >> >> Drop. >> >>> + description: Phandle to clock controller >> >> Drop. >> >> Instead maxItems. >> >>> + >>> + clock-names: >>> + const: sw_asp >> >> Drop entire property. >> >>> + >>> + ethernet-ports: >>> + type: object >>> + properties: >>> + '#address-cells': >>> + const: 1 >>> + '#size-cells': >>> + const: 0 >> >> Missing additionalProperties:false. Look at existing bindings how it is >> done. >> >>> + >>> + patternProperties: >>> + "^port@[0-9]+$": >>> + type: object >>> + >>> + $ref: ethernet-controller.yaml# >>> + >>> + properties: >>> + reg: >>> + maxItems: 1 >>> + description: Port number >>> + >>> + channel: >>> + maxItems: 1 >>> + description: ASP channel number >>> + >>> + required: >>> + - reg >>> + - channel >>> + >>> +patternProperties: >>> + "^mdio@[0-9a-f]+$": >>> + type: object >>> + $ref: "brcm,unimac-mdio.yaml" >>> + >>> + description: >>> + ASP internal UniMAC MDIO bus >>> + >>> +required: >>> + - compatible >>> + - reg >>> + - interrupts >>> + - clocks >>> + - clock-names >>> + - ranges >>> + >>> +additionalProperties: false >>> + >>> +examples: >>> + - | >>> + asp@9c00000 { >> >> Node names should be generic. >> https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation >> >>> + compatible = "brcm,asp-v2.0"; >>> + reg = <0x9c00000 0x1fff14>; >>> + interrupts = <0x0 0x33 0x4>; >> >> Use proper defines for flags. > Not understanding this comment. Can you elaborate? I believe Krzysztof would prefer that you use: interrupts = <GIC_SPI 0x33 IRQ_TYPE_LEVEL_HIGH> here, which would require using defined from include/dt-bindings/interrupt-controller/{arm-gic.h,irq.h}
On Wed, Apr 19, 2023 at 9:33 AM Florian Fainelli <f.fainelli@gmail.com> wrote: > > On 4/18/23 23:35, Heiner Kallweit wrote: > > On 19.04.2023 02:10, Justin Chen wrote: > >> Add support for the Broadcom ASP 2.0 Ethernet controller which is first > >> introduced with 72165. This controller features two distinct Ethernet > >> ports that can be independently operated. > >> > >> This patch supports: > [snip] > >> + intf->tx_spb_index = spb_index; > >> + intf->tx_spb_dma_valid = valid; > >> + bcmasp_intf_tx_write(intf, intf->tx_spb_dma_valid); > >> + > >> + if (tx_spb_ring_full(intf, MAX_SKB_FRAGS + 1)) > >> + netif_stop_queue(dev); > >> + > > > > Here it may be better to use the new macros from include/net/netdev_queues.h. > > It seems your code (together with the related part in tx_poll) doesn't consider > > the queue restart case. > > In addition you should check whether using READ_ONCE()/WRITE_ONCE() is needed, > > e.g. in ring_full(). > > Thanks Heiner. Can you trim the parts you are not quoting otherwise one > has to scroll all the way down to where you responded. Thanks! > -- > Florian > Hello Heiner, The implementation is a locked single queue xmit. Not sure how netdev_queues.h fits into the picture here. I believe I am handling the queue restart here. +static int bcmasp_tx_poll(struct napi_struct *napi, int budget) +{ [snip] + if (released) + netif_wake_queue(intf->ndev); + + return 0; +} Let me know if I am misunderstanding the feedback here. Thanks, Justin
From: Justin Chen <justin.chen@broadcom.com> Add support for the Broadcom ASP 2.0 Ethernet controller which is first introduced with 72165. Add support for 74165 10/100 integrated Ethernet PHY which also uses the ASP 2.0 Ethernet controller. Florian Fainelli (2): dt-bindings: net: Brcm ASP 2.0 Ethernet controller net: phy: bcm7xxx: Add EPHY entry for 74165 Justin Chen (4): dt-bindings: net: brcm,unimac-mdio: Add asp-v2.0 net: bcmasp: Add support for ASP2.0 Ethernet controller net: phy: mdio-bcm-unimac: Add asp v2.0 support MAINTAINERS: ASP 2.0 Ethernet driver maintainers .../devicetree/bindings/net/brcm,asp-v2.0.yaml | 146 ++ .../devicetree/bindings/net/brcm,unimac-mdio.yaml | 2 + MAINTAINERS | 9 + drivers/net/ethernet/broadcom/Kconfig | 11 + drivers/net/ethernet/broadcom/Makefile | 1 + drivers/net/ethernet/broadcom/asp2/Makefile | 2 + drivers/net/ethernet/broadcom/asp2/bcmasp.c | 1527 ++++++++++++++++++++ drivers/net/ethernet/broadcom/asp2/bcmasp.h | 636 ++++++++ .../net/ethernet/broadcom/asp2/bcmasp_ethtool.c | 620 ++++++++ drivers/net/ethernet/broadcom/asp2/bcmasp_intf.c | 1425 ++++++++++++++++++ .../net/ethernet/broadcom/asp2/bcmasp_intf_defs.h | 238 +++ drivers/net/mdio/mdio-bcm-unimac.c | 2 + drivers/net/phy/bcm7xxx.c | 1 + include/linux/brcmphy.h | 1 + 14 files changed, 4621 insertions(+) create mode 100644 Documentation/devicetree/bindings/net/brcm,asp-v2.0.yaml create mode 100644 drivers/net/ethernet/broadcom/asp2/Makefile create mode 100644 drivers/net/ethernet/broadcom/asp2/bcmasp.c create mode 100644 drivers/net/ethernet/broadcom/asp2/bcmasp.h create mode 100644 drivers/net/ethernet/broadcom/asp2/bcmasp_ethtool.c create mode 100644 drivers/net/ethernet/broadcom/asp2/bcmasp_intf.c create mode 100644 drivers/net/ethernet/broadcom/asp2/bcmasp_intf_defs.h