Unverified Commit fee1601d authored by Arnd Bergmann's avatar Arnd Bergmann
Browse files

Merge tag 'nuvoton-5.18-devicetree' of...

Merge tag 'nuvoton-5.18-devicetree' of git://git.kernel.org/pub/scm/linux/kernel/git/joel/bmc into arm/dt

Nuvoton device tree updates for 5.18

 * Additions to wpcm450 following the upstremaing of the pinctrl/gpio
   driver for this platform

 * Match more of the platform in MAINTAINERS

* tag 'nuvoton-5.18-devicetree' of git://git.kernel.org/pub/scm/linux/kernel/git/joel/bmc:
  MAINTAINERS: ARM/WPCM450: Add 'W:' line with wiki
  ARM: dts: wpcm450: Add pinmux information to UART0
  ARM: dts: wpcm450-supermicro-x9sci-ln4f: Add GPIO LEDs and buttons
  ARM: dts: wpcm450: Add pin functions
  ARM: dts: wpcm450: Add pinctrl and GPIO nodes
  ARM: dts: wpcm450: Add global control registers (GCR) node
  MAINTAINERS: Match all of bindings/arm/npcm/ as part of NPCM architecture
  dt-bindings: arm/npcm: Add binding for global control registers (GCR)

Link: https://lore.kernel.org/r/CACPK8XdjF6dG04hR+iMpUP8=LSJi5x-hRivgCGDaY7o_461eJw@mail.gmail.com


Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parents f7bc3bc5 43fd3d4d
Loading
Loading
Loading
Loading
+48 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/arm/npcm/nuvoton,gcr.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Global Control Registers block in Nuvoton SoCs

maintainers:
  - Jonathan Neuschäfer <j.neuschaefer@gmx.net>

description:
  The Global Control Registers (GCR) are a block of registers in Nuvoton SoCs
  that expose misc functionality such as chip model and version information or
  pinmux settings.

properties:
  compatible:
    items:
      - enum:
          - nuvoton,wpcm450-gcr
          - nuvoton,npcm750-gcr
      - const: syscon
      - const: simple-mfd

  reg:
    maxItems: 1

required:
  - compatible
  - reg

additionalProperties:
  type: object

examples:
  - |
    gcr: syscon@800000 {
      compatible = "nuvoton,npcm750-gcr", "syscon", "simple-mfd";
      reg = <0x800000 0x1000>;

      mux-controller {
        compatible = "mmio-mux";
        #mux-control-cells = <1>;
        mux-reg-masks = <0x38 0x07>;
        idle-states = <2>;
      };
    };
+2 −0
Original line number Diff line number Diff line
@@ -2364,6 +2364,7 @@ L: openbmc@lists.ozlabs.org (moderated for non-subscribers)
S:	Supported
F:	Documentation/devicetree/bindings/*/*/*npcm*
F:	Documentation/devicetree/bindings/*/*npcm*
F:	Documentation/devicetree/bindings/arm/npcm/*
F:	arch/arm/boot/dts/nuvoton-npcm*
F:	arch/arm/mach-npcm/
F:	drivers/*/*npcm*
@@ -2374,6 +2375,7 @@ ARM/NUVOTON WPCM450 ARCHITECTURE
M:	Jonathan Neuschäfer <j.neuschaefer@gmx.net>
L:	openbmc@lists.ozlabs.org (moderated for non-subscribers)
S:	Maintained
W:	https://github.com/neuschaefer/wpcm450/wiki
F:	Documentation/devicetree/bindings/*/*wpcm*
F:	arch/arm/boot/dts/nuvoton-wpcm450*
F:	arch/arm/mach-npcm/wpcm450.c
+43 −0
Original line number Diff line number Diff line
@@ -8,6 +8,9 @@

#include "nuvoton-wpcm450.dtsi"

#include <dt-bindings/input/linux-event-codes.h>
#include <dt-bindings/gpio/gpio.h>

/ {
	model = "Supermicro X9SCi-LN4F BMC";
	compatible = "supermicro,x9sci-ln4f-bmc", "nuvoton,wpcm450";
@@ -20,6 +23,46 @@ memory@0 {
		device_type = "memory";
		reg = <0 0x08000000>; /* 128 MiB */
	};

	gpio-keys {
		compatible = "gpio-keys";
		pinctrl-names = "default";
		pinctrl-0 = <&key_pins>;

		uid {
			label = "UID button";
			linux,code = <KEY_HOME>;
			gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>;
		};
	};

	gpio-leds {
		compatible = "gpio-leds";
		pinctrl-names = "default";
		pinctrl-0 = <&led_pins>;

		uid {
			label = "UID";
			gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
		};

		heartbeat {
			label = "heartbeat";
			gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
		};
	};
};

