Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'arm-late-5.19' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc

Pull more ARM SoC updates from Arnd Bergmann:
"This is the second part of the general SoC updates, containing
everything that did not make it in the initial pull request, or that
came in as a bugfix later.

- Devicetree updates for SoCFPGA, ASPEED, AT91 and Rockchip,
including a new machine using an ASPEED BMC.

- More DT fixes from Krzysztof Kozlowski across platforms

- A new SoC platform for the GXP baseboard management controller,
used in current server products from HPE"

* tag 'arm-late-5.19' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (56 commits)
ARM: configs: Enable more audio support for i.MX
tee: optee: Pass a pointer to virt_addr_valid()
arm64: dts: rockchip: rename Quartz64-A bluetooth gpios
arm64: dts: rockchip: add clocks property to cru node rk3368
arm64: dts: rockchip: add clocks property to cru node rk3308
arm64: dts: rockchip: add clocks to rk356x cru
ARM: dts: rockchip: add clocks property to cru node rk3228
ARM: dts: rockchip: add clocks property to cru node rk3036
ARM: dts: rockchip: add clocks property to cru node rk3066a/rk3188
ARM: dts: rockchip: add clocks property to cru node rk3288
ARM: dts: rockchip: Remove "amba" bus nodes from rv1108
ARM: dts: rockchip: add clocks property to cru node rv1108
arm64: dts: sprd: use new 'dma-channels' property
ARM: dts: da850: use new 'dma-channels' property
ARM: dts: pxa: use new 'dma-channels/requests' properties
soc: ixp4xx/qmgr: Fix unused match warning
ARM: ep93xx: Make ts72xx_register_flash() static
ARM: configs: enable support for Kontron KSwitch D10
ep93xx: clock: Do not return the address of the freed memory
arm64: dts: intel: add device tree for n6000
...

