Compare commits

...

6 Commits

6 changed files with 904 additions and 3 deletions

View File

@ -22,6 +22,10 @@ do_sysinfo_octeon() {
return 0
;;
"SNIC10E"*)
name="snic10e"
;;
"ITUS_SHIELD"*)
name="itus,shield-router"
;;

View File

@ -24,8 +24,9 @@ CONFIG_BLK_DEV_SD=y
CONFIG_BLK_MQ_PCI=y
CONFIG_BLK_SCSI_REQUEST=y
CONFIG_BUILTIN_DTB=y
# CONFIG_CAVIUM_CN63XXP1 is not set
CONFIG_CAVIUM_CN63XXP1=y
CONFIG_CAVIUM_OCTEON_CVMSEG_SIZE=0
CONFIG_CAVIUM_OCTEON2=y
CONFIG_CAVIUM_OCTEON_LOCK_L2=y
CONFIG_CAVIUM_OCTEON_LOCK_L2_EXCEPTION=y
CONFIG_CAVIUM_OCTEON_LOCK_L2_INTERRUPT=y
@ -213,9 +214,9 @@ CONFIG_NO_GENERIC_PCI_IOPORT_MAP=y
CONFIG_NR_CPUS=16
CONFIG_NR_CPUS_DEFAULT_64=y
CONFIG_NVMEM=y
CONFIG_OCTEON_ETHERNET=y
CONFIG_OCTEON_ETHERNET=n
CONFIG_OCTEON_ILM=y
CONFIG_OCTEON_MGMT_ETHERNET=y
CONFIG_OCTEON_MGMT_ETHERNET=n
CONFIG_OCTEON_USB=y
CONFIG_OCTEON_WDT=y
CONFIG_OF=y

View File