&pinctrl {
	key_pins: mux-keys {
		groups = "gspi", "sspi";
		function = "gpio";
	};

	led_pins: mux-leds {
		groups = "hg3", "hg0", "pwm4";
		function = "gpio";
	};
};

&serial0 {
+384 −0
Original line number Diff line number Diff line
@@ -8,6 +8,17 @@ / {
	#address-cells = <1>;
	#size-cells = <1>;

	aliases {
		gpio0 = &gpio0;
		gpio1 = &gpio1;
		gpio2 = &gpio2;
		gpio3 = &gpio3;
		gpio4 = &gpio4;
		gpio5 = &gpio5;
		gpio6 = &gpio6;
		gpio7 = &gpio7;
	};

	cpus {
		#address-cells = <1>;
		#size-cells = <0>;
@@ -33,12 +44,19 @@ soc {
		interrupt-parent = <&aic>;
		ranges;

		gcr: syscon@b0000000 {
			compatible = "nuvoton,wpcm450-gcr", "syscon", "simple-mfd";
			reg = <0xb0000000 0x200>;
		};

		serial0: serial@b8000000 {
			compatible = "nuvoton,wpcm450-uart";
			reg = <0xb8000000 0x20>;
			reg-shift = <2>;
			interrupts = <7 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clk24m>;
			pinctrl-names = "default";
			pinctrl-0 = <&bsp_pins>;
			status = "disabled";
		};

@@ -72,5 +90,371 @@ aic: interrupt-controller@b8002000 {
			interrupt-controller;
			#interrupt-cells = <2>;
		};

		pinctrl: pinctrl@b8003000 {
			compatible = "nuvoton,wpcm450-pinctrl";
			reg = <0xb8003000 0x1000>;
			#address-cells = <1>;
			#size-cells = <0>;

			gpio0: gpio@0 {
				reg = <0>;
				gpio-controller;
				#gpio-cells = <2>;
				interrupts = <2 IRQ_TYPE_LEVEL_HIGH>,
					     <3 IRQ_TYPE_LEVEL_HIGH>,
					     <4 IRQ_TYPE_LEVEL_HIGH>;
				interrupt-controller;
			};

			gpio1: gpio@1 {
				reg = <1>;
				gpio-controller;
				#gpio-cells = <2>;
				interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
				interrupt-controller;
			};

			gpio2: gpio@2 {
				reg = <2>;
				gpio-controller;
				#gpio-cells = <2>;
			};

			gpio3: gpio@3 {
				reg = <3>;
				gpio-controller;
				#gpio-cells = <2>;
			};

			gpio4: gpio@4 {
				reg = <4>;
				gpio-controller;
				#gpio-cells = <2>;
			};

			gpio5: gpio@5 {
				reg = <5>;
				gpio-controller;
				#gpio-cells = <2>;
			};

			gpio6: gpio@6 {
				reg = <6>;
				gpio-controller;
				#gpio-cells = <2>;
			};

			gpio7: gpio@7 {
				reg = <7>;
				gpio-controller;
				#gpio-cells = <2>;
			};

			smb3_pins: mux-smb3 {
				groups = "smb3";
				function = "smb3";
			};

			smb4_pins: mux-smb4 {
				groups = "smb4";
				function = "smb4";
			};

			smb5_pins: mux-smb5 {
				groups = "smb5";
				function = "smb5";
			};

			scs1_pins: mux-scs1 {
				groups = "scs1";
				function = "scs1";
			};

			scs2_pins: mux-scs2 {
				groups = "scs2";
				function = "scs2";
			};

			scs3_pins: mux-scs3 {
				groups = "scs3";
				function = "scs3";
			};

			smb0_pins: mux-smb0 {
				groups = "smb0";
				function = "smb0";
			};

			smb1_pins: mux-smb1 {
				groups = "smb1";
				function = "smb1";
			};

			smb2_pins: mux-smb2 {
				groups = "smb2";
				function = "smb2";
			};

			bsp_pins: mux-bsp {
				groups = "bsp";
				function = "bsp";
			};

			hsp1_pins: mux-hsp1 {
				groups = "hsp1";
				function = "hsp1";
			};

			hsp2_pins: mux-hsp2 {
				groups = "hsp2";
				function = "hsp2";
			};

			r1err_pins: mux-r1err {
				groups = "r1err";
				function = "r1err";
			};

			r1md_pins: mux-r1md {
				groups = "r1md";
				function = "r1md";
			};

			rmii2_pins: mux-rmii2 {
				groups = "rmii2";
				function = "rmii2";
			};

			r2err_pins: mux-r2err {
				groups = "r2err";
				function = "r2err";
			};

			r2md_pins: mux-r2md {
				groups = "r2md";
				function = "r2md";
			};

			kbcc_pins: mux-kbcc {
				groups = "kbcc";
				function = "kbcc";
			};

			dvo0_pins: mux-dvo0 {
				groups = "dvo";
				function = "dvo0";
			};

			dvo3_pins: mux-dvo3 {
				groups = "dvo";
				function = "dvo3";
			};

			clko_pins: mux-clko {
				groups = "clko";
				function = "clko";
			};

			smi_pins: mux-smi {
				groups = "smi";
				function = "smi";
			};

			uinc_pins: mux-uinc {
				groups = "uinc";
				function = "uinc";
			};

			gspi_pins: mux-gspi {
				groups = "gspi";
				function = "gspi";
			};

			mben_pins: mux-mben {
				groups = "mben";
				function = "mben";
			};

			xcs2_pins: mux-xcs2 {
				groups = "xcs2";
				function = "xcs2";
			};

			xcs1_pins: mux-xcs1 {
				groups = "xcs1";
				function = "xcs1";
			};

			sdio_pins: mux-sdio {
				groups = "sdio";
				function = "sdio";
			};

			sspi_pins: mux-sspi {
				groups = "sspi";
				function = "sspi";
			};

			fi0_pins: mux-fi0 {
				groups = "fi0";
				function = "fi0";
			};

			fi1_pins: mux-fi1 {
				groups = "fi1";
				function = "fi1";
			};

			fi2_pins: mux-fi2 {
				groups = "fi2";
				function = "fi2";
			};

			fi3_pins: mux-fi3 {
				groups = "fi3";
				function = "fi3";
			};

			fi4_pins: mux-fi4 {
				groups = "fi4";
				function = "fi4";
			};

			fi5_pins: mux-fi5 {
				groups = "fi5";
				function = "fi5";
			};

			fi6_pins: mux-fi6 {
				groups = "fi6";
				function = "fi6";
			};

			fi7_pins: mux-fi7 {
				groups = "fi7";
				function = "fi7";
			};

			fi8_pins: mux-fi8 {
				groups = "fi8";
				function = "fi8";
			};

			fi9_pins: mux-fi9 {
				groups = "fi9";
				function = "fi9";
			};

			fi10_pins: mux-fi10 {
				groups = "fi10";
				function = "fi10";
			};

			fi11_pins: mux-fi11 {
				groups = "fi11";
				function = "fi11";
			};

			fi12_pins: mux-fi12 {
				groups = "fi12";
				function = "fi12";
			};

			fi13_pins: mux-fi13 {
				groups = "fi13";
				function = "fi13";
			};

			fi14_pins: mux-fi14 {
				groups = "fi14";
				function = "fi14";
			};

			fi15_pins: mux-fi15 {
				groups = "fi15";
				function = "fi15";
			};

			pwm0_pins: mux-pwm0 {
				groups = "pwm0";
				function = "pwm0";
			};

			pwm1_pins: mux-pwm1 {
				groups = "pwm1";
				function = "pwm1";
			};

			pwm2_pins: mux-pwm2 {
				groups = "pwm2";
				function = "pwm2";
			};

			pwm3_pins: mux-pwm3 {
				groups = "pwm3";
				function = "pwm3";
			};

			pwm4_pins: mux-pwm4 {
				groups = "pwm4";
				function = "pwm4";
			};

			pwm5_pins: mux-pwm5 {
				groups = "pwm5";
				function = "pwm5";
			};

			pwm6_pins: mux-pwm6 {
				groups = "pwm6";
				function = "pwm6";
			};

			pwm7_pins: mux-pwm7 {
				groups = "pwm7";
				function = "pwm7";
			};

			hg0_pins: mux-hg0 {
				groups = "hg0";
				function = "hg0";
			};

			hg1_pins: mux-hg1 {
				groups = "hg1";
				function = "hg1";
			};

			hg2_pins: mux-hg2 {
				groups = "hg2";
				function = "hg2";
			};

			hg3_pins: mux-hg3 {
				groups = "hg3";
				function = "hg3";
			};

			hg4_pins: mux-hg4 {
				groups = "hg4";
				function = "hg4";
			};

			hg5_pins: mux-hg5 {
				groups = "hg5";
				function = "hg5";
			};

			hg6_pins: mux-hg6 {
				groups = "hg6";
				function = "hg6";
			};

			hg7_pins: mux-hg7 {
				groups = "hg7";
				function = "hg7";
			};
		};
	};
};