| // SPDX-License-Identifier: (GPL-2.0+ OR MIT) |
| /* |
| * Copyright (C) 2024 Josua Mayer <josua@solid-run.com> |
| * |
| */ |
| |
| #include <dt-bindings/gpio/gpio.h> |
| |
| /* |
| * Instantiate the first external CP115 |
| */ |
| |
| #define CP11X_NAME cp1 |
| #define CP11X_BASE f4000000 |
| #define CP11X_PCIEx_MEM_BASE(iface) (0xe2000000 + (iface * 0x1000000)) |
| #define CP11X_PCIEx_MEM_SIZE(iface) 0xf00000 |
| #define CP11X_PCIE0_BASE f4600000 |
| #define CP11X_PCIE1_BASE f4620000 |
| #define CP11X_PCIE2_BASE f4640000 |
| |
| #include "armada-cp115.dtsi" |
| |
| #undef CP11X_NAME |
| #undef CP11X_BASE |
| #undef CP11X_PCIEx_MEM_BASE |
| #undef CP11X_PCIEx_MEM_SIZE |
| #undef CP11X_PCIE0_BASE |
| #undef CP11X_PCIE1_BASE |
| #undef CP11X_PCIE2_BASE |
| |
| /* |
| * Instantiate the second external CP115 |
| */ |
| |
| #define CP11X_NAME cp2 |
| #define CP11X_BASE f6000000 |
| #define CP11X_PCIEx_MEM_BASE(iface) (0xe5000000 + (iface * 0x1000000)) |
| #define CP11X_PCIEx_MEM_SIZE(iface) 0xf00000 |
| #define CP11X_PCIE0_BASE f6600000 |
| #define CP11X_PCIE1_BASE f6620000 |
| #define CP11X_PCIE2_BASE f6640000 |
| |
| #include "armada-cp115.dtsi" |
| |
| #undef CP11X_NAME |
| #undef CP11X_BASE |
| #undef CP11X_PCIEx_MEM_BASE |
| #undef CP11X_PCIEx_MEM_SIZE |
| #undef CP11X_PCIE0_BASE |
| #undef CP11X_PCIE1_BASE |
| #undef CP11X_PCIE2_BASE |
| |
| / { |
| model = "SolidRun CN9132 COM Express Type 7 Module"; |
| compatible = "solidrun,cn9132-sr-cex7", "marvell,cn9130"; |
| |
| aliases { |
| ethernet0 = &cp0_eth1; |
| gpio3 = &cp1_gpio1; |
| gpio4 = &cp1_gpio2; |
| gpio5 = &cp2_gpio1; |
| gpio6 = &cp2_gpio2; |
| i2c0 = &cp0_i2c0; |
| i2c1 = &cp0_i2c1; |
| i2c2 = &com_clkgen_i2c; |
| i2c3 = &com_10g_led_i2c; |
| i2c4 = &com_10g_sfp_i2c0; |
| i2c5 = &com_smbus; |
| i2c6 = &com_fanctrl_i2c; |
| mmc0 = &ap_sdhci0; |
| rtc0 = &cp0_rtc; |
| }; |
| |
| chosen { |
| stdout-path = "serial0:115200n8"; |
| }; |
| |
| fan: pwm-fan { |
| compatible = "pwm-fan"; |
| cooling-levels = <0 51 102 153 204 255>; |
| #cooling-cells = <2>; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&cp0_fan_pwm_pins &cp0_fan_tacho_pins>; |
| pwms = <&cp0_gpio2 7 40000>; |
| interrupt-parent = <&cp0_gpio1>; |
| interrupts = <26 IRQ_TYPE_EDGE_FALLING>; |
| }; |
| |
| v_1_8: regulator-1-8 { |
| compatible = "regulator-fixed"; |
| regulator-name = "1v8"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| }; |
| |
| ap_vhv: regulator-ap-vhv-1-8 { |
| compatible = "regulator-fixed"; |
| regulator-name = "ap-vhv-1v8"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| pinctrl-0 = <&cp0_reg_ap_vhv_pins>; |
| pinctrl-names = "default"; |
| gpios = <&cp0_gpio2 21 GPIO_ACTIVE_HIGH>; |
| enable-active-high; |
| }; |
| |
| cp_vhv: regulator-cp-vhv-1-8 { |
| compatible = "regulator-fixed"; |
| regulator-name = "cp-vhv-1v8"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| pinctrl-0 = <&cp0_reg_cp_vhv_pins>; |
| pinctrl-names = "default"; |
| gpios = <&cp0_gpio2 17 GPIO_ACTIVE_HIGH>; |
| enable-active-high; |
| }; |
| }; |
| |
| &ap_pinctrl { |
| ap_mmc0_pins: ap-mmc0-pins { |
| marvell,pins = "mpp0", "mpp1", "mpp2", "mpp3", "mpp4", "mpp5", |
| "mpp6", "mpp7", "mpp8", "mpp9", "mpp10", "mpp12"; |
| marvell,function = "sdio"; |
| /* |
| * mpp12 is emmc reset, function should be sdio (hw_rst), |
| * but pinctrl-mvebu does not support this. |
| * |
| * From pinctrl-mvebu.h: |
| * "The name will be used to switch to this setting in DT description, e.g. |
| * marvell,function = "uart2". subname is only for debugging purposes." |
| */ |
| }; |
| }; |
| |
| &ap_sdhci0 { |
| bus-width = <8>; |
| pinctrl-0 = <&ap_mmc0_pins>; |
| pinctrl-names = "default"; |
| vqmmc-supply = <&v_1_8>; |
| status = "okay"; |
| }; |
| |
| &ap_thermal_ic { |
| polling-delay = <1000>; |
| |
| trips { |
| ap_active: trip-active { |
| temperature = <40000>; |
| hysteresis = <4000>; |
| type = "active"; |
| }; |
| }; |
| |
| cooling-maps { |
| map0 { |
| trip = <&ap_active>; |
| cooling-device = <&fan THERMAL_NO_LIMIT 4>; |
| }; |
| |
| map1 { |
| trip = <&ap_crit>; |
| cooling-device = <&fan 4 5>; |
| }; |
| }; |
| }; |
| |
| &cp0_ethernet { |
| status = "okay"; |
| }; |
| |
| &cp0_eth1 { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&cp0_eth1_pins>; |
| phy-mode = "rgmii-id"; |
| phy = <&cp0_eth_phy0>; |
| status = "okay"; |
| }; |
| |
| &cp0_gpio1 { |
| status = "okay"; |
| |
| /* |
| * Tacho signal used as interrupt source by pwm-fan driver. |
| * Hog IO as input to ensure mvebu-gpio irq driver`s |
| * irq_set_type can succeed. |
| */ |
| pwm-tacho-irq-hog { |
| gpio-hog; |
| gpios = <26 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>; |
| input; |
| line-name = "fan-tacho"; |
| }; |
| }; |
| |
| &cp0_gpio2 { |
| status = "okay"; |
| }; |
| |
| &cp0_i2c0 { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&cp0_i2c0_pins>; |
| clock-frequency = <100000>; |
| status = "okay"; |
| |
| com_eeprom: eeprom@50 { |
| compatible = "atmel,24c02"; |
| reg = <0x50>; |
| pagesize = <8>; |
| }; |
| |
| eeprom@53 { |
| compatible = "atmel,spd"; |
| reg = <0x53>; |
| }; |
| }; |
| |
| &cp0_i2c1 { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&cp0_i2c1_pins>; |
| clock-frequency = <100000>; |
| status = "okay"; |
| |
| i2c-mux@77 { |
| compatible = "nxp,pca9547"; |
| reg = <0x77>; |
| i2c-mux-idle-disconnect; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| com_clkgen_i2c: i2c@0 { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| reg = <0>; |
| |
| /* clock-controller@6b */ |
| }; |
| |
| com_10g_led_i2c: i2c@1 { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| reg = <1>; |
| |
| /* Routed to B2B Connector as I2C_10G_LED_SCL/SDA */ |
| }; |
| |
| com_10g_sfp_i2c0: i2c@2 { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| reg = <2>; |
| |
| /* Routed to B2B Connector as I2C_SFP0_CP0_SCL/SDA */ |
| }; |
| |
| com_smbus: i2c@3 { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| reg = <3>; |
| |
| /* Routed to B2B Connector as SBM_CLK/DAT */ |
| }; |
| |
| com_fanctrl_i2c: i2c@4 { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| reg = <4>; |
| |
| /* fan-controller@2f (assembly option) */ |
| }; |
| }; |
| }; |
| |
| &cp0_mdio { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&cp0_mdio_pins>; |
| status = "okay"; |
| |
| cp0_eth_phy0: ethernet-phy@0 { |
| reg = <0>; |
| }; |
| }; |
| |
| &cp0_spi1 { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&cp0_spi1_pins>; |
| status = "okay"; |
| |
| flash@0 { |
| compatible = "jedec,spi-nor"; |
| reg = <0>; |
| /* read command supports max. 50MHz */ |
| spi-max-frequency = <50000000>; |
| }; |
| }; |
| |
| &cp0_syscon0 { |
| cp0_pinctrl: pinctrl { |
| compatible = "marvell,cp115-standalone-pinctrl"; |
| |
| com_10g_int0_pins: cp0-10g-int-pins { |
| marvell,pins = "mpp24"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp0_eth1_pins: cp0-eth1-pins { |
| marvell,pins = "mpp0", "mpp1", "mpp2", "mpp3", |
| "mpp4", "mpp5", "mpp6", "mpp7", |
| "mpp8", "mpp9", "mpp10", "mpp11"; |
| /* docs call it "ge1", but cp110-pinctrl "ge0" */ |
| marvell,function = "ge0"; |
| }; |
| |
| cp0_fan_pwm_pins: cp0-fan-pwm-pins { |
| marvell,pins = "mpp39"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp0_fan_tacho_pins: cp0-fan-tacho-pins { |
| marvell,pins = "mpp26"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp0_i2c0_pins: cp0-i2c0-pins { |
| marvell,pins = "mpp37", "mpp38"; |
| marvell,function = "i2c0"; |
| }; |
| |
| cp0_i2c1_pins: cp0-i2c1-pins { |
| marvell,pins = "mpp35", "mpp36"; |
| marvell,function = "i2c1"; |
| }; |
| |
| cp0_mdio_pins: cp0-mdio-pins { |
| marvell,pins = "mpp40", "mpp41"; |
| marvell,function = "ge"; |
| }; |
| |
| cp0_mmc0_pins: cp0-mmc0-pins { |
| marvell,pins = "mpp56", "mpp57", "mpp58", "mpp59", |
| "mpp60", "mpp61"; |
| marvell,function = "sdio"; |
| }; |
| |
| cp0_mmc0_cd_pins: cp0-mmc0-cd-pins { |
| marvell,pins = "mpp55"; |
| marvell,function = "sdio_cd"; |
| }; |
| |
| cp0_pwrbtn_pins: cp0-pwrbtn-pins { |
| marvell,pins = "mpp31"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp0_reg_ap_vhv_pins: cp0-reg-ap-vhv-pins { |
| marvell,pins = "mpp53"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp0_reg_cp_vhv_pins: cp0-reg-cp-vhv-pins { |
| marvell,pins = "mpp49"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp0_spi1_pins: cp0-spi1-pins { |
| marvell,pins = "mpp13", "mpp14", "mpp15", "mpp16"; |
| marvell,function = "spi1"; |
| }; |
| |
| cp0_spi1_cs1_pins: cp0-spi1-cs1-pins { |
| marvell,pins = "mpp12"; |
| marvell,function = "spi1"; |
| }; |
| |
| cp0_uart2_pins: cp0-uart2-pins { |
| marvell,pins = "mpp50", "mpp51"; |
| marvell,function = "uart2"; |
| }; |
| }; |
| }; |
| |
| &cp0_thermal_ic { |
| polling-delay = <1000>; |
| |
| trips { |
| cp0_active: trip-active { |
| temperature = <40000>; |
| hysteresis = <4000>; |
| type = "active"; |
| }; |
| }; |
| |
| cooling-maps { |
| map0 { |
| trip = <&cp0_active>; |
| cooling-device = <&fan THERMAL_NO_LIMIT 4>; |
| }; |
| |
| map1 { |
| trip = <&cp0_crit>; |
| cooling-device = <&fan 4 5>; |
| }; |
| }; |
| }; |
| |
| /* USB-2.0 Host */ |
| &cp0_usb3_0 { |
| phys = <&cp0_utmi0>; |
| phy-names = "utmi"; |
| dr_mode = "host"; |
| status = "okay"; |
| }; |
| |
| /* USB-2.0 Host */ |
| &cp0_usb3_1 { |
| phys = <&cp0_utmi1>; |
| phy-names = "utmi"; |
| dr_mode = "host"; |
| status = "okay"; |
| }; |
| |
| &cp0_utmi { |
| status = "okay"; |
| }; |
| |
| &cp1_gpio1 { |
| status = "okay"; |
| }; |
| |
| &cp1_gpio2 { |
| status = "okay"; |
| }; |
| |
| &cp1_rtc { |
| status = "disabled"; |
| }; |
| |
| &cp1_spi1 { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&cp1_spi1_pins>; |
| status = "okay"; |
| |
| tpm@0 { |
| reg = <0>; |
| compatible = "infineon,slb9670", "tcg,tpm_tis-spi"; |
| spi-max-frequency = <10000000>; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&cp1_tpm_irq_pins>; |
| interrupt-parent = <&cp1_gpio1>; |
| interrupts = <17 IRQ_TYPE_LEVEL_LOW>; |
| }; |
| }; |
| |
| &cp1_syscon0 { |
| cp1_pinctrl: pinctrl { |
| compatible = "marvell,cp115-standalone-pinctrl"; |
| |
| com_10g_int1_pins: cp1-10g-int-pins { |
| marvell,pins = "mpp50"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp1_10g_phy_rst_01_pins: cp1-10g-phy-rst-01-pins { |
| marvell,pins = "mpp43"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp1_10g_phy_rst_23_pins: cp1-10g-phy-rst-23-pins { |
| marvell,pins = "mpp42"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp1_batlow_pins: cp1-batlow-pins { |
| marvell,pins = "mpp11"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp1_rsvd16_pins: cp1-rsvd16-pins { |
| marvell,pins = "mpp29"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp1_sata_act_pins: cp1-sata-act-pins { |
| marvell,pins = "mpp39"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp1_spi1_pins: cp1-spi1-pins { |
| marvell,pins = "mpp13", "mpp14", "mpp15", "mpp16"; |
| marvell,function = "spi1"; |
| }; |
| |
| cp1_thrm_irq_pins: cp1-thrm-irq-pins { |
| marvell,pins = "mpp34"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp1_thrm_trip_pins: cp1-thrm-trip-pins { |
| marvell,pins = "mpp33"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp1_tpm_irq_pins: cp1-tpm-irq-pins { |
| marvell,pins = "mpp17"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp1_wake0_pins: cp1-wake0-pins { |
| marvell,pins = "mpp40"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp1_wake1_pins: cp1-wake1-pins { |
| marvell,pins = "mpp51"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp1_xmdio_pins: cp1-xmdio-pins { |
| marvell,pins = "mpp37", "mpp38"; |
| marvell,function = "xg"; |
| }; |
| }; |
| }; |
| |
| &cp1_thermal_ic { |
| polling-delay = <1000>; |
| |
| trips { |
| cp1_active: trip-active { |
| temperature = <40000>; |
| hysteresis = <4000>; |
| type = "active"; |
| }; |
| }; |
| |
| cooling-maps { |
| map0 { |
| trip = <&cp1_active>; |
| cooling-device = <&fan THERMAL_NO_LIMIT 4>; |
| }; |
| |
| map1 { |
| trip = <&cp1_crit>; |
| cooling-device = <&fan 4 5>; |
| }; |
| }; |
| }; |
| |
| /* USB-2.0 Host */ |
| &cp1_usb3_0 { |
| phys = <&cp1_utmi0>; |
| phy-names = "utmi"; |
| dr_mode = "host"; |
| status = "okay"; |
| }; |
| |
| &cp1_utmi { |
| status = "okay"; |
| }; |
| |
| &cp2_ethernet { |
| status = "okay"; |
| }; |
| |
| &cp2_gpio1 { |
| status = "okay"; |
| }; |
| |
| &cp2_gpio2 { |
| status = "okay"; |
| }; |
| |
| &cp2_rtc { |
| status = "disabled"; |
| }; |
| |
| &cp2_syscon0 { |
| cp2_pinctrl: pinctrl { |
| compatible = "marvell,cp115-standalone-pinctrl"; |
| |
| com_10g_int2_pins: cp2-10g-int-pins { |
| marvell,pins = "mpp50"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp2_rsvd0_pins: cp2-rsvd0-pins { |
| marvell,pins = "mpp0"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp2_rsvd1_pins: cp2-rsvd1-pins { |
| marvell,pins = "mpp1"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp2_rsvd2_pins: cp2-rsvd2-pins { |
| marvell,pins = "mpp2"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp2_rsvd3_pins: cp2-rsvd3-pins { |
| marvell,pins = "mpp3"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp2_rsvd4_pins: cp2-rsvd4-pins { |
| marvell,pins = "mpp4"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp2_rsvd5_pins: cp2-rsvd5-pins { |
| marvell,pins = "mpp54"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp2_rsvd7_pins: cp2-rsvd7-pins { |
| marvell,pins = "mpp7"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp2_rsvd8_pins: cp2-rsvd8-pins { |
| marvell,pins = "mpp8"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp2_rsvd9_pins: cp2-rsvd9-pins { |
| marvell,pins = "mpp9"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp2_rsvd10_pins: cp2-rsvd10-pins { |
| marvell,pins = "mpp10"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp2_rsvd11_pins: cp2-rsvd11-pins { |
| marvell,pins = "mpp11"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp2_rsvd27_pins: cp2-rsvd27-pins { |
| marvell,pins = "mpp11"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp2_rsvd31_pins: cp2-rsvd31-pins { |
| marvell,pins = "mpp31"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp2_rsvd32_pins: cp2-rsvd32-pins { |
| marvell,pins = "mpp32"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp2_rsvd55_pins: cp2-rsvd55-pins { |
| marvell,pins = "mpp55"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp2_rsvd56_pins: cp2-rsvd56-pins { |
| marvell,pins = "mpp56"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp2_xmdio_pins: cp2-xmdio-pins { |
| marvell,pins = "mpp37", "mpp38"; |
| marvell,function = "xg"; |
| }; |
| }; |
| }; |
| |
| &cp2_thermal_ic { |
| polling-delay = <1000>; |
| |
| trips { |
| cp2_active: trip-active { |
| temperature = <40000>; |
| hysteresis = <4000>; |
| type = "active"; |
| }; |
| }; |
| |
| cooling-maps { |
| map0 { |
| trip = <&cp2_active>; |
| cooling-device = <&fan THERMAL_NO_LIMIT 4>; |
| }; |
| |
| map1 { |
| trip = <&cp2_crit>; |
| cooling-device = <&fan 4 5>; |
| }; |
| }; |
| }; |
| |
| /* USB-2.0/3.0 Host */ |
| &cp2_usb3_0 { |
| phys = <&cp2_utmi0>, <&cp2_comphy1 0>; |
| phy-names = "utmi", "comphy"; |
| dr_mode = "host"; |
| status = "okay"; |
| }; |
| |
| &cp2_utmi { |
| status = "okay"; |
| }; |
| |
| /* AP default console */ |
| &uart0 { |
| pinctrl-0 = <&uart0_pins>; |
| pinctrl-names = "default"; |
| status = "okay"; |
| }; |