@ -0,0 +1,853 @@
/dts-v1/;
/*
* Cavium Inc. (Small) NIC10e board
*/
/ {
model = "cavium,snic10e";
compatible = "cavium,snic10e";
#address-cells = <2>;
#size-cells = <2>;
interrupt-parent = <&ciu>;
soc@0 {
compatible = "simple-bus";
#address-cells = <2>;
#size-cells = <2>;
ranges; /* Direct mapping */
ciu: interrupt-controller@1070000000000 {
compatible = "cavium,octeon-3860-ciu";
interrupt-controller;
/* Interrupts are specified by two parts:
* 1) Controller register (0 or 1)
* 2) Bit within the register (0..63)
*/
#interrupt-cells = <2>;
reg = <0x10700 0x00000000 0x0 0x7000>;
};
gpio: gpio-controller@1070000000800 {
#gpio-cells = <2>;
compatible = "cavium,octeon-3860-gpio";
reg = <0x10700 0x00000800 0x0 0x100>;
gpio-controller;
/* Interrupts are specified by two parts:
* 1) GPIO pin number (0..15)
* 2) Triggering (1 - edge rising
* 2 - edge falling
* 4 - level active high
* 8 - level active low)
*/
interrupt-controller;
#interrupt-cells = <2>;
/* The GPIO pins connect to 16 consecutive CUI bits */
interrupts = <0 16>; /* <0 17> <0 18> <0 19>
<0 20> <0 21> <0 22> <0 23>
<0 24> <0 25> <0 26> <0 27>
<0 28> <0 29> <0 30> <0 31>; */
};
twsi0: i2c@1180000001000 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "cavium,octeon-3860-twsi";
reg = <0x11800 0x00001000 0x0 0x200>;
interrupts = <0 45>;
/* NOTE: In order to get the proper delay between
* i2c bus transactions for the SFP we need to either
* slow the bus down to no more than 30KHz or else
* somehow insert a delay between transactions. Only
* U-Boot is capable of inserting the appropriate delay
* at this time.
*/
clock-frequency = <30000>;
tmp@4c {
compatible = "ti,tmp421";
reg = <0x4c>;
};
sfp0: eeprom@50 {
compatible = "atmel,24c01";
reg = <0x50>;
};
tlv-eeprom@53 {
compatible = "atmel,24c256";
reg = <0x53>;
pagesize = <64>;
};
};
twsi1: i2c@1180000001200 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "cavium,octeon-3860-twsi";
reg = <0x11800 0x00001200 0x0 0x200>;
interrupts = <0 59>;
/* NOTE: In order to get the proper delay between
* i2c bus transactions for the SFP we need to either
* slow the bus down to no more than 30KHz or else
* somehow insert a delay between transactions. Only
* U-Boot is capable of inserting the appropriate delay
* at this time.
*/
clock-frequency = <30000>;
sfp1: eeprom@50 {
compatible = "atmel,24c01";
reg = <0x50>;
};
gpio1: gpio@20 {
reg = <0x20>;
compatible = "nxp,pca9554";
gpio-controller;
#gpio-cells = <2>;
interrupt-parent = <&gpio>;
interrupt = <13 2>; /* OCTEON GPIO 13, falling edge */
#interrupt-cells = <1>;
cavium,phy-trim = "0,ti";
};
};
smi0: mdio@1180000001800 {
compatible = "cavium,octeon-3860-mdio";
#address-cells = <1>;
#size-cells = <0>;
reg = <0x11800 0x00001800 0x0 0x40>;
status = "disabled";
mphyA: ethernet-phy-nexus@A {
status = "disabled";
reg = <0>;
/* The Vitesse VSC8488 is a dual-PHY where
* some of the configuration is common across
* both of the phy devices such as the reset
* line and the base MDIO address.
*/
compatible = "vitesse,vsc8488-nexus", "ethernet-phy-nexus";
#address-cells = <1>;
#size-cells = <0>;
ranges;
cavium,phy-trim = "0,vitesse";
/* Hardware reset signal */
reset = <&gpio 17 0>;
phy0: ethernet-phy@0 {
status = "disabled";
/* Absolute address */
reg = <0>;
compatible = "vitesse,vsc8488", "ethernet-phy-ieee802.3-c45";
interrupt-parent = <&gpio>;
interrupts = <13 8>;
mod_abs = <0>;
/* TX Fault GPIO line */
tx_fault = <1>;
/* GPIO that enables output */
txon = <4>;
/* INT A GPIO output */
inta = <5>;
/* Optional equalization value to
* program into the PHY XS XAUI Rx
* Equalization control register.
* It is broken up into one nibble for
* each lane with lane 0 using bits
* 12 - 15.
* Use the following table:
* 0x0 - 0dB
* 0x1 - 1.41dB
* 0x2 - 2.24dB
* 0x3 - 2.83dB
* 0x5 - 4.48dB
* 0x6 - 5.39dB
* 0x7 - 6.07dB
* 0x9 - 6.18dB
* 0xA - 7.08dB (default)
* 0xB - 7.79dB
* 0xD - 9.96dB
* 0xE - 10.84dB
* 0xF - 11.55dB
*
* This is board specific and should
* only be defined by the hardware
* vendor.
*/
vitesse,rx_equalization = <0x0000>;
/* Optional transmit pre-emphasis
* control. This sets the
* PHY XS XAUI TX pre-emphasis control
* register.
*
* It uses bits 13-14 for lane 0,
* 10-11 for lane 1, 7-8 for lane 2
* and 4-5 for lane 3.
*
* Bits 2-3 are the LOS threshold
* setting and bit 1 enables
* the XAUI output high swing mode.
*
* Use the following table for
* pre-emphasis:
* 0b00 - 0dB
* 0b01 - 2.5dB
* 0b10 - 6dB (default)
* 0b11 - 12dB
*
* Use the following table for the LOS
* threshold setting:
*
* 0b00 - 50mV - 175mV (default)
* 0b01 - 60mV - 185mV
* 0b10 - 70mV - 195mV
* 0b11 - 80mV - 205mV
*/
vitesse,tx_preemphasis = <0x0000>;
/* TX output driver slew rate control
* is bits 8-11 where 0x0 is the minimum
* and 0xF is the maximum.
* Default is 0xA.
*
* The TX output driver C(-1)
* coefficient is bits 0-4 where
* 0b00000 is the minimum (-4ma) and
* 0b11111 is the maximum (4ma). The
* default 0x 0b01111.
*/
vitesse,txout_driver_ctrl1 = <0x0A0F>;
/* The TX output driver C(0) coefficient
* is bits 8-12 with 0b00000 being the
* minimum (0mA) and 0b11111 being
* the maximum (16mA). The default is
* 0b10011
*
* The C(+1) coefficient is bits 0-5
* with 0b000000 being the minimum
* (-0.25mA) and 0b111111 being the
* maximum (-16mA). The default is
* 0b000000.
*/
/*vitesse,txout_driver_ctrl2 = <0x1300>;*/
/* DC_AGC_LOS_CONFIG1:
* 15: Suppress_Coarse_Adj_on_LOS_Clear
* 0: DC offset correction performed using coarse
* resolution mode (default)
* 1: DC offset correction performed using fine resolution
* mode when correction resumes after LOPC/LOS alarms
* clear. This guarantees there will be no big jumps in
* the offset at the expense of taking longer to reach
* optimal setting.
* 14: Force_DC2_Fine_Adj:
* Forces the DC offset correction to operate in fine
* resolution adjustment mode at times when the algorithm.
* 0: DC offset correction makes coarse adjustments when
* correction mode is first enabled (default)
* 1: DC offset correction performed using fine resolution
* at all times. This is slower.
* 13: Force_DC1_Fine_Adj:
* Forces the DC offset correction to operate in fine
* resolution adjustment mode at times when the algorithm.
* 0: DC offset correction makes coarse adjustments when
* correction mode is first enabled (default)
* 1: DC offset correction performed using fine resolution
* at all times. This is slower.
* 12: Force_DC0_Fine_Adj:
* Forces the DC offset correction to operate in fine
* resolution adjustment mode at times when the algorithm.
* 0: DC offset correction makes coarse adjustments when
* correction mode is first enabled (default)
* 1: DC offset correction performed using fine resolution
* at all times. This is slower.
* 10: Skip_DC2_Adj, 1 = skip DC2 offset correction
* 9: Skip_DC1_Adj, 1 = skip DC1 offset correction
* 8: Skip_DC0_Adj, 1 = skip DC0 offset correction
*
* 6-4: DC_Offset_Alarm_Mode (default 1)
* Selects the alarm condition that will halt the DC offset
* correction logic when the alarm(s) are set.
* 111: reserved
* 110: reserved
* 101: LOPC and software LOS detection
* 100: LOPC and hardware LOS detection
* 011: Software LOS detection
* 010: Hardware LOS detection
* 001: LOPC
* 000: Never. DC offset correction will continue to make
* fine resolution adjustments to the offsets even
* when LOPC and LOS alarms are present.
*
* 3: AGC_Enable
* Selects when hardware AGC adjustment logic and LOS
* detection logic is enabled (default 1)
* 0: disabled
* 1: enabled
* 2: AGC_Suspend
* Suspends the LOS detection logic and AGC logic
* from making adjustments to the gain. Bit valid only
* if AGC_Enable=1
* 0: AGC adjustment enabled (default)
* 1: AGC adjustment suspended
* 1: DC_Offset_Adj_Enable
* Select when the hardware DC offset correction logic is
* enabled.
* 0: disable
* 1: enable (default)
* 0: DC_Offset_Adj_Suspend
* Suspends the DC offset correction logic from making
* adjustments to all offset settings. Bit valid only if
* DC_Offset_Adj_Enable=1
* 0: DC offset correction enabled (default)
* 1: DC offset correction suspended
*
* This setting is only applied for
* passive copper.
*/
vitesse,copper_dc_agc_los_config1 = <0x000A>;
/* Disable aggressive track phase during
* firmware convergence if 0, enabled
* otherwise (default).
*
* This setting is only applied for
* passive copper.
*/
vitesse,copper_agg_track_phase = <0>;
/* AGC_Config4
*
* 13-8: Ampl_Tolerance
* This defines the hysterisis
* built in to the AGC adjustment
* circuit. The VGA gain will not
* be adjusted as long as the
* measured input amplitude is
* Inp_Ampl_Target +/- Amnpl_Tolerance.
* Default is 4.
* 7-0: Inp_Ampl_Target
* This is the target amplitude
* desired to be measured at the
* peak detector when measuring
* input amplitude. The VGA gain
* is adjusted to achieve this
* target setting.
* Default is 0x6E.
*
* This setting is only applied for
* passive copper.
*/
vitesse,copper_agc_config4 = <0x0496>;
/* The Vitesse 10G PHY does not
* automatically read the SFP EEPROM
* so the host needs to do it to put
* the PHY in the proper mode for
* copper or optical.
*/
sfp-eeprom = <&sfp0>;
};
phy1: ethernet-phy@1 {
status = "disabled";
/* Absolute address */
reg = <0x1>;
compatible = "vitesse,vsc8488", "ethernet-phy-ieee802.3-c45";
interrupt-parent = <&gpio>;
interrupts = <13 8>;
mod_abs = <9>;
/* TX Fault GPIO line */
tx_fault = <8>;
/* GPIO that enables output */
txon = <10>;
/* INT A GPIO output */
inta = <5>;
/* Optional equalization value to
* program into the PHY XS XAUI Rx
* Equalization control register.
* It is broken up into one nibble for
* each lane with lane 0 using bits
* 12 - 15.
* Use the following table:
* 0x0 - 0dB
* 0x1 - 1.41dB
* 0x2 - 2.24dB
* 0x3 - 2.83dB
* 0x5 - 4.48dB
* 0x6 - 5.39dB
* 0x7 - 6.07dB
* 0x9 - 6.18dB
* 0xA - 7.08dB (default)
* 0xB - 7.79dB
* 0xD - 9.96dB
* 0xE - 10.84dB
* 0xF - 11.55dB
*
* This is board specific and should
* only be defined by the hardware
* vendor.
*/
rx_equalization = <0x0000>;
/* Optional transmit pre-emphasis
* control. This sets the
* PHY XS XAUI TX pre-emphasis control
* register.
*
* It uses bits 13-14 for lane 0,
* 10-11 for lane 1, 7-8 for lane 2
* and 4-5 for lane 3.
*
* Bits 2-3 are the LOS threshold
* setting and bit 1 enables
* the XAUI output high swing mode.
*
* Use the following table for
* pre-emphasis:
* 0b00 - 0dB
* 0b01 - 2.5dB
* 0b10 - 6dB (default)
* 0b11 - 12dB
*
* Use the following table for the LOS
* threshold setting:
*
* 0b00 - 50mV - 175mV (default)
* 0b01 - 60mV - 185mV
* 0b10 - 70mV - 195mV
* 0b11 - 80mV - 205mV
*/
tx_preemphasis = <0x0000>;
/* TX output driver slew rate control
* is bits 8-11 where 0x0 is the minimum
* and 0xF is the maximum.
* Default is 0xA.
*
* The TX output driver C(-1)
* coefficient is bits 0-4 where
* 0b00000 is the minimum (-4ma) and
* 0b11111 is the maximum (4ma). The
* default 0x 0b01111.
*/
txout_driver_ctrl1 = <0x0A0F>;
/* The TX output driver C(0) coefficient
* is bits 8-12 with 0b00000 being the
* minimum (0mA) and 0b11111 being
* the maximum (16mA). The default is
* 0b10011
*
* The C(+1) coefficient is bits 0-5
* with 0b000000 being the minimum
* (-0.25mA) and 0b111111 being the
* maximum (-16mA). The default is
* 0b000000.
*/
/*txout_driver_ctrl2 = <0x1300>;*/
/* DC_AGC_LOS_CONFIG1:
* 15: Suppress_Coarse_Adj_on_LOS_Clear
* 0: DC offset correction performed using coarse
* resolution mode (default)
* 1: DC offset correction performed using fine resolution
* mode when correction resumes after LOPC/LOS alarms
* clear. This guarantees there will be no big jumps in
* the offset at the expense of taking longer to reach
* optimal setting.
* 14: Force_DC2_Fine_Adj:
* Forces the DC offset correction to operate in fine
* resolution adjustment mode at times when the algorithm.
* 0: DC offset correction makes coarse adjustments when
* correction mode is first enabled (default)
* 1: DC offset correction performed using fine resolution
* at all times. This is slower.
* 13: Force_DC1_Fine_Adj:
* Forces the DC offset correction to operate in fine
* resolution adjustment mode at times when the algorithm.
* 0: DC offset correction makes coarse adjustments when
* correction mode is first enabled (default)
* 1: DC offset correction performed using fine resolution
* at all times. This is slower.
* 12: Force_DC0_Fine_Adj:
* Forces the DC offset correction to operate in fine
* resolution adjustment mode at times when the algorithm.
* 0: DC offset correction makes coarse adjustments when
* correction mode is first enabled (default)
* 1: DC offset correction performed using fine resolution
* at all times. This is slower.
* 10: Skip_DC2_Adj, 1 = skip DC2 offset correction
* 9: Skip_DC1_Adj, 1 = skip DC1 offset correction
* 8: Skip_DC0_Adj, 1 = skip DC0 offset correction
*
* 6-4: DC_Offset_Alarm_Mode (default 1)
* Selects the alarm condition that will halt the DC offset
* correction logic when the alarm(s) are set.
* 111: reserved
* 110: reserved
* 101: LOPC and software LOS detection
* 100: LOPC and hardware LOS detection
* 011: Software LOS detection
* 010: Hardware LOS detection
* 001: LOPC
* 000: Never. DC offset correction will continue to make
* fine resolution adjustments to the offsets even
* when LOPC and LOS alarms are present.
*
* 3: AGC_Enable
* Selects when hardware AGC adjustment logic and LOS
* detection logic is enabled (default 1)
* 0: disabled
* 1: enabled
* 2: AGC_Suspend
* Suspends the LOS detection logic and AGC logic
* from making adjustments to the gain. Bit valid only
* if AGC_Enable=1
* 0: AGC adjustment enabled (default)
* 1: AGC adjustment suspended
* 1: DC_Offset_Adj_Enable
* Select when the hardware DC offset correction logic is
* enabled.
* 0: disable
* 1: enable (default)
* 0: DC_Offset_Adj_Suspend
* Suspends the DC offset correction logic from making
* adjustments to all offset settings. Bit valid only if
* DC_Offset_Adj_Enable=1
* 0: DC offset correction enabled (default)
* 1: DC offset correction suspended
*
* This setting is only applied for
* passive copper.
*/
vitesse,copper_dc_agc_los_config1 = <0x000A>;
/* Disable aggressive track phase during
* firmware convergence if 0, enabled
* otherwise (default).
*
* This setting is only applied for
* passive copper.
*/
vitesse,copper_agg_track_phase = <0>;
/* AGC_Config4
*
* 13-8: Ampl_Tolerance
* This defines the hysterisis
* built in to the AGC adjustment
* circuit. The VGA gain will not
* be adjusted as long as the
* measured input amplitude is
* Inp_Ampl_Target +/- Amnpl_Tolerance.
* Default is 4.
* 7-0: Inp_Ampl_Target
* This is the target amplitude
* desired to be measured at the
* peak detector when measuring
* input amplitude. The VGA gain
* is adjusted to achieve this
* target setting.
* Default is 0x6E.
*
* This setting is only applied for
* passive copper.
*/
vitesse,copper_agc_config4 = <0x0496>;
/* The Vitesse 10G PHY does not
* automatically read the SFP EEPROM
* so the host needs to do it to put
* the PHY in the proper mode for
* copper or optical.
*/
sfp-eeprom = <&sfp1>;
};
};
mphyB: ethernet-phy-nexus@B {
status = "disabled";
reg = <0>;
/* The TI TLK10232 is a dual-PHY where
* some of the configuration is common across
* both of the phy devices such as the reset
* line and the base MDIO address.
*/
compatible = "ti,tlk10232-nexus", "ethernet-phy-nexus";
#address-cells = <1>;
#size-cells = <0>;
ranges;
cavium,phy-trim = "0,ti";
/* Hardware reset signal open-drain active low on GPIO 17, must not be driven high. */
reset = <&gpio 17 2>;
phy11: ethernet-phy@0 {
status = "disabled";
/* Absolute address */
reg = <0>;
compatible = "ti,tlk10232", "ethernet-phy-ieee802.3-c45";
/* The TI 10G PHY does not
* automatically read the SFP EEPROM
* so the host needs to do it to put
* the PHY in the proper mode for
* copper or optical.
*/
sfp-eeprom = <&sfp0>;
/* TX fault input signal for PHY from SFP+ */
tx-fault = <&gpio1 4 0>;
/* TX disable for PHY to SFP+ */
tx-disable = <&gpio1 5 0>;
/* MOD ABS signal for PHY from SFP+ */
mod-abs = <&gpio1 6 0>;
/* RX los of singal for PHY from SFP+ */
rx-los = <&gpio1 7 0>;
};
phy10: ethernet-phy@1 {
status = "disabled";
/* Absolute address */
reg = <0x1>;
compatible = "ti,tlk10232", "ethernet-phy-ieee802.3-c45";
/* The TI 10G PHY does not
* automatically read the SFP EEPROM
* so the host needs to do it to put
* the PHY in the proper mode for
* copper or optical.
*/
sfp-eeprom = <&sfp1>;
/* TX fault input signal for PHY */
tx-fault = <&gpio1 0 0>;
/* TX disable for PHY */
tx-disable = <&gpio1 1 0>;
/* MOD ABS signal for PHY */
mod-abs = <&gpio1 2 0>;
/* RX los of singal for PHY */
rx-los = <&gpio1 3 0>;
};
};
};
pip: pip@11800a0000000 {
compatible = "cavium,octeon-3860-pip";
#address-cells = <1>;
#size-cells = <0>;
reg = <0x11800 0xa0000000 0x0 0x2000>;
interface@A {
compatible = "cavium,octeon-3860-pip-interface";
#address-cells = <1>;
#size-cells = <0>;
reg = <0>; /* interface */
cavium,phy-trim = "0,vitesse";
ethernet@0 {
compatible = "cavium,octeon-3860-pip-port";
reg = <0x0>; /* Port */
local-mac-address = [ 00 00 00 00 00 00 ];
phy-handle = <&phy0>;
};
};
interface@B {
compatible = "cavium,octeon-3860-pip-interface";
#address-cells = <1>;
#size-cells = <0>;
reg = <1>; /* interface */
cavium,phy-trim = "0,vitesse";
ethernet@0 {
compatible = "cavium,octeon-3860-pip-port";
reg = <0x0>; /* Port */
local-mac-address = [ 00 00 00 00 00 00 ];
phy-handle = <&phy1>;
};
};
interface@C {
compatible = "cavium,octeon-3860-pip-interface";
#address-cells = <1>;
#size-cells = <0>;
reg = <0>; /* interface */
cavium,phy-trim = "0,ti";
ethernet@0 {
compatible = "cavium,octeon-3860-pip-port";
reg = <0x0>; /* Port */
local-mac-address = [ 00 00 00 00 00 00 ];
phy-handle = <&phy10>;
};
};
interface@D {
compatible = "cavium,octeon-3860-pip-interface";
#address-cells = <1>;
#size-cells = <0>;
reg = <1>; /* interface */
cavium,phy-trim = "0,ti";
ethernet@0 {
compatible = "cavium,octeon-3860-pip-port";
reg = <0x0>; /* Port */
local-mac-address = [ 00 00 00 00 00 00 ];
phy-handle = <&phy11>;
};
};
};
uart0: serial@1180000000800 {
compatible = "cavium,octeon-3860-uart","ns16550";
reg = <0x11800 0x00000800 0x0 0x400>;
clock-frequency = <400000000>;
current-speed = <115200>;
reg-shift = <3>;
interrupts = <0 34>;
};
uart1: serial@1180000000c00 {
compatible = "cavium,octeon-3860-uart","ns16550";
reg = <0x11800 0x00000c00 0x0 0x400>;
clock-frequency = <400000000>;
current-speed = <115200>;
reg-shift = <3>;
interrupts = <0 35>;
};
bootbus: bootbus@1180000000000 {
compatible = "cavium,octeon-3860-bootbus";
reg = <0x11800 0x00000000 0x0 0x200>;
/* The chip select number and offset */
#address-cells = <2>;
/* The size of the chip select region */
#size-cells = <1>;
ranges = <0 0 0 0x1f400000 0xc00000>,
<1 0 0x10000 0x30000000 0>,
<2 0 0 0x1f000000 0x100000>,
<3 0 0x10000 0x50000000 0>,
<4 0 0x10000 0x60000000 0>,
<5 0 0x10000 0x70000000 0>,
<6 0 0x10000 0x80000000 0>,
<7 0 0x10000 0x90000000 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 = <300>;
cavium,t-page = <25>;
cavium,t-rd-dly = <0>;
cavium,pages = <0>;
cavium,bus-width = <8>;
};
cavium,cs-config@2 {
compatible = "cavium,octeon-3860-bootbus-config";
cavium,cs-index = <2>;
cavium,t-adr = <0>;
cavium,t-ce = <50>;
cavium,t-oe = <20>;
cavium,t-we = <46>;
cavium,t-rd-hld = <8>;
cavium,t-wr-hld = <10>;
cavium,t-pause = <0>;
cavium,t-wait = <0>;
cavium,t-page = <1>;
cavium,t-ale = <1>;
cavium,t-rd-dly = <0>;
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 = <0x0 0x1c0000>;
read-only;
};
partition@1c0000 {
label = "kernel";
reg = <0x1c0000 0x63e000>;
};
partition@7fe000 {
label = "environment";
reg = <0x7fe0000 0x2000>;
read-only;
};
};
psram0: psram@2,0 {
compatible = "micron,mt45w1mw16pd";
reg = <2 0x20 0x20>, <2 0 0x20>;
};
};
dma0: dma-engine@1180000000100 {
compatible = "cavium,octeon-5750-bootbus-dma";
reg = <0x11800 0x00000100 0x0 0x8>;
interrupts = <0 63>;
};
dma1: dma-engine@1180000000108 {
compatible = "cavium,octeon-5750-bootbus-dma";
reg = <0x11800 0x00000108 0x0 0x8>;
interrupts = <0 63>;
};
nand-flash-interface@1070001000000 {
compatible = "cavium,octeon-5230-nand";
reg = <0x10700 0x1000000 0x0 0x100 0x11800 0x168 0x0 0x20>;
#address-cells = <0x1>;
#size-cells = <0x0>;
interrupts = <0x0 0x3f>;
flash@1 {
compatible = "nand-flash";
reg = <0x1>;
nand-ecc-mode = "soft";
nand-ecc-size = <0x200>;
nand-ecc-bytes = <0x7>;
nand-bus-width = <0x8>;
};
};
};
gpio-leds {
compatible = "gpio-leds";
d1a {
label = "bottom";
gpios = <&gpio 1 0>;
default-state = "keep";
cavium,phy-trim = "0,ti";
};
d1b-t {
label = "top";
gpios = <&gpio 2 0>;
default-state = "keep";
cavium,phy-trim = "0,ti";
};
d1b-v {
label = "top";
gpios = <&gpio 2 0>;
default-state = "keep";
cavium,phy-trim = "0,vitesse";
};
};
aliases {
pip = &pip;
smi0 = &smi0;
twsi0 = &twsi0;
twsi1 = &twsi1;
uart0 = &uart0;
uart1 = &uart1;
flash0 = &flash0;
};
};

