| // SPDX-License-Identifier: GPL-2.0+ |
| /* |
| * Marvell / Cavium Inc. NIC23 |
| */ |
| |
| /dts-v1/; |
| |
| #include "mrvl,cn73xx.dtsi" |
| #include <dt-bindings/gpio/gpio.h> |
| |
| / { |
| model = "cavium,nic23"; |
| compatible = "cavium,nic23"; |
| |
| aliases { |
| mmc0 = &mmc0; |
| serial0 = &uart0; |
| spi0 = &spi; |
| }; |
| |
| regulators { |
| compatible = "simple-bus"; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| /* Power on GPIO 8, active high */ |
| reg_mmc_3v3: regulator@0 { |
| compatible = "regulator-fixed"; |
| reg = <0>; |
| regulator-name = "mmc-3v3"; |
| regulator-min-microvolt = <3300000>; |
| regulator-max-microvolt = <3300000>; |
| gpio = <&gpio 8 GPIO_ACTIVE_HIGH>; |
| enable-active-high; |
| }; |
| }; |
| |
| chosen { |
| stdout-path = &uart0; |
| }; |
| }; |
| |
| &bootbus { |
| /* |
| * bootbus CS0 for CFI flash is remapped (0x1fc0.0000 -> 1f40.0000) |
| * as the initial size is too small for the 8MiB flash device |
| */ |
| ranges = <0 0 0 0x1f400000 0xc00000>, |
| <1 0 0x10000 0x10000000 0>, |
| <2 0 0x10000 0x20000000 0>, |
| <3 0 0x10000 0x30000000 0>, |
| <4 0 0 0x1d020000 0x10000>, |
| <5 0 0x10000 0x50000000 0>, |
| <6 0 0x10000 0x60000000 0>, |
| <7 0 0x10000 0x70000000 0>; |
| |
| cavium,cs-config@0 { |
| compatible = "cavium,octeon-3860-bootbus-config"; |
| cavium,cs-index = <0>; |
| cavium,t-adr = <10>; |
| cavium,t-ce = <50>; |
| cavium,t-oe = <50>; |
| cavium,t-we = <35>; |
| cavium,t-rd-hld = <25>; |
| cavium,t-wr-hld = <35>; |
| cavium,t-pause = <0>; |
| cavium,t-wait = <50>; |
| cavium,t-page = <30>; |
| cavium,t-rd-dly = <0>; |
| cavium,page-mode = <1>; |
| cavium,pages = <8>; |
| cavium,bus-width = <8>; |
| }; |
| |
| cavium,cs-config@4 { |
| compatible = "cavium,octeon-3860-bootbus-config"; |
| cavium,cs-index = <4>; |
| cavium,t-adr = <10>; |
| cavium,t-ce = <10>; |
| cavium,t-oe = <160>; |
| cavium,t-we = <100>; |
| cavium,t-rd-hld = <10>; |
| cavium,t-wr-hld = <0>; |
| cavium,t-pause = <50>; |
| cavium,t-wait = <50>; |
| cavium,t-page = <10>; |
| cavium,t-rd-dly = <10>; |
| cavium,pages = <0>; |
| cavium,bus-width = <8>; |
| }; |
| |
| flash0: nor@0,0 { |
| compatible = "cfi-flash"; |
| reg = <0 0 0x800000>; |
| #address-cells = <1>; |
| #size-cells = <1>; |
| partition@0 { |
| label = "bootloader"; |
| reg = <0 0x340000>; |
| read-only; |
| }; |
| partition@300000 { |
| label = "storage"; |
| reg = <0x340000 0x4be000>; |
| }; |
| partition@7fe000 { |
| label = "environment"; |
| reg = <0x7fe000 0x2000>; |
| read-only; |
| }; |
| }; |
| }; |
| |
| &uart0 { |
| clock-frequency = <800000000>; |
| }; |
| |
| &i2c0 { |
| u-boot,dm-pre-reloc; /* Needed early for DDR SPD EEPROM */ |
| clock-frequency = <100000>; |
| |
| sfp0eeprom: eeprom@50 { |
| compatible = "atmel,24c01"; |
| reg = <0x50>; |
| }; |
| |
| sfp0alerts: eeprom@51 { |
| compatible = "atmel,24c01"; |
| reg = <0x51>; |
| }; |
| }; |
| |
| &i2c1 { |
| u-boot,dm-pre-reloc; /* Needed early for DDR SPD EEPROM */ |
| clock-frequency = <100000>; |
| |
| vitesse@10 { |
| compatible = "vitesse,vsc7224"; |
| reg = <0x10>; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| /* Note that reset is active high with this device */ |
| reset = <&gpio 7 0>; |
| |
| /* LoS pin can be pulled low when there is a loss of signal */ |
| los = <&gpio 6 0>; |
| |
| vitesse,reg-init = |
| /* Clear all masks */ |
| /* Page select FSYNC0 (0x30) */ |
| <0x7f 0x0030>, |
| /* Set FSYNC0 for 10.3125Gbps */ |
| <0x80 0x2841>, /* See Table 3. */ |
| <0x81 0x0008>, |
| <0x82 0xc000>, |
| <0x83 0x0010>, |
| <0x84 0x1d00>, |
| |
| /* All channels Rx settings set equally */ |
| <0x7f 0x0050>, |
| /* Shrink EQ_BUFF */ |
| <0x82 0x0014>, |
| /* Set EQVGA_ADAP = 1 (enable EQVGA circuitry), |
| * USE_UNIT_GAIN = 1 (EQVGA is in unity gain), |
| * USE_LPF = 0 (VGA adapt not using LPF), |
| * USE_EQVGA = 1 |
| <0x89 0x7f13>, |
| /* Select min DFE Delay (DFE_DELAY) */ |
| <0x90 0x5785>, |
| /* Set DFE 1-3 limit (DXMAX) = 32dec, |
| * AP Max limit = 127 decimal |
| */ |
| <0x92 0x207f>, |
| /* Set AP Min limit = 32 decimal */ |
| <0x93 0x2000>, |
| /* Set DFE Averaging to the slowest (DFE_AVG) */ |
| <0x94 0x0031>, |
| /* Set Inductor Bypass OD_IND_BYP = 0 & fastest Rise/Fall */ |
| <0x9c 0x0000>, |
| /* Setting DFE Boost = none. Must set for |
| * rev C (if DFE in adapt mode) |
| */ |
| <0xaa 0x0888>, |
| /* Setting EQ Min = 8 & Max limit = 72 dec. |
| * Must set for rev C, otherwise EQ is 0 |
| * (if EQ is in adaptive mode) |
| */ |
| <0xa8 0x2408>, |
| /* Setting EQVGA = 96, when in EQVGA manual mode */ |
| <0xa9 0x0060>, |
| /* Setting SW_BFOCM, bits 15:14 to 01 */ |
| <0x87 0x4021>, |
| /* Turn off adaptive input equalization |
| * and VGA adaptive algorithm control. |
| */ |
| <0x89 0x7313>, |
| /* Turn on adaptive input equalization |
| * and VGA adaptive algorithm control. |
| */ |
| <0x89 0x7f13>; |
| |
| vitesse-channel@0 { |
| compatible = "vitesse,vsc7224-channel"; |
| reg = <0>; |
| direction-tx; |
| sfp-mac = <ð0>; |
| |
| /* TAP settings. The format of this is as |
| * follows: |
| * - cable length in meters, 0 = active or |
| * optical module |
| * - maintap value |
| * - pretap value |
| * - posttap value |
| * |
| * For the cable length, the value will apply |
| * for that cable length and greater until the |
| * next largest cable length specified. These |
| * values must be ordered first by channel mask |
| * then by cable length. These are typically |
| * set for the transmit channels, not the |
| * receive channels. |
| */ |
| taps = <0 0x0013 0x000f 0x0000>, |
| <1 0x001f 0x000f 0x0004>, |
| <3 0x0014 0x000b 0x0004>, |
| <5 0x0014 0x0009 0x0006>, |
| <7 0x0014 0x000f 0x0000>, |
| <10 0x0012 0x000b 0x0013>; |
| }; |
| |
| vitesse-channel@1 { |
| compatible = "vitesse,vsc7224-channel"; |
| reg = <1>; |
| /* Ignore mod_abs and module */ |
| direction-rx; |
| sfp-mac = <ð0>; |
| |
| /* Disable pre-tap */ |
| pretap-disable; |
| |
| /* Disable post-tap */ |
| posttap-disable; |
| |
| /* Taps has the following fields: |
| * - cable length (ignored for rx) |
| * - main tap value |
| * - pre tap value |
| * - post tap value |
| * |
| * NOTE: if taps are disabled then they |
| * are not programmed. |
| */ |
| taps = <0 0x0a 0x0b 0x10>; |
| }; |
| |
| vitesse-channel@2 { |
| compatible = "vitesse,vsc7224-channel"; |
| reg = <2>; |
| direction-tx; |
| sfp-mac = <ð1>; |
| |
| /* TAP settings. The format of this is as |
| * follows: |
| * - cable length in meters, 0 = active or |
| * optical module |
| * - maintap value |
| * - pretap value |
| * - posttap value |
| * |
| * For the cable length, the value will apply |
| * for that cable length and greater until the |
| * next largest cable length specified. These |
| * values must be ordered first by channel mask |
| * then by cable length. These are typically |
| * set for the transmit channels, not the |
| * receive channels. |
| */ |
| taps = <0 0x0013 0x000f 0x0000>, |
| <1 0x001f 0x000f 0x0004>, |
| <3 0x0014 0x000b 0x0004>, |
| <5 0x0014 0x0009 0x0006>, |
| <7 0x0014 0x000f 0x0000>, |
| <10 0x0012 0x000b 0x0013>; |
| }; |
| |
| vitesse-channel@3 { |
| compatible = "vitesse,vsc7224-channel"; |
| reg = <3>; |
| /* Ignore mod_abs and module */ |
| direction-rx; |
| sfp-mac = <ð1>; |
| |
| /* Disable pre-tap */ |
| pretap-disable; |
| |
| /* Disable post-tap */ |
| posttap-disable; |
| |
| /* Taps has the following fields: |
| * - cable length (ignored for rx) |
| * - main tap value |
| * - pre tap value |
| * - post tap value |
| * |
| * NOTE: if taps are disabled then they |
| * are not programmed. |
| */ |
| taps = <0 0x0a 0x0b 0x10>; |
| }; |
| }; |
| |
| sfp1eeprom: eeprom@50 { |
| compatible = "atmel,24c01"; |
| reg = <0x50>; |
| }; |
| |
| sfp1alerts: eeprom@51 { |
| compatible = "atmel,24c01"; |
| reg = <0x51>; |
| }; |
| }; |
| |
| &mmc { |
| status = "okay"; |
| |
| mmc0: mmc-slot@0 { |
| compatible = "cavium,octeon-6130-mmc-slot", "mmc-slot"; |
| reg = <0>; |
| vqmmc-supply = <®_mmc_3v3>; |
| voltage-ranges = <3300 3300>; |
| spi-max-frequency = <52000000>; |
| /* bus width can be 1, 4 or 8 */ |
| bus-width = <8>; /* new std property */ |
| cavium,bus-max-width = <8>; /* custom property */ |
| non-removable; |
| }; |
| }; |
| |
| &soc0 { |
| pci-console@0 { |
| compatible = "marvell,pci-console"; |
| status = "okay"; |
| }; |
| |
| pci-bootcmd@0 { |
| compatible = "marvell,pci-bootcmd"; |
| status = "okay"; |
| }; |
| |
| sfp0: sfp-slot@0 { |
| compatible = "ethernet,sfp-slot"; |
| tx_disable = <&gpio 16 0>; |
| mod_abs = <&gpio 17 0>; |
| tx_error = <&gpio 19 0>; |
| rx_los = <&gpio 18 0>; |
| eeprom = <&sfp0eeprom>; |
| diag = <&sfp0alerts>; |
| }; |
| |
| sfp1: sfp-slot@1 { |
| compatible = "ethernet,sfp-slot"; |
| tx_disable = <&gpio 21 0>; |
| mod_abs = <&gpio 22 0>; |
| tx_error = <&gpio 24 0>; |
| rx_los = <&gpio 23 0>; |
| eeprom = <&sfp1eeprom>; |
| diag = <&sfp1alerts>; |
| }; |
| }; |
| |
| &spi { |
| flash@0 { |
| compatible = "micron,n25q128a11", "jedec,spi-nor"; |
| spi-max-frequency = <2000000>; |
| reg = <0>; |
| }; |
| }; |
| |
| /* BGX 2 */ |
| &bgx2 { |
| status = "okay"; |
| |
| /* SerDes 0, may differ from PCS Lane/LMAC */ |
| eth0: ethernet-mac@0 { |
| compatible = "cavium,octeon-7890-bgx-port"; |
| reg = <0>; |
| local-mac-address = [ 00 00 00 00 00 00 ]; |
| sfp-slot = <&sfp0>; |
| }; |
| |
| /* SerDes 1, may differ from PCS Lane/LMAC */ |
| eth1: ethernet-mac@1 { |
| compatible = "cavium,octeon-7890-bgx-port"; |
| reg = <1>; |
| local-mac-address = [ 00 00 00 00 00 00 ]; |
| sfp-slot = <&sfp1>; |
| }; |
| }; |