3 * Cavium Inc. (Small) NIC10e board
6 #include <dt-bindings/gpio/gpio.h>
9 model = "cavium,snic10e";
10 compatible = "cavium,snic10e";
13 interrupt-parent = <&ciu>;
16 compatible = "simple-bus";
19 ranges; /* Direct mapping */
21 ciu: interrupt-controller@1070000000000 {
22 compatible = "cavium,octeon-3860-ciu";
24 /* Interrupts are specified by two parts:
25 * 1) Controller register (0 or 1)
26 * 2) Bit within the register (0..63)
29 #interrupt-cells = <2>;
30 reg = <0x10700 0x00000000 0x0 0x7000>;
33 gpio: gpio-controller@1070000000800 {
35 compatible = "cavium,octeon-3860-gpio";
36 reg = <0x10700 0x00000800 0x0 0x100>;
38 /* Interrupts are specified by two parts:
39 * 1) GPIO pin number (0..15)
40 * 2) Triggering (1 - edge rising
42 * 4 - level active high
43 * 8 - level active low)
46 #interrupt-cells = <2>;
47 /* The GPIO pins connect to 16 consecutive CUI bits */
48 interrupts = <0 16>; /* <0 17> <0 18> <0 19>
49 <0 20> <0 21> <0 22> <0 23>
50 <0 24> <0 25> <0 26> <0 27>
51 <0 28> <0 29> <0 30> <0 31>; */
54 twsi0: i2c@1180000001000 {
57 compatible = "cavium,octeon-3860-twsi";
58 reg = <0x11800 0x00001000 0x0 0x200>;
60 /* NOTE: In order to get the proper delay between
61 * i2c bus transactions for the SFP we need to either
62 * slow the bus down to no more than 30KHz or else
63 * somehow insert a delay between transactions. Only
64 * U-Boot is capable of inserting the appropriate delay
67 clock-frequency = <30000>;
70 compatible = "ti,tmp421";
74 compatible = "atmel,24c01";
78 compatible = "atmel,24c256";
84 twsi1: i2c@1180000001200 {
87 compatible = "cavium,octeon-3860-twsi";
88 reg = <0x11800 0x00001200 0x0 0x200>;
90 /* NOTE: In order to get the proper delay between
91 * i2c bus transactions for the SFP we need to either
92 * slow the bus down to no more than 30KHz or else
93 * somehow insert a delay between transactions. Only
94 * U-Boot is capable of inserting the appropriate delay
97 clock-frequency = <30000>;
100 compatible = "atmel,24c01";
105 compatible = "nxp,pca9554";
108 interrupt-parent = <&gpio>;
109 interrupt = <13 2>; /* OCTEON GPIO 13, falling edge */
110 #interrupt-cells = <1>;
115 smi0: mdio@1180000001800 {
116 compatible = "cavium,octeon-3860-mdio";
117 #address-cells = <1>;
119 reg = <0x11800 0x00001800 0x0 0x40>;
121 mphyA: ethernet-phy-nexus@A {
123 /* The Vitesse VSC8488 is a dual-PHY where
124 * some of the configuration is common across
125 * both of the phy devices such as the reset
126 * line and the base MDIO address.
128 compatible = "vitesse,vsc8488-nexus", "ethernet-phy-nexus";
129 #address-cells = <1>;
133 /* Hardware reset signal */
134 reset = <&gpio 17 GPIO_ACTIVE_HIGH>;
136 phy0: ethernet-phy@0 {
137 /* Absolute address */
139 compatible = "vitesse,vsc8488", "ethernet-phy-ieee802.3-c45";
140 interrupt-parent = <&gpio>;
144 /* TX Fault GPIO line */
146 /* GPIO that enables output */
148 /* INT A GPIO output */
151 /* Optional equalization value to
152 * program into the PHY XS XAUI Rx
153 * Equalization control register.
154 * It is broken up into one nibble for
155 * each lane with lane 0 using bits
157 * Use the following table:
166 * 0xA - 7.08dB (default)
172 * This is board specific and should
173 * only be defined by the hardware
176 vitesse,rx_equalization = <0x0000>;
177 /* Optional transmit pre-emphasis
178 * control. This sets the
179 * PHY XS XAUI TX pre-emphasis control
182 * It uses bits 13-14 for lane 0,
183 * 10-11 for lane 1, 7-8 for lane 2
184 * and 4-5 for lane 3.
186 * Bits 2-3 are the LOS threshold
187 * setting and bit 1 enables
188 * the XAUI output high swing mode.
190 * Use the following table for
194 * 0b10 - 6dB (default)
197 * Use the following table for the LOS
200 * 0b00 - 50mV - 175mV (default)
201 * 0b01 - 60mV - 185mV
202 * 0b10 - 70mV - 195mV
203 * 0b11 - 80mV - 205mV
205 vitesse,tx_preemphasis = <0x0000>;
207 /* TX output driver slew rate control
208 * is bits 8-11 where 0x0 is the minimum
209 * and 0xF is the maximum.
212 * The TX output driver C(-1)
213 * coefficient is bits 0-4 where
214 * 0b00000 is the minimum (-4ma) and
215 * 0b11111 is the maximum (4ma). The
216 * default 0x 0b01111.
218 vitesse,txout_driver_ctrl1 = <0x0A0F>;
220 /* The TX output driver C(0) coefficient
221 * is bits 8-12 with 0b00000 being the
222 * minimum (0mA) and 0b11111 being
223 * the maximum (16mA). The default is
226 * The C(+1) coefficient is bits 0-5
227 * with 0b000000 being the minimum
228 * (-0.25mA) and 0b111111 being the
229 * maximum (-16mA). The default is
232 /*vitesse,txout_driver_ctrl2 = <0x1300>;*/
234 /* DC_AGC_LOS_CONFIG1:
235 * 15: Suppress_Coarse_Adj_on_LOS_Clear
236 * 0: DC offset correction performed using coarse
237 * resolution mode (default)
238 * 1: DC offset correction performed using fine resolution
239 * mode when correction resumes after LOPC/LOS alarms
240 * clear. This guarantees there will be no big jumps in
241 * the offset at the expense of taking longer to reach
243 * 14: Force_DC2_Fine_Adj:
244 * Forces the DC offset correction to operate in fine
245 * resolution adjustment mode at times when the algorithm.
246 * 0: DC offset correction makes coarse adjustments when
247 * correction mode is first enabled (default)
248 * 1: DC offset correction performed using fine resolution
249 * at all times. This is slower.
250 * 13: Force_DC1_Fine_Adj:
251 * Forces the DC offset correction to operate in fine
252 * resolution adjustment mode at times when the algorithm.
253 * 0: DC offset correction makes coarse adjustments when
254 * correction mode is first enabled (default)
255 * 1: DC offset correction performed using fine resolution
256 * at all times. This is slower.
257 * 12: Force_DC0_Fine_Adj:
258 * Forces the DC offset correction to operate in fine
259 * resolution adjustment mode at times when the algorithm.
260 * 0: DC offset correction makes coarse adjustments when
261 * correction mode is first enabled (default)
262 * 1: DC offset correction performed using fine resolution
263 * at all times. This is slower.
264 * 10: Skip_DC2_Adj, 1 = skip DC2 offset correction
265 * 9: Skip_DC1_Adj, 1 = skip DC1 offset correction
266 * 8: Skip_DC0_Adj, 1 = skip DC0 offset correction
268 * 6-4: DC_Offset_Alarm_Mode (default 1)
269 * Selects the alarm condition that will halt the DC offset
270 * correction logic when the alarm(s) are set.
273 * 101: LOPC and software LOS detection
274 * 100: LOPC and hardware LOS detection
275 * 011: Software LOS detection
276 * 010: Hardware LOS detection
278 * 000: Never. DC offset correction will continue to make
279 * fine resolution adjustments to the offsets even
280 * when LOPC and LOS alarms are present.
283 * Selects when hardware AGC adjustment logic and LOS
284 * detection logic is enabled (default 1)
288 * Suspends the LOS detection logic and AGC logic
289 * from making adjustments to the gain. Bit valid only
291 * 0: AGC adjustment enabled (default)
292 * 1: AGC adjustment suspended
293 * 1: DC_Offset_Adj_Enable
294 * Select when the hardware DC offset correction logic is
297 * 1: enable (default)
298 * 0: DC_Offset_Adj_Suspend
299 * Suspends the DC offset correction logic from making
300 * adjustments to all offset settings. Bit valid only if
301 * DC_Offset_Adj_Enable=1
302 * 0: DC offset correction enabled (default)
303 * 1: DC offset correction suspended
305 * This setting is only applied for
308 vitesse,copper_dc_agc_los_config1 = <0x000A>;
310 /* Disable aggressive track phase during
311 * firmware convergence if 0, enabled
312 * otherwise (default).
314 * This setting is only applied for
317 vitesse,copper_agg_track_phase = <0>;
321 * 13-8: Ampl_Tolerance
322 * This defines the hysterisis
323 * built in to the AGC adjustment
324 * circuit. The VGA gain will not
325 * be adjusted as long as the
326 * measured input amplitude is
327 * Inp_Ampl_Target +/- Amnpl_Tolerance.
329 * 7-0: Inp_Ampl_Target
330 * This is the target amplitude
331 * desired to be measured at the
332 * peak detector when measuring
333 * input amplitude. The VGA gain
334 * is adjusted to achieve this
338 * This setting is only applied for
341 vitesse,copper_agc_config4 = <0x0496>;
343 /* The Vitesse 10G PHY does not
344 * automatically read the SFP EEPROM
345 * so the host needs to do it to put
346 * the PHY in the proper mode for
349 sfp-eeprom = <&sfp0>;
352 phy1: ethernet-phy@1 {
353 /* Absolute address */
355 compatible = "vitesse,vsc8488", "ethernet-phy-ieee802.3-c45";
356 interrupt-parent = <&gpio>;
360 /* TX Fault GPIO line */
362 /* GPIO that enables output */
364 /* INT A GPIO output */
367 /* Optional equalization value to
368 * program into the PHY XS XAUI Rx
369 * Equalization control register.
370 * It is broken up into one nibble for
371 * each lane with lane 0 using bits
373 * Use the following table:
382 * 0xA - 7.08dB (default)
388 * This is board specific and should
389 * only be defined by the hardware
392 rx_equalization = <0x0000>;
393 /* Optional transmit pre-emphasis
394 * control. This sets the
395 * PHY XS XAUI TX pre-emphasis control
398 * It uses bits 13-14 for lane 0,
399 * 10-11 for lane 1, 7-8 for lane 2
400 * and 4-5 for lane 3.
402 * Bits 2-3 are the LOS threshold
403 * setting and bit 1 enables
404 * the XAUI output high swing mode.
406 * Use the following table for
410 * 0b10 - 6dB (default)
413 * Use the following table for the LOS
416 * 0b00 - 50mV - 175mV (default)
417 * 0b01 - 60mV - 185mV
418 * 0b10 - 70mV - 195mV
419 * 0b11 - 80mV - 205mV
421 tx_preemphasis = <0x0000>;
423 /* TX output driver slew rate control
424 * is bits 8-11 where 0x0 is the minimum
425 * and 0xF is the maximum.
428 * The TX output driver C(-1)
429 * coefficient is bits 0-4 where
430 * 0b00000 is the minimum (-4ma) and
431 * 0b11111 is the maximum (4ma). The
432 * default 0x 0b01111.
434 txout_driver_ctrl1 = <0x0A0F>;
436 /* The TX output driver C(0) coefficient
437 * is bits 8-12 with 0b00000 being the
438 * minimum (0mA) and 0b11111 being
439 * the maximum (16mA). The default is
442 * The C(+1) coefficient is bits 0-5
443 * with 0b000000 being the minimum
444 * (-0.25mA) and 0b111111 being the
445 * maximum (-16mA). The default is
448 /*txout_driver_ctrl2 = <0x1300>;*/
450 /* DC_AGC_LOS_CONFIG1:
451 * 15: Suppress_Coarse_Adj_on_LOS_Clear
452 * 0: DC offset correction performed using coarse
453 * resolution mode (default)
454 * 1: DC offset correction performed using fine resolution
455 * mode when correction resumes after LOPC/LOS alarms
456 * clear. This guarantees there will be no big jumps in
457 * the offset at the expense of taking longer to reach
459 * 14: Force_DC2_Fine_Adj:
460 * Forces the DC offset correction to operate in fine
461 * resolution adjustment mode at times when the algorithm.
462 * 0: DC offset correction makes coarse adjustments when
463 * correction mode is first enabled (default)
464 * 1: DC offset correction performed using fine resolution
465 * at all times. This is slower.
466 * 13: Force_DC1_Fine_Adj:
467 * Forces the DC offset correction to operate in fine
468 * resolution adjustment mode at times when the algorithm.
469 * 0: DC offset correction makes coarse adjustments when
470 * correction mode is first enabled (default)
471 * 1: DC offset correction performed using fine resolution
472 * at all times. This is slower.
473 * 12: Force_DC0_Fine_Adj:
474 * Forces the DC offset correction to operate in fine
475 * resolution adjustment mode at times when the algorithm.
476 * 0: DC offset correction makes coarse adjustments when
477 * correction mode is first enabled (default)
478 * 1: DC offset correction performed using fine resolution
479 * at all times. This is slower.
480 * 10: Skip_DC2_Adj, 1 = skip DC2 offset correction
481 * 9: Skip_DC1_Adj, 1 = skip DC1 offset correction
482 * 8: Skip_DC0_Adj, 1 = skip DC0 offset correction
484 * 6-4: DC_Offset_Alarm_Mode (default 1)
485 * Selects the alarm condition that will halt the DC offset
486 * correction logic when the alarm(s) are set.
489 * 101: LOPC and software LOS detection
490 * 100: LOPC and hardware LOS detection
491 * 011: Software LOS detection
492 * 010: Hardware LOS detection
494 * 000: Never. DC offset correction will continue to make
495 * fine resolution adjustments to the offsets even
496 * when LOPC and LOS alarms are present.
499 * Selects when hardware AGC adjustment logic and LOS
500 * detection logic is enabled (default 1)
504 * Suspends the LOS detection logic and AGC logic
505 * from making adjustments to the gain. Bit valid only
507 * 0: AGC adjustment enabled (default)
508 * 1: AGC adjustment suspended
509 * 1: DC_Offset_Adj_Enable
510 * Select when the hardware DC offset correction logic is
513 * 1: enable (default)
514 * 0: DC_Offset_Adj_Suspend
515 * Suspends the DC offset correction logic from making
516 * adjustments to all offset settings. Bit valid only if
517 * DC_Offset_Adj_Enable=1
518 * 0: DC offset correction enabled (default)
519 * 1: DC offset correction suspended
521 * This setting is only applied for
524 vitesse,copper_dc_agc_los_config1 = <0x000A>;
526 /* Disable aggressive track phase during
527 * firmware convergence if 0, enabled
528 * otherwise (default).
530 * This setting is only applied for
533 vitesse,copper_agg_track_phase = <0>;
537 * 13-8: Ampl_Tolerance
538 * This defines the hysterisis
539 * built in to the AGC adjustment
540 * circuit. The VGA gain will not
541 * be adjusted as long as the
542 * measured input amplitude is
543 * Inp_Ampl_Target +/- Amnpl_Tolerance.
545 * 7-0: Inp_Ampl_Target
546 * This is the target amplitude
547 * desired to be measured at the
548 * peak detector when measuring
549 * input amplitude. The VGA gain
550 * is adjusted to achieve this
554 * This setting is only applied for
557 vitesse,copper_agc_config4 = <0x0496>;
559 /* The Vitesse 10G PHY does not
560 * automatically read the SFP EEPROM
561 * so the host needs to do it to put
562 * the PHY in the proper mode for
565 sfp-eeprom = <&sfp1>;
568 mphyB: ethernet-phy-nexus@B {
570 /* The TI TLK10232 is a dual-PHY where
571 * some of the configuration is common across
572 * both of the phy devices such as the reset
573 * line and the base MDIO address.
575 compatible = "ti,tlk10232-nexus", "ethernet-phy-nexus";
576 #address-cells = <1>;
580 /* Hardware reset signal open-drain active low on GPIO 17, must not be driven high. */
581 reset = <&gpio 17 GPIO_LINE_OPEN_DRAIN>;
583 phy11: ethernet-phy@0 {
584 /* Absolute address */
586 compatible = "ti,tlk10232", "ethernet-phy-ieee802.3-c45";
588 /* The TI 10G PHY does not
589 * automatically read the SFP EEPROM
590 * so the host needs to do it to put
591 * the PHY in the proper mode for
594 sfp-eeprom = <&sfp0>;
596 /* TX fault input signal for PHY from SFP+ */
597 tx-fault = <&gpio1 4 GPIO_ACTIVE_HIGH>;
598 /* TX disable for PHY to SFP+ */
599 tx-disable = <&gpio1 5 GPIO_ACTIVE_HIGH>;
600 /* MOD ABS signal for PHY from SFP+ */
601 mod-abs = <&gpio1 6 GPIO_ACTIVE_HIGH>;
602 /* RX los of singal for PHY from SFP+ */
603 rx-los = <&gpio1 7 GPIO_ACTIVE_HIGH>;
606 phy10: ethernet-phy@1 {
607 /* Absolute address */
609 compatible = "ti,tlk10232", "ethernet-phy-ieee802.3-c45";
611 /* The TI 10G PHY does not
612 * automatically read the SFP EEPROM
613 * so the host needs to do it to put
614 * the PHY in the proper mode for
617 sfp-eeprom = <&sfp1>;
618 /* TX fault input signal for PHY */
619 tx-fault = <&gpio1 0 GPIO_ACTIVE_HIGH>;
620 /* TX disable for PHY */
621 tx-disable = <&gpio1 1 GPIO_ACTIVE_HIGH>;
622 /* MOD ABS signal for PHY */
623 mod-abs = <&gpio1 2 GPIO_ACTIVE_HIGH>;
624 /* RX los of singal for PHY */
625 rx-los = <&gpio1 3 GPIO_ACTIVE_HIGH>;
630 pip: pip@11800a0000000 {
631 compatible = "cavium,octeon-3860-pip";
632 #address-cells = <1>;
634 reg = <0x11800 0xa0000000 0x0 0x2000>;
637 compatible = "cavium,octeon-3860-pip-interface";
638 #address-cells = <1>;
640 reg = <0>; /* interface */
643 compatible = "cavium,octeon-3860-pip-port";
644 reg = <0x0>; /* Port */
645 local-mac-address = [ 00 00 00 00 00 00 ];
646 phy-handle = <&phy0>;
650 compatible = "cavium,octeon-3860-pip-interface";
651 #address-cells = <1>;
653 reg = <1>; /* interface */
656 compatible = "cavium,octeon-3860-pip-port";
657 reg = <0x0>; /* Port */
658 local-mac-address = [ 00 00 00 00 00 00 ];
659 phy-handle = <&phy1>;
663 compatible = "cavium,octeon-3860-pip-interface";
664 #address-cells = <1>;
666 reg = <0>; /* interface */
669 compatible = "cavium,octeon-3860-pip-port";
670 reg = <0x0>; /* Port */
671 local-mac-address = [ 00 00 00 00 00 00 ];
672 phy-handle = <&phy10>;
676 compatible = "cavium,octeon-3860-pip-interface";
677 #address-cells = <1>;
679 reg = <1>; /* interface */
682 compatible = "cavium,octeon-3860-pip-port";
683 reg = <0x0>; /* Port */
684 local-mac-address = [ 00 00 00 00 00 00 ];
685 phy-handle = <&phy11>;
690 uart0: serial@1180000000800 {
691 compatible = "cavium,octeon-3860-uart","ns16550";
692 reg = <0x11800 0x00000800 0x0 0x400>;
693 clock-frequency = <800000000>;
694 current-speed = <115200>;
699 uart1: serial@1180000000c00 {
700 compatible = "cavium,octeon-3860-uart","ns16550";
701 reg = <0x11800 0x00000c00 0x0 0x400>;
702 clock-frequency = <800000000>;
703 current-speed = <115200>;
708 bootbus: bootbus@1180000000000 {
709 compatible = "cavium,octeon-3860-bootbus";
710 reg = <0x11800 0x00000000 0x0 0x200>;
711 /* The chip select number and offset */
712 #address-cells = <2>;
713 /* The size of the chip select region */
715 ranges = <0 0 0 0x1f400000 0xc00000>,
716 <1 0 0x10000 0x30000000 0>,
717 <2 0 0 0x1f000000 0x100000>,
718 <3 0 0x10000 0x50000000 0>,
719 <4 0 0x10000 0x60000000 0>,
720 <5 0 0x10000 0x70000000 0>,
721 <6 0 0x10000 0x80000000 0>,
722 <7 0 0x10000 0x90000000 0>;
725 compatible = "cavium,octeon-3860-bootbus-config";
726 cavium,cs-index = <0>;
731 cavium,t-rd-hld = <25>;
732 cavium,t-wr-hld = <35>;
733 cavium,t-pause = <0>;
734 cavium,t-wait = <300>;
735 cavium,t-page = <25>;
736 cavium,t-rd-dly = <0>;
739 cavium,bus-width = <8>;
742 compatible = "cavium,octeon-3860-bootbus-config";
743 cavium,cs-index = <2>;
748 cavium,t-rd-hld = <8>;
749 cavium,t-wr-hld = <10>;
750 cavium,t-pause = <0>;
754 cavium,t-rd-dly = <0>;
757 cavium,bus-width = <8>;
760 compatible = "cfi-flash";
761 reg = <0 0 0x800000>;
762 #address-cells = <1>;
766 label = "bootloader";
767 reg = <0x0 0x1c0000>;
772 reg = <0x1c0000 0x63e000>;
775 label = "environment";
776 reg = <0x7fe0000 0x2000>;
781 compatible = "micron,mt45w1mw16pd";
782 reg = <2 0x20 0x20>, <2 0 0x20>;
786 dma0: dma-engine@1180000000100 {
787 compatible = "cavium,octeon-5750-bootbus-dma";
788 reg = <0x11800 0x00000100 0x0 0x8>;
791 dma1: dma-engine@1180000000108 {
792 compatible = "cavium,octeon-5750-bootbus-dma";
793 reg = <0x11800 0x00000108 0x0 0x8>;
796 nand-flash-interface@1070001000000 {
797 compatible = "cavium,octeon-5230-nand";
798 reg = <0x10700 0x1000000 0x0 0x100 0x11800 0x168 0x0 0x20>;
799 #address-cells = <0x1>;
801 interrupts = <0x0 0x3f>;
803 compatible = "nand-flash";
805 nand-ecc-mode = "soft";
806 nand-ecc-size = <0x200>;
807 nand-ecc-bytes = <0x7>;
808 nand-bus-width = <0x8>;
813 compatible = "gpio-leds";
817 gpios = <&gpio 1 GPIO_ACTIVE_HIGH>;
818 default-state = "keep";
822 gpios = <&gpio 2 GPIO_ACTIVE_HIGH>;
823 default-state = "keep";
827 gpios = <&gpio 2 GPIO_ACTIVE_HIGH>;
828 default-state = "keep";