View File

@ -65,6 +65,16 @@ define Device/ubnt_edgerouter-4
endef
TARGET_DEVICES += ubnt_edgerouter-4
define Device/snic10e
DEVICE_VENDOR := Cavium
DEVICE_MODEL := snic10e
DEVICE_DTS := snic10e
DEVICE_PACKAGES += kmod-gpio-button-hotplug kmod-leds-gpio kmod-of-mdio kmod-sfp kmod-usb3 kmod-usb-storage-uas
KERNEL := kernel-bin | append-dtb-to-elf
KERNEL_DEPENDS := $$(wildcard $(DTS_DIR)/$(DEVICE_DTS).dts)
endef
TARGET_DEVICES += snic10e
ERLITE_CMDLINE:=-mtdparts=phys_mapped_flash:512k(boot0)ro,512k(boot1)ro,64k(eeprom)ro root=/dev/sda2 rootfstype=squashfs,ext4 rootwait
define Device/ubnt_edgerouter-lite
DEVICE_VENDOR := Ubiquiti

View File

@ -0,0 +1,18 @@
--- a/arch/mips/include/asm/octeon/cvmx-bootinfo.h
+++ b/arch/mips/include/asm/octeon/cvmx-bootinfo.h
@@ -253,6 +253,7 @@ enum cvmx_board_types_enum {
CVMX_BOARD_TYPE_REDWING = 43,
CVMX_BOARD_TYPE_NIC68_4 = 44,
CVMX_BOARD_TYPE_NIC10E_66 = 45,
+ CVMX_BOARD_TYPE_SNIC10E = 50,
CVMX_BOARD_TYPE_MAX,
/*
@@ -366,6 +367,7 @@ static inline const char *cvmx_board_type_to_string(enum
ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_REDWING)
ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_NIC68_4)
ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_NIC10E_66)
+ ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_SNIC10E)
ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_MAX)
/* Customer boards listed here */

View File

@ -0,0 +1,15 @@
--- a/drivers/staging/octeon/ethernet.c
+++ b/drivers/staging/octeon/ethernet.c
@@ -860,8 +860,10 @@ static int cvm_oct_probe(struct platform_device *pdev)
break;
case CVMX_HELPER_INTERFACE_MODE_XAUI:
- dev->netdev_ops = &cvm_oct_xaui_netdev_ops;
- strscpy(dev->name, "xaui%d", sizeof(dev->name));
+ if (0) { //of_device_is_available(priv->of_node)) {
+ dev->netdev_ops = &cvm_oct_xaui_netdev_ops;
+ strscpy(dev->name, "xaui%d", sizeof(dev->name));
+ }
break;
case CVMX_HELPER_INTERFACE_MODE_LOOP: