xref: /linux/Documentation/devicetree/bindings/net/marvell,aquantia.yaml (revision c771600c6af14749609b49565ffb4cac2959710d)
10fbe92b9SChristian Marangi# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
20fbe92b9SChristian Marangi%YAML 1.2
30fbe92b9SChristian Marangi---
40fbe92b9SChristian Marangi$id: http://devicetree.org/schemas/net/marvell,aquantia.yaml#
50fbe92b9SChristian Marangi$schema: http://devicetree.org/meta-schemas/core.yaml#
60fbe92b9SChristian Marangi
70fbe92b9SChristian Marangititle: Marvell Aquantia Ethernet PHY
80fbe92b9SChristian Marangi
90fbe92b9SChristian Marangimaintainers:
100fbe92b9SChristian Marangi  - Christian Marangi <ansuelsmth@gmail.com>
110fbe92b9SChristian Marangi
120fbe92b9SChristian Marangidescription: |
130fbe92b9SChristian Marangi  Marvell Aquantia Ethernet PHY require a firmware to be loaded to actually
140fbe92b9SChristian Marangi  work.
150fbe92b9SChristian Marangi
160fbe92b9SChristian Marangi  This can be done and is implemented by OEM in 3 different way:
170fbe92b9SChristian Marangi    - Attached SPI flash directly to the PHY with the firmware. The PHY
180fbe92b9SChristian Marangi      will self load the firmware in the presence of this configuration.
190fbe92b9SChristian Marangi    - Read from a dedicated partition on system NAND declared in an
200fbe92b9SChristian Marangi      NVMEM cell, and loaded to the PHY using its mailbox interface.
210fbe92b9SChristian Marangi    - Manually provided firmware loaded from a file in the filesystem.
220fbe92b9SChristian Marangi
230fbe92b9SChristian MarangiallOf:
240fbe92b9SChristian Marangi  - $ref: ethernet-phy.yaml#
250fbe92b9SChristian Marangi
260fbe92b9SChristian Marangiselect:
270fbe92b9SChristian Marangi  properties:
280fbe92b9SChristian Marangi    compatible:
290fbe92b9SChristian Marangi      contains:
300fbe92b9SChristian Marangi        enum:
310fbe92b9SChristian Marangi          - ethernet-phy-id03a1.b445
320fbe92b9SChristian Marangi          - ethernet-phy-id03a1.b460
330fbe92b9SChristian Marangi          - ethernet-phy-id03a1.b4a2
340fbe92b9SChristian Marangi          - ethernet-phy-id03a1.b4d0
350fbe92b9SChristian Marangi          - ethernet-phy-id03a1.b4e0
360fbe92b9SChristian Marangi          - ethernet-phy-id03a1.b5c2
370fbe92b9SChristian Marangi          - ethernet-phy-id03a1.b4b0
380fbe92b9SChristian Marangi          - ethernet-phy-id03a1.b662
390fbe92b9SChristian Marangi          - ethernet-phy-id03a1.b712
400fbe92b9SChristian Marangi          - ethernet-phy-id31c3.1c12
410fbe92b9SChristian Marangi  required:
420fbe92b9SChristian Marangi    - compatible
430fbe92b9SChristian Marangi
440fbe92b9SChristian Marangiproperties:
450fbe92b9SChristian Marangi  reg:
460fbe92b9SChristian Marangi    maxItems: 1
470fbe92b9SChristian Marangi
480fbe92b9SChristian Marangi  firmware-name:
490fbe92b9SChristian Marangi    description: specify the name of PHY firmware to load
500fbe92b9SChristian Marangi
51*1432965bSDaniel Golle  marvell,mdi-cfg-order:
52*1432965bSDaniel Golle    $ref: /schemas/types.yaml#/definitions/uint32
53*1432965bSDaniel Golle    enum: [0, 1]
54*1432965bSDaniel Golle    description:
55*1432965bSDaniel Golle      force normal (0) or reverse (1) order of MDI pairs, overriding MDI_CFG bootstrap pin.
56*1432965bSDaniel Golle
570fbe92b9SChristian Marangi  nvmem-cells:
580fbe92b9SChristian Marangi    description: phandle to the firmware nvmem cell
590fbe92b9SChristian Marangi    maxItems: 1
600fbe92b9SChristian Marangi
610fbe92b9SChristian Marangi  nvmem-cell-names:
620fbe92b9SChristian Marangi    const: firmware
630fbe92b9SChristian Marangi
640fbe92b9SChristian Marangirequired:
650fbe92b9SChristian Marangi  - compatible
660fbe92b9SChristian Marangi  - reg
670fbe92b9SChristian Marangi
680fbe92b9SChristian MarangiunevaluatedProperties: false
690fbe92b9SChristian Marangi
700fbe92b9SChristian Marangiexamples:
710fbe92b9SChristian Marangi  - |
720fbe92b9SChristian Marangi    mdio {
730fbe92b9SChristian Marangi        #address-cells = <1>;
740fbe92b9SChristian Marangi        #size-cells = <0>;
750fbe92b9SChristian Marangi
760fbe92b9SChristian Marangi        ethernet-phy@0 {
770fbe92b9SChristian Marangi            compatible = "ethernet-phy-id31c3.1c12",
780fbe92b9SChristian Marangi                         "ethernet-phy-ieee802.3-c45";
790fbe92b9SChristian Marangi
800fbe92b9SChristian Marangi            reg = <0>;
810fbe92b9SChristian Marangi            firmware-name = "AQR-G4_v5.4.C-AQR_CIG_WF-1945_0x8_ID44776_VER1630.cld";
820fbe92b9SChristian Marangi        };
830fbe92b9SChristian Marangi
840fbe92b9SChristian Marangi        ethernet-phy@1 {
850fbe92b9SChristian Marangi            compatible = "ethernet-phy-id31c3.1c12",
860fbe92b9SChristian Marangi                         "ethernet-phy-ieee802.3-c45";
870fbe92b9SChristian Marangi
880fbe92b9SChristian Marangi            reg = <1>;
890fbe92b9SChristian Marangi            nvmem-cells = <&aqr_fw>;
900fbe92b9SChristian Marangi            nvmem-cell-names = "firmware";
910fbe92b9SChristian Marangi        };
920fbe92b9SChristian Marangi    };
930fbe92b9SChristian Marangi
940fbe92b9SChristian Marangi    flash {
950fbe92b9SChristian Marangi        compatible = "jedec,spi-nor";
960fbe92b9SChristian Marangi        #address-cells = <1>;
970fbe92b9SChristian Marangi        #size-cells = <1>;
980fbe92b9SChristian Marangi
990fbe92b9SChristian Marangi        partitions {
1000fbe92b9SChristian Marangi            compatible = "fixed-partitions";
1010fbe92b9SChristian Marangi            #address-cells = <1>;
1020fbe92b9SChristian Marangi            #size-cells = <1>;
1030fbe92b9SChristian Marangi
1040fbe92b9SChristian Marangi            /* ... */
1050fbe92b9SChristian Marangi
1060fbe92b9SChristian Marangi            partition@650000 {
1070fbe92b9SChristian Marangi                compatible = "nvmem-cells";
1080fbe92b9SChristian Marangi                label = "0:ethphyfw";
1090fbe92b9SChristian Marangi                reg = <0x650000 0x80000>;
1100fbe92b9SChristian Marangi                read-only;
1110fbe92b9SChristian Marangi                #address-cells = <1>;
1120fbe92b9SChristian Marangi                #size-cells = <1>;
1130fbe92b9SChristian Marangi
1140fbe92b9SChristian Marangi                aqr_fw: aqr_fw@0 {
1150fbe92b9SChristian Marangi                    reg = <0x0 0x5f42a>;
1160fbe92b9SChristian Marangi                };
1170fbe92b9SChristian Marangi            };
1180fbe92b9SChristian Marangi
1190fbe92b9SChristian Marangi            /* ... */
1200fbe92b9SChristian Marangi
1210fbe92b9SChristian Marangi        };
1220fbe92b9SChristian Marangi    };
123