+1385 -101
+27
Documentation/devicetree/bindings/arm/hpe,gxp.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/arm/hpe,gxp.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: HPE BMC GXP platforms 8 + 9 + maintainers: 10 + - Nick Hawkins <nick.hawkins@hpe.com> 11 + - Jean-Marie Verdun <verdun@hpe.com> 12 + 13 + properties: 14 + compatible: 15 + oneOf: 16 + - description: GXP Based Boards 17 + items: 18 + - enum: 19 + - hpe,gxp-dl360gen10 20 + - const: hpe,gxp 21 + 22 + required: 23 + - compatible 24 + 25 + additionalProperties: true 26 + 27 + ...
+1
Documentation/devicetree/bindings/arm/intel,socfpga.yaml
··· 18 18 items: 19 19 - enum: 20 20 - intel,n5x-socdk 21 + - intel,socfpga-agilex-n6000 21 22 - intel,socfpga-agilex-socdk 22 23 - const: intel,socfpga-agilex 23 24
+3 -2
Documentation/devicetree/bindings/gpio/gpio-altera.txt
··· 9 9 - The second cell is reserved and is currently unused. 10 10 - gpio-controller : Marks the device node as a GPIO controller. 11 11 - interrupt-controller: Mark the device node as an interrupt controller 12 - - #interrupt-cells : Should be 1. The interrupt type is fixed in the hardware. 12 + - #interrupt-cells : Should be 2. The interrupt type is fixed in the hardware. 13 13 - The first cell is the GPIO offset number within the GPIO controller. 14 + - The second cell is the interrupt trigger type and level flags. 14 15 - interrupts: Specify the interrupt. 15 16 - altr,interrupt-type: Specifies the interrupt trigger type the GPIO 16 17 hardware is synthesized. This field is required if the Altera GPIO controller ··· 39 38 altr,interrupt-type = <IRQ_TYPE_EDGE_RISING>; 40 39 #gpio-cells = <2>; 41 40 gpio-controller; 42 - #interrupt-cells = <1>; 41 + #interrupt-cells = <2>; 43 42 interrupt-controller; 44 43 };
+51
Documentation/devicetree/bindings/soc/intel/intel,hps-copy-engine.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 2 + # Copyright (C) 2022, Intel Corporation 3 + %YAML 1.2 4 + --- 5 + $id: "http://devicetree.org/schemas/soc/intel/intel,hps-copy-engine.yaml#" 6 + $schema: "http://devicetree.org/meta-schemas/core.yaml#" 7 + 8 + title: Intel HPS Copy Engine 9 + 10 + maintainers: 11 + - Matthew Gerlach <matthew.gerlach@linux.intel.com> 12 + 13 + description: | 14 + The Intel Hard Processor System (HPS) Copy Engine is an IP block used to copy 15 + a bootable image from host memory to HPS DDR. Additionally, there is a 16 + register the HPS can use to indicate the state of booting the copied image as 17 + well as a keep-a-live indication to the host. 18 + 19 + properties: 20 + compatible: 21 + const: intel,hps-copy-engine 22 + 23 + '#dma-cells': 24 + const: 1 25 + 26 + reg: 27 + maxItems: 1 28 + 29 + required: 30 + - compatible 31 + - reg 32 + 33 + additionalProperties: false 34 + 35 + examples: 36 + - | 37 + bus@80000000 { 38 + compatible = "simple-bus"; 39 + reg = <0x80000000 0x60000000>, 40 + <0xf9000000 0x00100000>; 41 + reg-names = "axi_h2f", "axi_h2f_lw"; 42 + #address-cells = <2>; 43 + #size-cells = <1>; 44 + ranges = <0x00000000 0x00000000 0xf9000000 0x00001000>; 45 + 46 + dma-controller@0 { 47 + compatible = "intel,hps-copy-engine"; 48 + reg = <0x00000000 0x00000000 0x00001000>; 49 + #dma-cells = <1>; 50 + }; 51 + };
+47
Documentation/devicetree/bindings/timer/hpe,gxp-timer.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/timer/hpe,gxp-timer.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: HPE GXP Timer 8 + 9 + maintainers: 10 + - Nick Hawkins <nick.hawkins@hpe.com> 11 + - Jean-Marie Verdun <verdun@hpe.com> 12 + 13 + properties: 14 + compatible: 15 + const: hpe,gxp-timer 16 + 17 + reg: 18 + maxItems: 1 19 + 20 + interrupts: 21 + maxItems: 1 22 + 23 + clocks: 24 + maxItems: 1 25 + 26 + clock-names: 27 + const: iop 28 + 29 + required: 30 + - compatible 31 + - reg 32 + - interrupts 33 + - clocks 34 + - clock-names 35 + 36 + additionalProperties: false 37 + 38 + examples: 39 + - | 40 + timer@c0000000 { 41 + compatible = "hpe,gxp-timer"; 42 + reg = <0x80 0x16>; 43 + interrupts = <0>; 44 + interrupt-parent = <&vic0>; 45 + clocks = <&iopclk>; 46 + clock-names = "iop"; 47 + };
+12
MAINTAINERS
··· 2125 2125 F: arch/arm/mach-sa1100/include/mach/jornada720.h 2126 2126 F: arch/arm/mach-sa1100/jornada720.c 2127 2127 2128 + ARM/HPE GXP ARCHITECTURE 2129 + M: Jean-Marie Verdun <verdun@hpe.com> 2130 + M: Nick Hawkins <nick.hawkins@hpe.com> 2131 + S: Maintained 2132 + F: Documentation/devicetree/bindings/arm/hpe,gxp.yaml 2133 + F: Documentation/devicetree/bindings/timer/hpe,gxp-timer.yaml 2134 + F: arch/arm/boot/dts/hpe-bmc* 2135 + F: arch/arm/boot/dts/hpe-gxp* 2136 + F: arch/arm/mach-hpe/ 2137 + F: drivers/clocksource/timer-gxp.c 2138 + F: drivers/watchdog/gxp-wdt.c 2139 + 2128 2140 ARM/IGEP MACHINE SUPPORT 2129 2141 M: Enric Balletbo i Serra <eballetbo@gmail.com> 2130 2142 M: Javier Martinez Canillas <javier@dowhile0.org>
+2
arch/arm/Kconfig
··· 531 531 532 532 source "arch/arm/mach-hisi/Kconfig" 533 533 534 + source "arch/arm/mach-hpe/Kconfig" 535 + 534 536 source "arch/arm/mach-imx/Kconfig" 535 537 536 538 source "arch/arm/mach-iop32x/Kconfig"
+1
arch/arm/Makefile
··· 179 179 machine-$(CONFIG_ARCH_GEMINI) += gemini 180 180 machine-$(CONFIG_ARCH_HIGHBANK) += highbank 181 181 machine-$(CONFIG_ARCH_HISI) += hisi 182 + machine-$(CONFIG_ARCH_HPE) += hpe 182 183 machine-$(CONFIG_ARCH_IOP32X) += iop32x 183 184 machine-$(CONFIG_ARCH_IXP4XX) += ixp4xx 184 185 machine-$(CONFIG_ARCH_KEYSTONE) += keystone
+3
arch/arm/boot/dts/Makefile
··· 259 259 hi3519-demb.dtb 260 260 dtb-$(CONFIG_ARCH_HIX5HD2) += \ 261 261 hisi-x5hd2-dkb.dtb 262 + dtb-$(CONFIG_ARCH_HPE_GXP) += \ 263 + hpe-bmc-dl360gen10.dtb 262 264 dtb-$(CONFIG_ARCH_INTEGRATOR) += \ 263 265 integratorap.dtb \ 264 266 integratorap-im-pd1.dtb \ ··· 1586 1584 aspeed-bmc-lenovo-hr630.dtb \ 1587 1585 aspeed-bmc-lenovo-hr855xg2.dtb \ 1588 1586 aspeed-bmc-microsoft-olympus.dtb \ 1587 + aspeed-bmc-nuvia-dc-scm.dtb \ 1589 1588 aspeed-bmc-opp-lanyang.dtb \ 1590 1589 aspeed-bmc-opp-mihawk.dtb \ 1591 1590 aspeed-bmc-opp-mowgli.dtb \
+37 -2
arch/arm/boot/dts/aspeed-ast2600-evb.dts
··· 23 23 reg = <0x80000000 0x80000000>; 24 24 }; 25 25 26 + reserved-memory { 27 + #address-cells = <1>; 28 + #size-cells = <1>; 29 + ranges; 30 + 31 + video_engine_memory: video { 32 + size = <0x04000000>; 33 + alignment = <0x01000000>; 34 + compatible = "shared-dma-pool"; 35 + reusable; 36 + }; 37 + 38 + gfx_memory: framebuffer { 39 + size = <0x01000000>; 40 + alignment = <0x01000000>; 41 + compatible = "shared-dma-pool"; 42 + reusable; 43 + }; 44 + }; 45 + 26 46 vcc_sdhci0: regulator-vcc-sdhci0 { 27 47 compatible = "regulator-fixed"; 28 48 regulator-name = "SDHCI0 Vcc"; ··· 123 103 &mac0 { 124 104 status = "okay"; 125 105 126 - phy-mode = "rgmii"; 106 + phy-mode = "rgmii-rxid"; 127 107 phy-handle = <&ethphy0>; 128 108 129 109 pinctrl-names = "default"; ··· 134 114 &mac1 { 135 115 status = "okay"; 136 116 137 - phy-mode = "rgmii"; 117 + phy-mode = "rgmii-rxid"; 138 118 phy-handle = <&ethphy1>; 139 119 140 120 pinctrl-names = "default"; ··· 319 299 vmmc-supply = <&vcc_sdhci1>; 320 300 vqmmc-supply = <&vccq_sdhci1>; 321 301 clk-phase-sd-hs = <7>, <200>; 302 + }; 303 + 304 + &vhub { 305 + status = "okay"; 306 + pinctrl-names = "default"; 307 + }; 308 + 309 + &video { 310 + status = "okay"; 311 + memory-region = <&video_engine_memory>; 312 + }; 313 + 314 + &gfx { 315 + status = "okay"; 316 + memory-region = <&gfx_memory>; 322 317 };
+147 -35
arch/arm/boot/dts/aspeed-bmc-facebook-bletchley.dts
··· 51 51 }; 52 52 }; 53 53 54 - spi2_gpio: spi2-gpio { 55 - compatible = "spi-gpio"; 56 - #address-cells = <1>; 57 - #size-cells = <0>; 58 - 59 - gpio-sck = <&gpio0 ASPEED_GPIO(X, 3) GPIO_ACTIVE_HIGH>; 60 - gpio-mosi = <&gpio0 ASPEED_GPIO(X, 4) GPIO_ACTIVE_HIGH>; 61 - gpio-miso = <&gpio0 ASPEED_GPIO(X, 5) GPIO_ACTIVE_HIGH>; 62 - num-chipselects = <1>; 63 - cs-gpios = <&gpio0 ASPEED_GPIO(X, 0) GPIO_ACTIVE_LOW>; 64 - 65 - flash@0 { 66 - reg = <0>; 67 - compatible = "jedec,spi-nor"; 68 - m25p,fast-read; 69 - label = "pnor"; 70 - spi-max-frequency = <100000000>; 71 - }; 72 - }; 73 - 74 54 switchphy: ethernet-phy@0 { 75 55 // Fixed link 76 56 }; ··· 222 242 }; 223 243 }; 224 244 245 + &spi2 { 246 + status = "okay"; 247 + pinctrl-names = "default"; 248 + pinctrl-0 = <&pinctrl_spi2_default>; 249 + 250 + flash@0 { 251 + status = "okay"; 252 + m25p,fast-read; 253 + label = "pnor"; 254 + spi-max-frequency = <50000000>; 255 + }; 256 + }; 257 + 225 258 &i2c0 { 226 259 status = "okay"; 227 260 ina230@45 { ··· 251 258 tmp421@4f { 252 259 compatible = "ti,tmp421"; 253 260 reg = <0x4f>; 261 + }; 262 + 263 + sled1_ioexp41: pca9536@41 { 264 + compatible = "nxp,pca9536"; 265 + reg = <0x41>; 266 + gpio-controller; 267 + #gpio-cells = <2>; 268 + 269 + gpio-line-names = 270 + "SLED1_SWD_MUX", "SLED1_XRES_SWD_N", 271 + "SLED1_CLKREQ_N", "SLED1_PCIE_PWR_EN"; 254 272 }; 255 273 256 274 sled1_ioexp: pca9539@76 { ··· 314 310 op-sink-microwatt = <10000000>; 315 311 }; 316 312 }; 313 + 314 + eeprom@54 { 315 + compatible = "atmel,24c64"; 316 + reg = <0x54>; 317 + }; 317 318 }; 318 319 319 320 &i2c1 { ··· 337 328 tmp421@4f { 338 329 compatible = "ti,tmp421"; 339 330 reg = <0x4f>; 331 + }; 332 + 333 + sled2_ioexp41: pca9536@41 { 334 + compatible = "nxp,pca9536"; 335 + reg = <0x41>; 336 + gpio-controller; 337 + #gpio-cells = <2>; 338 + 339 + gpio-line-names = 340 + "SLED2_SWD_MUX", "SLED2_XRES_SWD_N", 341 + "SLED2_CLKREQ_N", "SLED2_PCIE_PWR_EN"; 340 342 }; 341 343 342 344 sled2_ioexp: pca9539@76 { ··· 400 380 op-sink-microwatt = <10000000>; 401 381 }; 402 382 }; 383 + 384 + eeprom@54 { 385 + compatible = "atmel,24c64"; 386 + reg = <0x54>; 387 + }; 403 388 }; 404 389 405 390 &i2c2 { ··· 423 398 tmp421@4f { 424 399 compatible = "ti,tmp421"; 425 400 reg = <0x4f>; 401 + }; 402 + 403 + sled3_ioexp41: pca9536@41 { 404 + compatible = "nxp,pca9536"; 405 + reg = <0x41>; 406 + gpio-controller; 407 + #gpio-cells = <2>; 408 + 409 + gpio-line-names = 410 + "SLED3_SWD_MUX", "SLED3_XRES_SWD_N", 411 + "SLED3_CLKREQ_N", "SLED3_PCIE_PWR_EN"; 426 412 }; 427 413 428 414 sled3_ioexp: pca9539@76 { ··· 486 450 op-sink-microwatt = <10000000>; 487 451 }; 488 452 }; 453 + 454 + eeprom@54 { 455 + compatible = "atmel,24c64"; 456 + reg = <0x54>; 457 + }; 489 458 }; 490 459 491 460 &i2c3 { ··· 509 468 tmp421@4f { 510 469 compatible = "ti,tmp421"; 511 470 reg = <0x4f>; 471 + }; 472 + 473 + sled4_ioexp41: pca9536@41 { 474 + compatible = "nxp,pca9536"; 475 + reg = <0x41>; 476 + gpio-controller; 477 + #gpio-cells = <2>; 478 + 479 + gpio-line-names = 480 + "SLED4_SWD_MUX", "SLED4_XRES_SWD_N", 481 + "SLED4_CLKREQ_N", "SLED4_PCIE_PWR_EN"; 512 482 }; 513 483 514 484 sled4_ioexp: pca9539@76 { ··· 572 520 op-sink-microwatt = <10000000>; 573 521 }; 574 522 }; 523 + 524 + eeprom@54 { 525 + compatible = "atmel,24c64"; 526 + reg = <0x54>; 527 + }; 575 528 }; 576 529 577 530 &i2c4 { ··· 595 538 tmp421@4f { 596 539 compatible = "ti,tmp421"; 597 540 reg = <0x4f>; 541 + }; 542 + 543 + sled5_ioexp41: pca9536@41 { 544 + compatible = "nxp,pca9536"; 545 + reg = <0x41>; 546 + gpio-controller; 547 + #gpio-cells = <2>; 548 + 549 + gpio-line-names = 550 + "SLED5_SWD_MUX", "SLED5_XRES_SWD_N", 551 + "SLED5_CLKREQ_N", "SLED5_PCIE_PWR_EN"; 598 552 }; 599 553 600 554 sled5_ioexp: pca9539@76 { ··· 658 590 op-sink-microwatt = <10000000>; 659 591 }; 660 592 }; 593 + 594 + eeprom@54 { 595 + compatible = "atmel,24c64"; 596 + reg = <0x54>; 597 + }; 661 598 }; 662 599 663 600 &i2c5 { ··· 681 608 tmp421@4f { 682 609 compatible = "ti,tmp421"; 683 610 reg = <0x4f>; 611 + }; 612 + 613 + sled6_ioexp41: pca9536@41 { 614 + compatible = "nxp,pca9536"; 615 + reg = <0x41>; 616 + gpio-controller; 617 + #gpio-cells = <2>; 618 + 619 + gpio-line-names = 620 + "SLED6_SWD_MUX", "SLED6_XRES_SWD_N", 621 + "SLED6_CLKREQ_N", "SLED6_PCIE_PWR_EN"; 684 622 }; 685 623 686 624 sled6_ioexp: pca9539@76 { ··· 743 659 PDO_PPS_APDO(3000, 11000, 3000)>; 744 660 op-sink-microwatt = <10000000>; 745 661 }; 662 + }; 663 + 664 + eeprom@54 { 665 + compatible = "atmel,24c64"; 666 + reg = <0x54>; 746 667 }; 747 668 }; 748 669 ··· 821 732 compatible = "adi,adm1278"; 822 733 reg = <0x11>; 823 734 shunt-resistor-micro-ohms = <300>; 735 + adi,volt-curr-sample-average = <128>; 736 + adi,power-sample-average = <128>; 824 737 }; 825 738 826 739 tmp421@4c { ··· 862 771 &gpio0 { 863 772 gpio-line-names = 864 773 /*A0-A7*/ "","","","","","","","", 865 - /*B0-B7*/ "","","SEL_SPI2_MUX","SPI2_MUX1", 866 - "SPI2_MUX2","SPI2_MUX3","","", 774 + /*B0-B7*/ "FUSB302_SLED1_INT_N","FUSB302_SLED2_INT_N", 775 + "SEL_SPI2_MUX","SPI2_MUX1", 776 + "SPI2_MUX2","SPI2_MUX3", 777 + "","FUSB302_SLED3_INT_N", 867 778 /*C0-C7*/ "","","","","","","","", 868 779 /*D0-D7*/ "","","","","","","","", 869 780 /*E0-E7*/ "","","","","","","","", 870 - /*F0-F7*/ "","","","","","","","", 871 - /*G0-G7*/ "BSM_FRU_WP","SWITCH_FRU_MUX","","", 781 + /*F0-F7*/ "BMC_SLED1_STCK","BMC_SLED2_STCK", 782 + "BMC_SLED3_STCK","BMC_SLED4_STCK", 783 + "BMC_SLED5_STCK","BMC_SLED6_STCK", 784 + "","", 785 + /*G0-G7*/ "BSM_FRU_WP","SWITCH_FRU_MUX","","FM_SOL_UART_CH_SEL", 872 786 "PWRGD_P1V05_VDDCORE","PWRGD_P1V5_VDD","","", 873 787 /*H0-H7*/ "presence-riser1","presence-riser2", 874 788 "presence-sled1","presence-sled2", 875 789 "presence-sled3","presence-sled4", 876 790 "presence-sled5","presence-sled6", 877 - /*I0-I7*/ "REV_ID0","","REV_ID1","REV_ID2", 878 - "","BSM_FLASH_WP_STATUS","BMC_TPM_PRES","", 791 + /*I0-I7*/ "REV_ID0","", 792 + "REV_ID1","REV_ID2", 793 + "","BSM_FLASH_WP_STATUS", 794 + "BMC_TPM_PRES_N","FUSB302_SLED6_INT_N", 879 795 /*J0-J7*/ "","","","","","","","", 880 796 /*K0-K7*/ "","","","","","","","", 881 797 /*L0-L7*/ "","","","","","BMC_RTC_INT","","", 882 - /*M0-M7*/ "ALERT_SLED1","ALERT_SLED2", 883 - "ALERT_SLED3","ALERT_SLED4", 884 - "ALERT_SLED5","ALERT_SLED6", 885 - "P12V_AUX_ALERT1","", 886 - /*N0-N7*/ "","","","","","","","", 798 + /*M0-M7*/ "ALERT_SLED1_N","ALERT_SLED2_N", 799 + "ALERT_SLED3_N","ALERT_SLED4_N", 800 + "ALERT_SLED5_N","ALERT_SLED6_N", 801 + "","", 802 + /*N0-N7*/ "LED_POSTCODE_0","LED_POSTCODE_1", 803 + "LED_POSTCODE_2","LED_POSTCODE_3", 804 + "LED_POSTCODE_4","LED_POSTCODE_5", 805 + "LED_POSTCODE_5","LED_POSTCODE_7", 887 806 /*O0-O7*/ "","","","", 888 807 "","BOARD_ID0","BOARD_ID1","BOARD_ID2", 889 808 /*P0-P7*/ "","","","","","","","BMC_HEARTBEAT", 890 809 /*Q0-Q7*/ "","","","","","","","", 891 810 /*R0-R7*/ "","","","","","","","", 892 811 /*S0-S7*/ "","","","BAT_DETECT", 893 - "BMC_BT_WP0","BMC_BT_WP1","","", 812 + "BMC_BT_WP0_N","BMC_BT_WP1_N","","FUSB302_SLED4_INT_N", 894 813 /*T0-T7*/ "","","","","","","","", 895 814 /*U0-U7*/ "","","","","","","","", 896 - /*V0-V7*/ "PWRGD_CNS_PSU","RST_BMC_MVL","","PSU_PRSNT", 815 + /*V0-V7*/ "PWRGD_CNS_PSU","RST_BMC_MVL_N", 816 + "P12V_AUX_ALERT1_N","PSU_PRSNT", 897 817 "USB2_SEL0_A","USB2_SEL1_A", 898 818 "USB2_SEL0_B","USB2_SEL1_B", 899 - /*W0-W7*/ "RST_FRONT_IOEXP","","","","","","","", 819 + /*W0-W7*/ "RST_FRONT_IOEXP_N","","","","","","","", 900 820 /*X0-X7*/ "","","","","","","","", 901 - /*Y0-Y7*/ "BMC_SELF_HW_RST","BSM_PRSNT","BSM_FLASH_LATCH","", 821 + /*Y0-Y7*/ "BMC_SELF_HW_RST","BSM_PRSNT_N", 822 + "BSM_FLASH_LATCH_N","FUSB302_SLED5_INT_N", 902 823 "","","","", 903 824 /*Z0-Z7*/ "","","","","","","",""; 904 825 }; ··· 937 834 &pinctrl_adc14_default &pinctrl_adc15_default>; 938 835 }; 939 836 837 + &mdio0 { 838 + status = "okay"; 839 + /* TODO: Add Marvell 88E6191X */ 840 + }; 841 + 940 842 &mdio3 { 941 843 status = "okay"; 942 844 /* TODO: Add Marvell 88X3310 */ 845 + }; 846 + 847 + &ehci0 { 848 + status = "okay"; 943 849 };
+1 -1
arch/arm/boot/dts/aspeed-bmc-ibm-everest.dts
··· 283 283 /*P0-P7*/ "","","","","led-pcieslot-power","","","", 284 284 /*Q0-Q7*/ "","","regulator-standby-faulted","","","","","", 285 285 /*R0-R7*/ "bmc-tpm-reset","power-chassis-control","power-chassis-good","","","I2C_FLASH_MICRO_N","","", 286 - /*S0-S7*/ "","","","","","","","", 286 + /*S0-S7*/ "","","","","power-ffs-sync-history","","","", 287 287 /*T0-T7*/ "","","","","","","","", 288 288 /*U0-U7*/ "","","","","","","","", 289 289 /*V0-V7*/ "","BMC_3RESTART_ATTEMPT_P","","","","","","",
+1 -1
arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts
··· 265 265 /*Q0-Q7*/ "cfam-reset","","regulator-standby-faulted","","","","","", 266 266 /*R0-R7*/ "bmc-tpm-reset","power-chassis-control","power-chassis-good","","","","","", 267 267 /*S0-S7*/ "presence-ps0","presence-ps1","presence-ps2","presence-ps3", 268 - "","","","", 268 + "power-ffs-sync-history","","","", 269 269 /*T0-T7*/ "","","","","","","","", 270 270 /*U0-U7*/ "","","","","","","","", 271 271 /*V0-V7*/ "","","","","","","","",
+190
arch/arm/boot/dts/aspeed-bmc-nuvia-dc-scm.dts
··· 1 + // SPDX-License-Identifier: GPL-2.0-or-later 2 + // Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. 3 + 4 + /dts-v1/; 5 + 6 + #include "aspeed-g6.dtsi" 7 + 8 + / { 9 + model = "Nuvia DC-SCM BMC"; 10 + compatible = "nuvia,dc-scm-bmc", "aspeed,ast2600"; 11 + 12 + aliases { 13 + serial4 = &uart5; 14 + }; 15 + 16 + chosen { 17 + stdout-path = &uart5; 18 + bootargs = "console=ttyS4,115200n8"; 19 + }; 20 + 21 + memory@80000000 { 22 + device_type = "memory"; 23 + reg = <0x80000000 0x40000000>; 24 + }; 25 + }; 26 + 27 + &mdio3 { 28 + status = "okay"; 29 + 30 + ethphy3: ethernet-phy@1 { 31 + compatible = "ethernet-phy-ieee802.3-c22"; 32 + reg = <1>; 33 + }; 34 + }; 35 + 36 + &mac2 { 37 + status = "okay"; 38 + 39 + /* Bootloader sets up the MAC to insert delay */ 40 + phy-mode = "rgmii"; 41 + phy-handle = <&ethphy3>; 42 + 43 + pinctrl-names = "default"; 44 + pinctrl-0 = <&pinctrl_rgmii3_default>; 45 + }; 46 + 47 + &mac3 { 48 + status = "okay"; 49 + 50 + pinctrl-names = "default"; 51 + pinctrl-0 = <&pinctrl_rmii4_default>; 52 + 53 + use-ncsi; 54 + }; 55 + 56 + &rtc { 57 + status = "okay"; 58 + }; 59 + 60 + &fmc { 61 + status = "okay"; 62 + 63 + flash@0 { 64 + status = "okay"; 65 + m25p,fast-read; 66 + label = "bmc"; 67 + spi-max-frequency = <133000000>; 68 + #include "openbmc-flash-layout-64.dtsi" 69 + }; 70 + 71 + flash@1 { 72 + status = "okay"; 73 + m25p,fast-read; 74 + label = "alt-bmc"; 75 + spi-max-frequency = <133000000>; 76 + #include "openbmc-flash-layout-64-alt.dtsi" 77 + }; 78 + }; 79 + 80 + &spi1 { 81 + status = "okay"; 82 + pinctrl-names = "default"; 83 + pinctrl-0 = <&pinctrl_spi1_default>; 84 + 85 + flash@0 { 86 + status = "okay"; 87 + m25p,fast-read; 88 + label = "bios"; 89 + spi-max-frequency = <133000000>; 90 + }; 91 + }; 92 + 93 + &gpio0 { 94 + gpio-line-names = 95 + /*A0-A7*/ "","","","","","","","", 96 + /*B0-B7*/ "BMC_FLASH_MUX_SEL","","","","","","","", 97 + /*C0-C7*/ "","","","","","","","", 98 + /*D0-D7*/ "","","","","","","","", 99 + /*E0-E7*/ "","","","","","","","", 100 + /*F0-F7*/ "","","","","","","","", 101 + /*G0-G7*/ "","","","","","","","", 102 + /*H0-H7*/ "","","","","","","","", 103 + /*I0-I7*/ "","","","","","","","", 104 + /*J0-J7*/ "","","","","","","","", 105 + /*K0-K7*/ "","","","","","","","", 106 + /*L0-L7*/ "","","","","","","","", 107 + /*M0-M7*/ "","","","","","","","", 108 + /*N0-N7*/ "BMC_FWSPI_RST_N","","GPIO_1_BMC_3V3","","","","","", 109 + /*O0-O7*/ "JTAG_MUX_A","JTAG_MUX_B","","","","","","", 110 + /*P0-P7*/ "","","","","","","","", 111 + /*Q0-Q7*/ "","","","","","","","", 112 + /*R0-R7*/ "","","","","","","","", 113 + /*S0-S7*/ "","","","","","","","", 114 + /*T0-T7*/ "","","","","","","","", 115 + /*U0-U7*/ "","","","","","","","", 116 + /*V0-V7*/ "","","","SCMFPGA_SPARE_GPIO1_3V3", 117 + "SCMFPGA_SPARE_GPIO2_3V3","SCMFPGA_SPARE_GPIO3_3V3", 118 + "SCMFPGA_SPARE_GPIO4_3V3","SCMFPGA_SPARE_GPIO5_3V3", 119 + /*W0-W7*/ "","","","","","","","", 120 + /*X0-X7*/ "","","","","","","","", 121 + /*Y0-Y7*/ "","","","","","","","", 122 + /*Z0-Z7*/ "","","","","","","","", 123 + /*AA0-AA7*/ "","","","","","","","", 124 + /*AB0-AB7*/ "","","","","","","","", 125 + /*AC0-AC7*/ "","","","","","","",""; 126 + }; 127 + 128 + &gpio1 { 129 + gpio-line-names = 130 + /*A0-A7*/ "GPI_1_BMC_1V8","","","","","", 131 + "SCMFPGA_SPARE_GPIO1_1V8","SCMFPGA_SPARE_GPIO2_1V8", 132 + /*B0-B7*/ "SCMFPGA_SPARE_GPIO3_1V8","SCMFPGA_SPARE_GPIO4_1V8", 133 + "SCMFPGA_SPARE_GPIO5_1V8","","","","","", 134 + /*C0-C7*/ "","","","","","","","", 135 + /*D0-D7*/ "","BMC_SPI1_RST_N","BIOS_FLASH_MUX_SEL","", 136 + "","TPM2_PIRQ_N","TPM2_RST_N","", 137 + /*E0-E7*/ "","","","","","","",""; 138 + }; 139 + 140 + &i2c2 { 141 + status = "okay"; 142 + }; 143 + 144 + &i2c4 { 145 + status = "okay"; 146 + }; 147 + 148 + &i2c5 { 149 + status = "okay"; 150 + }; 151 + 152 + &i2c6 { 153 + status = "okay"; 154 + }; 155 + 156 + &i2c7 { 157 + status = "okay"; 158 + }; 159 + 160 + &i2c8 { 161 + status = "okay"; 162 + }; 163 + 164 + &i2c9 { 165 + status = "okay"; 166 + }; 167 + 168 + &i2c10 { 169 + status = "okay"; 170 + }; 171 + 172 + &i2c12 { 173 + status = "okay"; 174 + }; 175 + 176 + &i2c13 { 177 + status = "okay"; 178 + }; 179 + 180 + &i2c14 { 181 + status = "okay"; 182 + }; 183 + 184 + &i2c15 { 185 + status = "okay"; 186 + }; 187 + 188 + &vhub { 189 + status = "okay"; 190 + };
+12 -4
arch/arm/boot/dts/aspeed-g4.dtsi
··· 54 54 ranges; 55 55 56 56 fmc: spi@1e620000 { 57 - reg = < 0x1e620000 0x94 58 - 0x20000000 0x10000000 >; 57 + reg = <0x1e620000 0x94>, <0x20000000 0x10000000>; 59 58 #address-cells = <1>; 60 59 #size-cells = <0>; 61 60 compatible = "aspeed,ast2400-fmc"; ··· 64 65 flash@0 { 65 66 reg = < 0 >; 66 67 compatible = "jedec,spi-nor"; 68 + spi-rx-bus-width = <2>; 67 69 spi-max-frequency = <50000000>; 68 70 status = "disabled"; 69 71 }; 70 72 flash@1 { 71 73 reg = < 1 >; 72 74 compatible = "jedec,spi-nor"; 75 + spi-rx-bus-width = <2>; 76 + spi-max-frequency = <50000000>; 73 77 status = "disabled"; 74 78 }; 75 79 flash@2 { 76 80 reg = < 2 >; 77 81 compatible = "jedec,spi-nor"; 82 + spi-rx-bus-width = <2>; 83 + spi-max-frequency = <50000000>; 78 84 status = "disabled"; 79 85 }; 80 86 flash@3 { 81 87 reg = < 3 >; 82 88 compatible = "jedec,spi-nor"; 89 + spi-rx-bus-width = <2>; 90 + spi-max-frequency = <50000000>; 83 91 status = "disabled"; 84 92 }; 85 93 flash@4 { 86 94 reg = < 4 >; 87 95 compatible = "jedec,spi-nor"; 96 + spi-rx-bus-width = <2>; 97 + spi-max-frequency = <50000000>; 88 98 status = "disabled"; 89 99 }; 90 100 }; 91 101 92 102 spi: spi@1e630000 { 93 - reg = < 0x1e630000 0x18 94 - 0x30000000 0x10000000 >; 103 + reg = <0x1e630000 0x18>, <0x30000000 0x10000000>; 95 104 #address-cells = <1>; 96 105 #size-cells = <0>; 97 106 compatible = "aspeed,ast2400-spi"; ··· 109 102 reg = < 0 >; 110 103 compatible = "jedec,spi-nor"; 111 104 spi-max-frequency = <50000000>; 105 + spi-rx-bus-width = <2>; 112 106 status = "disabled"; 113 107 }; 114 108 };
+10 -6
arch/arm/boot/dts/aspeed-g5.dtsi
··· 55 55 ranges; 56 56 57 57 fmc: spi@1e620000 { 58 - reg = < 0x1e620000 0xc4 59 - 0x20000000 0x10000000 >; 58 + reg = <0x1e620000 0xc4>, <0x20000000 0x10000000>; 60 59 #address-cells = <1>; 61 60 #size-cells = <0>; 62 61 compatible = "aspeed,ast2500-fmc"; ··· 66 67 reg = < 0 >; 67 68 compatible = "jedec,spi-nor"; 68 69 spi-max-frequency = <50000000>; 70 + spi-rx-bus-width = <2>; 69 71 status = "disabled"; 70 72 }; 71 73 flash@1 { 72 74 reg = < 1 >; 73 75 compatible = "jedec,spi-nor"; 74 76 spi-max-frequency = <50000000>; 77 + spi-rx-bus-width = <2>; 75 78 status = "disabled"; 76 79 }; 77 80 flash@2 { 78 81 reg = < 2 >; 79 82 compatible = "jedec,spi-nor"; 80 83 spi-max-frequency = <50000000>; 84 + spi-rx-bus-width = <2>; 81 85 status = "disabled"; 82 86 }; 83 87 }; 84 88 85 89 spi1: spi@1e630000 { 86 - reg = < 0x1e630000 0xc4 87 - 0x30000000 0x08000000 >; 90 + reg = <0x1e630000 0xc4>, <0x30000000 0x08000000>; 88 91 #address-cells = <1>; 89 92 #size-cells = <0>; 90 93 compatible = "aspeed,ast2500-spi"; ··· 96 95 reg = < 0 >; 97 96 compatible = "jedec,spi-nor"; 98 97 spi-max-frequency = <50000000>; 98 + spi-rx-bus-width = <2>; 99 99 status = "disabled"; 100 100 }; 101 101 flash@1 { 102 102 reg = < 1 >; 103 103 compatible = "jedec,spi-nor"; 104 104 spi-max-frequency = <50000000>; 105 + spi-rx-bus-width = <2>; 105 106 status = "disabled"; 106 107 }; 107 108 }; 108 109 109 110 spi2: spi@1e631000 { 110 - reg = < 0x1e631000 0xc4 111 - 0x38000000 0x08000000 >; 111 + reg = <0x1e631000 0xc4>, <0x38000000 0x08000000>; 112 112 #address-cells = <1>; 113 113 #size-cells = <0>; 114 114 compatible = "aspeed,ast2500-spi"; ··· 119 117 reg = < 0 >; 120 118 compatible = "jedec,spi-nor"; 121 119 spi-max-frequency = <50000000>; 120 + spi-rx-bus-width = <2>; 122 121 status = "disabled"; 123 122 }; 124 123 flash@1 { 125 124 reg = < 1 >; 126 125 compatible = "jedec,spi-nor"; 127 126 spi-max-frequency = <50000000>; 127 + spi-rx-bus-width = <2>; 128 128 status = "disabled"; 129 129 }; 130 130 };
+32 -6
arch/arm/boot/dts/aspeed-g6.dtsi
··· 95 95 }; 96 96 97 97 fmc: spi@1e620000 { 98 - reg = < 0x1e620000 0xc4 99 - 0x20000000 0x10000000 >; 98 + reg = <0x1e620000 0xc4>, <0x20000000 0x10000000>; 100 99 #address-cells = <1>; 101 100 #size-cells = <0>; 102 101 compatible = "aspeed,ast2600-fmc"; ··· 106 107 reg = < 0 >; 107 108 compatible = "jedec,spi-nor"; 108 109 spi-max-frequency = <50000000>; 110 + spi-rx-bus-width = <2>; 109 111 status = "disabled"; 110 112 }; 111 113 flash@1 { 112 114 reg = < 1 >; 113 115 compatible = "jedec,spi-nor"; 114 116 spi-max-frequency = <50000000>; 117 + spi-rx-bus-width = <2>; 115 118 status = "disabled"; 116 119 }; 117 120 flash@2 { 118 121 reg = < 2 >; 119 122 compatible = "jedec,spi-nor"; 120 123 spi-max-frequency = <50000000>; 124 + spi-rx-bus-width = <2>; 121 125 status = "disabled"; 122 126 }; 123 127 }; 124 128 125 129 spi1: spi@1e630000 { 126 - reg = < 0x1e630000 0xc4 127 - 0x30000000 0x10000000 >; 130 + reg = <0x1e630000 0xc4>, <0x30000000 0x10000000>; 128 131 #address-cells = <1>; 129 132 #size-cells = <0>; 130 133 compatible = "aspeed,ast2600-spi"; ··· 136 135 reg = < 0 >; 137 136 compatible = "jedec,spi-nor"; 138 137 spi-max-frequency = <50000000>; 138 + spi-rx-bus-width = <2>; 139 139 status = "disabled"; 140 140 }; 141 141 flash@1 { 142 142 reg = < 1 >; 143 143 compatible = "jedec,spi-nor"; 144 144 spi-max-frequency = <50000000>; 145 + spi-rx-bus-width = <2>; 145 146 status = "disabled"; 146 147 }; 147 148 }; 148 149 149 150 spi2: spi@1e631000 { 150 - reg = < 0x1e631000 0xc4 151 - 0x50000000 0x10000000 >; 151 + reg = <0x1e631000 0xc4>, <0x50000000 0x10000000>; 152 152 #address-cells = <1>; 153 153 #size-cells = <0>; 154 154 compatible = "aspeed,ast2600-spi"; ··· 159 157 reg = < 0 >; 160 158 compatible = "jedec,spi-nor"; 161 159 spi-max-frequency = <50000000>; 160 + spi-rx-bus-width = <2>; 162 161 status = "disabled"; 163 162 }; 164 163 flash@1 { 165 164 reg = < 1 >; 166 165 compatible = "jedec,spi-nor"; 167 166 spi-max-frequency = <50000000>; 167 + spi-rx-bus-width = <2>; 168 168 status = "disabled"; 169 169 }; 170 170 flash@2 { 171 171 reg = < 2 >; 172 172 compatible = "jedec,spi-nor"; 173 173 spi-max-frequency = <50000000>; 174 + spi-rx-bus-width = <2>; 174 175 status = "disabled"; 175 176 }; 176 177 }; ··· 307 302 status = "disabled"; 308 303 }; 309 304 305 + udc: usb@1e6a2000 { 306 + compatible = "aspeed,ast2600-udc"; 307 + reg = <0x1e6a2000 0x300>; 308 + interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>; 309 + clocks = <&syscon ASPEED_CLK_GATE_USBPORT2CLK>; 310 + pinctrl-names = "default"; 311 + pinctrl-0 = <&pinctrl_usb2bd_default>; 312 + status = "disabled"; 313 + }; 314 + 310 315 apb { 311 316 compatible = "simple-bus"; 312 317 #address-cells = <1>; ··· 368 353 reg = <0x1e6e2524 0x4>; 369 354 period = <1>; 370 355 quality = <100>; 356 + }; 357 + 358 + gfx: display@1e6e6000 { 359 + compatible = "aspeed,ast2600-gfx", "syscon"; 360 + reg = <0x1e6e6000 0x1000>; 361 + reg-io-width = <4>; 362 + clocks = <&syscon ASPEED_CLK_GATE_D1CLK>; 363 + resets = <&syscon ASPEED_RESET_GRAPHICS>; 364 + syscon = <&syscon>; 365 + status = "disabled"; 366 + interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>; 371 367 }; 372 368 373 369 xdma: xdma@1e6e7000 {
+20 -1
arch/arm/boot/dts/at91-sama7g5ek.dts
··· 14 14 #include <dt-bindings/mfd/atmel-flexcom.h> 15 15 #include <dt-bindings/input/input.h> 16 16 #include <dt-bindings/pinctrl/at91.h> 17 + #include <dt-bindings/sound/microchip,pdmc.h> 17 18 18 19 / { 19 20 model = "Microchip SAMA7G5-EK"; ··· 457 456 &pinctrl_gmac1_mdio_default 458 457 &pinctrl_gmac1_phy_irq>; 459 458 phy-mode = "rmii"; 460 - status = "okay"; 459 + status = "okay"; /* Conflict with pdmc0. */ 461 460 462 461 ethernet-phy@0 { 463 462 reg = <0x0>; ··· 469 468 &i2s0 { 470 469 pinctrl-names = "default"; 471 470 pinctrl-0 = <&pinctrl_i2s0_default>; 471 + }; 472 + 473 + &pdmc0 { 474 + #sound-dai-cells = <0>; 475 + microchip,mic-pos = <MCHP_PDMC_DS0 MCHP_PDMC_CLK_NEGATIVE>, /* MIC 1 */ 476 + <MCHP_PDMC_DS1 MCHP_PDMC_CLK_NEGATIVE>, /* MIC 2 */ 477 + <MCHP_PDMC_DS0 MCHP_PDMC_CLK_POSITIVE>, /* MIC 3 */ 478 + <MCHP_PDMC_DS1 MCHP_PDMC_CLK_POSITIVE>; /* MIC 4 */ 479 + status = "disabled"; /* Conflict with gmac1. */ 480 + pinctrl-names = "default"; 481 + pinctrl-0 = <&pinctrl_pdmc0_default>; 472 482 }; 473 483 474 484 &pioA { ··· 649 637 <PIN_PB4__FLEXCOM11_IO1>, 650 638 <PIN_PB5__FLEXCOM11_IO2>; 651 639 bias-disable; 640 + }; 641 + 642 + pinctrl_pdmc0_default: pdmc0_default { 643 + pinmux = <PIN_PD23__PDMC0_DS0>, 644 + <PIN_PD24__PDMC0_DS1>, 645 + <PIN_PD22__PDMC0_CLK>; 646 + bias_disable; 652 647 }; 653 648 654 649 pinctrl_qspi: qspi {
+4
arch/arm/boot/dts/at91sam9261ek.dts
··· 178 178 status = "okay"; 179 179 }; 180 180 181 + rtc@fffffd20 { 182 + atmel,rtt-rtc-time-reg = <&gpbr 0x0>; 183 + }; 184 + 181 185 watchdog@fffffd40 { 182 186 status = "okay"; 183 187 };
+4
arch/arm/boot/dts/at91sam9263ek.dts
··· 102 102 }; 103 103 }; 104 104 105 + rtc@fffffd20 { 106 + atmel,rtt-rtc-time-reg = <&gpbr 0x0>; 107 + }; 108 + 105 109 watchdog@fffffd40 { 106 110 status = "okay"; 107 111 };
+4
arch/arm/boot/dts/at91sam9rlek.dts
··· 212 212 status = "okay"; 213 213 }; 214 214 215 + rtc@fffffd20 { 216 + atmel,rtt-rtc-time-reg = <&gpbr 0x0>; 217 + }; 218 + 215 219 rtc@fffffe00 { 216 220 status = "okay"; 217 221 };
+2
arch/arm/boot/dts/da850.dtsi
··· 679 679 "scheduler", "queuemgr"; 680 680 interrupts = <58>; 681 681 #dma-cells = <2>; 682 + /* For backwards compatibility: */ 682 683 #dma-channels = <4>; 684 + dma-channels = <4>; 683 685 power-domains = <&psc1 1>; 684 686 status = "okay"; 685 687 };
+26
arch/arm/boot/dts/hpe-bmc-dl360gen10.dts
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + /* 3 + * Device Tree file for HPE DL360Gen10 4 + */ 5 + 6 + /include/ "hpe-gxp.dtsi" 7 + 8 + / { 9 + #address-cells = <1>; 10 + #size-cells = <1>; 11 + compatible = "hpe,gxp-dl360gen10", "hpe,gxp"; 12 + model = "Hewlett Packard Enterprise ProLiant dl360 Gen10"; 13 + 14 + aliases { 15 + serial0 = &uartc; 16 + }; 17 + 18 + chosen { 19 + stdout-path = "serial0:115200n8"; 20 + }; 21 + 22 + memory@40000000 { 23 + device_type = "memory"; 24 + reg = <0x40000000 0x20000000>; 25 + }; 26 + };
+127
arch/arm/boot/dts/hpe-gxp.dtsi
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + /* 3 + * Device Tree file for HPE GXP 4 + */ 5 + 6 + /dts-v1/; 7 + / { 8 + model = "Hewlett Packard Enterprise GXP BMC"; 9 + compatible = "hpe,gxp"; 10 + #address-cells = <1>; 11 + #size-cells = <1>; 12 + 13 + cpus { 14 + #address-cells = <1>; 15 + #size-cells = <0>; 16 + 17 + cpu@0 { 18 + compatible = "arm,cortex-a9"; 19 + reg = <0>; 20 + device_type = "cpu"; 21 + next-level-cache = <&L2>; 22 + }; 23 + }; 24 + 25 + clocks { 26 + pll: clock-0 { 27 + compatible = "fixed-clock"; 28 + #clock-cells = <0>; 29 + clock-frequency = <1600000000>; 30 + }; 31 + 32 + iopclk: clock-1 { 33 + compatible = "fixed-factor-clock"; 34 + #clock-cells = <0>; 35 + clock-div = <4>; 36 + clock-mult = <1>; 37 + clocks = <&pll>; 38 + }; 39 + }; 40 + 41 + axi { 42 + compatible = "simple-bus"; 43 + #address-cells = <1>; 44 + #size-cells = <1>; 45 + ranges; 46 + dma-ranges; 47 + 48 + L2: cache-controller@b0040000 { 49 + compatible = "arm,pl310-cache"; 50 + reg = <0xb0040000 0x1000>; 51 + cache-unified; 52 + cache-level = <2>; 53 + }; 54 + 55 + ahb@c0000000 { 56 + compatible = "simple-bus"; 57 + #address-cells = <1>; 58 + #size-cells = <1>; 59 + ranges = <0x0 0xc0000000 0x30000000>; 60 + dma-ranges; 61 + 62 + vic0: interrupt-controller@eff0000 { 63 + compatible = "arm,pl192-vic"; 64 + reg = <0xeff0000 0x1000>; 65 + interrupt-controller; 66 + #interrupt-cells = <1>; 67 + }; 68 + 69 + vic1: interrupt-controller@80f00000 { 70 + compatible = "arm,pl192-vic"; 71 + reg = <0x80f00000 0x1000>; 72 + interrupt-controller; 73 + #interrupt-cells = <1>; 74 + }; 75 + 76 + uarta: serial@e0 { 77 + compatible = "ns16550a"; 78 + reg = <0xe0 0x8>; 79 + interrupts = <17>; 80 + interrupt-parent = <&vic0>; 81 + clock-frequency = <1846153>; 82 + reg-shift = <0>; 83 + }; 84 + 85 + uartb: serial@e8 { 86 + compatible = "ns16550a"; 87 + reg = <0xe8 0x8>; 88 + interrupts = <18>; 89 + interrupt-parent = <&vic0>; 90 + clock-frequency = <1846153>; 91 + reg-shift = <0>; 92 + }; 93 + 94 + uartc: serial@f0 { 95 + compatible = "ns16550a"; 96 + reg = <0xf0 0x8>; 97 + interrupts = <19>; 98 + interrupt-parent = <&vic0>; 99 + clock-frequency = <1846153>; 100 + reg-shift = <0>; 101 + }; 102 + 103 + usb0: usb@efe0000 { 104 + compatible = "hpe,gxp-ehci", "generic-ehci"; 105 + reg = <0xefe0000 0x100>; 106 + interrupts = <7>; 107 + interrupt-parent = <&vic0>; 108 + }; 109 + 110 + st: timer@80 { 111 + compatible = "hpe,gxp-timer"; 112 + reg = <0x80 0x16>; 113 + interrupts = <0>; 114 + interrupt-parent = <&vic0>; 115 + clocks = <&iopclk>; 116 + clock-names = "iop"; 117 + }; 118 + 119 + usb1: usb@efe0100 { 120 + compatible = "hpe,gxp-ohci", "generic-ohci"; 121 + reg = <0xefe0100 0x110>; 122 + interrupts = <6>; 123 + interrupt-parent = <&vic0>; 124 + }; 125 + }; 126 + }; 127 + };
+2
arch/arm/boot/dts/mmp2.dtsi
··· 275 275 compatible = "marvell,pdma-1.0"; 276 276 reg = <0xd4000000 0x10000>; 277 277 interrupts = <48>; 278 + /* For backwards compatibility: */ 278 279 #dma-channels = <16>; 280 + dma-channels = <16>; 279 281 status = "disabled"; 280 282 }; 281 283
+4 -1
arch/arm/boot/dts/pxa25x.dtsi
··· 38 38 compatible = "marvell,pdma-1.0"; 39 39 reg = <0x40000000 0x10000>; 40 40 interrupts = <25>; 41 - #dma-channels = <16>; 42 41 #dma-cells = <2>; 42 + /* For backwards compatibility: */ 43 + #dma-channels = <16>; 44 + dma-channels = <16>; 43 45 #dma-requests = <40>; 46 + dma-requests = <40>; 44 47 status = "okay"; 45 48 }; 46 49
+4 -1
arch/arm/boot/dts/pxa27x.dtsi
··· 12 12 compatible = "marvell,pdma-1.0"; 13 13 reg = <0x40000000 0x10000>; 14 14 interrupts = <25>; 15 - #dma-channels = <32>; 16 15 #dma-cells = <2>; 16 + /* For backwards compatibility: */ 17 + #dma-channels = <32>; 18 + dma-channels = <32>; 17 19 #dma-requests = <75>; 20 + dma-requests = <75>; 18 21 status = "okay"; 19 22 }; 20 23
+4 -1
arch/arm/boot/dts/pxa3xx.dtsi
··· 122 122 compatible = "marvell,pdma-1.0"; 123 123 reg = <0x40000000 0x10000>; 124 124 interrupts = <25>; 125 - #dma-channels = <32>; 126 125 #dma-cells = <2>; 126 + /* For backwards compatibility: */ 127 + #dma-channels = <32>; 128 + dma-channels = <32>; 127 129 #dma-requests = <100>; 130 + dma-requests = <100>; 128 131 status = "okay"; 129 132 }; 130 133
+2
arch/arm/boot/dts/rk3036.dtsi
··· 330 330 cru: clock-controller@20000000 { 331 331 compatible = "rockchip,rk3036-cru"; 332 332 reg = <0x20000000 0x1000>; 333 + clocks = <&xin24m>; 334 + clock-names = "xin24m"; 333 335 rockchip,grf = <&grf>; 334 336 #clock-cells = <1>; 335 337 #reset-cells = <1>;
+2 -1
arch/arm/boot/dts/rk3066a.dtsi
··· 202 202 cru: clock-controller@20000000 { 203 203 compatible = "rockchip,rk3066a-cru"; 204 204 reg = <0x20000000 0x1000>; 205 + clocks = <&xin24m>; 206 + clock-names = "xin24m"; 205 207 rockchip,grf = <&grf>; 206 - 207 208 #clock-cells = <1>; 208 209 #reset-cells = <1>; 209 210 assigned-clocks = <&cru PLL_CPLL>, <&cru PLL_GPLL>,
+2 -1
arch/arm/boot/dts/rk3188.dtsi
··· 195 195 cru: clock-controller@20000000 { 196 196 compatible = "rockchip,rk3188-cru"; 197 197 reg = <0x20000000 0x1000>; 198 + clocks = <&xin24m>; 199 + clock-names = "xin24m"; 198 200 rockchip,grf = <&grf>; 199 - 200 201 #clock-cells = <1>; 201 202 #reset-cells = <1>; 202 203 };
+2
arch/arm/boot/dts/rk322x.dtsi
··· 484 484 cru: clock-controller@110e0000 { 485 485 compatible = "rockchip,rk3228-cru"; 486 486 reg = <0x110e0000 0x1000>; 487 + clocks = <&xin24m>; 488 + clock-names = "xin24m"; 487 489 rockchip,grf = <&grf>; 488 490 #clock-cells = <1>; 489 491 #reset-cells = <1>;
+2
arch/arm/boot/dts/rk3288.dtsi
··· 862 862 cru: clock-controller@ff760000 { 863 863 compatible = "rockchip,rk3288-cru"; 864 864 reg = <0x0 0xff760000 0x0 0x1000>; 865 + clocks = <&xin24m>; 866 + clock-names = "xin24m"; 865 867 rockchip,grf = <&grf>; 866 868 #clock-cells = <1>; 867 869 #reset-cells = <1>;
+13 -18
arch/arm/boot/dts/rv1108.dtsi
··· 85 85 #clock-cells = <0>; 86 86 }; 87 87 88 - amba: bus { 89 - compatible = "simple-bus"; 90 - #address-cells = <1>; 91 - #size-cells = <1>; 92 - ranges; 93 - 94 - pdma: pdma@102a0000 { 95 - compatible = "arm,pl330", "arm,primecell"; 96 - reg = <0x102a0000 0x4000>; 97 - interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>; 98 - #dma-cells = <1>; 99 - arm,pl330-broken-no-flushp; 100 - arm,pl330-periph-burst; 101 - clocks = <&cru ACLK_DMAC>; 102 - clock-names = "apb_pclk"; 103 - }; 104 - }; 105 - 106 88 bus_intmem: sram@10080000 { 107 89 compatible = "mmio-sram"; 108 90 reg = <0x10080000 0x2000>; ··· 239 257 pinctrl-0 = <&pwm7_pin>; 240 258 #pwm-cells = <3>; 241 259 status = "disabled"; 260 + }; 261 + 262 + pdma: dma-controller@102a0000 { 263 + compatible = "arm,pl330", "arm,primecell"; 264 + reg = <0x102a0000 0x4000>; 265 + interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>; 266 + #dma-cells = <1>; 267 + arm,pl330-broken-no-flushp; 268 + arm,pl330-periph-burst; 269 + clocks = <&cru ACLK_DMAC>; 270 + clock-names = "apb_pclk"; 242 271 }; 243 272 244 273 grf: syscon@10300000 { ··· 449 456 cru: clock-controller@20200000 { 450 457 compatible = "rockchip,rv1108-cru"; 451 458 reg = <0x20200000 0x1000>; 459 + clocks = <&xin24m>; 460 + clock-names = "xin24m"; 452 461 rockchip,grf = <&grf>; 453 462 #clock-cells = <1>; 454 463 #reset-cells = <1>;
+1 -1
arch/arm/boot/dts/sam9x60.dtsi
··· 684 684 status = "disabled"; 685 685 }; 686 686 687 - rtt: rtt@fffffe20 { 687 + rtt: rtc@fffffe20 { 688 688 compatible = "microchip,sam9x60-rtt", "atmel,at91sam9260-rtt"; 689 689 reg = <0xfffffe20 0x20>; 690 690 interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>;
+25 -1
arch/arm/boot/dts/sama7g5.dtsi
··· 209 209 status = "disabled"; 210 210 }; 211 211 212 - rtt: rtt@e001d020 { 212 + rtt: rtc@e001d020 { 213 213 compatible = "microchip,sama7g5-rtt", "microchip,sam9x60-rtt", "atmel,at91sam9260-rtt"; 214 214 reg = <0xe001d020 0x30>; 215 215 interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>; ··· 460 460 interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>; 461 461 #pwm-cells = <3>; 462 462 clocks = <&pmc PMC_TYPE_PERIPHERAL 77>; 463 + status = "disabled"; 464 + }; 465 + 466 + pdmc0: sound@e1608000 { 467 + compatible = "microchip,sama7g5-pdmc"; 468 + reg = <0xe1608000 0x1000>; 469 + interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>; 470 + #sound-dai-cells = <0>; 471 + dmas = <&dma0 AT91_XDMAC_DT_PERID(37)>; 472 + dma-names = "rx"; 473 + clocks = <&pmc PMC_TYPE_PERIPHERAL 68>, <&pmc PMC_TYPE_GCK 68>; 474 + clock-names = "pclk", "gclk"; 475 + status = "disabled"; 476 + }; 477 + 478 + pdmc1: sound@e160c000 { 479 + compatible = "microchip,sama7g5-pdmc"; 480 + reg = <0xe160c000 0x1000>; 481 + interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>; 482 + #sound-dai-cells = <0>; 483 + dmas = <&dma0 AT91_XDMAC_DT_PERID(38)>; 484 + dma-names = "rx"; 485 + clocks = <&pmc PMC_TYPE_PERIPHERAL 69>, <&pmc PMC_TYPE_GCK 69>; 486 + clock-names = "pclk", "gclk"; 463 487 status = "disabled"; 464 488 }; 465 489
+1 -1
arch/arm/boot/dts/socfpga_arria10_socdk_qspi.dts
··· 9 9 &qspi { 10 10 status = "okay"; 11 11 12 - flash0: n25q00@0 { 12 + flash0: flash@0 { 13 13 #address-cells = <1>; 14 14 #size-cells = <1>; 15 15 compatible = "micron,mt25qu02g", "jedec,spi-nor";
+1 -1
arch/arm/boot/dts/socfpga_cyclone5_socdk.dts
··· 121 121 &qspi { 122 122 status = "okay"; 123 123 124 - flash0: n25q00@0 { 124 + flash0: flash@0 { 125 125 #address-cells = <1>; 126 126 #size-cells = <1>; 127 127 compatible = "micron,mt25qu02g", "jedec,spi-nor";
+1 -1
arch/arm/boot/dts/socfpga_cyclone5_sodia.dts
··· 113 113 &qspi { 114 114 status = "okay"; 115 115 116 - flash0: n25q512a@0 { 116 + flash0: flash@0 { 117 117 #address-cells = <1>; 118 118 #size-cells = <1>; 119 119 compatible = "micron,n25q512a", "jedec,spi-nor";
+2 -2
arch/arm/boot/dts/socfpga_cyclone5_vining_fpga.dts
··· 221 221 &qspi { 222 222 status = "okay"; 223 223 224 - n25q128@0 { 224 + flash@0 { 225 225 #address-cells = <1>; 226 226 #size-cells = <1>; 227 227 compatible = "micron,n25q128", "jedec,spi-nor"; ··· 238 238 cdns,tslch-ns = <4>; 239 239 }; 240 240 241 - n25q00@1 { 241 + flash@1 { 242 242 #address-cells = <1>; 243 243 #size-cells = <1>; 244 244 compatible = "micron,mt25qu02g", "jedec,spi-nor";
+16
arch/arm/configs/multi_v7_defconfig
··· 17 17 CONFIG_SOC_SAMA5D3=y 18 18 CONFIG_SOC_SAMA5D4=y 19 19 CONFIG_SOC_SAMA7G5=y 20 + CONFIG_SOC_LAN966=y 20 21 CONFIG_ARCH_BCM=y 21 22 CONFIG_ARCH_BCM_CYGNUS=y 22 23 CONFIG_ARCH_BCM_HR2=y ··· 44 43 CONFIG_ARCH_HIP01=y 45 44 CONFIG_ARCH_HIP04=y 46 45 CONFIG_ARCH_HIX5HD2=y 46 + CONFIG_ARCH_HPE=y 47 + CONFIG_ARCH_HPE_GXP=y 47 48 CONFIG_ARCH_MXC=y 48 49 CONFIG_SOC_IMX50=y 49 50 CONFIG_SOC_IMX51=y ··· 280 277 CONFIG_MVNETA=y 281 278 CONFIG_PXA168_ETH=m 282 279 CONFIG_KS8851=y 280 + CONFIG_LAN966X_SWITCH=m 283 281 CONFIG_R8169=y 284 282 CONFIG_SH_ETH=y 285 283 CONFIG_SMSC911X=y ··· 291 287 CONFIG_TI_CPSW_SWITCHDEV=y 292 288 CONFIG_TI_CPTS=y 293 289 CONFIG_XILINX_EMACLITE=y 290 + CONFIG_SFP=m 294 291 CONFIG_BROADCOM_PHY=y 295 292 CONFIG_ICPLUS_PHY=y 296 293 CONFIG_MARVELL_PHY=y ··· 299 294 CONFIG_ROCKCHIP_PHY=y 300 295 CONFIG_DP83867_PHY=y 301 296 CONFIG_USB_BRCMSTB=m 297 + CONFIG_MDIO_MSCC_MIIM=m 302 298 CONFIG_USB_PEGASUS=y 303 299 CONFIG_USB_RTL8152=m 304 300 CONFIG_USB_LAN78XX=m ··· 436 430 CONFIG_I2C_SLAVE_EEPROM=y 437 431 CONFIG_SPI=y 438 432 CONFIG_SPI_ATMEL=m 433 + CONFIG_SPI_ATMEL_QUADSPI=m 439 434 CONFIG_SPI_BCM2835=y 440 435 CONFIG_SPI_BCM2835AUX=y 441 436 CONFIG_SPI_CADENCE=y ··· 466 459 CONFIG_PTP_1588_CLOCK=y 467 460 CONFIG_PINCTRL_AS3722=y 468 461 CONFIG_PINCTRL_STMFX=y 462 + CONFIG_PINCTRL_MICROCHIP_SGPIO=y 463 + CONFIG_PINCTRL_OCELOT=y 469 464 CONFIG_PINCTRL_PALMAS=y 470 465 CONFIG_PINCTRL_OWL=y 471 466 CONFIG_PINCTRL_S500=y ··· 526 517 CONFIG_SENSORS_ARM_SCMI=y 527 518 CONFIG_SENSORS_ASPEED=m 528 519 CONFIG_SENSORS_IIO_HWMON=y 520 + CONFIG_SENSORS_LAN966X=m 529 521 CONFIG_SENSORS_LM90=y 530 522 CONFIG_SENSORS_LM95245=y 531 523 CONFIG_SENSORS_NTC_THERMISTOR=m ··· 573 563 CONFIG_BCM2835_WDT=y 574 564 CONFIG_BCM_KONA_WDT=y 575 565 CONFIG_BCM7038_WDT=m 566 + CONFIG_GXP_WATCHDOG=y 576 567 CONFIG_BCMA_HOST_SOC=y 577 568 CONFIG_BCMA_DRIVER_GMAC_CMN=y 578 569 CONFIG_BCMA_DRIVER_GPIO=y ··· 778 767 CONFIG_SND_ATMEL_SOC_PDMIC=m 779 768 CONFIG_SND_ATMEL_SOC_I2S=m 780 769 CONFIG_SND_BCM2835_SOC_I2S=m 770 + CONFIG_SND_IMX_SOC=m 771 + CONFIG_SND_SOC_FSL_ASOC_CARD=m 781 772 CONFIG_SND_SOC_FSL_SAI=m 782 773 CONFIG_SND_PXA_SOC_SSP=m 783 774 CONFIG_SND_MMP_SOC_SSPA=m ··· 1031 1018 CONFIG_COMMON_CLK_MAX77686=y 1032 1019 CONFIG_COMMON_CLK_RK808=m 1033 1020 CONFIG_COMMON_CLK_SCMI=y 1021 + CONFIG_COMMON_CLK_LAN966X=y 1034 1022 CONFIG_COMMON_CLK_S2MPS11=m 1035 1023 CONFIG_CLK_RASPBERRYPI=y 1036 1024 CONFIG_COMMON_CLK_QCOM=y ··· 1159 1145 CONFIG_PWM_TEGRA=y 1160 1146 CONFIG_PWM_VT8500=y 1161 1147 CONFIG_KEYSTONE_IRQ=y 1148 + CONFIG_RESET_MCHP_SPARX5=y 1162 1149 CONFIG_PHY_SUN4I_USB=y 1163 1150 CONFIG_PHY_SUN9I_USB=y 1164 1151 CONFIG_PHY_HIX5HD2_SATA=y ··· 1167 1152 CONFIG_PHY_BERLIN_USB=y 1168 1153 CONFIG_PHY_BRCM_USB=m 1169 1154 CONFIG_PHY_MMP3_USB=m 1155 + CONFIG_PHY_LAN966X_SERDES=m 1170 1156 CONFIG_PHY_CPCAP_USB=m 1171 1157 CONFIG_PHY_QCOM_APQ8064_SATA=m 1172 1158 CONFIG_PHY_QCOM_USB_HS=y
+1 -1
arch/arm/mach-at91/Kconfig
··· 219 219 select SRAM if PM 220 220 221 221 config ATMEL_PM 222 - bool "Atmel PM support" 222 + bool 223 223 224 224 config ATMEL_SECURE_PM 225 225 bool "Atmel Secure PM support"
+6 -4
arch/arm/mach-ep93xx/clock.c
··· 345 345 psc->hw.init = &init; 346 346 347 347 clk = clk_register(NULL, &psc->hw); 348 - if (IS_ERR(clk)) 348 + if (IS_ERR(clk)) { 349 349 kfree(psc); 350 - 350 + return ERR_CAST(clk); 351 + } 351 352 return &psc->hw; 352 353 } 353 354 ··· 453 452 psc->hw.init = &init; 454 453 455 454 clk = clk_register(NULL, &psc->hw); 456 - if (IS_ERR(clk)) 455 + if (IS_ERR(clk)) { 457 456 kfree(psc); 458 - 457 + return ERR_CAST(clk); 458 + } 459 459 return &psc->hw; 460 460 } 461 461
+1 -1
arch/arm/mach-ep93xx/ts72xx.c
··· 150 150 .num_resources = ARRAY_SIZE(ts72xx_nand_resource), 151 151 }; 152 152 153 - void __init ts72xx_register_flash(struct mtd_partition *parts, int n, 153 + static void __init ts72xx_register_flash(struct mtd_partition *parts, int n, 154 154 resource_size_t start) 155 155 { 156 156 /*
+23
arch/arm/mach-hpe/Kconfig
··· 1 + menuconfig ARCH_HPE 2 + bool "HPE SoC support" 3 + depends on ARCH_MULTI_V7 4 + help 5 + This enables support for HPE ARM based BMC chips. 6 + if ARCH_HPE 7 + 8 + config ARCH_HPE_GXP 9 + bool "HPE GXP SoC" 10 + depends on ARCH_MULTI_V7 11 + select ARM_VIC 12 + select GENERIC_IRQ_CHIP 13 + select CLKSRC_MMIO 14 + help 15 + HPE GXP is the name of the HPE Soc. This SoC is used to implement many 16 + BMC features at HPE. It supports ARMv7 architecture based on the Cortex 17 + A9 core. It is capable of using an AXI bus to which a memory controller 18 + is attached. It has multiple SPI interfaces to connect boot flash and 19 + BIOS flash. It uses a 10/100/1000 MAC for network connectivity. It 20 + has multiple i2c engines to drive connectivity with a host 21 + infrastructure. 22 + 23 + endif
+1
arch/arm/mach-hpe/Makefile
··· 1 + obj-$(CONFIG_ARCH_HPE_GXP) += gxp.o
+16
arch/arm/mach-hpe/gxp.c
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + /* Copyright (C) 2022 Hewlett-Packard Enterprise Development Company, L.P. */ 3 + 4 + #include <linux/of_platform.h> 5 + #include <asm/mach/arch.h> 6 + 7 + static const char * const gxp_board_dt_compat[] = { 8 + "hpe,gxp", 9 + NULL, 10 + }; 11 + 12 + DT_MACHINE_START(GXP_DT, "HPE GXP") 13 + .dt_compat = gxp_board_dt_compat, 14 + .l2c_aux_val = 0, 15 + .l2c_aux_mask = ~0, 16 + MACHINE_END
+2 -1
arch/arm64/boot/dts/intel/Makefile
··· 1 1 # SPDX-License-Identifier: GPL-2.0-only 2 - dtb-$(CONFIG_ARCH_INTEL_SOCFPGA) += socfpga_agilex_socdk.dtb \ 2 + dtb-$(CONFIG_ARCH_INTEL_SOCFPGA) += socfpga_agilex_n6000.dtb \ 3 + socfpga_agilex_socdk.dtb \ 3 4 socfpga_agilex_socdk_nand.dtb \ 4 5 socfpga_n5x_socdk.dtb 5 6 dtb-$(CONFIG_ARCH_KEEMBAY) += keembay-evm.dtb
+66
arch/arm64/boot/dts/intel/socfpga_agilex_n6000.dts
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + /* 3 + * Copyright (C) 2021-2022, Intel Corporation 4 + */ 5 + #include "socfpga_agilex.dtsi" 6 + 7 + / { 8 + model = "SoCFPGA Agilex n6000"; 9 + compatible = "intel,socfpga-agilex-n6000", "intel,socfpga-agilex"; 10 + 11 + aliases { 12 + serial0 = &uart1; 13 + serial1 = &uart0; 14 + ethernet0 = &gmac0; 15 + ethernet1 = &gmac1; 16 + ethernet2 = &gmac2; 17 + }; 18 + 19 + chosen { 20 + stdout-path = "serial0:115200n8"; 21 + }; 22 + 23 + memory@0 { 24 + device_type = "memory"; 25 + /* We expect the bootloader to fill in the reg */ 26 + reg = <0 0 0 0>; 27 + }; 28 + 29 + soc { 30 + bus@80000000 { 31 + compatible = "simple-bus"; 32 + reg = <0x80000000 0x60000000>, 33 + <0xf9000000 0x00100000>; 34 + reg-names = "axi_h2f", "axi_h2f_lw"; 35 + #address-cells = <2>; 36 + #size-cells = <1>; 37 + ranges = <0x00000000 0x00000000 0xf9000000 0x00001000>; 38 + 39 + dma-controller@0 { 40 + compatible = "intel,hps-copy-engine"; 41 + reg = <0x00000000 0x00000000 0x00001000>; 42 + #dma-cells = <1>; 43 + }; 44 + }; 45 + }; 46 + }; 47 + 48 + &osc1 { 49 + clock-frequency = <25000000>; 50 + }; 51 + 52 + &uart0 { 53 + status = "okay"; 54 + }; 55 + 56 + &uart1 { 57 + status = "okay"; 58 + }; 59 + 60 + &watchdog0 { 61 + status = "okay"; 62 + }; 63 + 64 + &fpga_mgr { 65 + status = "disabled"; 66 + };
+3 -2
arch/arm64/boot/dts/rockchip/rk3308.dtsi
··· 745 745 cru: clock-controller@ff500000 { 746 746 compatible = "rockchip,rk3308-cru"; 747 747 reg = <0x0 0xff500000 0x0 0x1000>; 748 + clocks = <&xin24m>; 749 + clock-names = "xin24m"; 750 + rockchip,grf = <&grf>; 748 751 #clock-cells = <1>; 749 752 #reset-cells = <1>; 750 - rockchip,grf = <&grf>; 751 - 752 753 assigned-clocks = <&cru SCLK_RTC32K>; 753 754 assigned-clock-rates = <32768>; 754 755 };
+2
arch/arm64/boot/dts/rockchip/rk3368.dtsi
··· 747 747 cru: clock-controller@ff760000 { 748 748 compatible = "rockchip,rk3368-cru"; 749 749 reg = <0x0 0xff760000 0x0 0x1000>; 750 + clocks = <&xin24m>; 751 + clock-names = "xin24m"; 750 752 rockchip,grf = <&grf>; 751 753 #clock-cells = <1>; 752 754 #reset-cells = <1>;
+2 -2
arch/arm64/boot/dts/rockchip/rk3566-quartz64-a.dts
··· 652 652 compatible = "brcm,bcm43438-bt"; 653 653 clocks = <&rk817 1>; 654 654 clock-names = "lpo"; 655 - device-wake-gpios = <&gpio2 RK_PC1 GPIO_ACTIVE_HIGH>; 656 - host-wake-gpios = <&gpio2 RK_PC0 GPIO_ACTIVE_HIGH>; 655 + device-wakeup-gpios = <&gpio2 RK_PC1 GPIO_ACTIVE_HIGH>; 656 + host-wakeup-gpios = <&gpio2 RK_PC0 GPIO_ACTIVE_HIGH>; 657 657 shutdown-gpios = <&gpio2 RK_PB7 GPIO_ACTIVE_HIGH>; 658 658 pinctrl-names = "default"; 659 659 pinctrl-0 = <&bt_host_wake_l &bt_wake_l &bt_enable_h>;
+2
arch/arm64/boot/dts/rockchip/rk356x.dtsi
··· 397 397 cru: clock-controller@fdd20000 { 398 398 compatible = "rockchip,rk3568-cru"; 399 399 reg = <0x0 0xfdd20000 0x0 0x1000>; 400 + clocks = <&xin24m>; 401 + clock-names = "xin24m"; 400 402 #clock-cells = <1>; 401 403 #reset-cells = <1>; 402 404 assigned-clocks = <&cru PLL_GPLL>, <&pmucru PLL_PPLL>;
+4
arch/arm64/boot/dts/sprd/whale2.dtsi
··· 126 126 reg = <0 0x20100000 0 0x4000>; 127 127 interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>; 128 128 #dma-cells = <1>; 129 + /* For backwards compatibility: */ 129 130 #dma-channels = <32>; 131 + dma-channels = <32>; 130 132 clock-names = "enable"; 131 133 clocks = <&apahb_gate CLK_DMA_EB>; 132 134 }; ··· 274 272 compatible = "sprd,sc9860-dma"; 275 273 reg = <0 0x41580000 0 0x4000>; 276 274 #dma-cells = <1>; 275 + /* For backwards compatibility: */ 277 276 #dma-channels = <32>; 277 + dma-channels = <32>; 278 278 clock-names = "enable", "ashb_eb"; 279 279 clocks = <&agcp_gate CLK_AGCP_DMAAP_EB>, 280 280 <&agcp_gate CLK_AGCP_AP_ASHB_EB>;
+8
drivers/clocksource/Kconfig
··· 597 597 Enable this option to use the Low Power controller timer 598 598 as clocksource. 599 599 600 + config GXP_TIMER 601 + bool "GXP timer driver" if COMPILE_TEST && !ARCH_HPE 602 + default ARCH_HPE 603 + select TIMER_OF if OF 604 + help 605 + Provides a driver for the timer control found on HPE 606 + GXP SOCs. This is required for all GXP SOCs. 607 + 600 608 config RISCV_TIMER 601 609 bool "Timer for the RISC-V platform" if COMPILE_TEST 602 610 depends on GENERIC_SCHED_CLOCK && RISCV && RISCV_SBI
+1
drivers/clocksource/Makefile
··· 86 86 obj-$(CONFIG_MICROCHIP_PIT64B) += timer-microchip-pit64b.o 87 87 obj-$(CONFIG_MSC313E_TIMER) += timer-msc313e.o 88 88 obj-$(CONFIG_GOLDFISH_TIMER) += timer-goldfish.o 89 + obj-$(CONFIG_GXP_TIMER) += timer-gxp.o
+209
drivers/clocksource/timer-gxp.c
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + /* Copyright (C) 2022 Hewlett-Packard Enterprise Development Company, L.P. */ 3 + 4 + #include <linux/clk.h> 5 + #include <linux/clockchips.h> 6 + #include <linux/clocksource.h> 7 + #include <linux/interrupt.h> 8 + #include <linux/of_address.h> 9 + #include <linux/of_irq.h> 10 + #include <linux/of_platform.h> 11 + #include <linux/sched_clock.h> 12 + 13 + #define TIMER0_FREQ 1000000 14 + #define GXP_TIMER_CNT_OFS 0x00 15 + #define GXP_TIMESTAMP_OFS 0x08 16 + #define GXP_TIMER_CTRL_OFS 0x14 17 + 18 + /* TCS Stands for Timer Control/Status: these are masks to be used in */ 19 + /* the Timer Count Registers */ 20 + #define MASK_TCS_ENABLE 0x01 21 + #define MASK_TCS_PERIOD 0x02 22 + #define MASK_TCS_RELOAD 0x04 23 + #define MASK_TCS_TC 0x80 24 + 25 + struct gxp_timer { 26 + void __iomem *counter; 27 + void __iomem *control; 28 + struct clock_event_device evt; 29 + }; 30 + 31 + static struct gxp_timer *gxp_timer; 32 + 33 + static void __iomem *system_clock __ro_after_init; 34 + 35 + static inline struct gxp_timer *to_gxp_timer(struct clock_event_device *evt_dev) 36 + { 37 + return container_of(evt_dev, struct gxp_timer, evt); 38 + } 39 + 40 + static u64 notrace gxp_sched_read(void) 41 + { 42 + return readl_relaxed(system_clock); 43 + } 44 + 45 + static int gxp_time_set_next_event(unsigned long event, struct clock_event_device *evt_dev) 46 + { 47 + struct gxp_timer *timer = to_gxp_timer(evt_dev); 48 + 49 + /* Stop counting and disable interrupt before updating */ 50 + writeb_relaxed(MASK_TCS_TC, timer->control); 51 + writel_relaxed(event, timer->counter); 52 + writeb_relaxed(MASK_TCS_TC | MASK_TCS_ENABLE, timer->control); 53 + 54 + return 0; 55 + } 56 + 57 + static irqreturn_t gxp_timer_interrupt(int irq, void *dev_id) 58 + { 59 + struct gxp_timer *timer = (struct gxp_timer *)dev_id; 60 + 61 + if (!(readb_relaxed(timer->control) & MASK_TCS_TC)) 62 + return IRQ_NONE; 63 + 64 + writeb_relaxed(MASK_TCS_TC, timer->control); 65 + 66 + timer->evt.event_handler(&timer->evt); 67 + 68 + return IRQ_HANDLED; 69 + } 70 + 71 + static int __init gxp_timer_init(struct device_node *node) 72 + { 73 + void __iomem *base; 74 + struct clk *clk; 75 + u32 freq; 76 + int ret, irq; 77 + 78 + gxp_timer = kzalloc(sizeof(*gxp_timer), GFP_KERNEL); 79 + if (!gxp_timer) { 80 + ret = -ENOMEM; 81 + pr_err("Can't allocate gxp_timer"); 82 + return ret; 83 + } 84 + 85 + clk = of_clk_get(node, 0); 86 + if (IS_ERR(clk)) { 87 + ret = (int)PTR_ERR(clk); 88 + pr_err("%pOFn clock not found: %d\n", node, ret); 89 + goto err_free; 90 + } 91 + 92 + ret = clk_prepare_enable(clk); 93 + if (ret) { 94 + pr_err("%pOFn clock enable failed: %d\n", node, ret); 95 + goto err_clk_enable; 96 + } 97 + 98 + base = of_iomap(node, 0); 99 + if (!base) { 100 + ret = -ENXIO; 101 + pr_err("Can't map timer base registers"); 102 + goto err_iomap; 103 + } 104 + 105 + /* Set the offsets to the clock register and timer registers */ 106 + gxp_timer->counter = base + GXP_TIMER_CNT_OFS; 107 + gxp_timer->control = base + GXP_TIMER_CTRL_OFS; 108 + system_clock = base + GXP_TIMESTAMP_OFS; 109 + 110 + gxp_timer->evt.name = node->name; 111 + gxp_timer->evt.rating = 300; 112 + gxp_timer->evt.features = CLOCK_EVT_FEAT_ONESHOT; 113 + gxp_timer->evt.set_next_event = gxp_time_set_next_event; 114 + gxp_timer->evt.cpumask = cpumask_of(0); 115 + 116 + irq = irq_of_parse_and_map(node, 0); 117 + if (irq <= 0) { 118 + ret = -EINVAL; 119 + pr_err("GXP Timer Can't parse IRQ %d", irq); 120 + goto err_exit; 121 + } 122 + 123 + freq = clk_get_rate(clk); 124 + 125 + ret = clocksource_mmio_init(system_clock, node->name, freq, 126 + 300, 32, clocksource_mmio_readl_up); 127 + if (ret) { 128 + pr_err("%pOFn init clocksource failed: %d", node, ret); 129 + goto err_exit; 130 + } 131 + 132 + sched_clock_register(gxp_sched_read, 32, freq); 133 + 134 + irq = irq_of_parse_and_map(node, 0); 135 + if (irq <= 0) { 136 + ret = -EINVAL; 137 + pr_err("%pOFn Can't parse IRQ %d", node, irq); 138 + goto err_exit; 139 + } 140 + 141 + clockevents_config_and_register(&gxp_timer->evt, TIMER0_FREQ, 142 + 0xf, 0xffffffff); 143 + 144 + ret = request_irq(irq, gxp_timer_interrupt, IRQF_TIMER | IRQF_SHARED, 145 + node->name, gxp_timer); 146 + if (ret) { 147 + pr_err("%pOFn request_irq() failed: %d", node, ret); 148 + goto err_exit; 149 + } 150 + 151 + pr_debug("gxp: system timer (irq = %d)\n", irq); 152 + return 0; 153 + 154 + err_exit: 155 + iounmap(base); 156 + err_iomap: 157 + clk_disable_unprepare(clk); 158 + err_clk_enable: 159 + clk_put(clk); 160 + err_free: 161 + kfree(gxp_timer); 162 + return ret; 163 + } 164 + 165 + /* 166 + * This probe gets called after the timer is already up and running. This will create 167 + * the watchdog device as a child since the registers are shared. 168 + */ 169 + 170 + static int gxp_timer_probe(struct platform_device *pdev) 171 + { 172 + struct platform_device *gxp_watchdog_device; 173 + struct device *dev = &pdev->dev; 174 + 175 + if (!gxp_timer) { 176 + pr_err("Gxp Timer not initialized, cannot create watchdog"); 177 + return -ENOMEM; 178 + } 179 + 180 + gxp_watchdog_device = platform_device_alloc("gxp-wdt", -1); 181 + if (!gxp_watchdog_device) { 182 + pr_err("Timer failed to allocate gxp-wdt"); 183 + return -ENOMEM; 184 + } 185 + 186 + /* Pass the base address (counter) as platform data and nothing else */ 187 + gxp_watchdog_device->dev.platform_data = gxp_timer->counter; 188 + gxp_watchdog_device->dev.parent = dev; 189 + 190 + return platform_device_add(gxp_watchdog_device); 191 + } 192 + 193 + static const struct of_device_id gxp_timer_of_match[] = { 194 + { .compatible = "hpe,gxp-timer", }, 195 + {}, 196 + }; 197 + 198 + static struct platform_driver gxp_timer_driver = { 199 + .probe = gxp_timer_probe, 200 + .driver = { 201 + .name = "gxp-timer", 202 + .of_match_table = gxp_timer_of_match, 203 + .suppress_bind_attrs = true, 204 + }, 205 + }; 206 + 207 + builtin_platform_driver(gxp_timer_driver); 208 + 209 + TIMER_OF_DECLARE(gxp, "hpe,gxp-timer", gxp_timer_init);
+1 -1
drivers/soc/ixp4xx/ixp4xx-qmgr.c
··· 459 459 static struct platform_driver ixp4xx_qmgr_driver = { 460 460 .driver = { 461 461 .name = "ixp4xx-qmgr", 462 - .of_match_table = of_match_ptr(ixp4xx_qmgr_of_match), 462 + .of_match_table = ixp4xx_qmgr_of_match, 463 463 }, 464 464 .probe = ixp4xx_qmgr_probe, 465 465 .remove = ixp4xx_qmgr_remove,
+2
drivers/soc/rockchip/grf.c
··· 165 165 return -ENODEV; 166 166 if (!match || !match->data) { 167 167 pr_err("%s: missing grf data\n", __func__); 168 + of_node_put(np); 168 169 return -EINVAL; 169 170 } 170 171 171 172 grf_info = match->data; 172 173 173 174 grf = syscon_node_to_regmap(np); 175 + of_node_put(np); 174 176 if (IS_ERR(grf)) { 175 177 pr_err("%s: could not get grf syscon\n", __func__); 176 178 return PTR_ERR(grf);
+1 -1
drivers/tee/optee/call.c
··· 512 512 * Allow kernel address to register with OP-TEE as kernel 513 513 * pages are configured as normal memory only. 514 514 */ 515 - if (virt_addr_valid(start) || is_vmalloc_addr((void *)start)) 515 + if (virt_addr_valid((void *)start) || is_vmalloc_addr((void *)start)) 516 516 return 0; 517 517 518 518 mmap_read_lock(mm);
+11
drivers/watchdog/Kconfig
··· 1839 1839 help 1840 1840 Hardware driver for the Ralink SoC Watchdog Timer. 1841 1841 1842 + config GXP_WATCHDOG 1843 + tristate "HPE GXP watchdog support" 1844 + depends on ARCH_HPE_GXP 1845 + select WATCHDOG_CORE 1846 + help 1847 + Say Y here to include support for the watchdog timer 1848 + in HPE GXP SoCs. 1849 + 1850 + To compile this driver as a module, choose M here. 1851 + The module will be called gxp-wdt. 1852 + 1842 1853 config MT7621_WDT 1843 1854 tristate "Mediatek SoC watchdog" 1844 1855 select WATCHDOG_CORE
+1
drivers/watchdog/Makefile
··· 93 93 obj-$(CONFIG_SPRD_WATCHDOG) += sprd_wdt.o 94 94 obj-$(CONFIG_PM8916_WATCHDOG) += pm8916_wdt.o 95 95 obj-$(CONFIG_ARM_SMC_WATCHDOG) += arm_smc_wdt.o 96 + obj-$(CONFIG_GXP_WATCHDOG) += gxp-wdt.o 96 97 obj-$(CONFIG_VISCONTI_WATCHDOG) += visconti_wdt.o 97 98 obj-$(CONFIG_MSC313E_WATCHDOG) += msc313e_wdt.o 98 99 obj-$(CONFIG_APPLE_WATCHDOG) += apple_wdt.o
+174
drivers/watchdog/gxp-wdt.c
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + /* Copyright (C) 2022 Hewlett-Packard Enterprise Development Company, L.P. */ 3 + 4 + #include <linux/delay.h> 5 + #include <linux/io.h> 6 + #include <linux/module.h> 7 + #include <linux/platform_device.h> 8 + #include <linux/types.h> 9 + #include <linux/watchdog.h> 10 + 11 + #define MASK_WDGCS_ENABLE 0x01 12 + #define MASK_WDGCS_RELOAD 0x04 13 + #define MASK_WDGCS_NMIEN 0x08 14 + #define MASK_WDGCS_WARN 0x80 15 + 16 + #define WDT_MAX_TIMEOUT_MS 655350 17 + #define WDT_DEFAULT_TIMEOUT 30 18 + #define SECS_TO_WDOG_TICKS(x) ((x) * 100) 19 + #define WDOG_TICKS_TO_SECS(x) ((x) / 100) 20 + 21 + #define GXP_WDT_CNT_OFS 0x10 22 + #define GXP_WDT_CTRL_OFS 0x16 23 + 24 + struct gxp_wdt { 25 + void __iomem *base; 26 + struct watchdog_device wdd; 27 + }; 28 + 29 + static void gxp_wdt_enable_reload(struct gxp_wdt *drvdata) 30 + { 31 + u8 val; 32 + 33 + val = readb(drvdata->base + GXP_WDT_CTRL_OFS); 34 + val |= (MASK_WDGCS_ENABLE | MASK_WDGCS_RELOAD); 35 + writeb(val, drvdata->base + GXP_WDT_CTRL_OFS); 36 + } 37 + 38 + static int gxp_wdt_start(struct watchdog_device *wdd) 39 + { 40 + struct gxp_wdt *drvdata = watchdog_get_drvdata(wdd); 41 + 42 + writew(SECS_TO_WDOG_TICKS(wdd->timeout), drvdata->base + GXP_WDT_CNT_OFS); 43 + gxp_wdt_enable_reload(drvdata); 44 + return 0; 45 + } 46 + 47 + static int gxp_wdt_stop(struct watchdog_device *wdd) 48 + { 49 + struct gxp_wdt *drvdata = watchdog_get_drvdata(wdd); 50 + u8 val; 51 + 52 + val = readb_relaxed(drvdata->base + GXP_WDT_CTRL_OFS); 53 + val &= ~MASK_WDGCS_ENABLE; 54 + writeb(val, drvdata->base + GXP_WDT_CTRL_OFS); 55 + return 0; 56 + } 57 + 58 + static int gxp_wdt_set_timeout(struct watchdog_device *wdd, 59 + unsigned int timeout) 60 + { 61 + struct gxp_wdt *drvdata = watchdog_get_drvdata(wdd); 62 + u32 actual; 63 + 64 + wdd->timeout = timeout; 65 + actual = min(timeout * 100, wdd->max_hw_heartbeat_ms / 10); 66 + writew(actual, drvdata->base + GXP_WDT_CNT_OFS); 67 + 68 + return 0; 69 + } 70 + 71 + static unsigned int gxp_wdt_get_timeleft(struct watchdog_device *wdd) 72 + { 73 + struct gxp_wdt *drvdata = watchdog_get_drvdata(wdd); 74 + u32 val = readw(drvdata->base + GXP_WDT_CNT_OFS); 75 + 76 + return WDOG_TICKS_TO_SECS(val); 77 + } 78 + 79 + static int gxp_wdt_ping(struct watchdog_device *wdd) 80 + { 81 + struct gxp_wdt *drvdata = watchdog_get_drvdata(wdd); 82 + 83 + gxp_wdt_enable_reload(drvdata); 84 + return 0; 85 + } 86 + 87 + static int gxp_restart(struct watchdog_device *wdd, unsigned long action, 88 + void *data) 89 + { 90 + struct gxp_wdt *drvdata = watchdog_get_drvdata(wdd); 91 + 92 + writew(1, drvdata->base + GXP_WDT_CNT_OFS); 93 + gxp_wdt_enable_reload(drvdata); 94 + mdelay(100); 95 + return 0; 96 + } 97 + 98 + static const struct watchdog_ops gxp_wdt_ops = { 99 + .owner = THIS_MODULE, 100 + .start = gxp_wdt_start, 101 + .stop = gxp_wdt_stop, 102 + .ping = gxp_wdt_ping, 103 + .set_timeout = gxp_wdt_set_timeout, 104 + .get_timeleft = gxp_wdt_get_timeleft, 105 + .restart = gxp_restart, 106 + }; 107 + 108 + static const struct watchdog_info gxp_wdt_info = { 109 + .options = WDIOF_SETTIMEOUT | WDIOF_MAGICCLOSE | WDIOF_KEEPALIVEPING, 110 + .identity = "HPE GXP Watchdog timer", 111 + }; 112 + 113 + static int gxp_wdt_probe(struct platform_device *pdev) 114 + { 115 + struct device *dev = &pdev->dev; 116 + struct gxp_wdt *drvdata; 117 + int err; 118 + u8 val; 119 + 120 + drvdata = devm_kzalloc(dev, sizeof(struct gxp_wdt), GFP_KERNEL); 121 + if (!drvdata) 122 + return -ENOMEM; 123 + 124 + /* 125 + * The register area where the timer and watchdog reside is disarranged. 126 + * Hence mapping individual register blocks for the timer and watchdog 127 + * is not recommended as they would have access to each others 128 + * registers. Based on feedback the watchdog is no longer part of the 129 + * device tree file and the timer driver now creates the watchdog as a 130 + * child device. During the watchdogs creation, the timer driver passes 131 + * the base address to the watchdog over the private interface. 132 + */ 133 + 134 + drvdata->base = (void __iomem *)dev->platform_data; 135 + 136 + drvdata->wdd.info = &gxp_wdt_info; 137 + drvdata->wdd.ops = &gxp_wdt_ops; 138 + drvdata->wdd.max_hw_heartbeat_ms = WDT_MAX_TIMEOUT_MS; 139 + drvdata->wdd.parent = dev; 140 + drvdata->wdd.timeout = WDT_DEFAULT_TIMEOUT; 141 + 142 + watchdog_set_drvdata(&drvdata->wdd, drvdata); 143 + watchdog_set_nowayout(&drvdata->wdd, WATCHDOG_NOWAYOUT); 144 + 145 + val = readb(drvdata->base + GXP_WDT_CTRL_OFS); 146 + 147 + if (val & MASK_WDGCS_ENABLE) 148 + set_bit(WDOG_HW_RUNNING, &drvdata->wdd.status); 149 + 150 + watchdog_set_restart_priority(&drvdata->wdd, 128); 151 + 152 + watchdog_stop_on_reboot(&drvdata->wdd); 153 + err = devm_watchdog_register_device(dev, &drvdata->wdd); 154 + if (err) { 155 + dev_err(dev, "Failed to register watchdog device"); 156 + return err; 157 + } 158 + 159 + dev_info(dev, "HPE GXP watchdog timer"); 160 + 161 + return 0; 162 + } 163 + 164 + static struct platform_driver gxp_wdt_driver = { 165 + .probe = gxp_wdt_probe, 166 + .driver = { 167 + .name = "gxp-wdt", 168 + }, 169 + }; 170 + module_platform_driver(gxp_wdt_driver); 171 + 172 + MODULE_AUTHOR("Nick Hawkins <nick.hawkins@hpe.com>"); 173 + MODULE_AUTHOR("Jean-Marie Verdun <verdun@hpe.com>"); 174 + MODULE_DESCRIPTION("Driver for GXP watchdog timer");