Linux-ARM-Kernel Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 07/11] hwmon: add support for the sl28cpld hardware monitoring controller
From: Michael Walle @ 2020-06-04 21:10 UTC (permalink / raw)
  To: linux-gpio, devicetree, linux-kernel, linux-hwmon, linux-pwm,
	linux-watchdog, linux-arm-kernel
  Cc: Marc Zyngier, Jean Delvare, Jason Cooper, Greg Kroah-Hartman,
	Shawn Guo, Linus Walleij, Andy Shevchenko, Li Yang,
	Bartosz Golaszewski, Michael Walle, Rob Herring, Thierry Reding,
	Mark Brown, Uwe Kleine-König, Thomas Gleixner,
	Wim Van Sebroeck, Lee Jones, Guenter Roeck
In-Reply-To: <20200604211039.12689-1-michael@walle.cc>

Add support for the hardware monitoring controller of the sl28cpld board
management controller. This driver is part of a multi-function device.

Signed-off-by: Michael Walle <michael@walle.cc>
Acked-by: Guenter Roeck <linux@roeck-us.net>
---
 Documentation/hwmon/index.rst    |   1 +
 Documentation/hwmon/sl28cpld.rst |  36 ++++++++
 drivers/hwmon/Kconfig            |  10 +++
 drivers/hwmon/Makefile           |   1 +
 drivers/hwmon/sl28cpld-hwmon.c   | 150 +++++++++++++++++++++++++++++++
 5 files changed, 198 insertions(+)
 create mode 100644 Documentation/hwmon/sl28cpld.rst
 create mode 100644 drivers/hwmon/sl28cpld-hwmon.c

diff --git a/Documentation/hwmon/index.rst b/Documentation/hwmon/index.rst
index 55ff4b7c5349..1f4beb7449c7 100644
--- a/Documentation/hwmon/index.rst
+++ b/Documentation/hwmon/index.rst
@@ -153,6 +153,7 @@ Hardware Monitoring Kernel Drivers
    sht3x
    shtc1
    sis5595
+   sl28cpld
    smm665
    smsc47b397
    smsc47m192
diff --git a/Documentation/hwmon/sl28cpld.rst b/Documentation/hwmon/sl28cpld.rst
new file mode 100644
index 000000000000..7ed65f78250c
--- /dev/null
+++ b/Documentation/hwmon/sl28cpld.rst
@@ -0,0 +1,36 @@
+.. SPDX-License-Identifier: GPL-2.0-only
+
+Kernel driver sl28cpld
+======================
+
+Supported chips:
+
+   * Kontron sl28cpld
+
+     Prefix: 'sl28cpld'
+
+     Datasheet: not available
+
+Authors: Michael Walle <michael@walle.cc>
+
+Description
+-----------
+
+The sl28cpld is a board management controller which also exposes a hardware
+monitoring controller. At the moment this controller supports a single fan
+supervisor. In the future there might be other flavours and additional
+hardware monitoring might be supported.
+
+The fan supervisor has a 7 bit counter register and a counter period of 1
+second. If the 7 bit counter overflows, the supervisor will automatically
+switch to x8 mode to support a wider input range at the loss of
+granularity.
+
+Sysfs entries
+-------------
+
+The following attributes are supported.
+
+======================= ========================================================
+fan1_input		Fan RPM. Assuming 2 pulses per revolution.
+======================= ========================================================
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
index 288ae9f63588..e1cab08e80ce 100644
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
@@ -1459,6 +1459,16 @@ config SENSORS_RASPBERRYPI_HWMON
 	  This driver can also be built as a module. If so, the module
 	  will be called raspberrypi-hwmon.
 
+config SENSORS_SL28CPLD
+	tristate "Kontron sl28cpl hardware monitoring driver"
+	depends on MFD_SL28CPLD
+	help
+	  If you say yes here you get support for the fan supervisor of the
+	  sl28cpld board management controller.
+
+	  This driver can also be built as a module.  If so, the module
+	  will be called sl28cpld-hwmon.
+
 config SENSORS_SHT15
 	tristate "Sensiron humidity and temperature sensors. SHT15 and compat."
 	depends on GPIOLIB || COMPILE_TEST
diff --git a/drivers/hwmon/Makefile b/drivers/hwmon/Makefile
index 3e32c21f5efe..03822f6bf970 100644
--- a/drivers/hwmon/Makefile
+++ b/drivers/hwmon/Makefile
@@ -158,6 +158,7 @@ obj-$(CONFIG_SENSORS_S3C)	+= s3c-hwmon.o
 obj-$(CONFIG_SENSORS_SCH56XX_COMMON)+= sch56xx-common.o
 obj-$(CONFIG_SENSORS_SCH5627)	+= sch5627.o
 obj-$(CONFIG_SENSORS_SCH5636)	+= sch5636.o
+obj-$(CONFIG_SENSORS_SL28CPLD)	+= sl28cpld-hwmon.o
 obj-$(CONFIG_SENSORS_SHT15)	+= sht15.o
 obj-$(CONFIG_SENSORS_SHT21)	+= sht21.o
 obj-$(CONFIG_SENSORS_SHT3x)	+= sht3x.o
diff --git a/drivers/hwmon/sl28cpld-hwmon.c b/drivers/hwmon/sl28cpld-hwmon.c
new file mode 100644
index 000000000000..de24964a7322
--- /dev/null
+++ b/drivers/hwmon/sl28cpld-hwmon.c
@@ -0,0 +1,150 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * sl28cpld hardware monitoring driver.
+ *
+ * Copyright 2019 Kontron Europe GmbH
+ */
+
+#include <linux/bitfield.h>
+#include <linux/hwmon.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/of_device.h>
+#include <linux/platform_device.h>
+#include <linux/regmap.h>
+
+#define FAN_INPUT		0x00
+#define   FAN_SCALE_X8		BIT(7)
+#define   FAN_VALUE_MASK	GENMASK(6, 0)
+
+struct sl28cpld_hwmon {
+	struct regmap *regmap;
+	u32 offset;
+};
+
+static umode_t sl28cpld_hwmon_is_visible(const void *data,
+					 enum hwmon_sensor_types type,
+					 u32 attr, int channel)
+{
+	return 0444;
+}
+
+static int sl28cpld_hwmon_read(struct device *dev,
+			       enum hwmon_sensor_types type, u32 attr,
+			       int channel, long *input)
+{
+	struct sl28cpld_hwmon *hwmon = dev_get_drvdata(dev);
+	unsigned int value;
+	int ret;
+
+	switch (attr) {
+	case hwmon_fan_input:
+		ret = regmap_read(hwmon->regmap, hwmon->offset + FAN_INPUT,
+				  &value);
+		if (ret)
+			return ret;
+		/*
+		 * The register has a 7 bit value and 1 bit which indicates the
+		 * scale. If the MSB is set, then the lower 7 bit has to be
+		 * multiplied by 8, to get the correct reading.
+		 */
+		if (value & FAN_SCALE_X8)
+			value = FIELD_GET(FAN_VALUE_MASK, value) << 3;
+
+		/*
+		 * The counter period is 1000ms and the sysfs specification
+		 * says we should asssume 2 pulses per revolution.
+		 */
+		value *= 60 / 2;
+
+		break;
+	default:
+		return -EOPNOTSUPP;
+	}
+
+	*input = value;
+	return 0;
+}
+
+static const u32 sl28cpld_hwmon_fan_config[] = {
+	HWMON_F_INPUT,
+	0
+};
+
+static const struct hwmon_channel_info sl28cpld_hwmon_fan = {
+	.type = hwmon_fan,
+	.config = sl28cpld_hwmon_fan_config,
+};
+
+static const struct hwmon_channel_info *sl28cpld_hwmon_info[] = {
+	&sl28cpld_hwmon_fan,
+	NULL
+};
+
+static const struct hwmon_ops sl28cpld_hwmon_ops = {
+	.is_visible = sl28cpld_hwmon_is_visible,
+	.read = sl28cpld_hwmon_read,
+};
+
+static const struct hwmon_chip_info sl28cpld_hwmon_chip_info = {
+	.ops = &sl28cpld_hwmon_ops,
+	.info = sl28cpld_hwmon_info,
+};
+
+static int sl28cpld_hwmon_probe(struct platform_device *pdev)
+{
+	struct sl28cpld_hwmon *hwmon;
+	struct device *hwmon_dev;
+	int ret;
+
+	if (!pdev->dev.parent)
+		return -ENODEV;
+
+	hwmon = devm_kzalloc(&pdev->dev, sizeof(*hwmon), GFP_KERNEL);
+	if (!hwmon)
+		return -ENOMEM;
+
+	hwmon->regmap = dev_get_regmap(pdev->dev.parent, NULL);
+	if (!hwmon->regmap)
+		return -ENODEV;
+
+	ret = device_property_read_u32(&pdev->dev, "reg", &hwmon->offset);
+	if (ret)
+		return -EINVAL;
+
+	hwmon_dev = devm_hwmon_device_register_with_info(&pdev->dev,
+				"sl28cpld_hwmon", hwmon,
+				&sl28cpld_hwmon_chip_info, NULL);
+	if (IS_ERR(hwmon_dev)) {
+		dev_err(&pdev->dev, "failed to register as hwmon device");
+		return PTR_ERR(hwmon_dev);
+	}
+
+	return 0;
+}
+
+static const struct of_device_id sl28cpld_hwmon_of_match[] = {
+	{ .compatible = "kontron,sl28cpld-fan" },
+	{},
+};
+MODULE_DEVICE_TABLE(of, sl28cpld_hwmon_of_match);
+
+static const struct platform_device_id sl28cpld_hwmon_id_table[] = {
+	{ "sl28cpld-fan" },
+	{}
+};
+MODULE_DEVICE_TABLE(platform, sl28cpld_hwmon_id_table);
+
+static struct platform_driver sl28cpld_hwmon_driver = {
+	.probe = sl28cpld_hwmon_probe,
+	.id_table = sl28cpld_hwmon_id_table,
+	.driver = {
+		.name = KBUILD_MODNAME,
+		.of_match_table = sl28cpld_hwmon_of_match,
+	},
+};
+module_platform_driver(sl28cpld_hwmon_driver);
+
+MODULE_DESCRIPTION("sl28cpld Hardware Monitoring Driver");
+MODULE_AUTHOR("Michael Walle <michael@walle.cc>");
+MODULE_LICENSE("GPL");
-- 
2.20.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related

* [PATCH v4 11/11] arm64: dts: freescale: sl28: enable fan support
From: Michael Walle @ 2020-06-04 21:10 UTC (permalink / raw)
  To: linux-gpio, devicetree, linux-kernel, linux-hwmon, linux-pwm,
	linux-watchdog, linux-arm-kernel
  Cc: Marc Zyngier, Jean Delvare, Jason Cooper, Greg Kroah-Hartman,
	Shawn Guo, Linus Walleij, Andy Shevchenko, Li Yang,
	Bartosz Golaszewski, Michael Walle, Rob Herring, Thierry Reding,
	Mark Brown, Uwe Kleine-König, Thomas Gleixner,
	Wim Van Sebroeck, Lee Jones, Guenter Roeck
In-Reply-To: <20200604211039.12689-1-michael@walle.cc>

Add a pwm-fan mapped to the PWM channel 0 which is connected to the
fan connector of the carrier.

Signed-off-by: Michael Walle <michael@walle.cc>
---
 .../dts/freescale/fsl-ls1028a-kontron-sl28-var3-ads2.dts | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-sl28-var3-ads2.dts b/arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-sl28-var3-ads2.dts
index 0973a6a45217..c45d7b40e374 100644
--- a/arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-sl28-var3-ads2.dts
+++ b/arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-sl28-var3-ads2.dts
@@ -15,6 +15,15 @@
 	compatible = "kontron,sl28-var3-ads2", "kontron,sl28-var3",
 		     "kontron,sl28", "fsl,ls1028a";
 
+	pwm-fan {
+		compatible = "pwm-fan";
+		cooling-min-state = <0>;
+		cooling-max-state = <3>;
+		#cooling-cells = <2>;
+		pwms = <&sl28cpld_pwm0 0 4000000>;
+		cooling-levels = <1 128 192 255>;
+	};
+
 	sound {
 		#address-cells = <1>;
 		#size-cells = <0>;
-- 
2.20.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related

* [PATCH v4 10/11] arm64: dts: freescale: sl28: enable LED support
From: Michael Walle @ 2020-06-04 21:10 UTC (permalink / raw)
  To: linux-gpio, devicetree, linux-kernel, linux-hwmon, linux-pwm,
	linux-watchdog, linux-arm-kernel
  Cc: Marc Zyngier, Jean Delvare, Jason Cooper, Greg Kroah-Hartman,
	Shawn Guo, Linus Walleij, Andy Shevchenko, Li Yang,
	Bartosz Golaszewski, Michael Walle, Rob Herring, Thierry Reding,
	Mark Brown, Uwe Kleine-König, Thomas Gleixner,
	Wim Van Sebroeck, Lee Jones, Guenter Roeck
In-Reply-To: <20200604211039.12689-1-michael@walle.cc>

Now that we have support for GPIO lines of the SMARC connector, enable
LED support on the KBox A-230-LS. There are two LEDs without fixed
functions, one is yellow and one is green. Unfortunately, it is just one
multi-color LED, thus while it is possible to enable both at the same
time it is hard to tell the difference between "yellow only" and "yellow
and green".

Signed-off-by: Michael Walle <michael@walle.cc>
---
 .../fsl-ls1028a-kontron-kbox-a-230-ls.dts          | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-kbox-a-230-ls.dts b/arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-kbox-a-230-ls.dts
index 4b4cc6a1573d..49cf4fe05c80 100644
--- a/arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-kbox-a-230-ls.dts
+++ b/arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-kbox-a-230-ls.dts
@@ -16,6 +16,20 @@
 	model = "Kontron KBox A-230-LS";
 	compatible = "kontron,kbox-a-230-ls", "kontron,sl28-var4",
 		     "kontron,sl28", "fsl,ls1028a";
+
+	leds {
+		compatible = "gpio-leds";
+
+		user_yellow {
+			label = "s1914:yellow:user";
+			gpios = <&sl28cpld_gpio0 0 0>;
+		};
+
+		user_green {
+			label = "s1914:green:user";
+			gpios = <&sl28cpld_gpio1 3 0>;
+		};
+	};
 };
 
 &enetc_mdio_pf3 {
-- 
2.20.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related

* [PATCH v4 08/11] arm64: dts: freescale: sl28: enable sl28cpld
From: Michael Walle @ 2020-06-04 21:10 UTC (permalink / raw)
  To: linux-gpio, devicetree, linux-kernel, linux-hwmon, linux-pwm,
	linux-watchdog, linux-arm-kernel
  Cc: Marc Zyngier, Jean Delvare, Jason Cooper, Greg Kroah-Hartman,
	Shawn Guo, Linus Walleij, Andy Shevchenko, Li Yang,
	Bartosz Golaszewski, Michael Walle, Rob Herring, Thierry Reding,
	Mark Brown, Uwe Kleine-König, Thomas Gleixner,
	Wim Van Sebroeck, Lee Jones, Guenter Roeck
In-Reply-To: <20200604211039.12689-1-michael@walle.cc>

Add the board management controller node.

Signed-off-by: Michael Walle <michael@walle.cc>
---
 .../freescale/fsl-ls1028a-kontron-sl28.dts    | 102 ++++++++++++++++++
 1 file changed, 102 insertions(+)

diff --git a/arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-sl28.dts b/arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-sl28.dts
index 360b3a168c10..8712fe82727b 100644
--- a/arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-sl28.dts
+++ b/arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-sl28.dts
@@ -8,6 +8,7 @@
 
 /dts-v1/;
 #include "fsl-ls1028a.dtsi"
+#include <dt-bindings/interrupt-controller/irq.h>
 
 / {
 	model = "Kontron SMARC-sAL28";
@@ -170,6 +171,107 @@
 		reg = <0x32>;
 	};
 
+	sl28cpld@4a {
+		#address-cells = <1>;
+		#size-cells = <0>;
+		compatible = "kontron,sl28cpld-r1";
+		reg = <0x4a>;
+
+		watchdog@4 {
+			compatible = "kontron,sl28cpld-wdt";
+			reg = <0x4>;
+			kontron,assert-wdt-timeout-pin;
+		};
+
+		hwmon@b {
+			compatible = "kontron,sl28cpld-fan";
+			reg = <0xb>;
+		};
+
+		sl28cpld_pwm0: pwm@c {
+			#pwm-cells = <2>;
+			compatible = "kontron,sl28cpld-pwm";
+			reg = <0xc>;
+		};
+
+		sl28cpld_pwm1: pwm@e {
+			#pwm-cells = <2>;
+			compatible = "kontron,sl28cpld-pwm";
+			reg = <0xe>;
+		};
+
+		sl28cpld_gpio0: gpio@10 {
+			compatible = "kontron,sl28cpld-gpio";
+			reg = <0x10>;
+			interrupts-extended = <&gpio2 6
+					       IRQ_TYPE_EDGE_FALLING>;
+
+			gpio-controller;
+			#gpio-cells = <2>;
+			gpio-line-names =
+				"GPIO0_CAM0_PWR_N", "GPIO1_CAM1_PWR_N",
+				"GPIO2_CAM0_RST_N", "GPIO3_CAM1_RST_N",
+				"GPIO4_HDA_RST_N", "GPIO5_PWM_OUT",
+				"GPIO6_TACHIN", "GPIO7";
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+		};
+
+		sl28cpld_gpio1: gpio@15 {
+			compatible = "kontron,sl28cpld-gpio";
+			reg = <0x15>;
+			interrupts-extended = <&gpio2 6
+					       IRQ_TYPE_EDGE_FALLING>;
+
+			gpio-controller;
+			#gpio-cells = <2>;
+			gpio-line-names =
+				"GPIO8", "GPIO9", "GPIO10", "GPIO11",
+				"", "", "", "";
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+		};
+
+		sl28cpld_gpio2: gpio@1a {
+			compatible = "kontron,sl28cpld-gpo";
+			reg = <0x1a>;
+
+			gpio-controller;
+			#gpio-cells = <2>;
+			gpio-line-names =
+				"LCD0 voltage enable",
+				"LCD0 backlight enable",
+				"eMMC reset", "LVDS bridge reset",
+				"LVDS bridge power-down",
+				"SDIO power enable",
+				"", "";
+		};
+
+		sl28cpld_gpio3: gpio@1b {
+			compatible = "kontron,sl28cpld-gpi";
+			reg = <0x1b>;
+
+			gpio-controller;
+			#gpio-cells = <2>;
+			gpio-line-names =
+				"Power button", "Force recovery", "Sleep",
+				"Battery low", "Lid state", "Charging",
+				"Charger present", "";
+		};
+
+		sl28cpld_intc: interrupt-controller@1c {
+			compatible = "kontron,sl28cpld-intc";
+			reg = <0x1c>;
+			interrupts-extended = <&gpio2 6
+					       IRQ_TYPE_EDGE_FALLING>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+		};
+	};
+
 	eeprom@50 {
 		compatible = "atmel,24c32";
 		reg = <0x50>;
-- 
2.20.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related

* [PATCH v4 05/11] pwm: add support for sl28cpld PWM controller
From: Michael Walle @ 2020-06-04 21:10 UTC (permalink / raw)
  To: linux-gpio, devicetree, linux-kernel, linux-hwmon, linux-pwm,
	linux-watchdog, linux-arm-kernel
  Cc: Marc Zyngier, Jean Delvare, Jason Cooper, Greg Kroah-Hartman,
	Shawn Guo, Linus Walleij, Andy Shevchenko, Li Yang,
	Bartosz Golaszewski, Michael Walle, Rob Herring, Thierry Reding,
	Mark Brown, Uwe Kleine-König, Thomas Gleixner,
	Wim Van Sebroeck, Lee Jones, Guenter Roeck
In-Reply-To: <20200604211039.12689-1-michael@walle.cc>

Add support for the PWM controller of the sl28cpld board management
controller. This is part of a multi-function device driver.

The controller has one PWM channel and can just generate four distinct
frequencies.

Signed-off-by: Michael Walle <michael@walle.cc>
---
 drivers/pwm/Kconfig        |  10 ++
 drivers/pwm/Makefile       |   1 +
 drivers/pwm/pwm-sl28cpld.c | 201 +++++++++++++++++++++++++++++++++++++
 3 files changed, 212 insertions(+)
 create mode 100644 drivers/pwm/pwm-sl28cpld.c

diff --git a/drivers/pwm/Kconfig b/drivers/pwm/Kconfig
index cb8d739067d2..a39371c11ff6 100644
--- a/drivers/pwm/Kconfig
+++ b/drivers/pwm/Kconfig
@@ -437,6 +437,16 @@ config PWM_SIFIVE
 	  To compile this driver as a module, choose M here: the module
 	  will be called pwm-sifive.
 
+config PWM_SL28CPLD
+	tristate "Kontron sl28 PWM support"
+	depends on MFD_SL28CPLD
+	help
+	  Generic PWM framework driver for board management controller
+	  found on the Kontron sl28 CPLD.
+
+	  To compile this driver as a module, choose M here: the module
+	  will be called pwm-sl28cpld.
+
 config PWM_SPEAR
 	tristate "STMicroelectronics SPEAr PWM support"
 	depends on PLAT_SPEAR || COMPILE_TEST
diff --git a/drivers/pwm/Makefile b/drivers/pwm/Makefile
index a59c710e98c7..c479623724e8 100644
--- a/drivers/pwm/Makefile
+++ b/drivers/pwm/Makefile
@@ -41,6 +41,7 @@ obj-$(CONFIG_PWM_RENESAS_TPU)	+= pwm-renesas-tpu.o
 obj-$(CONFIG_PWM_ROCKCHIP)	+= pwm-rockchip.o
 obj-$(CONFIG_PWM_SAMSUNG)	+= pwm-samsung.o
 obj-$(CONFIG_PWM_SIFIVE)	+= pwm-sifive.o
+obj-$(CONFIG_PWM_SL28CPLD)	+= pwm-sl28cpld.o
 obj-$(CONFIG_PWM_SPEAR)		+= pwm-spear.o
 obj-$(CONFIG_PWM_SPRD)		+= pwm-sprd.o
 obj-$(CONFIG_PWM_STI)		+= pwm-sti.o
diff --git a/drivers/pwm/pwm-sl28cpld.c b/drivers/pwm/pwm-sl28cpld.c
new file mode 100644
index 000000000000..d82303f509f5
--- /dev/null
+++ b/drivers/pwm/pwm-sl28cpld.c
@@ -0,0 +1,201 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * sl28cpld PWM driver.
+ *
+ * Copyright 2019 Kontron Europe GmbH
+ */
+
+#include <linux/bitfield.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/of_device.h>
+#include <linux/platform_device.h>
+#include <linux/pwm.h>
+#include <linux/regmap.h>
+
+/*
+ * PWM timer block registers.
+ */
+#define PWM_CTRL		0x00
+#define   PWM_ENABLE		BIT(7)
+#define   PWM_MODE_250HZ	0
+#define   PWM_MODE_500HZ	1
+#define   PWM_MODE_1KHZ		2
+#define   PWM_MODE_2KHZ		3
+#define   PWM_MODE_MASK		GENMASK(1, 0)
+#define PWM_CYCLE		0x01
+#define   PWM_CYCLE_MAX		0x7f
+
+struct sl28cpld_pwm {
+	struct pwm_chip pwm_chip;
+	struct regmap *regmap;
+	u32 offset;
+};
+
+struct sl28cpld_pwm_periods {
+	u8 ctrl;
+	unsigned long duty_cycle;
+};
+
+struct sl28cpld_pwm_config {
+	unsigned long period_ns;
+	u8 max_duty_cycle;
+};
+
+static struct sl28cpld_pwm_config sl28cpld_pwm_config[] = {
+	[PWM_MODE_250HZ] = { .period_ns = 4000000, .max_duty_cycle = 0x80 },
+	[PWM_MODE_500HZ] = { .period_ns = 2000000, .max_duty_cycle = 0x40 },
+	[PWM_MODE_1KHZ] = { .period_ns = 1000000, .max_duty_cycle = 0x20 },
+	[PWM_MODE_2KHZ] = { .period_ns =  500000, .max_duty_cycle = 0x10 },
+};
+
+static inline struct sl28cpld_pwm *to_sl28cpld_pwm(struct pwm_chip *chip)
+{
+	return container_of(chip, struct sl28cpld_pwm, pwm_chip);
+}
+
+static void sl28cpld_pwm_get_state(struct pwm_chip *chip,
+				   struct pwm_device *pwm,
+				   struct pwm_state *state)
+{
+	struct sl28cpld_pwm *spc = to_sl28cpld_pwm(chip);
+	static struct sl28cpld_pwm_config *config;
+	unsigned int reg;
+	unsigned long cycle;
+	unsigned int mode;
+
+	regmap_read(spc->regmap, spc->offset + PWM_CTRL, &reg);
+
+	state->enabled = reg & PWM_ENABLE;
+
+	mode = FIELD_GET(PWM_MODE_MASK, reg);
+	config = &sl28cpld_pwm_config[mode];
+	state->period = config->period_ns;
+
+	regmap_read(spc->regmap, spc->offset + PWM_CYCLE, &reg);
+	cycle = reg * config->period_ns;
+	state->duty_cycle = DIV_ROUND_CLOSEST_ULL(cycle,
+						  config->max_duty_cycle);
+}
+
+static int sl28cpld_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
+			      const struct pwm_state *state)
+{
+	struct sl28cpld_pwm *spc = to_sl28cpld_pwm(chip);
+	struct sl28cpld_pwm_config *config;
+	unsigned long long cycle;
+	int ret;
+	int mode;
+	u8 ctrl;
+
+	/* update config, first search best matching period */
+	for (mode = 0; mode < ARRAY_SIZE(sl28cpld_pwm_config); mode++) {
+		config = &sl28cpld_pwm_config[mode];
+		if (state->period == config->period_ns)
+			break;
+	}
+
+	if (mode == ARRAY_SIZE(sl28cpld_pwm_config))
+		return -EINVAL;
+
+	ctrl = FIELD_PREP(PWM_MODE_MASK, mode);
+	if (state->enabled)
+		ctrl |= PWM_ENABLE;
+
+	cycle = state->duty_cycle * config->max_duty_cycle;
+	do_div(cycle, state->period);
+
+	/*
+	 * The hardware doesn't allow to set max_duty_cycle if the
+	 * 250Hz mode is enabled. But since this is "all-high" output
+	 * just use the 500Hz mode with the duty cycle to max value.
+	 */
+	if (cycle == config->max_duty_cycle) {
+		ctrl &= ~PWM_MODE_MASK;
+		ctrl |= FIELD_PREP(PWM_MODE_MASK, PWM_MODE_500HZ);
+		cycle = PWM_CYCLE_MAX;
+	}
+
+	ret = regmap_write(spc->regmap, spc->offset + PWM_CTRL, ctrl);
+	if (ret)
+		return ret;
+
+	return regmap_write(spc->regmap, spc->offset + PWM_CYCLE, (u8)cycle);
+}
+
+static const struct pwm_ops sl28cpld_pwm_ops = {
+	.apply = sl28cpld_pwm_apply,
+	.get_state = sl28cpld_pwm_get_state,
+	.owner = THIS_MODULE,
+};
+
+static int sl28cpld_pwm_probe(struct platform_device *pdev)
+{
+	struct sl28cpld_pwm *pwm;
+	struct pwm_chip *chip;
+	int ret;
+
+	if (!pdev->dev.parent)
+		return -ENODEV;
+
+	pwm = devm_kzalloc(&pdev->dev, sizeof(*pwm), GFP_KERNEL);
+	if (!pwm)
+		return -ENOMEM;
+
+	pwm->regmap = dev_get_regmap(pdev->dev.parent, NULL);
+	if (!pwm->regmap)
+		return -ENODEV;
+
+	ret = device_property_read_u32(&pdev->dev, "reg", &pwm->offset);
+	if (ret)
+		return -EINVAL;
+
+	/* initialize struct pwm_chip */
+	chip = &pwm->pwm_chip;
+	chip->dev = &pdev->dev;
+	chip->ops = &sl28cpld_pwm_ops;
+	chip->base = -1;
+	chip->npwm = 1;
+
+	ret = pwmchip_add(&pwm->pwm_chip);
+	if (ret < 0)
+		return ret;
+
+	platform_set_drvdata(pdev, pwm);
+
+	return 0;
+}
+
+static int sl28cpld_pwm_remove(struct platform_device *pdev)
+{
+	struct sl28cpld_pwm *pwm = platform_get_drvdata(pdev);
+
+	return pwmchip_remove(&pwm->pwm_chip);
+}
+
+static const struct of_device_id sl28cpld_pwm_of_match[] = {
+	{ .compatible = "kontron,sl28cpld-pwm" },
+	{},
+};
+MODULE_DEVICE_TABLE(of, sl28cpld_pwm_of_match);
+
+static const struct platform_device_id sl28cpld_pwm_id_table[] = {
+	{"sl28cpld-pwm"},
+	{},
+};
+MODULE_DEVICE_TABLE(platform, sl28cpld_pwm_id_table);
+
+static struct platform_driver sl28cpld_pwm_driver = {
+	.probe = sl28cpld_pwm_probe,
+	.remove	= sl28cpld_pwm_remove,
+	.id_table = sl28cpld_pwm_id_table,
+	.driver = {
+		.name = KBUILD_MODNAME,
+		.of_match_table = sl28cpld_pwm_of_match,
+	},
+};
+module_platform_driver(sl28cpld_pwm_driver);
+
+MODULE_DESCRIPTION("sl28cpld PWM Driver");
+MODULE_AUTHOR("Michael Walle <michael@walle.cc>");
+MODULE_LICENSE("GPL");
-- 
2.20.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related

* [PATCH v4 06/11] gpio: add support for the sl28cpld GPIO controller
From: Michael Walle @ 2020-06-04 21:10 UTC (permalink / raw)
  To: linux-gpio, devicetree, linux-kernel, linux-hwmon, linux-pwm,
	linux-watchdog, linux-arm-kernel
  Cc: Marc Zyngier, Jean Delvare, Jason Cooper, Greg Kroah-Hartman,
	Shawn Guo, Linus Walleij, Andy Shevchenko, Li Yang,
	Bartosz Golaszewski, Michael Walle, Rob Herring, Thierry Reding,
	Mark Brown, Uwe Kleine-König, Thomas Gleixner,
	Wim Van Sebroeck, Lee Jones, Guenter Roeck
In-Reply-To: <20200604211039.12689-1-michael@walle.cc>

Add support for the GPIO controller of the sl28 board management
controller. This driver is part of a multi-function device.

A controller has 8 lines. There are three different flavors:
full-featured GPIO with interrupt support, input-only and output-only.

Signed-off-by: Michael Walle <michael@walle.cc>
---
 drivers/gpio/Kconfig         |  11 +++
 drivers/gpio/Makefile        |   1 +
 drivers/gpio/gpio-sl28cpld.c | 180 +++++++++++++++++++++++++++++++++++
 3 files changed, 192 insertions(+)
 create mode 100644 drivers/gpio/gpio-sl28cpld.c

diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig
index bcacd9c74aa8..a325d2d619a8 100644
--- a/drivers/gpio/Kconfig
+++ b/drivers/gpio/Kconfig
@@ -1215,6 +1215,17 @@ config GPIO_RC5T583
 	  This driver provides the support for driving/reading the gpio pins
 	  of RC5T583 device through standard gpio library.
 
+config GPIO_SL28CPLD
+	tristate "Kontron sl28 GPIO"
+	depends on MFD_SL28CPLD
+	select GPIO_REGMAP
+	select GPIOLIB_IRQCHIP
+	help
+	  This enables support for the GPIOs found on the Kontron sl28 CPLD.
+
+	  This driver can also be built as a module. If so, the module will be
+	  called gpio-sl28cpld.
+
 config GPIO_STMPE
 	bool "STMPE GPIOs"
 	depends on MFD_STMPE
diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile
index 1e4894e0bf0f..152127a9b339 100644
--- a/drivers/gpio/Makefile
+++ b/drivers/gpio/Makefile
@@ -130,6 +130,7 @@ obj-$(CONFIG_GPIO_SCH311X)		+= gpio-sch311x.o
 obj-$(CONFIG_GPIO_SCH)			+= gpio-sch.o
 obj-$(CONFIG_GPIO_SIFIVE)		+= gpio-sifive.o
 obj-$(CONFIG_GPIO_SIOX)			+= gpio-siox.o
+obj-$(CONFIG_GPIO_SL28CPLD)		+= gpio-sl28cpld.o
 obj-$(CONFIG_GPIO_SODAVILLE)		+= gpio-sodaville.o
 obj-$(CONFIG_GPIO_SPEAR_SPICS)		+= gpio-spear-spics.o
 obj-$(CONFIG_GPIO_SPRD)			+= gpio-sprd.o
diff --git a/drivers/gpio/gpio-sl28cpld.c b/drivers/gpio/gpio-sl28cpld.c
new file mode 100644
index 000000000000..800e218ee624
--- /dev/null
+++ b/drivers/gpio/gpio-sl28cpld.c
@@ -0,0 +1,180 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * sl28cpld GPIO driver.
+ *
+ * Copyright 2019 Michael Walle <michael@walle.cc>
+ */
+
+#include <linux/device.h>
+#include <linux/gpio/regmap.h>
+#include <linux/gpio/driver.h>
+#include <linux/interrupt.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/of_device.h>
+#include <linux/platform_device.h>
+#include <linux/regmap.h>
+
+/* GPIO flavor */
+#define GPIO_REG_DIR	0x00
+#define GPIO_REG_OUT	0x01
+#define GPIO_REG_IN	0x02
+#define GPIO_REG_IE	0x03
+#define GPIO_REG_IP	0x04
+
+/* input-only flavor */
+#define GPI_REG_IN	0x00
+
+/* output-only flavor */
+#define GPO_REG_OUT	0x00
+
+enum sl28cpld_gpio_type {
+	SL28CPLD_GPIO = 1,
+	SL28CPLD_GPI,
+	SL28CPLD_GPO,
+};
+
+struct sl28cpld_gpio {
+	struct regmap_irq_chip irq_chip;
+	struct regmap_irq_chip_data *irq_data;
+};
+
+static const struct regmap_irq sl28cpld_gpio_irqs[] = {
+	REGMAP_IRQ_REG_LINE(0, 8),
+	REGMAP_IRQ_REG_LINE(1, 8),
+	REGMAP_IRQ_REG_LINE(2, 8),
+	REGMAP_IRQ_REG_LINE(3, 8),
+	REGMAP_IRQ_REG_LINE(4, 8),
+	REGMAP_IRQ_REG_LINE(5, 8),
+	REGMAP_IRQ_REG_LINE(6, 8),
+	REGMAP_IRQ_REG_LINE(7, 8),
+};
+
+static int sl28cpld_gpio_irq_init(struct device *dev,
+				  struct sl28cpld_gpio *gpio,
+				  struct regmap *regmap, unsigned int base,
+				  int irq)
+{
+	struct regmap_irq_chip *irq_chip = &gpio->irq_chip;
+
+	irq_chip->name = "sl28cpld-gpio-irq",
+	irq_chip->irqs = sl28cpld_gpio_irqs;
+	irq_chip->num_irqs = ARRAY_SIZE(sl28cpld_gpio_irqs);
+	irq_chip->num_regs = 1;
+	irq_chip->status_base = base + GPIO_REG_IP;
+	irq_chip->mask_base = base + GPIO_REG_IE;
+	irq_chip->mask_invert = true,
+	irq_chip->ack_base = base + GPIO_REG_IP;
+
+	return devm_regmap_add_irq_chip_np(dev, dev_of_node(dev), regmap,
+					   irq, IRQF_SHARED | IRQF_ONESHOT, 0,
+					   irq_chip, &gpio->irq_data);
+}
+
+static int sl28cpld_gpio_probe(struct platform_device *pdev)
+{
+	const struct platform_device_id *dev_id;
+	struct gpio_regmap_config config = {0};
+	enum sl28cpld_gpio_type type;
+	struct sl28cpld_gpio *gpio;
+	bool irq_support = false;
+	struct regmap *regmap;
+	int irq, ret;
+	u32 base;
+
+	if (!pdev->dev.parent)
+		return -ENODEV;
+
+	dev_id = platform_get_device_id(pdev);
+	if (dev_id)
+		type = dev_id->driver_data;
+	else
+		type = (uintptr_t)of_device_get_match_data(&pdev->dev);
+	if (!type)
+		return -ENODEV;
+
+	gpio = devm_kzalloc(&pdev->dev, sizeof(*gpio), GFP_KERNEL);
+	if (!gpio)
+		return -ENOMEM;
+
+	ret = device_property_read_u32(&pdev->dev, "reg", &base);
+	if (ret)
+		return -EINVAL;
+
+	regmap = dev_get_regmap(pdev->dev.parent, NULL);
+	if (!regmap)
+		return -ENODEV;
+
+	config.regmap = regmap;
+	config.parent = &pdev->dev;
+	config.ngpio = 8;
+
+	switch (type) {
+	case SL28CPLD_GPIO:
+		config.reg_dat_base = base + GPIO_REG_IN;
+		config.reg_set_base = base + GPIO_REG_OUT;
+		/* reg_dir_out_base might be zero */
+		config.reg_dir_out_base = GPIO_REGMAP_ADDR(base +
+							   GPIO_REG_DIR);
+		irq_support = true;
+		break;
+	case SL28CPLD_GPO:
+		config.reg_set_base = base + GPO_REG_OUT;
+		break;
+	case SL28CPLD_GPI:
+		config.reg_dat_base = base + GPI_REG_IN;
+		break;
+	default:
+		dev_err(&pdev->dev, "unknown type %d\n", type);
+		return -ENODEV;
+	}
+
+	if (irq_support &&
+	    device_property_read_bool(&pdev->dev, "interrupt-controller")) {
+		irq = platform_get_irq(pdev, 0);
+		if (irq < 0)
+			return irq;
+
+		ret = sl28cpld_gpio_irq_init(&pdev->dev, gpio, regmap,
+					     base, irq);
+		if (ret)
+			return ret;
+
+		config.irq_domain = regmap_irq_get_domain(gpio->irq_data);
+	}
+
+	return PTR_ERR_OR_ZERO(devm_gpio_regmap_register(&pdev->dev, &config));
+}
+
+static const struct of_device_id sl28cpld_gpio_of_match[] = {
+	{ .compatible = "kontron,sl28cpld-gpio",
+	  .data = (void *)SL28CPLD_GPIO },
+	{ .compatible = "kontron,sl28cpld-gpi",
+	  .data = (void *)SL28CPLD_GPI },
+	{ .compatible = "kontron,sl28cpld-gpo",
+	  .data = (void *)SL28CPLD_GPO },
+	{},
+};
+MODULE_DEVICE_TABLE(of, sl28cpld_gpio_of_match);
+
+static const struct platform_device_id sl28cpld_gpio_id_table[] = {
+	{ "sl28cpld-gpio", SL28CPLD_GPIO },
+	{ "sl28cpld-gpi", SL28CPLD_GPI },
+	{ "sl28cpld-gpo", SL28CPLD_GPO },
+	{}
+};
+MODULE_DEVICE_TABLE(platform, sl28cpld_gpio_id_table);
+
+static struct platform_driver sl28cpld_gpio_driver = {
+	.probe = sl28cpld_gpio_probe,
+	.id_table = sl28cpld_gpio_id_table,
+	.driver = {
+		.name = KBUILD_MODNAME,
+		.of_match_table = sl28cpld_gpio_of_match,
+	},
+};
+module_platform_driver(sl28cpld_gpio_driver);
+
+MODULE_DESCRIPTION("sl28cpld GPIO Driver");
+MODULE_AUTHOR("Michael Walle <michael@walle.cc>");
+MODULE_LICENSE("GPL");
-- 
2.20.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related

* [PATCH v4 09/11] arm64: dts: freescale: sl28: map GPIOs to input events
From: Michael Walle @ 2020-06-04 21:10 UTC (permalink / raw)
  To: linux-gpio, devicetree, linux-kernel, linux-hwmon, linux-pwm,
	linux-watchdog, linux-arm-kernel
  Cc: Marc Zyngier, Jean Delvare, Jason Cooper, Greg Kroah-Hartman,
	Shawn Guo, Linus Walleij, Andy Shevchenko, Li Yang,
	Bartosz Golaszewski, Michael Walle, Rob Herring, Thierry Reding,
	Mark Brown, Uwe Kleine-König, Thomas Gleixner,
	Wim Van Sebroeck, Lee Jones, Guenter Roeck
In-Reply-To: <20200604211039.12689-1-michael@walle.cc>

Now that we have support for GPIO lines of the SMARC connector, map the
sleep, power and lid switch signals to the corresponding keys using the
gpio-keys and gpio-keys-polled drivers. The power and sleep signals have
dedicated interrupts, thus we use these ones. The lid switch is just
mapped to a GPIO input and needs polling.

Signed-off-by: Michael Walle <michael@walle.cc>
---
 .../freescale/fsl-ls1028a-kontron-sl28.dts    | 32 +++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-sl28.dts b/arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-sl28.dts
index 8712fe82727b..c4fd99efdbba 100644
--- a/arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-sl28.dts
+++ b/arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-sl28.dts
@@ -9,6 +9,8 @@
 /dts-v1/;
 #include "fsl-ls1028a.dtsi"
 #include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
 
 / {
 	model = "Kontron SMARC-sAL28";
@@ -23,6 +25,36 @@
 		spi1 = &dspi2;
 	};
 
+	buttons0 {
+		compatible = "gpio-keys";
+
+		power-button {
+			interrupts-extended = <&sl28cpld_intc
+					       4 IRQ_TYPE_EDGE_BOTH>;
+			linux,code = <KEY_POWER>;
+			label = "Power";
+		};
+
+		sleep-button {
+			interrupts-extended = <&sl28cpld_intc
+					       5 IRQ_TYPE_EDGE_BOTH>;
+			linux,code = <KEY_SLEEP>;
+			label = "Sleep";
+		};
+	};
+
+	buttons1 {
+		compatible = "gpio-keys-polled";
+		poll-interval = <200>;
+
+		lid-switch {
+			linux,input-type = <EV_SW>;
+			linux,code = <SW_LID>;
+			gpios = <&sl28cpld_gpio3 4 GPIO_ACTIVE_LOW>;
+			label = "Lid";
+		};
+	};
+
 	chosen {
 		stdout-path = "serial0:115200n8";
 	};
-- 
2.20.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related

* [PATCH v4 01/11] dt-bindings: mfd: Add bindings for sl28cpld
From: Michael Walle @ 2020-06-04 21:10 UTC (permalink / raw)
  To: linux-gpio, devicetree, linux-kernel, linux-hwmon, linux-pwm,
	linux-watchdog, linux-arm-kernel
  Cc: Marc Zyngier, Jean Delvare, Jason Cooper, Greg Kroah-Hartman,
	Shawn Guo, Linus Walleij, Andy Shevchenko, Li Yang,
	Bartosz Golaszewski, Michael Walle, Rob Herring, Thierry Reding,
	Mark Brown, Uwe Kleine-König, Thomas Gleixner,
	Wim Van Sebroeck, Lee Jones, Guenter Roeck
In-Reply-To: <20200604211039.12689-1-michael@walle.cc>

Add a device tree bindings for the board management controller found on
the Kontron SMARC-sAL28 board.

Signed-off-by: Michael Walle <michael@walle.cc>
---
 .../bindings/gpio/kontron,sl28cpld-gpio.yaml  |  54 +++++++
 .../hwmon/kontron,sl28cpld-hwmon.yaml         |  27 ++++
 .../kontron,sl28cpld-intc.yaml                |  54 +++++++
 .../bindings/mfd/kontron,sl28cpld.yaml        | 153 ++++++++++++++++++
 .../bindings/pwm/kontron,sl28cpld-pwm.yaml    |  35 ++++
 .../watchdog/kontron,sl28cpld-wdt.yaml        |  35 ++++
 6 files changed, 358 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/gpio/kontron,sl28cpld-gpio.yaml
 create mode 100644 Documentation/devicetree/bindings/hwmon/kontron,sl28cpld-hwmon.yaml
 create mode 100644 Documentation/devicetree/bindings/interrupt-controller/kontron,sl28cpld-intc.yaml
 create mode 100644 Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml
 create mode 100644 Documentation/devicetree/bindings/pwm/kontron,sl28cpld-pwm.yaml
 create mode 100644 Documentation/devicetree/bindings/watchdog/kontron,sl28cpld-wdt.yaml

diff --git a/Documentation/devicetree/bindings/gpio/kontron,sl28cpld-gpio.yaml b/Documentation/devicetree/bindings/gpio/kontron,sl28cpld-gpio.yaml
new file mode 100644
index 000000000000..9a63a158a796
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/kontron,sl28cpld-gpio.yaml
@@ -0,0 +1,54 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/gpio/kontron,sl28cpld-gpio.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: GPIO driver for the sl28cpld board management controller
+
+maintainers:
+  - Michael Walle <michael@walle.cc>
+
+description: |
+  This module is part of the sl28cpld multi-function device. For more
+  details see Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml.
+
+  There are three flavors of the GPIO controller, one full featured
+  input/output with interrupt support (kontron,sl28cpld-gpio), one
+  output-only (kontron,sl28-gpo) and one input-only (kontron,sl28-gpi).
+
+  Each controller supports 8 GPIO lines.
+
+properties:
+  compatible:
+    enum:
+      - kontron,sl28cpld-gpio
+      - kontron,sl28cpld-gpi
+      - kontron,sl28cpld-gpo
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  "#interrupt-cells":
+    const: 2
+
+  interrupt-controller: true
+
+  "#gpio-cells":
+    const: 2
+
+  gpio-controller: true
+
+  gpio-line-names:
+      minItems: 1
+      maxItems: 8
+
+required:
+  - compatible
+  - "#gpio-cells"
+  - gpio-controller
+
+additionalProperties: false
diff --git a/Documentation/devicetree/bindings/hwmon/kontron,sl28cpld-hwmon.yaml b/Documentation/devicetree/bindings/hwmon/kontron,sl28cpld-hwmon.yaml
new file mode 100644
index 000000000000..1cebd61c6c32
--- /dev/null
+++ b/Documentation/devicetree/bindings/hwmon/kontron,sl28cpld-hwmon.yaml
@@ -0,0 +1,27 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/hwmon/kontron,sl28cpld-hwmon.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Hardware monitoring driver for the sl28cpld board management controller
+
+maintainers:
+  - Michael Walle <michael@walle.cc>
+
+description: |
+  This module is part of the sl28cpld multi-function device. For more
+  details see Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml.
+
+properties:
+  compatible:
+    enum:
+      - kontron,sl28cpld-fan
+
+  reg:
+    maxItems: 1
+
+required:
+  - compatible
+
+additionalProperties: false
diff --git a/Documentation/devicetree/bindings/interrupt-controller/kontron,sl28cpld-intc.yaml b/Documentation/devicetree/bindings/interrupt-controller/kontron,sl28cpld-intc.yaml
new file mode 100644
index 000000000000..4c39e9ff9aea
--- /dev/null
+++ b/Documentation/devicetree/bindings/interrupt-controller/kontron,sl28cpld-intc.yaml
@@ -0,0 +1,54 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/kontron,sl28cpld-intc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Interrupt controller driver for the sl28cpld board management controller
+
+maintainers:
+  - Michael Walle <michael@walle.cc>
+
+description: |
+  This module is part of the sl28cpld multi-function device. For more
+  details see Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml.
+
+  The following interrupts are available. All types and levels are fixed
+  and handled by the board management controller.
+
+  ==== ============= ==================================
+   IRQ line/device   description
+  ==== ============= ==================================
+    0  RTC_INT#      Interrupt line from on-board RTC
+    1  SMB_ALERT#    Event on SMB_ALERT# line (P1)
+    2  ESPI_ALERT0#  Event on ESPI_ALERT0# line (S43)
+    3  ESPI_ALERT1#  Event on ESPI_ALERT1# line (S44)
+    4  PWR_BTN#      Event on PWR_BTN# line (P128)
+    5  SLEEP#        Event on SLEEP# line (S149)
+    6  watchdog      Interrupt of the internal watchdog
+    7  n/a           not used
+  ==== ============= ==================================
+
+properties:
+  compatible:
+    enum:
+      - kontron,sl28cpld-intc
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  "#interrupt-cells":
+    const: 2
+
+  interrupt-controller: true
+
+required:
+  - compatible
+  - interrupts
+  - "#interrupt-cells"
+  - interrupt-controller
+
+additionalProperties: false
diff --git a/Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml b/Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml
new file mode 100644
index 000000000000..1d13bb24afb8
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml
@@ -0,0 +1,153 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mfd/kontron,sl28cpld.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Kontron's sl28cpld board management controller
+
+maintainers:
+  - Michael Walle <michael@walle.cc>
+
+description: |
+  The board management controller may contain different IP blocks like
+  watchdog, fan monitoring, PWM controller, interrupt controller and a
+  GPIO controller.
+
+properties:
+  compatible:
+    const: kontron,sl28cpld-r1
+
+  reg:
+    description:
+      I2C device address.
+    maxItems: 1
+
+  "#address-cells":
+    const: 1
+
+  "#size-cells":
+    const: 0
+
+  "#interrupt-cells":
+    const: 2
+
+  interrupts:
+    maxItems: 1
+
+  interrupt-controller: true
+
+patternProperties:
+  "^gpio(@[0-9]+)?$":
+    $ref: ../gpio/kontron,sl28cpld-gpio.yaml
+
+  "^hwmon(@[0-9]+)?$":
+    $ref: ../hwmon/kontron,sl28cpld-hwmon.yaml
+
+  "^interrupt-controller(@[0-9]+)?$":
+    $ref: ../interrupt-controller/kontron,sl28cpld-intc.yaml
+
+  "^pwm(@[0-9]+)?$":
+    $ref: ../pwm/kontron,sl28cpld-pwm.yaml
+
+  "^watchdog(@[0-9]+)?$":
+    $ref: ../watchdog/kontron,sl28cpld-wdt.yaml
+
+required:
+  - "#address-cells"
+  - "#size-cells"
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        sl28cpld@4a {
+            #address-cells = <1>;
+            #size-cells = <0>;
+            compatible = "kontron,sl28cpld-r1";
+            reg = <0x4a>;
+
+            watchdog@4 {
+                compatible = "kontron,sl28cpld-wdt";
+                reg = <0x4>;
+                kontron,assert-wdt-timeout-pin;
+            };
+
+            hwmon@b {
+                compatible = "kontron,sl28cpld-fan";
+                reg = <0xb>;
+            };
+
+            pwm@c {
+                #pwm-cells = <2>;
+                compatible = "kontron,sl28cpld-pwm";
+                reg = <0xc>;
+            };
+
+            pwm@e {
+                #pwm-cells = <2>;
+                compatible = "kontron,sl28cpld-pwm";
+                reg = <0xe>;
+            };
+
+            gpio@10 {
+                compatible = "kontron,sl28cpld-gpio";
+                reg = <0x10>;
+                interrupts-extended = <&gpio2 6
+                               IRQ_TYPE_EDGE_FALLING>;
+
+                gpio-controller;
+                #gpio-cells = <2>;
+                gpio-line-names = "a", "b", "c";
+
+                interrupt-controller;
+                #interrupt-cells = <2>;
+            };
+
+            gpio@15 {
+                compatible = "kontron,sl28cpld-gpio";
+                reg = <0x15>;
+                interrupts-extended = <&gpio2 6
+                               IRQ_TYPE_EDGE_FALLING>;
+
+                gpio-controller;
+                #gpio-cells = <2>;
+
+                interrupt-controller;
+                #interrupt-cells = <2>;
+            };
+
+            gpio@1a {
+                compatible = "kontron,sl28cpld-gpo";
+                reg = <0x1a>;
+
+                gpio-controller;
+                #gpio-cells = <2>;
+            };
+
+            gpio@1b {
+                compatible = "kontron,sl28cpld-gpi";
+                reg = <0x1b>;
+
+                gpio-controller;
+                #gpio-cells = <2>;
+            };
+
+            interrupt-controller@1c {
+                compatible = "kontron,sl28cpld-intc";
+                reg = <0x1c>;
+                interrupts-extended = <&gpio2 6
+                               IRQ_TYPE_EDGE_FALLING>;
+
+                interrupt-controller;
+                #interrupt-cells = <2>;
+            };
+        };
+    };
diff --git a/Documentation/devicetree/bindings/pwm/kontron,sl28cpld-pwm.yaml b/Documentation/devicetree/bindings/pwm/kontron,sl28cpld-pwm.yaml
new file mode 100644
index 000000000000..02fe88c30233
--- /dev/null
+++ b/Documentation/devicetree/bindings/pwm/kontron,sl28cpld-pwm.yaml
@@ -0,0 +1,35 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pwm/kontron,sl28cpld-pwm.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: PWM driver for the sl28cpld board management controller
+
+maintainers:
+  - Michael Walle <michael@walle.cc>
+
+description: |
+  This module is part of the sl28cpld multi-function device. For more
+  details see Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml.
+
+  The controller supports one PWM channel and supports only four distinct
+  frequencies (250Hz, 500Hz, 1kHz, 2kHz).
+
+allOf:
+  - $ref: pwm.yaml#
+
+properties:
+  compatible:
+    const: kontron,sl28cpld-pwm
+
+  reg:
+    maxItems: 1
+
+  "#pwm-cells":
+    const: 2
+
+required:
+  - compatible
+
+additionalProperties: false
diff --git a/Documentation/devicetree/bindings/watchdog/kontron,sl28cpld-wdt.yaml b/Documentation/devicetree/bindings/watchdog/kontron,sl28cpld-wdt.yaml
new file mode 100644
index 000000000000..dd6559f2973a
--- /dev/null
+++ b/Documentation/devicetree/bindings/watchdog/kontron,sl28cpld-wdt.yaml
@@ -0,0 +1,35 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/watchdog/kontron,sl28cpld-wdt.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Watchdog driver for the sl28cpld board management controller
+
+maintainers:
+  - Michael Walle <michael@walle.cc>
+
+description: |
+  This module is part of the sl28cpld multi-function device. For more
+  details see Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml.
+
+allOf:
+  - $ref: watchdog.yaml#
+
+properties:
+  compatible:
+    const: kontron,sl28cpld-wdt
+
+  reg:
+    maxItems: 1
+
+  kontron,assert-wdt-timeout-pin:
+    description: The SMARC standard defines a WDT_TIME_OUT# pin. If this
+      property is set, this output will be pulsed when the watchdog bites
+      and the system resets.
+    type: boolean
+
+required:
+  - compatible
+
+additionalProperties: false
-- 
2.20.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related

* [PATCH v4 00/11] Add support for Kontron sl28cpld
From: Michael Walle @ 2020-06-04 21:10 UTC (permalink / raw)
  To: linux-gpio, devicetree, linux-kernel, linux-hwmon, linux-pwm,
	linux-watchdog, linux-arm-kernel
  Cc: Marc Zyngier, Jean Delvare, Jason Cooper, Greg Kroah-Hartman,
	Shawn Guo, Linus Walleij, Andy Shevchenko, Li Yang,
	Bartosz Golaszewski, Michael Walle, Rob Herring, Thierry Reding,
	Mark Brown, Uwe Kleine-König, Thomas Gleixner,
	Wim Van Sebroeck, Lee Jones, Guenter Roeck

The Kontron sl28cpld is a board management chip providing gpio, pwm, fan
monitoring and an interrupt controller. For now this controller is used on
the Kontron SMARC-sAL28 board. But because of its flexible nature, it
might also be used on other boards in the future. The individual blocks
(like gpio, pwm, etc) are kept intentionally small. The MFD core driver
then instantiates different (or multiple of the same) blocks. It also
provides the register layout so it might be updated in the future without a
device tree change; and support other boards with a different layout or
functionalities.

See also [1] for more information.

This is my first take of a MFD driver. I don't know whether the subsystem
maintainers should only be CCed on the patches which affect the subsystem
or on all patches for this series. I've chosen the latter so you can get a
more complete picture.

[1] https://lore.kernel.org/linux-devicetree/0e3e8204ab992d75aa07fc36af7e4ab2@walle.cc/

Changes since v3:
 - use of_platform_populate() to populate internal devices using the
   internal register offsets as unit-addresses
 - because we don't use mfd_cells anymore, we cannot use IORESOURCE_REG,
   but instead parse the reg property in each individual driver
 - dropped the following patches because they were already merged:
     gpiolib: Introduce gpiochip_irqchip_add_domain()
     gpio: add a reusable generic gpio_chip using regmap
 - dropped the following patches because they are no longer needed:
     include/linux/ioport.h: add helper to define REG resource constructs
     mfd: mfd-core: Don't overwrite the dma_mask of the child device
     mfd: mfd-core: match device tree node against reg property
 - rephrase commit messages, as suggested by Thomas Gleixner

Changes since v2:
As suggested by Guenter Roeck:
 - added sl28cpld.rst to index.rst
 - removed sl28cpld_wdt_status()
 - reverse christmas tree local variable ordering
 - assign device_property_read_bool() retval directly
 - introduce WDT_DEFAULT_TIMEOUT and use it if the hardware reports
   0 as timeout.
 - set WDOG_HW_RUNNING if applicable
 - remove platform_set_drvdata() leftover

As suggested by Bartosz Golaszewski:
 - don't export gpio_regmap_simple_xlate()
 - combine local variable declaration of the same type
 - drop the "struct gpio_regmap_addr", instead use -1 to force an address
   offset of zero
 - fix typo
 - use "struct gpio_regmap_config" pattern, keep "struct gpio_regmap"
   private. this also means we need a getter/setter for the driver_data
   element.

As suggested by Linus Walleij:
 - don't store irq_domain in gpio-regmap. drop to_irq() altogether for now.
   Instead there is now a new patch which lets us set the irqdomain of the
   gpiochip_irqchip and use its .to_irq() function. This way we don't have
   to expose the gpio_chip inside the gpio-regmap to the user.

Changes since v1:
 - use of_match_table in all drivers, needed for automatic module loading,
   when using OF_MFD_CELL()
 - add new gpio-regmap.c which adds a generic regmap gpio_chip
   implementation
 - new patch for reqmap_irq, so we can reuse its implementation
 - remove almost any code from gpio-sl28cpld.c, instead use gpio-regmap and
   regmap-irq
 - change the handling of the mfd core vs device tree nodes; add a new
   property "of_reg" to the mfd_cell struct which, when set, is matched to
   the unit-address of the device tree nodes.
 - fix sl28cpld watchdog when it is not initialized by the bootloader.
   Explicitly set the operation mode.
 - also add support for kontron,assert-wdt-timeout-pin in sl28cpld-wdt.

As suggested by Bartosz Golaszewski:
 - define registers as hex
 - make gpio enum uppercase
 - move parent regmap check before memory allocation
 - use device_property_read_bool() instead of the of_ version
 - mention the gpio flavors in the bindings documentation

As suggested by Guenter Roeck:
 - cleanup #includes and sort them
 - use devm_watchdog_register_device()
 - use watchdog_stop_on_reboot()
 - provide a Documentation/hwmon/sl28cpld.rst
 - cleaned up the weird tristate->bool and I2C=y issue. Instead mention
   that the MFD driver is bool because of the following intc patch
 - removed the SL28CPLD_IRQ typo

As suggested by Rob Herring:
 - combine all dt bindings docs into one patch
 - change the node name for all gpio flavors to "gpio"
 - removed the interrupts-extended rule
 - cleaned up the unit-address space, see above

Michael Walle (11):
  dt-bindings: mfd: Add bindings for sl28cpld
  mfd: Add support for Kontron sl28cpld management controller
  irqchip: add sl28cpld interrupt controller support
  watchdog: add support for sl28cpld watchdog
  pwm: add support for sl28cpld PWM controller
  gpio: add support for the sl28cpld GPIO controller
  hwmon: add support for the sl28cpld hardware monitoring controller
  arm64: dts: freescale: sl28: enable sl28cpld
  arm64: dts: freescale: sl28: map GPIOs to input events
  arm64: dts: freescale: sl28: enable LED support
  arm64: dts: freescale: sl28: enable fan support

 .../bindings/gpio/kontron,sl28cpld-gpio.yaml  |  54 ++++
 .../hwmon/kontron,sl28cpld-hwmon.yaml         |  27 ++
 .../kontron,sl28cpld-intc.yaml                |  54 ++++
 .../bindings/mfd/kontron,sl28cpld.yaml        | 153 ++++++++++++
 .../bindings/pwm/kontron,sl28cpld-pwm.yaml    |  35 +++
 .../watchdog/kontron,sl28cpld-wdt.yaml        |  35 +++
 Documentation/hwmon/index.rst                 |   1 +
 Documentation/hwmon/sl28cpld.rst              |  36 +++
 .../fsl-ls1028a-kontron-kbox-a-230-ls.dts     |  14 ++
 .../fsl-ls1028a-kontron-sl28-var3-ads2.dts    |   9 +
 .../freescale/fsl-ls1028a-kontron-sl28.dts    | 134 ++++++++++
 drivers/gpio/Kconfig                          |  11 +
 drivers/gpio/Makefile                         |   1 +
 drivers/gpio/gpio-sl28cpld.c                  | 180 ++++++++++++++
 drivers/hwmon/Kconfig                         |  10 +
 drivers/hwmon/Makefile                        |   1 +
 drivers/hwmon/sl28cpld-hwmon.c                | 150 ++++++++++++
 drivers/irqchip/Kconfig                       |   3 +
 drivers/irqchip/Makefile                      |   1 +
 drivers/irqchip/irq-sl28cpld.c                | 102 ++++++++
 drivers/mfd/Kconfig                           |  21 ++
 drivers/mfd/Makefile                          |   2 +
 drivers/mfd/sl28cpld.c                        |  79 ++++++
 drivers/pwm/Kconfig                           |  10 +
 drivers/pwm/Makefile                          |   1 +
 drivers/pwm/pwm-sl28cpld.c                    | 201 +++++++++++++++
 drivers/watchdog/Kconfig                      |  11 +
 drivers/watchdog/Makefile                     |   1 +
 drivers/watchdog/sl28cpld_wdt.c               | 231 ++++++++++++++++++
 29 files changed, 1568 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/gpio/kontron,sl28cpld-gpio.yaml
 create mode 100644 Documentation/devicetree/bindings/hwmon/kontron,sl28cpld-hwmon.yaml
 create mode 100644 Documentation/devicetree/bindings/interrupt-controller/kontron,sl28cpld-intc.yaml
 create mode 100644 Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml
 create mode 100644 Documentation/devicetree/bindings/pwm/kontron,sl28cpld-pwm.yaml
 create mode 100644 Documentation/devicetree/bindings/watchdog/kontron,sl28cpld-wdt.yaml
 create mode 100644 Documentation/hwmon/sl28cpld.rst
 create mode 100644 drivers/gpio/gpio-sl28cpld.c
 create mode 100644 drivers/hwmon/sl28cpld-hwmon.c
 create mode 100644 drivers/irqchip/irq-sl28cpld.c
 create mode 100644 drivers/mfd/sl28cpld.c
 create mode 100644 drivers/pwm/pwm-sl28cpld.c
 create mode 100644 drivers/watchdog/sl28cpld_wdt.c

-- 
2.20.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply

* [PATCH v4 03/11] irqchip: add sl28cpld interrupt controller support
From: Michael Walle @ 2020-06-04 21:10 UTC (permalink / raw)
  To: linux-gpio, devicetree, linux-kernel, linux-hwmon, linux-pwm,
	linux-watchdog, linux-arm-kernel
  Cc: Marc Zyngier, Jean Delvare, Jason Cooper, Greg Kroah-Hartman,
	Shawn Guo, Linus Walleij, Andy Shevchenko, Li Yang,
	Bartosz Golaszewski, Michael Walle, Rob Herring, Thierry Reding,
	Mark Brown, Uwe Kleine-König, Thomas Gleixner,
	Wim Van Sebroeck, Lee Jones, Guenter Roeck
In-Reply-To: <20200604211039.12689-1-michael@walle.cc>

Add support for the interrupt controller inside the sl28 CPLD management
controller.

The interrupt controller can handle at most 8 interrupts and is really
simplistic and consists only of an interrupt mask and an interrupt
pending register.

Signed-off-by: Michael Walle <michael@walle.cc>
---
 drivers/irqchip/Kconfig        |   3 +
 drivers/irqchip/Makefile       |   1 +
 drivers/irqchip/irq-sl28cpld.c | 102 +++++++++++++++++++++++++++++++++
 drivers/mfd/Kconfig            |   2 +
 4 files changed, 108 insertions(+)
 create mode 100644 drivers/irqchip/irq-sl28cpld.c

diff --git a/drivers/irqchip/Kconfig b/drivers/irqchip/Kconfig
index 3e473f4eb175..c4b840bc982e 100644
--- a/drivers/irqchip/Kconfig
+++ b/drivers/irqchip/Kconfig
@@ -246,6 +246,9 @@ config RENESAS_RZA1_IRQC
 	  Enable support for the Renesas RZ/A1 Interrupt Controller, to use up
 	  to 8 external interrupts with configurable sense select.
 
+config SL28CPLD_INTC
+	bool
+
 config ST_IRQCHIP
 	bool
 	select REGMAP
diff --git a/drivers/irqchip/Makefile b/drivers/irqchip/Makefile
index 3a4ce283189a..bcd9797a5aed 100644
--- a/drivers/irqchip/Makefile
+++ b/drivers/irqchip/Makefile
@@ -110,3 +110,4 @@ obj-$(CONFIG_LOONGSON_HTPIC)		+= irq-loongson-htpic.o
 obj-$(CONFIG_LOONGSON_HTVEC)		+= irq-loongson-htvec.o
 obj-$(CONFIG_LOONGSON_PCH_PIC)		+= irq-loongson-pch-pic.o
 obj-$(CONFIG_LOONGSON_PCH_MSI)		+= irq-loongson-pch-msi.o
+obj-$(CONFIG_SL28CPLD_INTC)		+= irq-sl28cpld.o
diff --git a/drivers/irqchip/irq-sl28cpld.c b/drivers/irqchip/irq-sl28cpld.c
new file mode 100644
index 000000000000..2151f1b390d7
--- /dev/null
+++ b/drivers/irqchip/irq-sl28cpld.c
@@ -0,0 +1,102 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * sl28cpld interrupt controller driver.
+ *
+ * Copyright 2019 Kontron Europe GmbH
+ */
+
+#include <linux/interrupt.h>
+#include <linux/kernel.h>
+#include <linux/mod_devicetable.h>
+#include <linux/module.h>
+#include <linux/platform_device.h>
+#include <linux/property.h>
+#include <linux/regmap.h>
+
+#define INTC_IE 0x00
+#define INTC_IP 0x01
+
+static const struct regmap_irq sl28cpld_irqs[] = {
+	REGMAP_IRQ_REG_LINE(0, 8),
+	REGMAP_IRQ_REG_LINE(1, 8),
+	REGMAP_IRQ_REG_LINE(2, 8),
+	REGMAP_IRQ_REG_LINE(3, 8),
+	REGMAP_IRQ_REG_LINE(4, 8),
+	REGMAP_IRQ_REG_LINE(5, 8),
+	REGMAP_IRQ_REG_LINE(6, 8),
+	REGMAP_IRQ_REG_LINE(7, 8),
+};
+
+struct sl28cpld_intc {
+	struct regmap *regmap;
+	struct regmap_irq_chip chip;
+	struct regmap_irq_chip_data *irq_data;
+};
+
+static int sl28cpld_intc_probe(struct platform_device *pdev)
+{
+	struct device *dev = &pdev->dev;
+	struct sl28cpld_intc *irqchip;
+	unsigned int irq;
+	u32 base;
+	int ret;
+
+	if (!dev->parent)
+		return -ENODEV;
+
+	irqchip = devm_kzalloc(dev, sizeof(*irqchip), GFP_KERNEL);
+	if (!irqchip)
+		return -ENOMEM;
+
+	irqchip->regmap = dev_get_regmap(dev->parent, NULL);
+	if (!irqchip->regmap)
+		return -ENODEV;
+
+	irq = platform_get_irq(pdev, 0);
+	if (irq < 0)
+		return irq;
+
+	ret = device_property_read_u32(&pdev->dev, "reg", &base);
+	if (ret)
+		return -EINVAL;
+
+	irqchip->chip.name = "sl28cpld-intc";
+	irqchip->chip.irqs = sl28cpld_irqs;
+	irqchip->chip.num_irqs = ARRAY_SIZE(sl28cpld_irqs);
+	irqchip->chip.num_regs = 1;
+	irqchip->chip.status_base = base + INTC_IP;
+	irqchip->chip.mask_base = base + INTC_IE;
+	irqchip->chip.mask_invert = true,
+	irqchip->chip.ack_base = base + INTC_IP;
+
+	return devm_regmap_add_irq_chip_np(&pdev->dev, dev->of_node,
+					   irqchip->regmap, irq,
+					   IRQF_SHARED | IRQF_ONESHOT, 0,
+					   &irqchip->chip, &irqchip->irq_data);
+}
+
+static const struct of_device_id sl28cpld_intc_of_match[] = {
+	{ .compatible = "kontron,sl28cpld-intc" },
+	{},
+};
+MODULE_DEVICE_TABLE(of, sl28cpld_intc_of_match);
+
+static const struct platform_device_id sl28cpld_intc_id_table[] = {
+	{ "sl28cpld-intc" },
+	{}
+};
+MODULE_DEVICE_TABLE(platform, sl28cpld_intc_id_table);
+
+static struct platform_driver sl28cpld_intc_driver = {
+	.probe	= sl28cpld_intc_probe,
+	.id_table = sl28cpld_intc_id_table,
+	.driver = {
+		.name = KBUILD_MODNAME,
+		.of_match_table = sl28cpld_intc_of_match,
+	}
+};
+module_platform_driver(sl28cpld_intc_driver);
+
+MODULE_DESCRIPTION("sl28cpld Interrupt Controller Driver");
+MODULE_AUTHOR("Michael Walle <michael@walle.cc>");
+MODULE_LICENSE("GPL");
diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
index 5c0cd514d197..9c84c5746698 100644
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
@@ -2114,6 +2114,8 @@ config MFD_SL28CPLD
 	depends on I2C=y
 	depends on OF
 	select REGMAP_I2C
+	select REGMAP_IRQ
+	select SL28CPLD_INTC
 	select MFD_CORE
 	help
 	  This option enables support for the board management controller
-- 
2.20.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related

* [PATCH v4 04/11] watchdog: add support for sl28cpld watchdog
From: Michael Walle @ 2020-06-04 21:10 UTC (permalink / raw)
  To: linux-gpio, devicetree, linux-kernel, linux-hwmon, linux-pwm,
	linux-watchdog, linux-arm-kernel
  Cc: Marc Zyngier, Jean Delvare, Jason Cooper, Greg Kroah-Hartman,
	Shawn Guo, Linus Walleij, Andy Shevchenko, Li Yang,
	Bartosz Golaszewski, Michael Walle, Rob Herring, Thierry Reding,
	Mark Brown, Uwe Kleine-König, Thomas Gleixner,
	Wim Van Sebroeck, Lee Jones, Guenter Roeck
In-Reply-To: <20200604211039.12689-1-michael@walle.cc>

Add support for the watchdog of the sl28cpld board management
controller. This is part of a multi-function device driver.

Signed-off-by: Michael Walle <michael@walle.cc>
Acked-by: Guenter Roeck <linux@roeck-us.net>
---
 drivers/watchdog/Kconfig        |  11 ++
 drivers/watchdog/Makefile       |   1 +
 drivers/watchdog/sl28cpld_wdt.c | 231 ++++++++++++++++++++++++++++++++
 3 files changed, 243 insertions(+)
 create mode 100644 drivers/watchdog/sl28cpld_wdt.c

diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
index 55b910c453da..2c7b0f10151e 100644
--- a/drivers/watchdog/Kconfig
+++ b/drivers/watchdog/Kconfig
@@ -340,6 +340,17 @@ config MLX_WDT
 	  To compile this driver as a module, choose M here: the
 	  module will be called mlx-wdt.
 
+config SL28CPLD_WATCHDOG
+	tristate "Kontron sl28 watchdog"
+	depends on MFD_SL28CPLD
+	select WATCHDOG_CORE
+	help
+	  Say Y here to include support for the watchdog timer
+	  on the Kontron sl28 CPLD.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called sl28cpld_wdt.
+
 # ALPHA Architecture
 
 # ARM Architecture
diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile
index 97bed1d3d97c..aa6e41126901 100644
--- a/drivers/watchdog/Makefile
+++ b/drivers/watchdog/Makefile
@@ -225,3 +225,4 @@ obj-$(CONFIG_MENF21BMC_WATCHDOG) += menf21bmc_wdt.o
 obj-$(CONFIG_MENZ069_WATCHDOG) += menz69_wdt.o
 obj-$(CONFIG_RAVE_SP_WATCHDOG) += rave-sp-wdt.o
 obj-$(CONFIG_STPMIC1_WATCHDOG) += stpmic1_wdt.o
+obj-$(CONFIG_SL28CPLD_WATCHDOG) += sl28cpld_wdt.o
diff --git a/drivers/watchdog/sl28cpld_wdt.c b/drivers/watchdog/sl28cpld_wdt.c
new file mode 100644
index 000000000000..6c9518dc454a
--- /dev/null
+++ b/drivers/watchdog/sl28cpld_wdt.c
@@ -0,0 +1,231 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * sl28cpld watchdog driver.
+ *
+ * Copyright 2019 Kontron Europe GmbH
+ */
+
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/of_device.h>
+#include <linux/platform_device.h>
+#include <linux/regmap.h>
+#include <linux/watchdog.h>
+
+/*
+ * Watchdog timer block registers.
+ */
+#define WDT_CTRL			0x00
+#define  WDT_CTRL_EN			BIT(0)
+#define  WDT_CTRL_LOCK			BIT(2)
+#define  WDT_CTRL_ASSERT_SYS_RESET	BIT(6)
+#define  WDT_CTRL_ASSERT_WDT_TIMEOUT	BIT(7)
+#define WDT_TIMEOUT			0x01
+#define WDT_KICK			0x02
+#define  WDT_KICK_VALUE			0x6b
+#define WDT_COUNT			0x03
+
+#define WDT_DEFAULT_TIMEOUT		10
+
+static bool nowayout = WATCHDOG_NOWAYOUT;
+module_param(nowayout, bool, 0);
+MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default="
+				__MODULE_STRING(WATCHDOG_NOWAYOUT) ")");
+
+static int timeout;
+module_param(timeout, int, 0);
+MODULE_PARM_DESC(timeout, "Initial watchdog timeout in seconds");
+
+struct sl28cpld_wdt {
+	struct watchdog_device wdd;
+	struct regmap *regmap;
+	u32 offset;
+	bool assert_wdt_timeout;
+};
+
+static int sl28cpld_wdt_ping(struct watchdog_device *wdd)
+{
+	struct sl28cpld_wdt *wdt = watchdog_get_drvdata(wdd);
+
+	return regmap_write(wdt->regmap, wdt->offset + WDT_KICK,
+			    WDT_KICK_VALUE);
+}
+
+static int sl28cpld_wdt_start(struct watchdog_device *wdd)
+{
+	struct sl28cpld_wdt *wdt = watchdog_get_drvdata(wdd);
+	unsigned int val;
+
+	val = WDT_CTRL_EN | WDT_CTRL_ASSERT_SYS_RESET;
+	if (wdt->assert_wdt_timeout)
+		val |= WDT_CTRL_ASSERT_WDT_TIMEOUT;
+	if (nowayout)
+		val |= WDT_CTRL_LOCK;
+
+	return regmap_update_bits(wdt->regmap, wdt->offset + WDT_CTRL,
+				  val, val);
+}
+
+static int sl28cpld_wdt_stop(struct watchdog_device *wdd)
+{
+	struct sl28cpld_wdt *wdt = watchdog_get_drvdata(wdd);
+
+	return regmap_update_bits(wdt->regmap, wdt->offset + WDT_CTRL,
+				  WDT_CTRL_EN, 0);
+}
+
+static unsigned int sl28cpld_wdt_get_timeleft(struct watchdog_device *wdd)
+{
+	struct sl28cpld_wdt *wdt = watchdog_get_drvdata(wdd);
+	unsigned int val;
+	int ret;
+
+	ret = regmap_read(wdt->regmap, wdt->offset + WDT_COUNT, &val);
+
+	return (ret < 0) ? 0 : val;
+}
+
+static int sl28cpld_wdt_set_timeout(struct watchdog_device *wdd,
+				    unsigned int timeout)
+{
+	struct sl28cpld_wdt *wdt = watchdog_get_drvdata(wdd);
+	int ret;
+
+	ret = regmap_write(wdt->regmap, wdt->offset + WDT_TIMEOUT, timeout);
+	if (!ret)
+		wdd->timeout = timeout;
+
+	return ret;
+}
+
+static const struct watchdog_info sl28cpld_wdt_info = {
+	.options = WDIOF_MAGICCLOSE | WDIOF_SETTIMEOUT | WDIOF_KEEPALIVEPING,
+	.identity = "sl28cpld watchdog",
+};
+
+static struct watchdog_ops sl28cpld_wdt_ops = {
+	.owner = THIS_MODULE,
+	.start = sl28cpld_wdt_start,
+	.stop = sl28cpld_wdt_stop,
+	.ping = sl28cpld_wdt_ping,
+	.set_timeout = sl28cpld_wdt_set_timeout,
+	.get_timeleft = sl28cpld_wdt_get_timeleft,
+};
+
+static int sl28cpld_wdt_probe(struct platform_device *pdev)
+{
+	struct watchdog_device *wdd;
+	struct sl28cpld_wdt *wdt;
+	unsigned int status;
+	unsigned int val;
+	int ret;
+
+	if (!pdev->dev.parent)
+		return -ENODEV;
+
+	wdt = devm_kzalloc(&pdev->dev, sizeof(*wdt), GFP_KERNEL);
+	if (!wdt)
+		return -ENOMEM;
+
+	wdt->regmap = dev_get_regmap(pdev->dev.parent, NULL);
+	if (!wdt->regmap)
+		return -ENODEV;
+
+	ret = device_property_read_u32(&pdev->dev, "reg", &wdt->offset);
+	if (ret)
+		return -EINVAL;
+
+	wdt->assert_wdt_timeout = device_property_read_bool(&pdev->dev,
+							    "kontron,assert-wdt-timeout-pin");
+
+	/* initialize struct watchdog_device */
+	wdd = &wdt->wdd;
+	wdd->parent = &pdev->dev;
+	wdd->info = &sl28cpld_wdt_info;
+	wdd->ops = &sl28cpld_wdt_ops;
+	wdd->min_timeout = 1;
+	wdd->max_timeout = 255;
+
+	watchdog_set_drvdata(wdd, wdt);
+	watchdog_stop_on_reboot(wdd);
+
+	/*
+	 * Read the status early, in case of an error, we haven't modified the
+	 * hardware.
+	 */
+	ret = regmap_read(wdt->regmap, wdt->offset + WDT_CTRL, &status);
+	if (ret < 0)
+		return ret;
+
+	/*
+	 * Initial timeout value, may be overwritten by device tree or module
+	 * parmeter in watchdog_init_timeout().
+	 *
+	 * Reading a zero here means that either the hardware has a default
+	 * value of zero (which is very unlikely and definitely a hardware
+	 * bug) or the bootloader set it to zero. In any case, we handle
+	 * this case gracefully and set out own timeout.
+	 */
+	ret = regmap_read(wdt->regmap, wdt->offset + WDT_TIMEOUT, &val);
+	if (ret < 0)
+		return ret;
+
+	if (val)
+		wdd->timeout = val;
+	else
+		wdd->timeout = WDT_DEFAULT_TIMEOUT;
+
+	watchdog_init_timeout(wdd, timeout, &pdev->dev);
+	sl28cpld_wdt_set_timeout(wdd, wdd->timeout);
+
+	/* if the watchdog is locked, we set nowayout */
+	if (status & WDT_CTRL_LOCK)
+		nowayout = true;
+	watchdog_set_nowayout(wdd, nowayout);
+
+	/*
+	 * If watchdog is already running, keep it enabled, but make
+	 * sure its mode is set correctly.
+	 */
+	if (status & WDT_CTRL_EN) {
+		sl28cpld_wdt_start(wdd);
+		set_bit(WDOG_HW_RUNNING, &wdd->status);
+	}
+
+	ret = devm_watchdog_register_device(&pdev->dev, wdd);
+	if (ret < 0) {
+		dev_err(&pdev->dev, "failed to register watchdog device\n");
+		return ret;
+	}
+
+	dev_info(&pdev->dev, "initial timeout %d sec%s\n",
+		 wdd->timeout, nowayout ? ", nowayout" : "");
+
+	return 0;
+}
+
+static const struct of_device_id sl28cpld_wdt_of_match[] = {
+	{ .compatible = "kontron,sl28cpld-wdt" },
+	{},
+};
+MODULE_DEVICE_TABLE(of, sl28cpld_wdt_of_match);
+
+static const struct platform_device_id sl28cpld_wdt_id_table[] = {
+	{ "sl28cpld-wdt" },
+	{},
+};
+MODULE_DEVICE_TABLE(platform, sl28cpld_wdt_id_table);
+
+static struct platform_driver sl28cpld_wdt_driver = {
+	.probe = sl28cpld_wdt_probe,
+	.id_table = sl28cpld_wdt_id_table,
+	.driver = {
+		.name = KBUILD_MODNAME,
+		.of_match_table = sl28cpld_wdt_of_match,
+	},
+};
+module_platform_driver(sl28cpld_wdt_driver);
+
+MODULE_DESCRIPTION("sl28cpld Watchdog Driver");
+MODULE_AUTHOR("Michael Walle <michael@walle.cc>");
+MODULE_LICENSE("GPL");
-- 
2.20.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related

* [PATCH v4 02/11] mfd: Add support for Kontron sl28cpld management controller
From: Michael Walle @ 2020-06-04 21:10 UTC (permalink / raw)
  To: linux-gpio, devicetree, linux-kernel, linux-hwmon, linux-pwm,
	linux-watchdog, linux-arm-kernel
  Cc: Marc Zyngier, Jean Delvare, Jason Cooper, Greg Kroah-Hartman,
	Shawn Guo, Linus Walleij, Andy Shevchenko, Li Yang,
	Bartosz Golaszewski, Michael Walle, Rob Herring, Thierry Reding,
	Mark Brown, Uwe Kleine-König, Thomas Gleixner,
	Wim Van Sebroeck, Lee Jones, Guenter Roeck
In-Reply-To: <20200604211039.12689-1-michael@walle.cc>

Add the core support for the board management controller found on the
SMARC-sAL28 board. It consists of the following functions:
 - watchdog
 - GPIO controller
 - PWM controller
 - fan sensor
 - interrupt controller

At the moment, this controller is used on the Kontron SMARC-sAL28 board.

Please note that the MFD driver is defined as bool in the Kconfig
because the next patch will add interrupt support.

Signed-off-by: Michael Walle <michael@walle.cc>
---
 drivers/mfd/Kconfig    | 19 ++++++++++
 drivers/mfd/Makefile   |  2 ++
 drivers/mfd/sl28cpld.c | 79 ++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 100 insertions(+)
 create mode 100644 drivers/mfd/sl28cpld.c

diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
index 4f8b73d92df3..5c0cd514d197 100644
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
@@ -2109,5 +2109,24 @@ config SGI_MFD_IOC3
 	  If you have an SGI Origin, Octane, or a PCI IOC3 card,
 	  then say Y. Otherwise say N.
 
+config MFD_SL28CPLD
+	bool "Kontron sl28 core driver"
+	depends on I2C=y
+	depends on OF
+	select REGMAP_I2C
+	select MFD_CORE
+	help
+	  This option enables support for the board management controller
+	  found on the Kontron sl28 CPLD. You have to select individual
+	  functions, such as watchdog, GPIO, etc, under the corresponding menus
+	  in order to enable them.
+
+	  Currently supported boards are:
+
+		Kontron SMARC-sAL28
+
+	  To compile this driver as a module, choose M here: the module will be
+	  called sl28cpld.
+
 endmenu
 endif
diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
index 9367a92f795a..be59fb40aa28 100644
--- a/drivers/mfd/Makefile
+++ b/drivers/mfd/Makefile
@@ -264,3 +264,5 @@ obj-$(CONFIG_MFD_ROHM_BD718XX)	+= rohm-bd718x7.o
 obj-$(CONFIG_MFD_STMFX) 	+= stmfx.o
 
 obj-$(CONFIG_SGI_MFD_IOC3)	+= ioc3.o
+
+obj-$(CONFIG_MFD_SL28CPLD)	+= sl28cpld.o
diff --git a/drivers/mfd/sl28cpld.c b/drivers/mfd/sl28cpld.c
new file mode 100644
index 000000000000..a23194bb6efa
--- /dev/null
+++ b/drivers/mfd/sl28cpld.c
@@ -0,0 +1,79 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * MFD core for the sl28cpld.
+ *
+ * Copyright 2019 Kontron Europe GmbH
+ */
+
+#include <linux/i2c.h>
+#include <linux/interrupt.h>
+#include <linux/kernel.h>
+#include <linux/mfd/core.h>
+#include <linux/module.h>
+#include <linux/of_platform.h>
+#include <linux/regmap.h>
+
+#define SL28CPLD_VERSION	0x03
+#define SL28CPLD_MIN_REQ_VERSION 14
+
+struct sl28cpld {
+	struct device *dev;
+	struct regmap *regmap;
+};
+
+static const struct regmap_config sl28cpld_regmap_config = {
+	.reg_bits = 8,
+	.val_bits = 8,
+	.reg_stride = 1,
+};
+
+static int sl28cpld_probe(struct i2c_client *i2c)
+{
+	struct sl28cpld *sl28cpld;
+	struct device *dev = &i2c->dev;
+	unsigned int cpld_version;
+	int ret;
+
+	sl28cpld = devm_kzalloc(dev, sizeof(*sl28cpld), GFP_KERNEL);
+	if (!sl28cpld)
+		return -ENOMEM;
+
+	sl28cpld->regmap = devm_regmap_init_i2c(i2c, &sl28cpld_regmap_config);
+	if (IS_ERR(sl28cpld->regmap))
+		return PTR_ERR(sl28cpld->regmap);
+
+	ret = regmap_read(sl28cpld->regmap, SL28CPLD_VERSION, &cpld_version);
+	if (ret)
+		return ret;
+
+	if (cpld_version < SL28CPLD_MIN_REQ_VERSION) {
+		dev_err(dev, "unsupported CPLD version %d\n", cpld_version);
+		return -ENODEV;
+	}
+
+	sl28cpld->dev = dev;
+	i2c_set_clientdata(i2c, sl28cpld);
+
+	dev_info(dev, "successfully probed. CPLD version %d\n", cpld_version);
+
+	return devm_of_platform_populate(&i2c->dev);
+}
+
+static const struct of_device_id sl28cpld_of_match[] = {
+	{ .compatible = "kontron,sl28cpld-r1", },
+	{}
+};
+MODULE_DEVICE_TABLE(of, sl28cpld_of_match);
+
+static struct i2c_driver sl28cpld_driver = {
+	.probe_new = sl28cpld_probe,
+	.driver = {
+		.name = "sl28cpld",
+		.of_match_table = of_match_ptr(sl28cpld_of_match),
+	},
+};
+module_i2c_driver(sl28cpld_driver);
+
+MODULE_DESCRIPTION("sl28cpld MFD Core Driver");
+MODULE_AUTHOR("Michael Walle <michael@walle.cc>");
+MODULE_LICENSE("GPL");
-- 
2.20.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related

* Re: [PATCH v4 4/5] coresight: etm: perf: Add default sink selection to etm perf
From: Mike Leach @ 2020-06-04 21:07 UTC (permalink / raw)
  To: Mathieu Poirier
  Cc: Coresight ML, Arnaldo Carvalho de Melo, linux-arm-kernel,
	Suzuki K Poulose
In-Reply-To: <20200602165911.GA23450@xps15>

Hi,

On Tue, 2 Jun 2020 at 17:59, Mathieu Poirier <mathieu.poirier@linaro.org> wrote:
>
> On Tue, Jun 02, 2020 at 02:29:30PM +0100, Suzuki K Poulose wrote:
> > On 06/02/2020 02:12 PM, Mike Leach wrote:
> > > Hi Suzuki,
> > >
> > > On Tue, 2 Jun 2020 at 12:40, Suzuki K Poulose <suzuki.poulose@arm.com> wrote:
> > > >
> > > > On 05/26/2020 11:46 AM, Mike Leach wrote:
> > > > > Add default sink selection to the perf trace handling in the etm driver.
> > > > > Uses the select default sink infrastructure to select a sink for the perf
> > > > > session, if no other sink is specified.
> > > > >
> > > > > Signed-off-by: Mike Leach <mike.leach@linaro.org>
> > > >
> > > > This patch looks fine to me as such. But please see below for some
> > > > discussion on the future support for other configurations.
> > > >
> > > >
> > > > > ---
> > > > >    .../hwtracing/coresight/coresight-etm-perf.c    | 17 ++++++++++++++---
> > > > >    1 file changed, 14 insertions(+), 3 deletions(-)
> > > > >
> > > > > diff --git a/drivers/hwtracing/coresight/coresight-etm-perf.c b/drivers/hwtracing/coresight/coresight-etm-perf.c
> > > > > index 84f1dcb69827..1a3169e69bb1 100644
> > > > > --- a/drivers/hwtracing/coresight/coresight-etm-perf.c
> > > > > +++ b/drivers/hwtracing/coresight/coresight-etm-perf.c
> > > > > @@ -226,9 +226,6 @@ static void *etm_setup_aux(struct perf_event *event, void **pages,
> > > > >                sink = coresight_get_enabled_sink(true);
> > > > >        }
> > > > >
> > > > > -     if (!sink)
> > > > > -             goto err;
> > > > > -
> > > > >        mask = &event_data->mask;
> > > > >
> > > > >        /*
> > > > > @@ -253,6 +250,16 @@ static void *etm_setup_aux(struct perf_event *event, void **pages,
> > > > >                        continue;
> > > > >                }
> > > > >
> > > > > +             /*
> > > > > +              * No sink provided - look for a default sink for one of the
> > > > > +              * devices. At present we only support topology where all CPUs
> > > > > +              * use the same sink [N:1], so only need to find one sink. The
> > > > > +              * coresight_build_path later will remove any CPU that does not
> > > > > +              * attach to the sink, or if we have not found a sink.
> > > > > +              */
> > > > > +             if (!sink)
> > > > > +                     sink = coresight_find_default_sink(csdev);
> > > > > +
> > > >
> > > > While we are here, should we remove the "find enabled sink" if the csink
> > > > is not specified via config. ? That step is problematic, as the user may
> > > > not remember which sinks were enabled. Also, we can't hit that with
> > > > perf tool as it prevents any invocation without sink (until this change).
>
> Old version of perf tools will take sinks selected on the perf command line and
> use the sysfs to communicate that to the kernel.  Granted there may not be that
> many (if any), removing coresight_get_enabled_sink() will break those
> implementation.
>
> The real question is if keeping the functionatlity around so troublesome that it
> overweighs the drawbacks of removing it.
>
> > > >
> > > > So may be this is a good time to get rid of that ?
> > > >
> > >
> > > You are correct - the  'sink = coresight_get_enabled_sink(true);' was
> > > dead code until this patch.
> > > However - if someone has set up their system using sysfs to enable
> > > sinks, then should we not respect that rather than assume they made a
> > > mistake?
> >
> > If someone really wants to use a specific sink, then they could always
> > specify it via the config attribute and it will be honoured. We need not
> > carry along this non-intuitive hinting.
> >

Problem is - as mentioned below - config can only specify one sink, so
when we support 1:1 / N:M topology we need a way of specifying
multiple sinks. This is one viable option - especially where we are
using entire system configuration settings.

As Mathieu points out - there is little harm in leaving this in - if
we take it out now, we will probably have to replace it with something
similar anyway.

> > >
> > > Thinking about N:M topologies mentioned below - one method of handling
> > > this is to enable relevant sinks and then let perf trace on any cores
> > > that might use them.
> > >
> > > > Also, we may need to do special handling for cases where there multiple
> > > > sinks (ETRS) and the cpus in the event mask has different preferred
> > > > sink. We can defer it for now as we don't claim to support such
> > > > configurations yet.
> > >
> > > Yes - the newer topologies will need some changes - beyond what we are
> > > handling here.
> > > However - especially for 1:1 -  the best way may be to always use the
> > > default sink - as specifying multiple sinks on the perf command line
> > > may be problematical.
> > >
> > > > When we do, we could either :
> > > >
> > > > 1) Make sure the event is bound to a single CPU, in which case
> > > > the sink remains the same for the event.
> > > >
> > > > OR
> > > >
> > > > 2) All the different "preferred" sinks (ETRs selected by the ETM) have
> > > > the same capabilitiy. i.e, we can move around the "sink" specific
> > > > buffers and use them where we end up using.
> > >
> > > If here by "capabilities" we are talking about buffer vs system memory
> > > type sinks then I agree. We may need in future to limit the search
> >
> > Not necessarily. e.g, if we ever get two different types of system
> > memory sinks, (e.g, a global ETR and a dedicate "new" sink for a
> > cluster), we can't keep switching between the two sinks depending on how
> > they use the buffers. (i.e, direct buffer vs double copy)
> >

I would have thought it is an issue for the sink driver to sort this
out on an individual basis. Multiple sinks I would think implies
multiple perf buffers per intelPT, so each sink should have its own
buffer, and hence deal with it in a sink specific way?
Anyhow - as you say - something that can be deferred till we add the
multi-sink support.

Cheers

Mike

> > Suzuki




--
Mike Leach
Principal Engineer, ARM Ltd.
Manchester Design Centre. UK

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply

* [PATCH v7 3/6] dt-bindings: arm-smmu: Add compatible string for Adreno GPU SMMU
From: Jordan Crouse @ 2020-06-04 20:57 UTC (permalink / raw)
  To: linux-arm-msm
  Cc: devicetree, Will Deacon, freedreno, Joerg Roedel, linux-kernel,
	iommu, Rob Herring, Robin Murphy, linux-arm-kernel
In-Reply-To: <20200604205710.3167-1-jcrouse@codeaurora.org>

Every Qcom Adreno GPU has an embedded SMMU for its own use. These
devices depend on unique features such as split pagetables,
different stall/halt requirements and other settings. Identify them
with a compatible string so that they can be identified in the
arm-smmu implementation specific code.

Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
---

 Documentation/devicetree/bindings/iommu/arm,smmu.yaml | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/Documentation/devicetree/bindings/iommu/arm,smmu.yaml b/Documentation/devicetree/bindings/iommu/arm,smmu.yaml
index d7ceb4c34423..e52a1b146c97 100644
--- a/Documentation/devicetree/bindings/iommu/arm,smmu.yaml
+++ b/Documentation/devicetree/bindings/iommu/arm,smmu.yaml
@@ -38,6 +38,10 @@ properties:
               - qcom,sc7180-smmu-500
               - qcom,sdm845-smmu-500
           - const: arm,mmu-500
+      - description: Qcom Adreno GPUs implementing "arm,smmu-v2"
+        items:
+          - const: qcom,adreno-smmu
+          - const: qcom,smmu-v2
       - items:
           - const: arm,mmu-500
           - const: arm,smmu-v2
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related

* [PATCH v7 4/6] iommu/arm-smmu: Add implementation for the adreno GPU SMMU
From: Jordan Crouse @ 2020-06-04 20:57 UTC (permalink / raw)
  To: linux-arm-msm
  Cc: Will Deacon, freedreno, Joerg Roedel, linux-kernel, iommu,
	Robin Murphy, linux-arm-kernel
In-Reply-To: <20200604205710.3167-1-jcrouse@codeaurora.org>

Add a special implementation for the SMMU attached to most Adreno GPU
target triggered from the qcom,adreno-gpu-smmu compatible string. When
selected the driver will attempt to enable split pagetables.

Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
---

 drivers/iommu/arm-smmu-impl.c |  5 ++++-
 drivers/iommu/arm-smmu-qcom.c | 38 +++++++++++++++++++++++++++++++++--
 drivers/iommu/arm-smmu.c      |  2 +-
 drivers/iommu/arm-smmu.h      |  3 ++-
 4 files changed, 43 insertions(+), 5 deletions(-)

diff --git a/drivers/iommu/arm-smmu-impl.c b/drivers/iommu/arm-smmu-impl.c
index a20e426d81ac..3bb1ef4e85f7 100644
--- a/drivers/iommu/arm-smmu-impl.c
+++ b/drivers/iommu/arm-smmu-impl.c
@@ -69,7 +69,7 @@ static int cavium_cfg_probe(struct arm_smmu_device *smmu)
 }
 
 static int cavium_init_context(struct arm_smmu_domain *smmu_domain,
-		struct io_pgtable_cfg *pgtbl_cfg)
+		struct io_pgtable_cfg *pgtbl_cfg, struct device *dev)
 {
 	struct cavium_smmu *cs = container_of(smmu_domain->smmu,
 					      struct cavium_smmu, smmu);
@@ -176,5 +176,8 @@ struct arm_smmu_device *arm_smmu_impl_init(struct arm_smmu_device *smmu)
 	    of_device_is_compatible(np, "qcom,sc7180-smmu-500"))
 		return qcom_smmu_impl_init(smmu);
 
+	if (of_device_is_compatible(smmu->dev->of_node, "qcom,adreno-smmu"))
+		return qcom_adreno_smmu_impl_init(smmu);
+
 	return smmu;
 }
diff --git a/drivers/iommu/arm-smmu-qcom.c b/drivers/iommu/arm-smmu-qcom.c
index be4318044f96..cc03f94fa458 100644
--- a/drivers/iommu/arm-smmu-qcom.c
+++ b/drivers/iommu/arm-smmu-qcom.c
@@ -12,6 +12,22 @@ struct qcom_smmu {
 	struct arm_smmu_device smmu;
 };
 
+static int qcom_adreno_smmu_init_context(struct arm_smmu_domain *smmu_domain,
+		struct io_pgtable_cfg *pgtbl_cfg, struct device *dev)
+{
+	/*
+	 * All targets that use the qcom,adreno-smmu compatible string *should*
+	 * be AARCH64 stage 1 but double check because the arm-smmu code assumes
+	 * that is the case when the TTBR1 quirk is enabled
+	 */
+	if (of_device_is_compatible(dev->of_node, "qcom,adreno") &&
+	    (smmu_domain->stage == ARM_SMMU_DOMAIN_S1) &&
+	    (smmu_domain->cfg.fmt == ARM_SMMU_CTX_FMT_AARCH64))
+		pgtbl_cfg->quirks |= IO_PGTABLE_QUIRK_ARM_TTBR1;
+
+	return 0;
+}
+
 static const struct of_device_id qcom_smmu_client_of_match[] __maybe_unused = {
 	{ .compatible = "qcom,adreno" },
 	{ .compatible = "qcom,mdp4" },
@@ -65,7 +81,15 @@ static const struct arm_smmu_impl qcom_smmu_impl = {
 	.reset = qcom_smmu500_reset,
 };
 
-struct arm_smmu_device *qcom_smmu_impl_init(struct arm_smmu_device *smmu)
+static const struct arm_smmu_impl qcom_adreno_smmu_impl = {
+	.init_context = qcom_adreno_smmu_init_context,
+	.def_domain_type = qcom_smmu_def_domain_type,
+	.reset = qcom_smmu500_reset,
+};
+
+
+static struct arm_smmu_device *qcom_smmu_create(struct arm_smmu_device *smmu,
+		const struct arm_smmu_impl *impl)
 {
 	struct qcom_smmu *qsmmu;
 
@@ -75,8 +99,18 @@ struct arm_smmu_device *qcom_smmu_impl_init(struct arm_smmu_device *smmu)
 
 	qsmmu->smmu = *smmu;
 
-	qsmmu->smmu.impl = &qcom_smmu_impl;
+	qsmmu->smmu.impl = impl;
 	devm_kfree(smmu->dev, smmu);
 
 	return &qsmmu->smmu;
 }
+
+struct arm_smmu_device *qcom_smmu_impl_init(struct arm_smmu_device *smmu)
+{
+	return qcom_smmu_create(smmu, &qcom_smmu_impl);
+}
+
+struct arm_smmu_device *qcom_adreno_smmu_impl_init(struct arm_smmu_device *smmu)
+{
+	return qcom_smmu_create(smmu, &qcom_adreno_smmu_impl);
+}
diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c
index 048de2681670..f14dc4ecb422 100644
--- a/drivers/iommu/arm-smmu.c
+++ b/drivers/iommu/arm-smmu.c
@@ -812,7 +812,7 @@ static int arm_smmu_init_domain_context(struct iommu_domain *domain,
 	};
 
 	if (smmu->impl && smmu->impl->init_context) {
-		ret = smmu->impl->init_context(smmu_domain, &pgtbl_cfg);
+		ret = smmu->impl->init_context(smmu_domain, &pgtbl_cfg, dev);
 		if (ret)
 			goto out_unlock;
 	}
diff --git a/drivers/iommu/arm-smmu.h b/drivers/iommu/arm-smmu.h
index 5f2de20e883b..df70d410f77d 100644
--- a/drivers/iommu/arm-smmu.h
+++ b/drivers/iommu/arm-smmu.h
@@ -397,7 +397,7 @@ struct arm_smmu_impl {
 	int (*cfg_probe)(struct arm_smmu_device *smmu);
 	int (*reset)(struct arm_smmu_device *smmu);
 	int (*init_context)(struct arm_smmu_domain *smmu_domain,
-			struct io_pgtable_cfg *cfg);
+			struct io_pgtable_cfg *cfg, struct device *dev);
 	void (*tlb_sync)(struct arm_smmu_device *smmu, int page, int sync,
 			 int status);
 	int (*def_domain_type)(struct device *dev);
@@ -465,6 +465,7 @@ static inline void arm_smmu_writeq(struct arm_smmu_device *smmu, int page,
 
 struct arm_smmu_device *arm_smmu_impl_init(struct arm_smmu_device *smmu);
 struct arm_smmu_device *qcom_smmu_impl_init(struct arm_smmu_device *smmu);
+struct arm_smmu_device *qcom_adreno_smmu_impl_init(struct arm_smmu_device *smmu);
 
 int arm_mmu500_reset(struct arm_smmu_device *smmu);
 
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related

* [PATCH v7 2/6] iommu/arm-smmu: Add support for split pagetables
From: Jordan Crouse @ 2020-06-04 20:57 UTC (permalink / raw)
  To: linux-arm-msm
  Cc: Will Deacon, freedreno, Joerg Roedel, linux-kernel, iommu,
	Robin Murphy, linux-arm-kernel
In-Reply-To: <20200604205710.3167-1-jcrouse@codeaurora.org>

Enable TTBR1 for a context bank if IO_PGTABLE_QUIRK_ARM_TTBR1 is selected
by the io-pgtable configuration.

Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
---

 drivers/iommu/arm-smmu.c | 21 ++++++++++++++++-----
 drivers/iommu/arm-smmu.h | 25 +++++++++++++++++++------
 2 files changed, 35 insertions(+), 11 deletions(-)

diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c
index 8a3a6c8c887a..048de2681670 100644
--- a/drivers/iommu/arm-smmu.c
+++ b/drivers/iommu/arm-smmu.c
@@ -555,11 +555,15 @@ static void arm_smmu_init_context_bank(struct arm_smmu_domain *smmu_domain,
 			cb->ttbr[0] = pgtbl_cfg->arm_v7s_cfg.ttbr;
 			cb->ttbr[1] = 0;
 		} else {
-			cb->ttbr[0] = pgtbl_cfg->arm_lpae_s1_cfg.ttbr;
-			cb->ttbr[0] |= FIELD_PREP(ARM_SMMU_TTBRn_ASID,
-						  cfg->asid);
+			cb->ttbr[0] = FIELD_PREP(ARM_SMMU_TTBRn_ASID,
+				cfg->asid);
 			cb->ttbr[1] = FIELD_PREP(ARM_SMMU_TTBRn_ASID,
-						 cfg->asid);
+				cfg->asid);
+
+			if (pgtbl_cfg->quirks & IO_PGTABLE_QUIRK_ARM_TTBR1)
+				cb->ttbr[1] |= pgtbl_cfg->arm_lpae_s1_cfg.ttbr;
+			else
+				cb->ttbr[0] |= pgtbl_cfg->arm_lpae_s1_cfg.ttbr;
 		}
 	} else {
 		cb->ttbr[0] = pgtbl_cfg->arm_lpae_s2_cfg.vttbr;
@@ -824,7 +828,14 @@ static int arm_smmu_init_domain_context(struct iommu_domain *domain,
 
 	/* Update the domain's page sizes to reflect the page table format */
 	domain->pgsize_bitmap = pgtbl_cfg.pgsize_bitmap;
-	domain->geometry.aperture_end = (1UL << ias) - 1;
+
+	if (pgtbl_cfg.quirks & IO_PGTABLE_QUIRK_ARM_TTBR1) {
+		domain->geometry.aperture_start = ~0UL << ias;
+		domain->geometry.aperture_end = ~0UL;
+	} else {
+		domain->geometry.aperture_end = (1UL << ias) - 1;
+	}
+
 	domain->geometry.force_aperture = true;
 
 	/* Initialise the context bank with our page table cfg */
diff --git a/drivers/iommu/arm-smmu.h b/drivers/iommu/arm-smmu.h
index 38b041530a4f..5f2de20e883b 100644
--- a/drivers/iommu/arm-smmu.h
+++ b/drivers/iommu/arm-smmu.h
@@ -168,10 +168,12 @@ enum arm_smmu_cbar_type {
 #define ARM_SMMU_CB_TCR			0x30
 #define ARM_SMMU_TCR_EAE		BIT(31)
 #define ARM_SMMU_TCR_EPD1		BIT(23)
+#define ARM_SMMU_TCR_A1			BIT(22)
 #define ARM_SMMU_TCR_TG0		GENMASK(15, 14)
 #define ARM_SMMU_TCR_SH0		GENMASK(13, 12)
 #define ARM_SMMU_TCR_ORGN0		GENMASK(11, 10)
 #define ARM_SMMU_TCR_IRGN0		GENMASK(9, 8)
+#define ARM_SMMU_TCR_EPD0		BIT(7)
 #define ARM_SMMU_TCR_T0SZ		GENMASK(5, 0)
 
 #define ARM_SMMU_VTCR_RES1		BIT(31)
@@ -347,12 +349,23 @@ struct arm_smmu_domain {
 
 static inline u32 arm_smmu_lpae_tcr(struct io_pgtable_cfg *cfg)
 {
-	return ARM_SMMU_TCR_EPD1 |
-	       FIELD_PREP(ARM_SMMU_TCR_TG0, cfg->arm_lpae_s1_cfg.tcr.tg) |
-	       FIELD_PREP(ARM_SMMU_TCR_SH0, cfg->arm_lpae_s1_cfg.tcr.sh) |
-	       FIELD_PREP(ARM_SMMU_TCR_ORGN0, cfg->arm_lpae_s1_cfg.tcr.orgn) |
-	       FIELD_PREP(ARM_SMMU_TCR_IRGN0, cfg->arm_lpae_s1_cfg.tcr.irgn) |
-	       FIELD_PREP(ARM_SMMU_TCR_T0SZ, cfg->arm_lpae_s1_cfg.tcr.tsz);
+	u32 tcr = FIELD_PREP(ARM_SMMU_TCR_TG0, cfg->arm_lpae_s1_cfg.tcr.tg) |
+		FIELD_PREP(ARM_SMMU_TCR_SH0, cfg->arm_lpae_s1_cfg.tcr.sh) |
+		FIELD_PREP(ARM_SMMU_TCR_ORGN0, cfg->arm_lpae_s1_cfg.tcr.orgn) |
+		FIELD_PREP(ARM_SMMU_TCR_IRGN0, cfg->arm_lpae_s1_cfg.tcr.irgn) |
+		FIELD_PREP(ARM_SMMU_TCR_T0SZ, cfg->arm_lpae_s1_cfg.tcr.tsz);
+
+       /*
+	* When TTBR1 is selected shift the TCR fields by 16 bits and disable
+	* translation in TTBR0
+	*/
+	if (cfg->quirks & IO_PGTABLE_QUIRK_ARM_TTBR1) {
+		tcr = (tcr << 16) & ~ARM_SMMU_TCR_A1;
+		tcr |= ARM_SMMU_TCR_EPD0;
+	} else
+		tcr |= ARM_SMMU_TCR_EPD1;
+
+	return tcr;
 }
 
 static inline u32 arm_smmu_lpae_tcr2(struct io_pgtable_cfg *cfg)
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related

* [PATCH v7 1/6] iommu/arm-smmu: Pass io-pgtable config to implementation specific function
From: Jordan Crouse @ 2020-06-04 20:57 UTC (permalink / raw)
  To: linux-arm-msm
  Cc: Will Deacon, freedreno, Joerg Roedel, linux-kernel, iommu,
	Robin Murphy, linux-arm-kernel
In-Reply-To: <20200604205710.3167-1-jcrouse@codeaurora.org>

Construct the io-pgtable config before calling the implementation specific
init_context function and pass it so the implementation specific function
can get a chance to change it before the io-pgtable is created.

Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
---

 drivers/iommu/arm-smmu-impl.c |  3 ++-
 drivers/iommu/arm-smmu.c      | 11 ++++++-----
 drivers/iommu/arm-smmu.h      |  3 ++-
 3 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/drivers/iommu/arm-smmu-impl.c b/drivers/iommu/arm-smmu-impl.c
index c75b9d957b70..a20e426d81ac 100644
--- a/drivers/iommu/arm-smmu-impl.c
+++ b/drivers/iommu/arm-smmu-impl.c
@@ -68,7 +68,8 @@ static int cavium_cfg_probe(struct arm_smmu_device *smmu)
 	return 0;
 }
 
-static int cavium_init_context(struct arm_smmu_domain *smmu_domain)
+static int cavium_init_context(struct arm_smmu_domain *smmu_domain,
+		struct io_pgtable_cfg *pgtbl_cfg)
 {
 	struct cavium_smmu *cs = container_of(smmu_domain->smmu,
 					      struct cavium_smmu, smmu);
diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c
index 243bc4cb2705..8a3a6c8c887a 100644
--- a/drivers/iommu/arm-smmu.c
+++ b/drivers/iommu/arm-smmu.c
@@ -797,11 +797,6 @@ static int arm_smmu_init_domain_context(struct iommu_domain *domain,
 		cfg->asid = cfg->cbndx;
 
 	smmu_domain->smmu = smmu;
-	if (smmu->impl && smmu->impl->init_context) {
-		ret = smmu->impl->init_context(smmu_domain);
-		if (ret)
-			goto out_unlock;
-	}
 
 	pgtbl_cfg = (struct io_pgtable_cfg) {
 		.pgsize_bitmap	= smmu->pgsize_bitmap,
@@ -812,6 +807,12 @@ static int arm_smmu_init_domain_context(struct iommu_domain *domain,
 		.iommu_dev	= smmu->dev,
 	};
 
+	if (smmu->impl && smmu->impl->init_context) {
+		ret = smmu->impl->init_context(smmu_domain, &pgtbl_cfg);
+		if (ret)
+			goto out_unlock;
+	}
+
 	if (smmu_domain->non_strict)
 		pgtbl_cfg.quirks |= IO_PGTABLE_QUIRK_NON_STRICT;
 
diff --git a/drivers/iommu/arm-smmu.h b/drivers/iommu/arm-smmu.h
index d172c024be61..38b041530a4f 100644
--- a/drivers/iommu/arm-smmu.h
+++ b/drivers/iommu/arm-smmu.h
@@ -383,7 +383,8 @@ struct arm_smmu_impl {
 			    u64 val);
 	int (*cfg_probe)(struct arm_smmu_device *smmu);
 	int (*reset)(struct arm_smmu_device *smmu);
-	int (*init_context)(struct arm_smmu_domain *smmu_domain);
+	int (*init_context)(struct arm_smmu_domain *smmu_domain,
+			struct io_pgtable_cfg *cfg);
 	void (*tlb_sync)(struct arm_smmu_device *smmu, int page, int sync,
 			 int status);
 	int (*def_domain_type)(struct device *dev);
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related

* [PATCH v7 0/6] iommu/arm-smmu: Enable split pagetable support
From: Jordan Crouse @ 2020-06-04 20:57 UTC (permalink / raw)
  To: linux-arm-msm
  Cc: Sean Paul, devicetree, iommu, linux-kernel, Will Deacon,
	Jeffrey Hugo, David Airlie, Robin Murphy, Joerg Roedel,
	Douglas Anderson, Rob Herring, Bjorn Andersson, Takashi Iwai,
	Rob Clark, Andy Gross, dri-devel, Daniel Vetter, Thomas Gleixner,
	freedreno, linux-arm-kernel, Brian Masney

Another iteration of the split-pagetable support for arm-smmu and the Adreno GPU
SMMU. After email discussions [1] we opted to make a arm-smmu implementation for
specifically for the Adreno GPU and use that to enable split pagetable support
and later other implementation specific bits that we need.

On the hardware side this is very close to the same code from before [2] only
the TTBR1 quirk is turned on by the implementation and not a domain attribute.
In drm/msm we use the returned size of the aperture as a clue to let us know
which virtual address space we should use for global memory objects.

There are two open items that you should be aware of. First, in the
implementation specific code we have to check the compatible string of the
device so that we only enable TTBR1 for the GPU (SID 0) and not the GMU (SID 4).
I went back and forth trying to decide if I wanted to use the compatbile string
or the SID as the filter and settled on the compatible string but I could be
talked out of it.

The other open item is that in drm/msm the hardware only uses 49 bits of the
address space but arm-smmu expects the address to be sign extended all the way
to 64 bits. This isn't a problem normally unless you look at the hardware
registers that contain a IOVA and then the upper bits will be zero. I opted to
restrict the internal drm/msm IOVA range to only 49 bits and then sign extend
right before calling iommu_map / iommu_unmap. This is a bit wonky but I thought
that matching the hardware would be less confusing when debugging a hang.

[1] https://lists.linuxfoundation.org/pipermail/iommu/2020-May/044537.html
[2] https://patchwork.kernel.org/patch/11482591/


Jordan Crouse (6):
  iommu/arm-smmu: Pass io-pgtable config to implementation specific
    function
  iommu/arm-smmu: Add support for split pagetables
  dt-bindings: arm-smmu: Add compatible string for Adreno GPU SMMU
  iommu/arm-smmu: Add implementation for the adreno GPU SMMU
  drm/msm: Set the global virtual address range from the IOMMU domain
  arm6: dts: qcom: sm845: Set the compatible string for the GPU SMMU

 .../devicetree/bindings/iommu/arm,smmu.yaml   |  4 ++
 arch/arm64/boot/dts/qcom/sdm845.dtsi          |  2 +-
 drivers/gpu/drm/msm/adreno/adreno_gpu.c       | 13 ++++++-
 drivers/gpu/drm/msm/msm_iommu.c               |  7 ++++
 drivers/iommu/arm-smmu-impl.c                 |  6 ++-
 drivers/iommu/arm-smmu-qcom.c                 | 38 ++++++++++++++++++-
 drivers/iommu/arm-smmu.c                      | 32 +++++++++++-----
 drivers/iommu/arm-smmu.h                      | 29 ++++++++++----
 8 files changed, 108 insertions(+), 23 deletions(-)

-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply

* [GIT PULL 4/4] ARM: DT changes for v5.8
From: Arnd Bergmann @ 2020-06-04 20:56 UTC (permalink / raw)
  To: Linus Torvalds, SoC Team, Linux ARM, Linux Kernel Mailing List
In-Reply-To: <CAK8P3a2fCyYgoexi6NiAY2cch5C-7EEkNGy6PJGxjJ-2yMndLA@mail.gmail.com>

The following changes since commit 0e698dfa282211e414076f9dc7e83c1c288314fd:

  Linux 5.7-rc4 (2020-05-03 14:56:04 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git tags/arm-dt-5.8

for you to fetch changes up to 9ad249abe7b8f6f0d2d876bde860b1c511d71d7b:

  Merge tag 'zynqmp-dt-for-v5.8' of
https://github.com/Xilinx/linux-xlnx into arm/dt (2020-06-02 20:45:53
+0200)

----------------------------------------------------------------
ARM: DT changes for v5.8

This is the set of device tree changes, mostly covering new
hardware support, with 577 patches touching a little over 500
files.

There are five new Arm SoCs supported in this release, all of
them for existing SoC families:

 - Realtek RTD1195, RTD1395 and RTD1619 -- three SoCs used in
   both NAS devices and Android Set-top-box designs, along
   with the "Horseradish", "Lion Skin" and "Mjolnir" reference
   platforms; the Mele X1000 and Xnano X5 set-top-boxes and
   the Banana Pi BPi-M4 single-board computer.

 - Renesas RZ/G1H (r8a7742) -- a high-end 32-bit industrial SoC
   and the iW-RainboW-G21D-Qseven-RZG1H board/SoM

 - Rockchips RK3326 -- low-end 64-bit SoC along with the
   Odroid-GO Advance game console

Newly added machines on already supported SoCs are:

 - AMLogic S905D based Smartlabs SML-5442TW TV box

 - AMLogic S905X3 based ODROID-C4 SBC

 - AMLogic S922XH based Beelink GT-King Pro TV box

 - Allwinner A20 based Olimex A20-OLinuXino-LIME-eMMC SBC

 - Aspeed ast2500 based BMCs in Facebook x86 "Yosemite V2"
   and YADRO OpenPower P9 "Nicole"

 - Marvell Kirkwood based Check Point L-50 router

 - Mediatek MT8173 based Elm/Hana Chromebook laptops

 - Microchip SAMA5D2 "Industrial Connectivity Platform"
   reference board

 - NXP i.MX8m based Beacon i.MX8m-Mini SoM development kit

 - Octavo OSDMP15x based Linux Automation MC-1 development board

 - Qualcomm SDM630 based Xiaomi Redmi Note 7 phone

 - Realtek RTD1295 based Xnano X5 TV Box

 - STMicroelectronics STM32MP1 based Stinger96 single-board
   computer and IoT Box

 - Samsung Exynos4210 based based Samsung Galaxy S2 phone

 - Socionext Uniphier based Akebi96 SBC

 - TI Keystone based K2G Evaluation board

 - TI am5729 based Beaglebone-AI development board

Include device descriptions for additional hardware support in existing
SoCs and machines based on all major SoC platforms:

 - AMlogic Meson

 - Allwinner sunxi

 - Arm Juno/VFP/Vexpress/Integrator

 - Broadcom bcm283x/bcm2711

 - Hisilicon hi6220

 - Marvell EBU

 - Mediatek MT27xx, MT76xx, MT81xx and MT67xx

 - Microchip SAMA5D2

 - NXP i.MX6/i.MX7/i.MX8 and Layerscape

 - Nvidia Tegra

 - Qualcomm Snapdragon

 - Renesas r8a77961, r8a7791

 - Rockchips RK32xx/RK33xx

 - ST-Ericsson ux500

 - STMicroelectronics SMT32

 - Samsung Exynos and S5PV210

 - Socionext Uniphier

 - TI OMAP5/DRA7 and Keystone

Signed-off-by: Arnd Bergmann <arnd@arndb.de>

----------------------------------------------------------------
Abhishek Sahu (1):
      ARM: dts: qcom: ipq4019: fix high resolution timer

Adam Ford (1):
      arm64: dts: imx: Add Beacon i.MX8m-Mini development kit

Ahmad Fatoum (8):
      ARM: dts: stm32: enable stm32mp157's &gpu by default
      ARM: dts: stm32: preset stm32mp15x video #address- and #size-cells
      ARM: dts: stm32: remove now redundant STM32MP15x video cell sizes
      ARM: dts: stm32: use uniform label names for sleep pinctrl phandles
      ARM: dts: stm32: use uniform node names for sleep pinctrl groups
      dt-bindings: add vendor prefix for Linux Automation GmbH
      ARM: dts: stm32: add STM32MP1-based Linux Automation MC-1 board
      dt-bindings: arm: stm32: document lxa,stm32mp157c-mc1 compatible

Alain Volmat (4):
      dts: arm: stih418: Fix complain about IRQ_TYPE_NONE usage
      dts: arm: stih407-family: remove duplicated rng nodes
      ARM: dts: stm32: use st,stm32mp15-i2c compatible for stm32mp151
      ARM: dts: stm32: add Fast Mode Plus info in I2C nodes of stm32mp151

Alex Elder (2):
      arm64: dts: sdm845: add IPA iommus property
      arm64: dts: qcom: sc7180: add IPA information

Alexander Filippov (2):
      ARM: dts: aspeed: ast2400: Add video engine support
      ARM: dts: aspeed: Add YADRO Nicole BMC

Alexandre Belloni (4):
      ARM: dts: at91: sama5d3: switch to new clock bindings
      ARM: dts: at91: at91sam9n12: switch to new clock bindings
      ARM: dts: at91: at91sam9g45: switch to new clock bindings
      ARM: dts: at91: rm9200: switch to new clock bindings

Alexey Minnekhanov (2):
      dt-bindings: arm: qcom: Add sdm630 and sdm660 SoCs
      arm64: dts: qcom: Add Xiaomi Redmi Note 7 (lavender)

Amit Kucheria (5):
      dt-bindings: arm: cpus: Add kryo468 compatible
      arm64: dts: qcom: sc7180: Fix cpu compatible
      arm64: dts: qcom: msm8916: remove unit name for thermal trip points
      arm64: dts: qcom: msm8996: remove unit name for thermal trip points
      arm64: dts: qcom: msm8998: remove unit name for thermal trip points

Andre Przywara (17):
      arm64: dts: fvp/juno: Fix node address fields
      arm64: dts: fvp: Move fixed devices out of bus node
      arm64: dts: vexpress: Move fixed devices out of bus node
      arm64: dts: fvp: Move fixed clocks out of bus node
      arm64: dts: juno: Move fixed devices out of bus node
      arm64: dts: juno: Fix mem-timer
      arm64: dts: fvp: Fix GIC compatible names
      arm64: dts: juno: Fix GIC child nodes
      arm64: dts: fvp: Fix GIC child nodes
      arm64: dts: fvp: Fix ITS node names and #msi-cells
      arm64: dts: juno: Use proper DT node name for USB
      arm64: dts: fvp/juno: Fix serial node names
      arm64: dts: fvp: Fix SMMU DT node
      arm64: dts: fvp/juno: Fix bus node names
      arm64: dts: juno: Fix GPU interrupt order
      arm64: dts: vexpress: Fix VExpress LED names
      arm64: dts: juno: Fix SCPI shared mem node name

Andreas Färber (33):
      dt-bindings: arm: realtek: Add RTD1195 and MeLE X1000
      ARM: dts: Prepare Realtek RTD1195 and MeLE X1000
      ARM: dts: rtd1195: Exclude boot ROM from memory ranges
      ARM: dts: rtd1195: Introduce r-bus
      dt-bindings: arm: realtek: Add Realtek Horseradish EVB
      ARM: dts: rtd1195: Add Realtek Horseradish EVB
      arm64: dts: realtek: rtd129x: Fix GIC CPU masks for RTD1293
      arm64: dts: realtek: rtd129x: Use reserved-memory for RPC regions
      arm64: dts: realtek: rtd129x: Introduce r-bus
      arm64: dts: realtek: rtd129x: Carve out boot ROM from memory
      dt-bindings: arm: realtek: Add RTD1395 and Banana Pi BPI-M4
      arm64: dts: realtek: Add RTD1395 and BPi-M4
      dt-bindings: arm: realtek: Add Realtek Lion Skin EVB
      arm64: dts: realtek: rtd1395: Add Realtek Lion Skin EVB
      arm64: dts: realtek: rtd16xx: Carve out boot ROM from memory
      arm64: dts: realtek: rtd16xx: Add memory reservations
      dt-bindings: vendor-prefixes: Add Xnano
      dt-bindings: arm: realtek: Add Xnano X5
      arm64: dts: realtek: rtd1295: Add Xnano X5
      ARM: dts: rtd1195: Introduce iso and misc syscon
      arm64: dts: realtek: rtd129x: Introduce CRT, iso and misc syscon
      arm64: dts: realtek: rtd139x: Introduce CRT, iso and misc syscon
      arm64: dts: realtek: rtd16xx: Introduce iso and misc syscon
      ARM: dts: rtd1195: Add CRT syscon node
      dt-bindings: reset: Add Realtek RTD1195
      ARM: dts: rtd1195: Add reset nodes
      ARM: dts: rtd1195: Add UART resets
      arm64: dts: realtek: rtd16xx: Add CRT syscon node
      ARM: dts: rtd1195: Add SB2 and SCPU Wrapper syscon nodes
      arm64: dts: realtek: rtd129x: Add SB2 and SCPU Wrapper syscon nodes
      arm64: dts: realtek: rtd139x: Add SB2 and SCPU Wrapper syscon nodes
      arm64: dts: realtek: rtd16xx: Add SB2 and SCPU Wrapper syscon nodes
      dt-bindings: reset: rtd1295: Add SB2 reset

Andreas Kemnade (1):
      ARM: dts: e60k02: add interrupt for PMIC

Andrew Geissler (4):
      ARM: dts: aspeed: witherspoon: Add gpio line names
      ARM: dts: aspeed: romulus: Add gpio line names
      ARM: dts: aspeed: zaius: Add gpio line names
      ARM: dts: aspeed: rainier: Add gpio line names

Andrew Jeffery (3):
      ARM: dts: aspeed: rainier: Enable VUART2
      ARM: dts: aspeed: tacoma: Enable the second VUART
      ARM: dts: aspeed: Change KCS nodes to v2 binding

Anson Huang (17):
      arm64: dts: imx8mm-evk: Add secondary cpus supply
      arm64: dts: imx8mn-ddr4-evk: Add secondary cpus supply
      ARM: dts: imx7: Correct CPU supply name
      ARM: dts: imx7d: Add cpu1 supply
      arm64: dts: imx8mp: Add thermal zones support
      arm64: dts: imx8qxp-mek: Sort labels alphabetically
      arm64: dts: imx8qxp-mek: Add PMIC thermal zone support
      arm64: dts: imx8mn: Update VDD_ARM 1.2GHz setpoint voltage
      arm64: dts: imx8mq: Add src node interrupts
      arm64: dts: imx8mp: Add src node interrupts
      ARM: dts: imx51: Add src node interrupt
      ARM: dts: imx53: Add src node interrupt
      ARM: dts: imx6qdl: Use nvmem interface to get fuse data
      ARM: dts: imx6sl: Use nvmem interface to get fuse data
      ARM: dts: imx: make src node name generic
      ARM: dts: imx50: Add src node interrupt
      ARM: dts: imx5: make src node name generic

Ansuel Smith (1):
      ARM: dts: qcom: add scm definition to ipq806x

Arnaud Pouliquen (1):
      ARM: dts: stm32: add cortex-M4 pdds management in Cortex-M4 node

Arnd Bergmann (42):
      Merge tag 'sti-dt-for-v5.8-round1' of
git://git.kernel.org/.../pchotard/sti into arm/dt
      Merge tag 'versatile-dts-v5.8-1' of
git://git.kernel.org/.../linusw/linux-integrator into arm/dt
      Merge tag 'renesas-arm-dt-for-v5.8-tag1' of
git://git.kernel.org/.../geert/renesas-devel into arm/dt
      Merge tag 'renesas-dt-bindings-for-v5.8-tag1' of
git://git.kernel.org/.../geert/renesas-devel into arm/dt
      Merge tag 'omap-for-v5.8/dt-signed' of
git://git.kernel.org/.../tmlind/linux-omap into arm/dt
      Merge tag 'aspeed-5.8-devicetree' of
git://git.kernel.org/.../joel/aspeed into arm/dt
      Merge tag 'realtek-dt-for-5.8' of
git://git.kernel.org/.../afaerber/linux-realtek into arm/dt
      Merge tag 'hisi-arm64-dt-for-5.8' of
git://github.com/hisilicon/linux-hisi into arm/dt
      Merge tag 'arm-soc/for-5.8/devicetree' of
https://github.com/Broadcom/stblinux into arm/dt
      Merge tag 'samsung-dt-5.8' of
git://git.kernel.org/.../krzk/linux into arm/dt
      Merge tag 'stm32-dt-for-v5.8-1' of
git://git.kernel.org/.../atorgue/stm32 into arm/dt
      Merge tag 'renesas-arm-dt-for-v5.8-tag2' of
git://git.kernel.org/.../geert/renesas-devel into arm/dt
      Merge tag 'renesas-dt-bindings-for-v5.8-tag2' of
git://git.kernel.org/.../geert/renesas-devel into arm/dt
      Merge tag 'ti-k3-dt-for-v5.8' of
git://git.kernel.org/.../kristo/linux into arm/dt
      Merge tag 'tegra-for-5.8-dt-bindings' of
git://git.kernel.org/.../tegra/linux into arm/dt
      Merge tag 'tegra-for-5.8-arm-dt' of
git://git.kernel.org/.../tegra/linux into arm/dt
      Merge tag 'sunxi-dt-for-5.8-1' of
git://git.kernel.org/.../sunxi/linux into arm/dt
      Merge tag 'socfpga_dts_update_for_v5.8' of
git://git.kernel.org/.../dinguyen/linux into arm/dt
      Merge tag 'v5.7-next-dts32' of
git://git.kernel.org/.../matthias.bgg/linux into arm/dt
      Merge tag 'ux500-dts-v5.8' of
git://git.kernel.org/.../linusw/linux-stericsson into arm/dt
      Merge tag 'v5.7-next-dts64' of
git://git.kernel.org/.../matthias.bgg/linux into arm/dt
      Merge tag 'uniphier-dt-v5.8' of
git://git.kernel.org/.../masahiroy/linux-uniphier into arm/dt
      Merge tag 'uniphier-dt64-v5.8' of
git://git.kernel.org/.../masahiroy/linux-uniphier into arm/dt
      Merge tag 'at91-5.8-dt' of git://git.kernel.org/.../at91/linux into arm/dt
      Merge tag 'qcom-arm64-for-5.8' of
git://git.kernel.org/.../qcom/linux into arm/dt
      Merge tag 'qcom-dts-for-5.8' of
git://git.kernel.org/.../qcom/linux into arm/dt
      Merge tag 'juno-updates-5.8' of
git://git.kernel.org/.../sudeep.holla/linux into arm/dt
      Merge tag 'mvebu-dt-5.8-1' of
git://git.infradead.org/linux-mvebu into arm/dt
      Merge tag 'mvebu-dt64-5.8-1' of
git://git.infradead.org/linux-mvebu into arm/dt
      Merge tag 'v5.8-rockchip-dts64-1' of
git://git.kernel.org/.../mmind/linux-rockchip into arm/dt
      Merge tag 'v5.8-rockchip-dts32-1' of
git://git.kernel.org/.../mmind/linux-rockchip into arm/dt
      Merge branch 'mmp/fixes' into arm/dt
      Merge tag 'amlogic-dt' of
git://git.kernel.org/.../khilman/linux-amlogic into arm/dt
      Merge tag 'amlogic-dt64' of
git://git.kernel.org/.../khilman/linux-amlogic into arm/dt
      Merge tag 'tegra-for-5.8-arm64-dt-v2' of
git://git.kernel.org/.../tegra/linux into arm/dt
      Merge tag 'imx-bindings-5.8' of
git://git.kernel.org/.../shawnguo/linux into arm/dt
      Merge tag 'imx-dt-5.8' of
git://git.kernel.org/.../shawnguo/linux into arm/dt
      Merge tag 'imx-dt64-5.8' of
git://git.kernel.org/.../shawnguo/linux into arm/dt
      Merge tag 'v5.7-next-dts64.2' of
git://git.kernel.org/.../matthias.bgg/linux into arm/dt
      Merge tag 'keystone_dts_for_5.8' of
git://git.kernel.org/.../ssantosh/linux-keystone into arm/dt
      Merge tag 'keystone_dts_for_5.7' of
git://git.kernel.org/.../ssantosh/linux-keystone into arm/dt
      Merge tag 'zynqmp-dt-for-v5.8' of
https://github.com/Xilinx/linux-xlnx into arm/dt

Baruch Siach (2):
      arm64: dts: marvell: drop i2c timeout-ms property
      ARM: dts: marvell: drop i2c timeout-ms property

Ben Pai (2):
      ARM: dts: aspeed: mihawk: Change the name of leds
      ARM: dts: aspeed: mihawk: add aliases for i2c

Biao Huang (1):
      arm64: dts: mt2712: add ethernet device node

Bjorn Andersson (9):
      arm64: dts: qcom: qcs404: Add USB devices and PHYs
      arm64: dts: qcom: sm8250: Add rpmhpd node
      arm64: dts: qcom: sm8250: Fix PDC compatible and reg
      arm64: dts: qcom: db820c: Add pmi8994 RPM regulators
      arm64: dts: qcom: db820c: Fix invalid pm8994 supplies
      arm64: dts: qcom: c630: Add WiFi node
      arm64: dts: qcom: c630: Specify UFS device reset
      arm64: dts: qcom: msm8996: Make GPU node control GPU_GX GDSC
      arm64: dts: qcom: sc7180: Fix ETMv4 power management patch

Boris Brezillon (1):
      arm64: dts: rockchip: Define the rockchip Video Decoder node on rk3399

Brian J. Tarricone (1):
      ARM: dts: kirkwood: ReadyNAS NV+v2: Add LCD panel

Bryan O'Donoghue (7):
      arm64: dts: qcom: qcs404-evb: Define VBUS pins
      arm64: dts: qcom: qcs404-evb: Define USB ID pin
      arm64: dts: qcom: qcs404-evb: Describe external VBUS regulator
      arm64: dts: qcom: qcs404-evb: Raise vreg_l12_3p3 minimum voltage
      arm64: dts: qcom: qcs404-evb: Enable USB controllers
      arm64: dts: qcom: sm8250-mtp: Add pm8150, pm8150l and pm8009
      arm64: dts: qcom: sm8250: Add UFS controller and PHY

Christian Hewitt (9):
      dt-bindings: add vendor prefix for Smartlabs LLC
      dt-bindings: arm: amlogic: add support for the Smartlabs SML-5442TW
      arm64: dts: meson: add support for the Smartlabs SML-5442TW
      arm64: dts: meson: add ethernet interrupt to wetek dtsi
      arm64: dts: meson: convert ugoos-am6 to common w400 dtsi
      dt-bindings: arm: amlogic: add support for the Beelink GT-King
      arm64: dts: meson-g12b-gtking: add initial device-tree
      dt-bindings: arm: amlogic: add support for the Beelink GT-King Pro
      arm64: dts: meson-g12b-gtking-pro: add initial device-tree

Chunfeng Yun (1):
      arm64: dts: mt2712: use non-empty ranges for usb-phy

Chunyan Zhang (2):
      arm64: dts: Add SC9863A clock nodes
      arm64: dts: Add SC9863A emmc and sd card nodes

Claudiu Beznea (1):
      ARM: dts: at91: sama5d27_som1: Add SPI NOR flash mapping

Clément Péron (6):
      arm64: dts: allwinner: h6: Enable CPU opp tables for Beelink GS1
      arm64: dts: allwinner: h6: Enable CPU opp tables for Orange Pi 3
      arm64: dts: allwinner: Sort Pine H64 device-tree nodes
      arm64: dts: allwinner: h6: Enable CPU opp tables for Pine H64
      arm64: dts: allwinner: h6: add voltage range to OPP table
      arm64: dts: allwinner: h6: Enable CPU opp tables for Tanix TX6

Codrin Ciubotariu (2):
      dt-bindings: ARM: Document SAMA5D2-ICP
      ARM: dts: at91: Configure I2C SCL gpio as open drain

Craig Tatlor (1):
      arm64: dts: qcom: Add SDM660 SoC support

Cristian Birsan (1):
      ARM: dts: at91: sama5d2-icp: add SAMA5D2-ICP

Cyrille Pitchen (1):
      ARM: dts: at91: sama5d2_xplained: Add QSPI0 + SPI NOR memory nodes

Daniele Debernardi (5):
      ARM: dts: qcom: msm8974-klte: Add pma8084 regulator nodes
      ARM: dts: qcom: msm8974-klte: Remove inherited vreg_boost node
      ARM: dts: qcom: msm8974-klte: Add gpio-keys nodes
      ARM: dts: qcom: msm8974-klte: Add sdhci1 node
      ARM: dts: qcom: msm8974-klte: Add USB node

Dmitry Osipenko (3):
      ARM: dts: tegra30: beaver: Set up voltage regulators for DVFS
      ARM: dts: tegra30: beaver: Add CPU Operating Performance Points
      dt-bindings: cpufreq: Add binding for NVIDIA Tegra20/30

Dongjin Kim (1):
      arm64: dts: meson-sm1: add support for Hardkernel ODROID-C4

Douglas Anderson (3):
      arm64: dts: qcom: sc7180: Swap order of gpucc and sdhc_2
      arm64: dts: sdm845: Add "no-hpd" to sn65dsi86 on cheza
      arm64: dts: qcom: sc7180: Add "no-map" to cmd_db reserved area

Eddie James (9):
      ARM: dts: aspeed: ast2500: Add SCU interrupt controller
      ARM: dts: aspeed: ast2600: Add SCU interrupt controllers
      ARM: dts: aspeed: tacoma: Add gpio-key definitions
      ARM: dts: aspeed: ast2600: Set arch timer always-on
      ARM: dts: aspeed: tacoma: Add iio-hwmon nodes for IIO devices
      ARM: dts: aspeed: tacoma: Add TPM
      ARM: dts: aspeed: ast2500: Add XDMA Engine
      ARM: dts: aspeed: ast2600: Add XDMA Engine
      ARM: dts: Aspeed: AST2600: Add XDMA PCI-E root control reset

Enric Balletbo i Serra (1):
      arm64: dts: mt8173: Fix mmsys node name

Etienne Carriere (1):
      ARM: dts: stm32: bump PSCI to version 1.0 on stm32mp15x

Evan Green (1):
      arm64: dts: qcom: sc7180: Include interconnect definitions

Fabio Estevam (2):
      arm64: dts: imx8qxp-mek: Do not use underscore in node name
      ARM: dts: imx50: Remove unused iomuxc-gpr node

Fabrice Gasnier (3):
      ARM: dts: stm32: fix a typo for DAC io-channel-cells on stm32f429
      ARM: dts: stm32: fix a typo for DAC io-channel-cells on stm32h743
      ARM: dts: stm32: fix a typo for DAC io-channel-cells on stm32mp15

Florian Fainelli (1):
      Merge tag 'tags/bcm2835-dt-next-2020-03-27' into devicetree/next

Fugang Duan (1):
      arm64: dts: imx8mp: add "fsl,imx6sx-fec" compatible string

Geert Uytterhoeven (5):
      arm64: dts: renesas: r8a77961: Add SCIF and HSCIF nodes
      ARM: dts: r8a7791: Add TPU device node
      ARM: dts: r8a7791: Add PWM device nodes
      ARM: dts: shmobile: Update CMT1 compatible values
      Merge tag 'renesas-r8a7742-dt-binding-defs-tag' into
renesas-arm-dt-for-v5.8

Guenter Roeck (1):
      ARM: dts: aspeed: tacoma: Enable eMMC controller

Guido Günther (2):
      arm64: dts: imx8mq-librem5-devkit: Use 0.9V for VDD_GPU
      arm64: dts: imx8mq-librem5-devkit: Don't use underscore in node name

Heiko Stuebner (3):
      arm64: dts: rockchip: add core devicetree for rk3326
      dt-bindings: Add binding for Hardkernel Odroid Go Advance
      arm64: dts: rockchip: add Odroid Advance Go

Hsin-Hsiung Wang (1):
      arm64: dts: mt6358: add PMIC MT6358 related nodes

Hsin-Yi Wang (6):
      arm64: dts: mt8173: Add gce setting in mmsys and display node
      dt-bindings: arm64: dts: mediatek: Add mt8173 elm and hana
      arm64: dts: mt8173: add uart aliases
      arm64: dts: mt8173: fix unit name warnings
      arm64: dts: mediatek: add mt8173 elm and hana board
      arm64: dts: mt8173: fix mdp aliases property name

Igor Opaniuk (2):
      dt-bindings: arm: fsl: add nxp based toradex colibri bindings
      ARM: dts: colibri: introduce device trees with UHS-I support

Ikjoon Jang (1):
      arm64: dts: mt8183: adjust cpuidle target residency

Iskren Chernev (1):
      ARM: dts: qcom: msm8974-klte: Add max77826 pmic node

Jae Hyun Yoo (1):
      ARM: dts: aspeed: ast2600: Add Video Engine node

James Tai (2):
      dt-bindings: arm: realtek: Document RTD1619 and Realtek Mjolnir EVB
      arm64: dts: realtek: Add RTD1619 SoC and Realtek Mjolnir EVB

Jason Kridner (1):
      ARM: dts: am5729: beaglebone-ai: adding device tree

Jernej Skrabec (2):
      arm64: dts: allwinner: h6: orangepi: Add gpio power supply
      arm64: dts: allwinner: h6: orangepi: Disable OTG mode

Jerome Brunet (14):
      arm64: dts: meson: kvim3: move hdmi to tdm a
      dt-bindings: reset: meson: add gxl internal dac reset
      arm64: dts: meson-gx: add aiu support
      arm64: dts: meson: p230-q200: add initial audio playback support
      arm64: dts: meson: libretech-cc: add initial audio playback support
      arm64: dts: meson: libretech-ac: add initial audio playback support
      arm64: dts: meson: libretech-pc: add initial audio playback support
      arm64: dts: meson: gxl: add acodec support
      arm64: dts: meson: p230-q200: add internal DAC support
      arm64: dts: meson: libretech-cc: add internal DAC support
      arm64: dts: meson: libretech-ac: add internal DAC support
      arm64: dts: meson: libretech-pc: add internal DAC support
      arm64: dts: meson: g12: add internal DAC
      arm64: dts: meson: g12: add internal DAC glue

Joel Stanley (5):
      ARM: dts: aspeed: ast2600evb: Enable FSI master
      ARM: dts: aspeed: rainier: Add host FSI description
      ARM: dts: aspeed: tacoma: Add GPIOs for FSI
      ARM: dts: aspeed: tacoma: Add gpio line names
      ARM: dts: aspeed: rainier: Add VGA reserved memory region

Johan Jonker (19):
      arm64: dts: rockchip: remove bus-width from mmc nodes in rk3308-roc-cc
      arm64: dts: rockchip: remove #sound-dai-cells from &i2s1 node of
rk3399-pinebook-pro.dts
      arm64: dts: rockchip: remove #sound-dai-cells from &spdif node
of rk3399-hugsun-x99.dts
      arm64: dts: rockchip: replace RK_FUNC defines in rk3326-odroid-go2
      include: dt-bindings: rockchip: remove unused defines
      arm64: dts: rockchip: fix phy nodename for rk3328
      arm64: dts: rockchip: fix rtl8211f nodename for rk3328 Beelink A1
      arm64: dts: rockchip: fix rtl8211e nodename for rk3399-nanopi4
      arm64: dts: rockchip: fix &pinctrl phy sub nodename for rk3399-nanopi4
      arm64: dts: rockchip: fix rtl8211e nodename for rk3399-orangepi
      arm64: dts: rockchip: fix &pinctrl phy sub nodename for rk3399-orangepi
      arm64: dts: rockchip: fix defines in pd_vio node for rk3399
      arm64: dts: rockchip: rename and label gpio-led subnodes
      arm64: dts: rockchip: remove disable-wp from rk3308-roc-cc emmc node
      ARM: dts: rockchip: rename and label gpio-led subnodes
      ARM: dts: rockchip: remove identical #include from rk3288.dtsi
      arm64: dts: rockchip: add bus-width properties to mmc nodes for px30
      arm64: dts: rockchip: fix pd_tcpc0 and pd_tcpc1 node position on rk3399
      arm64: dts: rockchip: fix pinctrl-names for gpio-leds node on
rk3326-odroid-go2

Jon Hunter (3):
      arm64: tegra: Fix ethernet phy-mode for Jetson Xavier
      arm64: tegra: Allow the PMIC RTC to wakeup Jetson Xavier
      arm64: tegra: Make the RTC a wakeup source on Jetson Nano and TX1

Jonathan Bakker (17):
      ARM: dts: s5pv210: Add helper define for sleep gpio config
      ARM: dts: s5pv210: Add sleep GPIO configuration for Fascinate4G
      ARM: dts: s5pv210: Add sleep GPIO configuration for Galaxy S
      ARM: dts: s5pv210: Correct gpi pinctrl node name
      ARM: dts: s5pv210: Set keep-power-in-suspend for SDHCI1 on Aries
      ARM: dts: s5pv210: Disable pulls on GPIO I2C adapters for Aries
      ARM: dts: s5pv210: Add WM8994 support to Aries boards
      ARM: dts: s5pv210: Add FSA9480 support to Aries boards
      ARM: dts: s5pv210: Add touchkey support to Aries boards
      ARM: dts: s5pv210: Add panel support to Aries boards
      ARM: dts: s5pv210: Add remaining i2c-gpio adapters to Aries boards
      ARM: dts: s5pv210: Disable pull for vibrator enable GPIO on Aries boards
      ARM: dts: s5pv210: Add an ADC node
      ARM: dts: s5pv210: Enable ADC on Aries boards
      ARM: dts: s5pv210: Assign clocks to MMC devices on Aries boards
      ARM: dts: s5pv210: Correct FIMC definitions
      ARM: dts: s5pv210: Set MAX8998 GPIO pulls on Aries boards

Jonathan Marek (1):
      arm64: dts: qcom: fix pm8150 gpio interrupts

Joseph Lo (2):
      dt-bindings: memory: tegra: Add external memory controller
binding for Tegra210
      arm64: tegra: Add external memory controller node for Tegra210

Justin Swartz (3):
      ARM: dts: enable WLAN for Mecer Xtreme Mini S6
      ARM: dts: remove disable-wp from rk3229-xms6 emmc
      ARM: dts: rockchip: add rga node for rk322x

Jyri Sarha (3):
      ARM: dts: keystone-k2g: Add DSS node
      ARM: dts: keystone-k2g-evm: add HDMI video support
      arm64: dts: ti: am654: Add DSS node

Kalyani Akula (1):
      arm64: zynqmp: Add Xilinx AES node

Keerthy (2):
      arm64: dts: ti: am65-wakeup: Add VTM node
      arm64: dts: ti: am654: Add thermal zones

Kevin Hilman (1):
      Merge branch 'reset/meson-gxl-dac' of
git://git.pengutronix.de/pza/linux into HEAD

Krishna Manikandan (1):
      arm64: dts: qcom: sc7180: modify assigned clocks for sc7180 target

Krzysztof Kozlowski (1):
      ARM: dts: keystone: Rename "msmram" node to "sram"

Kuldeep Singh (2):
      arm64: dts: ls1012a: Add QSPI node properties
      arm: dts: ls1021atwr: Add QSPI node properties

Kunihiko Hayashi (5):
      ARM: dts: uniphier: Add XDMAC node
      arm64: dts: uniphier: Add XDMAC node
      ARM: dts: uniphier: Add ethernet aliases
      arm64: dts: uniphier: Add ethernet aliases
      arm64: dts: uniphier: Stabilize Ethernet RGMII mode of PXs3 ref board

Lad Prabhakar (13):
      dt-bindings: power: rcar-sysc: Add r8a7742 power domain index macros
      clk: renesas: Add r8a7742 CPG Core Clock Definitions
      dt-bindings: power: rcar-sysc: Document r8a7742 SYSC binding
      dt-bindings: reset: rcar-rst: Document r8a7742 reset module
      ARM: dts: r8a7742: Initial SoC device tree
      ARM: dts: r8a7742-iwg21m: Add iWave RZ/G1H Qseven SOM
      ARM: dts: r8a7742-iwg21d-q7: Add iWave G21D-Q7 board based on RZ/G1H
      ARM: dts: r8a7742: Add IRQC support
      ARM: dts: r8a7742: Add [H]SCIF{A|B} support
      ARM: dts: r8a7742: Add GPIO nodes
      arm64: dts: renesas: r8a774c0-cat874: Add support for
AISTARVISION MIPI Adapter V2.1
      dt-bindings: arm: renesas: Document iW-RainboW-G21M-Qseven-RZG1H SoM
      dt-bindings: arm: renesas: Document iW-RainboW-G21D-Qseven-RZG1H board

Linus Walleij (3):
      ARM: dts: Add devicetree for Integrator/AP with IM-PD1
      ARM: dts: ux500: samsung-skomer: Add magnetometer
      ARM: dts: ux500: Add touchscreen to the Skomer

Loic Poulain (5):
      arm64: dts: qcom: msm8916: Add i2c-qcom-cci node
      arm64: dts: qcom: apq8016-sbc: Add CCI/Sensor nodes
      arm64: dts: hikey960: pinctrl: Fix spi2/spi3 pinconf
      arm64: dts: msm8996: Fix CSI IRQ types
      arch: arm64: dts: msm8996: Add CCI node

Lokesh Vutla (1):
      ARM: dts: Add 32KHz clock as default clock source

Long Cheng (1):
      arm: dts: mt2712: add uart APDMA to device tree

Lubomir Rintel (15):
      ARM: dts: kirkwood: Fix interrupt controller node name
      ARM: dts: dove: Fix interrupt controller node name
      ARM: dts: pxa168: Add missing address/size cells to i2c nodes
      ARM: dts: pxa168: Fix the gpio interrupt cell number
      ARM: dts: pxa3xx: Fix up encoding of the /gpio interrupts property
      ARM: dts: pxa910: Fix the gpio interrupt cell number
      ARM: dts: pxa*: Fix up encoding of the /rtc interrupts property
      ARM: dts: mmp*: Fix up encoding of the /rtc interrupts property
      ARM: dts: mmp3: Fix L2 cache controller node name
      ARM: dts: mmp3: Fix USB & USB PHY node names
      ARM: dts: berlin*: Fix up the SDHCI node names
      ARM: dts: mmp3: Add the fifth SD HCI
      ARM: dts: mmp3: Use the MMP3 compatible string for /clocks
      ARM: dts: mmp3-dell-ariel: Fix the SPI devices
      ARM: dts: mmp3: Drop usb-nop-xceiv from HSIC phy

Ludovic Desroches (6):
      ARM: dts: at91: sama5d2_ptc_ek: fix sdmmc0 node description
      ARM: dts: at91: sama5d2_ptc_ek: fix vbus pin
      ARM: dts: at91: sama5d2_ptc_ek: add PB_USER as wakeup source
      ARM: dts: at91: sama5d27_som1_ek: enable i2c0
      ARM: dts: at91: sama5d27_som1_ek: add an alias for i2c0
      ARM: dts: at91: at91-sama5d27_som1: Enable eeprom device

Manikandan Elumalai (1):
      ARM: dts: aspeed: Adding Facebook Yosemite V2 BMC

Manivannan Sadhasivam (10):
      dt-bindings: Add vendor prefix for Shiratech Solutions
      ARM: dts: stm32: Add missing pinctrl entries for STM32MP15
      dt-bindings: arm: stm32: Document Stinger96 compatible
      ARM: dts: stm32: Add Stinger96 board support
      dt-bindings: arm: stm32: Document IoT Box compatible
      ARM: dts: stm32: Add IoT Box board support
      dt-bindings: i2c: Document I2C controller binding for MT6797 SoC
      arm64: dts: mediatek: Add I2C support for MT6797 SoC
      arm64: dts: mediatek: Enable I2C support for 96Boards X20
Development board
      arm64: dts: mediatek: Switch to SPDX license identifier for MT6797 SoC

Marco Felsch (1):
      dt-bindings: arm: imx: add kontron smarc to schema

Marek Behún (4):
      arm64: dts: marvell: armada-37xx: Set pcie_reset_pin to gpio function
      arm64: dts: marvell: armada-37xx: Move PCIe comphy handle property
      arm64: dts: armada-3720-turris-mox: forbid SDR104 on SDIO for FCC purposes
      arm64: dts: armada-3720-turris-mox: fix SFP binding

Marek Szyprowski (9):
      ARM: dts: exynos: Enable Bluetooth support for Rinato board
      ARM: dts: exynos: Enable WLAN support for the Trats board
      ARM: dts: exynos: Fix GPIO polarity for thr GalaxyS3 CM36651 sensor's bus
      ARM: dts: exynos: Convert to new i2c-gpio bindings
      ARM: dts: exynos: Correct regulator names
      ARM: dts: exynos: Correct the MAX8997 interrupts on the Trats board
      ARM: dts: exynos: Remove useless address/size cells for mshc_0 on Rinato
      ARM: dts: exynos: Enable WLAN support for the Rinato board
      ARM: dts: exynos: Enable WLAN support for the UniversalC210 board

Marek Vasut (36):
      ARM: dts: imx6q-dhcom: Add DH 560-200 display unit support
      ARM: dts: stm32: Enable I2C2 on DHCOM PDK2 carrier board
      ARM: dts: stm32: Repair PMIC configuration on AV96
      ARM: dts: stm32: Repair PMIC interrupt on AV96
      ARM: dts: stm32: Add alternate pinmux for ethernet RGMII on stm32mp15
      ARM: dts: stm32: Repair ethernet operation on AV96
      ARM: dts: stm32: Add missing ethernet PHY reset on AV96
      ARM: dts: stm32: Add missing ethernet PHY skews on AV96
      ARM: dts: stm32: Add alternate pinmux for SDMMC pins on stm32mp15
      ARM: dts: stm32: Repair SDMMC1 operation on AV96
      ARM: dts: stm32: Add eMMC attached to SDMMC2 on AV96
      ARM: dts: stm32: Add QSPI NOR on AV96
      ARM: dts: stm32: Add configuration EEPROM on AV96
      ARM: dts: stm32: Enable WiFi on AV96
      ARM: dts: stm32: Add alternate pinmux for USART2 pins on stm32mp15
      ARM: dts: stm32: Enable Bluetooth on AV96
      ARM: dts: stm32: Add alternate pinmux for LTDC pins on stm32mp15
      ARM: dts: stm32: Add bindings for HDMI video on AV96
      ARM: dts: stm32: Add alternate pinmux for SAI2 pins on stm32mp15
      ARM: dts: stm32: Add bindings for audio on AV96
      ARM: dts: stm32: Add bindings for USB on AV96
      ARM: dts: stm32: Rename LEDs to match silkscreen on AV96
      ARM: dts: stm32: Add alternate pinmux for I2C2 pins
      ARM: dts: stm32: Repair I2C2 operation on AV96
      ARM: dts: stm32: Add alternate pinmux for FDCAN1 pins
      ARM: dts: stm32: Add bindings for FDCAN1 on AV96
      ARM: dts: stm32: Add alternate pinmux for FDCAN2 pins
      ARM: dts: stm32: Add bindings for FDCAN2 on AV96
      ARM: dts: stm32: Add alternate pinmux for ADC pins
      ARM: dts: stm32: Add bindings for ADC on AV96
      ARM: dts: stm32: Add alternate pinmux for SPI2 pins
      ARM: dts: stm32: Add bindings for SPI2 on AV96
      ARM: dts: stm32: Add GPIO keys for STM32MP1 DHCOM PDK2
      ARM: dts: stm32: Add GPIO LEDs for STM32MP1 DHCOM PDK2
      ARM: dts: stm32: Split SoC-independent parts of DHCOM SOM and PDK2
      ARM: dts: stm32: Split Avenger96 into DHCOR SoM and Avenger96 board

Martin Blumenstingl (5):
      arm64: dts: amlogic: use the new USB control driver for GXL and GXM
      ARM: dts: meson: add the gadget mode properties to the USB0 controller
      ARM: dts: meson8m2: Use the Meson8m2 specific USB2 PHY compatible
      ARM: dts: meson: Add the Ethernet "timing-adjustment" clock
      ARM: dts: meson: Switch existing boards with RGMII PHY to "rgmii-id"

Masahiro Yamada (2):
      ARM: dts: uniphier: add #address-cells and #size-cells to SPI nodes
      arm64: dts: uniphier: add #address-cells and #size-cells to SPI nodes

Masami Hiramatsu (2):
      dt-bindings: arm: Add Akebi96 board support
      arm64: dts: uniphier: Add support for Akebi96

Matt Porter (1):
      arm64: dts: imx8mm: specify #sound-dai-cells for SAI nodes

Matthew Barth (2):
      ARM: dts: aspeed: rainier: Set PCA9552 pin types
      ARM: dts: aspeed: rainier: Remove regulators

Matthias Brugger (1):
      arm64: dts: mt6797: Fix mmsys node name

Matthias Kaehlcke (1):
      arm64: dts: qcom: sc7180: Add interconnect paths for the video codec

Maulik Shah (2):
      arm64: dts: qcom: sc7180: Add cpuidle low power states
      arm64: dts: qcom: sc7180: Correct the pdc interrupt ranges

Maxime Ripard (1):
      arm64: dts: allwinner: h6: Add IOMMU

Michael Kao (1):
      arm64: dts: mt8173: fix cooling device range

Michael Srba (2):
      arm64: dts: qcom: msm8916: Disable coresight by default
      arm64: dts: qcom: msm8916-samsung-a3u: add nodes for display panel

Michael Walle (2):
      arm64: dts: freescale: sl28: enable LPUART1
      arm64: dts: ls1028a: sl28: keep switch port names consistent

Michal Simek (1):
      arm64: zynqmp: Fix GIC compatible property

Mike Leach (2):
      arm64: dts: qcom: msm8916: Add CTI options
      arm64: dts: hi6220: Add CTI options

Min Guo (1):
      arm: dts: mt2701: Add usb2 device nodes

Nagarjuna Kristam (1):
      arm64: tegra: Add XUDC node on Tegra194

Neil Armstrong (7):
      arm64: dts: meson: fixup SCP sram nodes
      arm64: dts: meson-g12b-ugoos-am6: fix board compatible
      arm64: dts: meson-gxbb-kii-pro: fix board compatible
      arm64: dts: meson: fix leds subnodes name
      arm64: dts: meson-g12b: move G12B thermal nodes to meson-g12b.dtsi
      arm64: dts: meson-sm1: add cpu thermal nodes
      dt-bindings: arm: amlogic: add odroid-c4 bindings

Nick Reitemeyer (1):
      ARM: dts: ux500: samsung-golden: Add magnetometer

Nicolas Saenz Julienne (3):
      ARM: dts: bcm2711: Update expgpio's GPIO labels
      ARM: dts: bcm2711: Add vmmc regulator in emmc2
      ARM: dts: bcm283x: Use firmware PM driver for V3D

Ondrej Jirman (3):
      arm64: dts: allwinner: h6: Add thermal trip points/cooling map
      arm64: dts: allwinner: h6: Add CPU Operating Performance Points table
      arm64: dts: allwinner: sun50i-a64: Add missing address/size-cells

Pali Rohár (1):
      arm64: dts: marvell: armada-37xx: Move PCIe max-link-speed property

Pascal Paillet (1):
      ARM: dts: stm32: Enable thermal sensor support on stm32mp15xx-dkx

Paul Cercueil (1):
      dt-bindings: arm: samsung: Add compatible string for the Galaxy S2

Pawel Dembicki (1):
      ARM: dts: kirkwood: Add Check Point L-50 board

Paweł Chmiel (1):
      ARM: dts: s5pv210: Add si470x FM radio to Galaxy S

Peng Fan (2):
      arm64: dts: imx8qxp: support scu mailbox channel
      arm64: dts: imx8m: assign clocks for A53

Petr Štetiar (1):
      arm64: dts: allwinner: a64: olinuxino: add user red LED

Qiang Yu (1):
      ARM: dts: sun8i-h3: add opp table for mali gpu

Rajendra Nayak (1):
      arm64: dts: qcom: db820c: Add vdd_gfx and tie it into mmcc

Rajeshwari (1):
      arm64: dts: qcom: sc7180: Changed polling mode in Thermal-zones node

Ricardo Cañuelo (1):
      ARM: dts: imx53-cx9020: Group port definitions for the dvi-converter

Rob Herring (2):
      ARM: tegra: Kill off "simple-panel" compatibles
      arm64: tegra: Kill off "simple-panel" compatibles

Robert Foss (3):
      arm64: dts: qcom: sdm845: Add i2c-qcom-cci node
      arm64: dts: qcom: sdm845-db845c: Add pm_8998 gpio names
      arm64: dts: qcom: sdm845-db845c: Add ov8856 & ov7251 camera nodes

Russell King (3):
      ARM: dts: imx6-sr-som: add ethernet PHY configuration
      arm64: dts: update SolidRun Armada 8040 phy interface types
      arm64: dts: add uDPU i2c bus recovery

Ryder Lee (2):
      arm64: dts: mt7622: add built-in Wi-Fi device nodes
      arm: dts: mt7623: add Mali-450 device node

Sai Prakash Ranjan (2):
      arm64: dts: qcom: sc7180: Add Coresight support
      arm64: dts: qcom: sc7180: Support ETMv4 power management

Samuel Holland (4):
      ARM: dts: sunxi: a83t: Add msgbox node
      ARM: dts: sunxi: h3/h5: Add msgbox node
      arm64: dts: allwinner: a64: Add msgbox node
      arm64: dts: allwinner: h6: Add msgbox node

Sandeep Maheswaram (3):
      arm64: dts: qcom: sdm845: Add generic QUSB2 V2 Phy compatible
      arm64: dts: qcom: sc7180: Add generic QUSB2 V2 Phy compatible
      arm64: dts: qcom: sc7180: Update QUSB2 V2 Phy params for SC7180 IDP device

Sean Wang (2):
      arm: dts: mt7623: add phy-mode property for gmac2
      dt-bindings: gpu: mali-utgard: add mediatek, mt7623-mali compatible

Sebastian Meyer (1):
      arm64: allwinner: h6: orangepi-lite2: Support BT+WIFI combo module

Sharat Masetty (2):
      dt-bindings: arm-smmu: Add sc7180 compatible string
      arm64: dts: qcom: sc7180: Add A618 gpu dt blob

Sibi Sankar (4):
      arm64: dts: qcom: sdm845: Add SoC compatible to MTP
      arm64: dts: qcom: sc7180: Update reserved memory map
      arm64: dts: qcom: sc7180: Add Q6V5 MSS node
      arm64: dts: qcom: sc7180: Update Q6V5 MSS node

Sivaprakash Murugesan (1):
      arm64: dts: ipq8074: qcom: Re-arrange dts nodes based on address

Sowjanya Komatineni (6):
      dt-bindings: clock: tegra: Remove PMC clock IDs
      dt-bindings: clock: tegra: Add clock ID for CSI TPG clock
      dt-bindings: tegra: Add VI and CSI bindings
      arm64: tegra: Fix SOR powergate clocks and reset
      arm64: tegra: Add reset-cells to memory controller
      arm64: tegra: Add Tegra VI CSI support in device tree

Stefan Mavrodiev (2):
      dt-bindings: arm: sunxi: Add compatible for A20-OLinuXino-LIME-eMMC
      ARM: dts: sun7i: Add A20-OLinuXino-LIME-eMMC

Steffen Trumtrar (3):
      ARM: dts: socfgpa: set bridges status to disabled
      ARM: dts: socfpga: Add fpga2hps and fpga2sdram bridges
      ARM: dts: imx7d-pinfunc: add input mux for ENET2 mdio

Stenkin Evgeniy (1):
      ARM: dts: exynos: Add devicetree file for the Galaxy S2

Stephan Gerhold (8):
      ARM: dts: ux500: samsung-golden: Add proximity sensor
      arm64: dts: qcom: msm8916: Add blsp_i2c1
      arm64: dts: qcom: msm8916: Add blsp_i2c5
      arm64: dts: qcom: msm8916-samsung-a2015: Add touchscreen regulator
      arm64: dts: qcom: msm8916-samsung-a5u: Add touchscreen
      arm64: dts: qcom: msm8916: avoid using _ in node names
      arm64: dts: qcom: msm8916: move gpu opp table to gpu node
      arm64: dts: qcom: apq8016-sbc: merge -pins.dtsi into main .dtsi

Suman Anna (16):
      ARM: dts: DRA7: Add common IPU and DSP nodes
      ARM: dts: DRA74x: Add DSP2 processor device node
      ARM: dts: DRA74x: Add aliases for rproc nodes
      ARM: dts: DRA72x: Add aliases for rproc nodes
      ARM: dts: dra7-ipu-dsp-common: Move mailboxes into common files
      ARM: dts: dra7-ipu-dsp-common: Add mailboxes to IPU and DSP nodes
      ARM: dts: dra7-ipu-dsp-common: Add timers to IPU and DSP nodes
      ARM: dts: dra7-evm: Add CMA pools and enable IPU & DSP rprocs
      ARM: dts: dra72-evm: Add CMA pools and enable IPUs & DSP1 rprocs
      ARM: dts: dra72-evm-revc: Add CMA pools and enable IPUs & DSP1 rprocs
      ARM: dts: dra71-evm: Add CMA pools and enable IPUs & DSP1 rprocs
      ARM: dts: dra76-evm: Add CMA pools and enable IPU & DSP rprocs
      ARM: dts: beagle-x15-common: Add CMA pools and enable IPU & DSP rprocs
      ARM: dts: am572x-idk-common: Add CMA pools and enable IPU & DSP rprocs
      ARM: dts: am571x-idk: Add CMA pools and enable IPUs & DSP1 rprocs
      ARM: dts: dra7-ipu-dsp-common: Add watchdog timers to IPU and DSP nodes

Tero Kristo (8):
      arm64: dts: ti: k3-j721e-main: Add main domain watchdog entries
      ARM: dts: dra7: add timer_sys_ck entries for IPU/DSP timers
      ARM: dts: omap5: add aes1 entry
      ARM: dts: omap5: add aes2 entry
      ARM: dts: omap5: add SHA crypto accelerator node
      ARM: dts: omap5: add DES crypto accelerator node
      ARM: OMAP4: Make L4SEC clock domain SWSUP only
      ARM: OMAP5: Make L4SEC clock domain SWSUP only

Thierry Reding (5):
      dt-bindings: i2c: tegra: Document Tegra210 VI I2C
      Merge branch 'for-5.8/dt-bindings' into for-5.8/arm64/dt
      arm64: tegra: Hook up EMC cooling device
      arm64: tegra: Enable VI I2C on Jetson Nano
      arm64: tegra: Make the RTC a wakeup source on Jetson TX2

Tim Harvey (5):
      ARM: dts: imx6qdl-gw552x: add USB OTG support
      ARM: dts: imx6qdl-gw560x: add lsm9ds1 iio imu/magn support
      ARM: dts: imx6qdl-gw5904: add lsm9ds1 iio imu/magn support
      ARM: dts: imx6qdl-gw5910: add support for bcm4330-bt
      ARM: dts: imx6qdl-gw5910: fix wlan regulator

Tim Lewis (1):
      arm64: dts: meson: S922X: extend cpu opp-points

Tobias Schramm (1):
      arm64: dts: rockchip: add micro SD card regulator to rockpro64

Tomi Valkeinen (3):
      ARM: dts: am57xx-idk-common: add tc358778 bridge
      arm64: dts: ti: k3-j721e-main: Add DSS node
      arm64: dts: ti: k3-j721e-common-proc-board: add assigned clks for DSS

Tony Lindgren (1):
      Merge branch 'omap-for-v5.8/dt-timer' into omap-for-v5.8/dt

Tudor Ambarus (20):
      ARM: dts: at91: sam9x60ek: Use quad mode in the spi-nor flash
      ARM: dts: at91: sam9x60ek: Add sdmmc1 node
      ARM: dts: at91: sama5d27_wlsom1: Add alias for i2c0
      ARM: dts: at91: sama5d2: Fix the label numbering for flexcom functions
      ARM: dts: at91: sama5d2: Move flx4 definitions in the SoC dtsi
      ARM: dts: at91: sama5d2: Move flx3 definitions in the SoC dtsi
      ARM: dts: at91: sama5d2: Move flx2 definitions in the SoC dtsi
      ARM: dts: at91: sama5d2: Move flx1 definitions in the SoC dtsi
      ARM: dts: at91: sama5d2: Move flx0 definitions in the SoC dtsi
      ARM: dts: at91: sama5d2: Specify the FIFO size for the Flexcom UART
      ARM: dts: at91: sama5d2: Add DMA bindings for the SPI and UART
flx4 functions
      ARM: dts: at91: sama5d2: Add DMA bindings for the flx3 SPI function
      ARM: dts: at91: sama5d2: Add DMA bindings for the flx1 I2C function
      ARM: dts: at91: sama5d2: Add DMA bindings for the SPI and I2C
flx0 functions
      ARM: dts: at91: sama5d2: Remove i2s and tcb aliases from SoC dtsi
      ARM: dts: at91: sama5d2: Add missing flexcom definitions
      ARM: dts: at91: sama5d2_xplained: Add alias for DBGU
      ARM: dts: at91: sama5d2_ptc_ek: Add comments to describe the aliases
      ARM: dts: at91: sama5d2_xplained: Describe the flx0 I2C function
      ARM: dts: at91: sama5d2_xplained: Add aliases for the dedicated I2C IPs

Ulf Hansson (2):
      arm64: dts: qcom: msm8916: Conform to the domain-idle-state binding
      arm64: dts: qcom: msm8916: Conform to the nodename pattern PSCI subnodes

Ulrich Hecht (1):
      arm64: dts: mt8173: Add capacity-dmips-mhz attributes

Vidya Sagar (1):
      arm64: tegra: Fix flag for 64-bit resources in 'ranges' property

Vignesh Raghavendra (1):
      arm64: dts: ti: k3-am65-main: Add ehrpwm nodes

Vijay Khemka (2):
      ARM: dts: aspeed: tiogapass: Add IPMB device
      ARM: dts: aspeed: tiogapass: Add gpio line names

Vincent Stehlé (1):
      ARM: dts: sun8i-h2-plus-bananapi-m2-zero: Fix led polarity

Vladimir Oltean (1):
      arm64: dts: ls1028a: Specify the DMA channels for the DSPI controllers

Yangbo Lu (2):
      arm64: dts: fsl: add fsl,extts-fifo property for fman ptp
      arm64: dts: ls1043a-rdb: add compatible for board

Yangtao Li (1):
      arm64: dts: allwinner: h6: Add clock to CPU cores

Yann Gautier (1):
      ARM: dts: stm32: add sd-uhs properties in SD-card node for stm32mp157c-ed1

Yoshihiro Shimoda (6):
      arm64: dts: renesas: r8a77961: Add USB2.0 device nodes
      arm64: dts: renesas: r8a77961: Add USB3.0 device nodes
      arm64: dts: renesas: r8a77961: Add PWM device nodes
      arm64: dts: renesas: r8a77961: Add PCIe device nodes
      ARM: dts: renesas: Fix IOMMU device node names
      arm64: dts: renesas: Fix IOMMU device node names

Yuantian Tang (1):
      arm64: dts: lx2160a: add more thermal zone support

Zhao Qiang (2):
      arm64: dts: add qe node to ls1043ardb
      arm64: dts: Add ds26522 node to dts to ls1043ardb

jjian zhou (1):
      arm64: dts: mt8183: add mmc node

 Documentation/devicetree/bindings/arm/amlogic.yaml |    4 +
 .../devicetree/bindings/arm/atmel-at91.yaml        |    7 +
 Documentation/devicetree/bindings/arm/cpus.yaml    |    1 +
 Documentation/devicetree/bindings/arm/fsl.yaml     |    4 +
 .../devicetree/bindings/arm/mediatek.yaml          |   22 +
 Documentation/devicetree/bindings/arm/qcom.yaml    |    7 +
 Documentation/devicetree/bindings/arm/realtek.yaml |   21 +
 Documentation/devicetree/bindings/arm/renesas.yaml |   10 +
 .../devicetree/bindings/arm/rockchip.yaml          |    5 +
 .../bindings/arm/samsung/samsung-boards.yaml       |    1 +
 .../bindings/arm/socionext/uniphier.yaml           |    1 +
 .../devicetree/bindings/arm/stm32/stm32.yaml       |    3 +
 Documentation/devicetree/bindings/arm/sunxi.yaml   |    5 +
 .../bindings/cpufreq/nvidia,tegra20-cpufreq.txt    |   56 +
 .../display/tegra/nvidia,tegra20-host1x.txt        |   73 +-
 .../devicetree/bindings/gpu/arm,mali-utgard.yaml   |    2 +
 .../devicetree/bindings/i2c/i2c-mt65xx.txt         |    1 +
 .../devicetree/bindings/i2c/nvidia,tegra20-i2c.txt |    6 +
 .../devicetree/bindings/iommu/arm,smmu.yaml        |    1 +
 .../memory-controllers/nvidia,tegra210-emc.yaml    |   82 ++
 .../bindings/power/renesas,rcar-sysc.yaml          |    1 +
 .../devicetree/bindings/reset/renesas,rst.yaml     |    1 +
 .../devicetree/bindings/vendor-prefixes.yaml       |    8 +
 arch/arm/boot/dts/Makefile                         |   19 +-
 arch/arm/boot/dts/am335x-guardian.dts              |    1 +
 arch/arm/boot/dts/am3517-evm.dts                   |    1 +
 arch/arm/boot/dts/am571x-idk.dts                   |   48 +-
 arch/arm/boot/dts/am5729-beagleboneai.dts          |  731 ++++++++++++
 arch/arm/boot/dts/am572x-idk-common.dtsi           |   63 +-
 arch/arm/boot/dts/am57xx-beagle-x15-common.dtsi    |   63 +-
 arch/arm/boot/dts/am57xx-idk-common.dtsi           |   58 +
 arch/arm/boot/dts/armada-370-xp.dtsi               |    2 -
 arch/arm/boot/dts/armada-375.dtsi                  |    2 -
 arch/arm/boot/dts/armada-38x.dtsi                  |    2 -
 arch/arm/boot/dts/armada-39x.dtsi                  |    4 -
 arch/arm/boot/dts/aspeed-ast2600-evb.dts           |    4 +
 .../arm/boot/dts/aspeed-bmc-facebook-tiogapass.dts |   78 +-
 .../boot/dts/aspeed-bmc-facebook-yosemitev2.dts    |  231 ++++
 arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts       |  202 +++-
 arch/arm/boot/dts/aspeed-bmc-opp-mihawk.dts        |  310 +++++-
 arch/arm/boot/dts/aspeed-bmc-opp-nicole.dts        |  326 ++++++
 arch/arm/boot/dts/aspeed-bmc-opp-romulus.dts       |   35 +-
 arch/arm/boot/dts/aspeed-bmc-opp-tacoma.dts        |  112 ++
 arch/arm/boot/dts/aspeed-bmc-opp-witherspoon.dts   |   34 +
 arch/arm/boot/dts/aspeed-bmc-opp-zaius.dts         |   37 +-
 arch/arm/boot/dts/aspeed-g4.dtsi                   |   10 +
 arch/arm/boot/dts/aspeed-g5.dtsi                   |   43 +-
 arch/arm/boot/dts/aspeed-g6.dtsi                   |   64 +-
 arch/arm/boot/dts/at91-dvk_su60_somc.dtsi          |    2 +-
 arch/arm/boot/dts/at91-kizbox3-hs.dts              |    4 +-
 arch/arm/boot/dts/at91-kizbox3_common.dtsi         |   48 +-
 arch/arm/boot/dts/at91-sam9x60ek.dts               |   23 +
 arch/arm/boot/dts/at91-sama5d27_som1.dtsi          |   54 +
 arch/arm/boot/dts/at91-sama5d27_som1_ek.dts        |   64 +-
 arch/arm/boot/dts/at91-sama5d27_wlsom1.dtsi        |   16 +-
 arch/arm/boot/dts/at91-sama5d27_wlsom1_ek.dts      |   12 -
 arch/arm/boot/dts/at91-sama5d2_icp.dts             |  767 +++++++++++++
 arch/arm/boot/dts/at91-sama5d2_ptc_ek.dts          |   25 +-
 arch/arm/boot/dts/at91-sama5d2_xplained.dts        |  118 +-
 arch/arm/boot/dts/at91-wb50n.dtsi                  |    4 -
 arch/arm/boot/dts/at91rm9200.dtsi                  |  296 +----
 arch/arm/boot/dts/at91sam9g45.dtsi                 |  338 +-----
 arch/arm/boot/dts/at91sam9m10g45ek.dts             |    4 +-
 arch/arm/boot/dts/at91sam9n12.dtsi                 |  324 +-----
 arch/arm/boot/dts/at91sam9n12ek.dts                |    2 +-
 arch/arm/boot/dts/bcm2711-rpi-4-b.dts              |   13 +-
 arch/arm/boot/dts/bcm2835-common.dtsi              |    1 -
 arch/arm/boot/dts/bcm2835-rpi-common.dtsi          |   12 +
 arch/arm/boot/dts/bcm2835.dtsi                     |    1 +
 arch/arm/boot/dts/bcm2836.dtsi                     |    1 +
 arch/arm/boot/dts/bcm2837.dtsi                     |    1 +
 arch/arm/boot/dts/berlin2.dtsi                     |    6 +-
 arch/arm/boot/dts/berlin2cd.dtsi                   |    2 +-
 arch/arm/boot/dts/berlin2q.dtsi                    |    6 +-
 arch/arm/boot/dts/dove.dtsi                        |    3 +-
 arch/arm/boot/dts/dra7-evm-common.dtsi             |    1 +
 arch/arm/boot/dts/dra7-evm.dts                     |   54 +
 arch/arm/boot/dts/dra7-ipu-dsp-common.dtsi         |   39 +
 arch/arm/boot/dts/dra7-l4.dtsi                     |   50 +-
 arch/arm/boot/dts/dra7.dtsi                        |   36 +
 arch/arm/boot/dts/dra71-evm.dts                    |   42 +
 arch/arm/boot/dts/dra72-evm-common.dtsi            |   18 +-
 arch/arm/boot/dts/dra72-evm-revc.dts               |   42 +
 arch/arm/boot/dts/dra72-evm.dts                    |   42 +
 arch/arm/boot/dts/dra72x.dtsi                      |    6 +
 arch/arm/boot/dts/dra74-ipu-dsp-common.dtsi        |   18 +
 arch/arm/boot/dts/dra74x.dtsi                      |   21 +
 arch/arm/boot/dts/dra76-evm.dts                    |   54 +
 arch/arm/boot/dts/e60k02.dtsi                      |    2 +
 arch/arm/boot/dts/exynos3250-monk.dts              |    3 +-
 arch/arm/boot/dts/exynos3250-rinato.dts            |   48 +-
 arch/arm/boot/dts/exynos4210-i9100.dts             |  768 +++++++++++++
 arch/arm/boot/dts/exynos4210-origen.dts            |    7 +-
 arch/arm/boot/dts/exynos4210-trats.dts             |   41 +-
 arch/arm/boot/dts/exynos4210-universal_c210.dts    |   33 +-
 arch/arm/boot/dts/exynos4412-galaxy-s3.dtsi        |    6 +-
 arch/arm/boot/dts/exynos4412-midas.dtsi            |   17 +-
 arch/arm/boot/dts/exynos4412-odroid-common.dtsi    |    8 +-
 arch/arm/boot/dts/exynos4412-origen.dts            |   14 +-
 arch/arm/boot/dts/exynos5250-arndale.dts           |   13 +-
 arch/arm/boot/dts/exynos5420-arndale-octa.dts      |    2 +-
 arch/arm/boot/dts/imx50.dtsi                       |    8 +-
 arch/arm/boot/dts/imx51.dtsi                       |    3 +-
 arch/arm/boot/dts/imx53-cx9020.dts                 |   25 +-
 arch/arm/boot/dts/imx53.dtsi                       |    3 +-
 arch/arm/boot/dts/imx6dl-colibri-v1_1-eval-v3.dts  |   31 +
 arch/arm/boot/dts/imx6q-dhcom-pdk2.dts             |  115 +-
 arch/arm/boot/dts/imx6qdl-colibri-v1_1-uhs.dtsi    |   44 +
 arch/arm/boot/dts/imx6qdl-colibri.dtsi             |   11 +-
 arch/arm/boot/dts/imx6qdl-gw552x.dtsi              |   14 +
 arch/arm/boot/dts/imx6qdl-gw560x.dtsi              |   31 +
 arch/arm/boot/dts/imx6qdl-gw5904.dtsi              |   31 +
 arch/arm/boot/dts/imx6qdl-gw5910.dtsi              |   35 +-
 arch/arm/boot/dts/imx6qdl-sr-som.dtsi              |   11 +
 arch/arm/boot/dts/imx6qdl.dtsi                     |   13 +-
 arch/arm/boot/dts/imx6sl.dtsi                      |   13 +-
 arch/arm/boot/dts/imx6sx.dtsi                      |    2 +-
 arch/arm/boot/dts/imx6ul.dtsi                      |    2 +-
 arch/arm/boot/dts/imx7-tqma7.dtsi                  |    2 +-
 arch/arm/boot/dts/imx7d-cl-som-imx7.dts            |    4 +
 arch/arm/boot/dts/imx7d-colibri.dtsi               |    4 +
 arch/arm/boot/dts/imx7d-nitrogen7.dts              |    4 +
 arch/arm/boot/dts/imx7d-pinfunc.h                  |    2 +-
 arch/arm/boot/dts/imx7d-sdb.dts                    |    4 +
 arch/arm/boot/dts/imx7d-tqma7.dtsi                 |    4 +
 arch/arm/boot/dts/imx7d-zii-rmu2.dts               |    2 +-
 arch/arm/boot/dts/imx7d-zii-rpu2.dts               |    2 +-
 arch/arm/boot/dts/imx7s.dtsi                       |    2 +-
 arch/arm/boot/dts/integratorap-im-pd1.dts          |  270 +++++
 arch/arm/boot/dts/integratorap.dts                 |   53 +-
 arch/arm/boot/dts/keystone-k2e.dtsi                |    4 +-
 arch/arm/boot/dts/keystone-k2g-evm.dts             |  101 ++
 arch/arm/boot/dts/keystone-k2g.dtsi                |   26 +-
 arch/arm/boot/dts/keystone-k2hk.dtsi               |    4 +-
 arch/arm/boot/dts/keystone-k2l.dtsi                |    4 +-
 arch/arm/boot/dts/kirkwood-l-50.dts                |  438 ++++++++
 .../boot/dts/kirkwood-netgear_readynas_nv+_v2.dts  |   14 +
 arch/arm/boot/dts/kirkwood.dtsi                    |    2 +-
 arch/arm/boot/dts/logicpd-torpedo-baseboard.dtsi   |    1 +
 arch/arm/boot/dts/ls1021a-twr.dts                  |   14 +
 arch/arm/boot/dts/meson.dtsi                       |    3 +
 arch/arm/boot/dts/meson8b-odroidc1.dts             |    3 +-
 arch/arm/boot/dts/meson8b.dtsi                     |    5 +-
 arch/arm/boot/dts/meson8m2-mxiii-plus.dts          |    4 +-
 arch/arm/boot/dts/meson8m2.dtsi                    |   13 +-
 arch/arm/boot/dts/mmp2.dtsi                        |    2 +-
 arch/arm/boot/dts/mmp3-dell-ariel.dts              |   12 +-
 arch/arm/boot/dts/mmp3.dtsi                        |   34 +-
 arch/arm/boot/dts/mt2701-evb.dts                   |   21 +
 arch/arm/boot/dts/mt2701.dtsi                      |   33 +
 arch/arm/boot/dts/mt7623.dtsi                      |   25 +
 arch/arm/boot/dts/mt7623n-rfb-emmc.dts             |    1 +
 arch/arm/boot/dts/omap3-gta04.dtsi                 |    1 +
 arch/arm/boot/dts/omap5-l4.dtsi                    |   31 +
 arch/arm/boot/dts/omap5.dtsi                       |   86 ++
 arch/arm/boot/dts/pxa168.dtsi                      |    8 +-
 arch/arm/boot/dts/pxa3xx.dtsi                      |    2 +-
 arch/arm/boot/dts/pxa910.dtsi                      |    4 +-
 arch/arm/boot/dts/qcom-ipq4019.dtsi                |    1 +
 arch/arm/boot/dts/qcom-ipq8064.dtsi                |    6 +
 arch/arm/boot/dts/qcom-msm8974-samsung-klte.dts    |  405 ++++++-
 arch/arm/boot/dts/qcom-msm8974.dtsi                |   11 +
 arch/arm/boot/dts/r8a7740.dtsi                     |    2 +-
 arch/arm/boot/dts/r8a7742-iwg21d-q7.dts            |   37 +
 arch/arm/boot/dts/r8a7742-iwg21m.dtsi              |   53 +
 arch/arm/boot/dts/r8a7742.dtsi                     |  648 +++++++++++
 arch/arm/boot/dts/r8a7743.dtsi                     |   12 +-
 arch/arm/boot/dts/r8a7744.dtsi                     |   12 +-
 arch/arm/boot/dts/r8a7745.dtsi                     |   12 +-
 arch/arm/boot/dts/r8a7790.dtsi                     |   12 +-
 arch/arm/boot/dts/r8a7791.dtsi                     |   95 +-
 arch/arm/boot/dts/r8a7793.dtsi                     |   14 +-
 arch/arm/boot/dts/r8a7794.dtsi                     |   12 +-
 arch/arm/boot/dts/rk3036-kylin.dts                 |    2 +-
 arch/arm/boot/dts/rk3066a-mk808.dts                |    2 +-
 arch/arm/boot/dts/rk3188-radxarock.dts             |    6 +-
 arch/arm/boot/dts/rk3229-xms6.dts                  |   19 +-
 arch/arm/boot/dts/rk322x.dtsi                      |   10 +
 arch/arm/boot/dts/rk3288-firefly-reload.dts        |   12 +-
 arch/arm/boot/dts/rk3288-firefly.dtsi              |   12 +-
 arch/arm/boot/dts/rk3288-miqi.dts                  |    2 +-
 arch/arm/boot/dts/rk3288-phycore-som.dtsi          |    6 +-
 arch/arm/boot/dts/rk3288-rock2-square.dts          |    4 +-
 arch/arm/boot/dts/rk3288-tinker.dtsi               |    6 +-
 arch/arm/boot/dts/rk3288.dtsi                      |    1 -
 arch/arm/boot/dts/rtd1195-horseradish.dts          |   32 +
 arch/arm/boot/dts/rtd1195-mele-x1000.dts           |   32 +
 arch/arm/boot/dts/rtd1195.dtsi                     |  217 ++++
 arch/arm/boot/dts/s5pv210-aries.dtsi               |  359 +++++-
 arch/arm/boot/dts/s5pv210-fascinate4g.dts          |  249 +++++
 arch/arm/boot/dts/s5pv210-galaxys.dts              |  292 +++++
 arch/arm/boot/dts/s5pv210-pinctrl.dtsi             |    9 +-
 arch/arm/boot/dts/s5pv210.dtsi                     |   23 +-
 arch/arm/boot/dts/sama5d2.dtsi                     |  295 ++++-
 arch/arm/boot/dts/sama5d3.dtsi                     |  430 +------
 arch/arm/boot/dts/sama5d3_can.dtsi                 |   20 +-
 arch/arm/boot/dts/sama5d3_emac.dtsi                |    8 +-
 arch/arm/boot/dts/sama5d3_gmac.dtsi                |   11 +-
 arch/arm/boot/dts/sama5d3_lcd.dtsi                 |   19 +-
 arch/arm/boot/dts/sama5d3_mci2.dtsi                |   11 +-
 arch/arm/boot/dts/sama5d3_tcb1.dtsi                |   12 +-
 arch/arm/boot/dts/sama5d3_uart.dtsi                |   20 +-
 arch/arm/boot/dts/sama5d3xmb.dtsi                  |    6 +-
 arch/arm/boot/dts/sama5d3xmb_cmp.dtsi              |    6 +-
 arch/arm/boot/dts/sama5d4.dtsi                     |    6 +-
 arch/arm/boot/dts/sh73a0.dtsi                      |    2 +-
 arch/arm/boot/dts/socfpga.dtsi                     |   16 +
 arch/arm/boot/dts/ste-ux500-samsung-golden.dts     |   65 ++
 arch/arm/boot/dts/ste-ux500-samsung-skomer.dts     |   39 +-
 arch/arm/boot/dts/stih407-family.dtsi              |   14 -
 arch/arm/boot/dts/stih418.dtsi                     |    8 +-
 arch/arm/boot/dts/stm32f429.dtsi                   |    4 +-
 arch/arm/boot/dts/stm32h743.dtsi                   |    4 +-
 arch/arm/boot/dts/stm32mp15-pinctrl.dtsi           |  666 ++++++++++-
 arch/arm/boot/dts/stm32mp151.dtsi                  |   37 +-
 arch/arm/boot/dts/stm32mp157.dtsi                  |    8 +-
 arch/arm/boot/dts/stm32mp157a-avenger96.dts        |  314 +-----
 arch/arm/boot/dts/stm32mp157a-dhcor-avenger96.dts  |   38 +
 arch/arm/boot/dts/stm32mp157a-iot-box.dts          |   68 ++
 arch/arm/boot/dts/stm32mp157a-stinger96.dts        |   12 +
 arch/arm/boot/dts/stm32mp157a-stinger96.dtsi       |  342 ++++++
 arch/arm/boot/dts/stm32mp157c-dhcom-pdk2.dts       |  265 +----
 arch/arm/boot/dts/stm32mp157c-dk2.dts              |    8 -
 arch/arm/boot/dts/stm32mp157c-ed1.dts              |    7 +-
 arch/arm/boot/dts/stm32mp157c-ev1.dts              |   14 +-
 arch/arm/boot/dts/stm32mp157c-lxa-mc1.dts          |  252 +++++
 arch/arm/boot/dts/stm32mp15xx-dhcom-pdk2.dtsi      |  337 ++++++
 ...c-dhcom-som.dtsi => stm32mp15xx-dhcom-som.dtsi} |    9 +-
 arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi |  401 +++++++
 arch/arm/boot/dts/stm32mp15xx-dhcor-io1v8.dtsi     |   23 +
 arch/arm/boot/dts/stm32mp15xx-dhcor-som.dtsi       |  209 ++++
 arch/arm/boot/dts/stm32mp15xx-dkx.dtsi             |   20 +-
 arch/arm/boot/dts/stm32mp15xx-osd32.dtsi           |  230 ++++
 .../arm/boot/dts/sun7i-a20-olinuxino-lime-emmc.dts |   32 +
 arch/arm/boot/dts/sun8i-a83t.dtsi                  |   10 +
 .../boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts    |    2 +-
 arch/arm/boot/dts/sun8i-h3.dtsi                    |   24 +-
 arch/arm/boot/dts/sunxi-h3-h5.dtsi                 |   10 +
 arch/arm/boot/dts/tegra114-dalmore.dts             |    3 +-
 arch/arm/boot/dts/tegra124-venice2.dts             |    2 +-
 arch/arm/boot/dts/tegra20-colibri-eval-v3.dts      |    2 +-
 arch/arm/boot/dts/tegra20-colibri-iris.dts         |    2 +-
 arch/arm/boot/dts/tegra20-harmony.dts              |    2 +-
 arch/arm/boot/dts/tegra20-medcom-wide.dts          |    2 +-
 arch/arm/boot/dts/tegra20-paz00.dts                |    2 +-
 arch/arm/boot/dts/tegra20-seaboard.dts             |    2 +-
 arch/arm/boot/dts/tegra20-ventana.dts              |    2 +-
 arch/arm/boot/dts/tegra30-apalis-eval.dts          |    2 +-
 arch/arm/boot/dts/tegra30-apalis-v1.1-eval.dts     |    2 +-
 arch/arm/boot/dts/tegra30-beaver.dts               |   40 +-
 arch/arm/boot/dts/tegra30-cardhu.dtsi              |    2 +-
 arch/arm/boot/dts/tegra30-colibri-eval-v3.dts      |    2 +-
 arch/arm/boot/dts/uniphier-ld4.dtsi                |    2 +
 arch/arm/boot/dts/uniphier-ld6b-ref.dts            |    1 +
 arch/arm/boot/dts/uniphier-pro4-ace.dts            |    1 +
 arch/arm/boot/dts/uniphier-pro4-ref.dts            |    1 +
 arch/arm/boot/dts/uniphier-pro4-sanji.dts          |    1 +
 arch/arm/boot/dts/uniphier-pro4.dtsi               |   10 +
 arch/arm/boot/dts/uniphier-pro5.dtsi               |   12 +
 arch/arm/boot/dts/uniphier-pxs2-gentil.dts         |    1 +
 arch/arm/boot/dts/uniphier-pxs2-vodka.dts          |    1 +
 arch/arm/boot/dts/uniphier-pxs2.dtsi               |   12 +
 arch/arm/boot/dts/uniphier-sld8.dtsi               |    2 +
 arch/arm/boot/dts/vexpress-v2m-rs1.dtsi            |  328 +++---
 arch/arm/mach-omap2/clockdomains44xx_data.c        |    2 +-
 arch/arm/mach-omap2/clockdomains54xx_data.c        |    2 +-
 .../boot/dts/allwinner/sun50i-a64-olinuxino.dts    |    9 +
 arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi      |   12 +
 .../boot/dts/allwinner/sun50i-h6-beelink-gs1.dts   |    9 +-
 .../boot/dts/allwinner/sun50i-h6-cpu-opp.dtsi      |  117 ++
 .../boot/dts/allwinner/sun50i-h6-orangepi-3.dts    |    3 +
 .../dts/allwinner/sun50i-h6-orangepi-lite2.dts     |   65 ++
 .../boot/dts/allwinner/sun50i-h6-orangepi.dtsi     |   17 +-
 .../boot/dts/allwinner/sun50i-h6-pine-h64.dts      |   43 +-
 .../boot/dts/allwinner/sun50i-h6-tanix-tx6.dts     |   13 +
 arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi       |   60 +
 arch/arm64/boot/dts/amlogic/Makefile               |    4 +
 arch/arm64/boot/dts/amlogic/meson-axg.dtsi         |    6 +-
 arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi  |   11 +
 arch/arm64/boot/dts/amlogic/meson-g12.dtsi         |   32 +-
 .../boot/dts/amlogic/meson-g12b-gtking-pro.dts     |  125 +++
 arch/arm64/boot/dts/amlogic/meson-g12b-gtking.dts  |  145 +++
 .../boot/dts/amlogic/meson-g12b-khadas-vim3.dtsi   |   18 +-
 arch/arm64/boot/dts/amlogic/meson-g12b-s922x.dtsi  |   15 +
 .../boot/dts/amlogic/meson-g12b-ugoos-am6.dts      |  377 +------
 arch/arm64/boot/dts/amlogic/meson-g12b-w400.dtsi   |  423 +++++++
 arch/arm64/boot/dts/amlogic/meson-g12b.dtsi        |   22 +
 .../boot/dts/amlogic/meson-gx-libretech-pc.dtsi    |   78 +-
 .../arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi |   98 +-
 arch/arm64/boot/dts/amlogic/meson-gx.dtsi          |   23 +-
 arch/arm64/boot/dts/amlogic/meson-gxbb-kii-pro.dts |    2 +-
 .../boot/dts/amlogic/meson-gxbb-nanopi-k2.dts      |    2 +-
 .../boot/dts/amlogic/meson-gxbb-nexbox-a95x.dts    |    2 +-
 .../arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts |    2 +-
 .../boot/dts/amlogic/meson-gxbb-vega-s95.dtsi      |    2 +-
 .../boot/dts/amlogic/meson-gxbb-wetek-play2.dts    |    4 +-
 arch/arm64/boot/dts/amlogic/meson-gxbb-wetek.dtsi  |    6 +-
 arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi        |   23 +
 .../dts/amlogic/meson-gxl-s805x-libretech-ac.dts   |   73 +-
 .../boot/dts/amlogic/meson-gxl-s805x-p241.dts      |    3 +-
 .../dts/amlogic/meson-gxl-s905d-phicomm-n1.dts     |    4 +
 .../boot/dts/amlogic/meson-gxl-s905d-sml5442tw.dts |   80 ++
 .../boot/dts/amlogic/meson-gxl-s905w-p281.dts      |    4 +
 .../boot/dts/amlogic/meson-gxl-s905w-tx3-mini.dts  |    4 +
 .../dts/amlogic/meson-gxl-s905x-khadas-vim.dts     |    4 +
 .../dts/amlogic/meson-gxl-s905x-libretech-cc.dts   |   77 +-
 .../dts/amlogic/meson-gxl-s905x-nexbox-a95x.dts    |    3 +-
 .../boot/dts/amlogic/meson-gxl-s905x-p212.dtsi     |    3 +-
 arch/arm64/boot/dts/amlogic/meson-gxl.dtsi         |   79 +-
 .../boot/dts/amlogic/meson-gxm-khadas-vim2.dts     |    3 +-
 .../arm64/boot/dts/amlogic/meson-gxm-nexbox-a1.dts |    3 +-
 arch/arm64/boot/dts/amlogic/meson-gxm-rbox-pro.dts |    4 +-
 arch/arm64/boot/dts/amlogic/meson-gxm-vega-s96.dts |    4 +
 arch/arm64/boot/dts/amlogic/meson-gxm.dtsi         |    7 +-
 arch/arm64/boot/dts/amlogic/meson-khadas-vim3.dtsi |    4 +-
 .../arm64/boot/dts/amlogic/meson-sm1-odroid-c4.dts |  402 +++++++
 arch/arm64/boot/dts/amlogic/meson-sm1-sei610.dts   |    2 +-
 arch/arm64/boot/dts/amlogic/meson-sm1.dtsi         |   24 +
 arch/arm64/boot/dts/arm/foundation-v8-gicv2.dtsi   |    4 +-
 arch/arm64/boot/dts/arm/foundation-v8-gicv3.dtsi   |   11 +-
 arch/arm64/boot/dts/arm/foundation-v8.dtsi         |  142 +--
 arch/arm64/boot/dts/arm/fvp-base-revc.dts          |   10 +-
 arch/arm64/boot/dts/arm/juno-base.dtsi             |   82 +-
 arch/arm64/boot/dts/arm/juno-motherboard.dtsi      |  166 +--
 arch/arm64/boot/dts/arm/rtsm_ve-aemv8a.dts         |    2 +-
 .../boot/dts/arm/rtsm_ve-motherboard-rs2.dtsi      |    4 +-
 arch/arm64/boot/dts/arm/rtsm_ve-motherboard.dtsi   |  152 +--
 arch/arm64/boot/dts/freescale/fsl-ls1012a-frdm.dts |   15 +
 arch/arm64/boot/dts/freescale/fsl-ls1012a-frwy.dts |   15 +
 arch/arm64/boot/dts/freescale/fsl-ls1012a-qds.dts  |   15 +
 arch/arm64/boot/dts/freescale/fsl-ls1012a-rdb.dts  |   15 +
 arch/arm64/boot/dts/freescale/fsl-ls1012a.dtsi     |   13 +
 .../freescale/fsl-ls1028a-kontron-sl28-var2.dts    |    4 +-
 .../dts/freescale/fsl-ls1028a-kontron-sl28.dts     |    5 +
 arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi     |    6 +
 arch/arm64/boot/dts/freescale/fsl-ls1043a-rdb.dts  |   33 +
 arch/arm64/boot/dts/freescale/fsl-ls1043a.dtsi     |   65 ++
 arch/arm64/boot/dts/freescale/fsl-lx2160a.dtsi     |  130 ++-
 .../dts/freescale/imx8mm-beacon-baseboard.dtsi     |  285 +++++
 .../arm64/boot/dts/freescale/imx8mm-beacon-kit.dts |   19 +
 .../boot/dts/freescale/imx8mm-beacon-som.dtsi      |  410 +++++++
 arch/arm64/boot/dts/freescale/imx8mm-evk.dts       |   12 +
 arch/arm64/boot/dts/freescale/imx8mm.dtsi          |   14 +-
 arch/arm64/boot/dts/freescale/imx8mn-ddr4-evk.dts  |   12 +
 arch/arm64/boot/dts/freescale/imx8mn.dtsi          |   12 +-
 arch/arm64/boot/dts/freescale/imx8mp.dtsi          |   88 +-
 .../boot/dts/freescale/imx8mq-librem5-devkit.dts   |    4 +-
 arch/arm64/boot/dts/freescale/imx8mq.dtsi          |   10 +-
 arch/arm64/boot/dts/freescale/imx8qxp-mek.dts      |   95 +-
 arch/arm64/boot/dts/freescale/imx8qxp.dtsi         |   18 +-
 arch/arm64/boot/dts/freescale/qoriq-fman3-0.dtsi   |    1 +
 arch/arm64/boot/dts/hisilicon/hi3660.dtsi          |    4 +-
 .../arm64/boot/dts/hisilicon/hi6220-coresight.dtsi |  130 ++-
 .../arm64/boot/dts/hisilicon/hikey960-pinctrl.dtsi |    6 +-
 arch/arm64/boot/dts/marvell/armada-3720-db.dts     |    3 +
 .../boot/dts/marvell/armada-3720-espressobin.dtsi  |    2 +-
 .../boot/dts/marvell/armada-3720-turris-mox.dts    |   10 +-
 arch/arm64/boot/dts/marvell/armada-3720-uDPU.dts   |   22 +-
 arch/arm64/boot/dts/marvell/armada-37xx.dtsi       |    4 +-
 .../dts/marvell/armada-8040-clearfog-gt-8k.dts     |    2 +-
 .../dts/marvell/armada-8040-mcbin-singleshot.dts   |    4 +-
 arch/arm64/boot/dts/marvell/armada-8040-mcbin.dts  |    4 +-
 arch/arm64/boot/dts/marvell/armada-ap80x.dtsi      |    1 -
 arch/arm64/boot/dts/mediatek/Makefile              |    3 +
 arch/arm64/boot/dts/mediatek/mt2712-evb.dts        |   74 ++
 arch/arm64/boot/dts/mediatek/mt2712e.dtsi          |  158 ++-
 arch/arm64/boot/dts/mediatek/mt6358.dtsi           |  358 ++++++
 arch/arm64/boot/dts/mediatek/mt6797-x20-dev.dts    |   49 +
 arch/arm64/boot/dts/mediatek/mt6797.dtsi           |  231 +++-
 .../boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts  |    4 +
 arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts       |    4 +
 arch/arm64/boot/dts/mediatek/mt7622.dtsi           |   11 +
 .../boot/dts/mediatek/mt8173-elm-hana-rev7.dts     |   27 +
 arch/arm64/boot/dts/mediatek/mt8173-elm-hana.dts   |   14 +
 arch/arm64/boot/dts/mediatek/mt8173-elm-hana.dtsi  |   70 ++
 arch/arm64/boot/dts/mediatek/mt8173-elm.dts        |   14 +
 arch/arm64/boot/dts/mediatek/mt8173-elm.dtsi       | 1173 ++++++++++++++++++++
 arch/arm64/boot/dts/mediatek/mt8173.dtsi           |   80 +-
 arch/arm64/boot/dts/mediatek/mt8183-evb.dts        |  147 +++
 arch/arm64/boot/dts/mediatek/mt8183.dtsi           |   50 +-
 arch/arm64/boot/dts/nvidia/tegra132-norrin.dts     |    2 +-
 arch/arm64/boot/dts/nvidia/tegra186-p3310.dtsi     |    3 +-
 arch/arm64/boot/dts/nvidia/tegra194-p2888.dtsi     |    5 +-
 arch/arm64/boot/dts/nvidia/tegra194.dtsi           |   30 +-
 arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi     |    3 +-
 arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi     |   10 +
 arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts |    7 +-
 arch/arm64/boot/dts/nvidia/tegra210.dtsi           |   89 +-
 arch/arm64/boot/dts/qcom/Makefile                  |    1 +
 .../arm64/boot/dts/qcom/apq8016-sbc-pmic-pins.dtsi |   74 --
 arch/arm64/boot/dts/qcom/apq8016-sbc-soc-pins.dtsi |   89 --
 arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi          |  257 ++++-
 arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi       |   53 +-
 arch/arm64/boot/dts/qcom/ipq8074-hk01.dts          |  112 +-
 arch/arm64/boot/dts/qcom/ipq8074.dtsi              |  474 ++++----
 .../boot/dts/qcom/msm8916-longcheer-l8150.dts      |   25 +-
 arch/arm64/boot/dts/qcom/msm8916-pins.dtsi         |  221 ++--
 .../dts/qcom/msm8916-samsung-a2015-common.dtsi     |   98 +-
 .../boot/dts/qcom/msm8916-samsung-a3u-eur.dts      |   54 +
 .../boot/dts/qcom/msm8916-samsung-a5u-eur.dts      |   35 +
 arch/arm64/boot/dts/qcom/msm8916.dtsi              |  228 +++-
 arch/arm64/boot/dts/qcom/msm8996.dtsi              |   87 +-
 arch/arm64/boot/dts/qcom/msm8998.dtsi              |   38 +-
 arch/arm64/boot/dts/qcom/pm8150.dtsi               |   14 +-
 arch/arm64/boot/dts/qcom/pm8150b.dtsi              |   14 +-
 arch/arm64/boot/dts/qcom/pm8150l.dtsi              |   14 +-
 arch/arm64/boot/dts/qcom/pmi8994.dtsi              |    6 +
 arch/arm64/boot/dts/qcom/qcs404-evb.dtsi           |   85 +-
 arch/arm64/boot/dts/qcom/qcs404.dtsi               |  100 ++
 arch/arm64/boot/dts/qcom/sc7180-idp.dts            |   66 +-
 arch/arm64/boot/dts/qcom/sc7180.dtsi               |  955 ++++++++++++++--
 .../arm64/boot/dts/qcom/sdm660-xiaomi-lavender.dts |   46 +
 arch/arm64/boot/dts/qcom/sdm660.dtsi               |  372 +++++++
 arch/arm64/boot/dts/qcom/sdm845-cheza.dtsi         |    2 +
 arch/arm64/boot/dts/qcom/sdm845-db845c.dts         |  210 ++++
 arch/arm64/boot/dts/qcom/sdm845-mtp.dts            |    2 +-
 arch/arm64/boot/dts/qcom/sdm845.dtsi               |   98 +-
 .../boot/dts/qcom/sdm850-lenovo-yoga-c630.dts      |   13 +
 arch/arm64/boot/dts/qcom/sm8250-mtp.dts            |  351 ++++++
 arch/arm64/boot/dts/qcom/sm8250.dtsi               |  126 ++-
 arch/arm64/boot/dts/realtek/Makefile               |    6 +
 arch/arm64/boot/dts/realtek/rtd1293-ds418j.dts     |    6 +-
 arch/arm64/boot/dts/realtek/rtd1293.dtsi           |   12 +-
 arch/arm64/boot/dts/realtek/rtd1295-mele-v9.dts    |    6 +-
 .../arm64/boot/dts/realtek/rtd1295-probox2-ava.dts |    6 +-
 arch/arm64/boot/dts/realtek/rtd1295-xnano-x5.dts   |   30 +
 arch/arm64/boot/dts/realtek/rtd1295-zidoo-x9s.dts  |    4 +-
 arch/arm64/boot/dts/realtek/rtd1295.dtsi           |   21 +-
 arch/arm64/boot/dts/realtek/rtd1296-ds418.dts      |    4 +-
 arch/arm64/boot/dts/realtek/rtd1296.dtsi           |    8 +-
 arch/arm64/boot/dts/realtek/rtd129x.dtsi           |  221 ++--
 arch/arm64/boot/dts/realtek/rtd1395-bpi-m4.dts     |   30 +
 arch/arm64/boot/dts/realtek/rtd1395-lionskin.dts   |   36 +
 arch/arm64/boot/dts/realtek/rtd1395.dtsi           |   65 ++
 arch/arm64/boot/dts/realtek/rtd139x.dtsi           |  193 ++++
 arch/arm64/boot/dts/realtek/rtd1619-mjolnir.dts    |   44 +
 arch/arm64/boot/dts/realtek/rtd1619.dtsi           |   12 +
 arch/arm64/boot/dts/realtek/rtd16xx.dtsi           |  229 ++++
 arch/arm64/boot/dts/renesas/Makefile               |    3 +-
 .../dts/renesas/aistarvision-mipi-adapter-2.1.dtsi |   94 ++
 arch/arm64/boot/dts/renesas/r8a774a1.dtsi          |   18 +-
 arch/arm64/boot/dts/renesas/r8a774b1.dtsi          |   18 +-
 .../boot/dts/renesas/r8a774c0-ek874-mipi-2.1.dts   |   72 ++
 arch/arm64/boot/dts/renesas/r8a774c0.dtsi          |   18 +-
 arch/arm64/boot/dts/renesas/r8a77950.dtsi          |   14 +-
 arch/arm64/boot/dts/renesas/r8a77951.dtsi          |   34 +-
 arch/arm64/boot/dts/renesas/r8a77960.dtsi          |   22 +-
 arch/arm64/boot/dts/renesas/r8a77961.dtsi          |  403 ++++++-
 arch/arm64/boot/dts/renesas/r8a77965.dtsi          |   20 +-
 arch/arm64/boot/dts/renesas/r8a77970.dtsi          |   10 +-
 arch/arm64/boot/dts/renesas/r8a77980.dtsi          |   16 +-
 arch/arm64/boot/dts/renesas/r8a77990.dtsi          |   20 +-
 arch/arm64/boot/dts/renesas/r8a77995.dtsi          |   20 +-
 arch/arm64/boot/dts/rockchip/Makefile              |    1 +
 arch/arm64/boot/dts/rockchip/px30.dtsi             |    3 +
 arch/arm64/boot/dts/rockchip/rk3308-roc-cc.dts     |    7 +-
 arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts |  557 ++++++++++
 arch/arm64/boot/dts/rockchip/rk3326.dtsi           |   15 +
 arch/arm64/boot/dts/rockchip/rk3328-a1.dts         |    2 +-
 arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts     |    4 +-
 arch/arm64/boot/dts/rockchip/rk3328-rock64.dts     |    4 +-
 arch/arm64/boot/dts/rockchip/rk3328.dtsi           |    2 +-
 arch/arm64/boot/dts/rockchip/rk3368-geekbox.dts    |    4 +-
 .../boot/dts/rockchip/rk3368-orion-r68-meta.dts    |    4 +-
 arch/arm64/boot/dts/rockchip/rk3368-r88.dts        |    2 +-
 arch/arm64/boot/dts/rockchip/rk3399-ficus.dts      |   29 +-
 arch/arm64/boot/dts/rockchip/rk3399-firefly.dts    |   10 +-
 arch/arm64/boot/dts/rockchip/rk3399-hugsun-x99.dts |    7 +-
 arch/arm64/boot/dts/rockchip/rk3399-nanopi4.dtsi   |    4 +-
 arch/arm64/boot/dts/rockchip/rk3399-orangepi.dts   |    4 +-
 .../boot/dts/rockchip/rk3399-pinebook-pro.dts      |   11 +-
 arch/arm64/boot/dts/rockchip/rk3399-rock960.dts    |   29 +-
 arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtsi |   27 +
 arch/arm64/boot/dts/rockchip/rk3399.dtsi           |   34 +-
 arch/arm64/boot/dts/socionext/Makefile             |    1 +
 .../boot/dts/socionext/uniphier-ld11-global.dts    |    1 +
 .../arm64/boot/dts/socionext/uniphier-ld11-ref.dts |    1 +
 arch/arm64/boot/dts/socionext/uniphier-ld11.dtsi   |   12 +
 .../boot/dts/socionext/uniphier-ld20-akebi96.dts   |  189 ++++
 .../boot/dts/socionext/uniphier-ld20-global.dts    |    1 +
 .../arm64/boot/dts/socionext/uniphier-ld20-ref.dts |    1 +
 arch/arm64/boot/dts/socionext/uniphier-ld20.dtsi   |   16 +
 .../arm64/boot/dts/socionext/uniphier-pxs3-ref.dts |   18 +
 arch/arm64/boot/dts/socionext/uniphier-pxs3.dtsi   |   12 +
 arch/arm64/boot/dts/sprd/sc9863a.dtsi              |   66 ++
 arch/arm64/boot/dts/sprd/sharkl3.dtsi              |  164 +++
 arch/arm64/boot/dts/ti/k3-am65-main.dtsi           |  104 ++
 arch/arm64/boot/dts/ti/k3-am65-wakeup.dtsi         |   11 +
 .../boot/dts/ti/k3-am654-industrial-thermal.dtsi   |   45 +
 .../boot/dts/ti/k3-j721e-common-proc-board.dts     |   20 +
 arch/arm64/boot/dts/ti/k3-j721e-main.dtsi          |   75 ++
 arch/arm64/boot/dts/xilinx/zynqmp.dtsi             |    6 +-
 include/dt-bindings/clock/r8a7742-cpg-mssr.h       |   42 +
 include/dt-bindings/clock/tegra114-car.h           |   14 +-
 include/dt-bindings/clock/tegra124-car-common.h    |   14 +-
 include/dt-bindings/clock/tegra20-car.h            |    2 +-
 include/dt-bindings/clock/tegra210-car.h           |   16 +-
 include/dt-bindings/clock/tegra30-car.h            |   14 +-
 include/dt-bindings/pinctrl/rockchip.h             |   11 -
 include/dt-bindings/power/r8a7742-sysc.h           |   29 +
 .../dt-bindings/reset/amlogic,meson-gxbb-reset.h   |    2 +-
 include/dt-bindings/reset/realtek,rtd1195.h        |   74 ++
 include/dt-bindings/reset/realtek,rtd1295.h        |    3 +
 503 files changed, 25420 insertions(+), 4950 deletions(-)
 create mode 100644
Documentation/devicetree/bindings/cpufreq/nvidia,tegra20-cpufreq.txt
 create mode 100644
Documentation/devicetree/bindings/memory-controllers/nvidia,tegra210-emc.yaml
 create mode 100644 arch/arm/boot/dts/am5729-beagleboneai.dts
 create mode 100644 arch/arm/boot/dts/aspeed-bmc-facebook-yosemitev2.dts
 create mode 100644 arch/arm/boot/dts/aspeed-bmc-opp-nicole.dts
 create mode 100644 arch/arm/boot/dts/at91-sama5d2_icp.dts
 create mode 100644 arch/arm/boot/dts/bcm2835-rpi-common.dtsi
 create mode 100644 arch/arm/boot/dts/dra7-ipu-dsp-common.dtsi
 create mode 100644 arch/arm/boot/dts/dra74-ipu-dsp-common.dtsi
 create mode 100644 arch/arm/boot/dts/exynos4210-i9100.dts
 create mode 100644 arch/arm/boot/dts/imx6dl-colibri-v1_1-eval-v3.dts
 create mode 100644 arch/arm/boot/dts/imx6qdl-colibri-v1_1-uhs.dtsi
 create mode 100644 arch/arm/boot/dts/integratorap-im-pd1.dts
 create mode 100644 arch/arm/boot/dts/kirkwood-l-50.dts
 create mode 100644 arch/arm/boot/dts/r8a7742-iwg21d-q7.dts
 create mode 100644 arch/arm/boot/dts/r8a7742-iwg21m.dtsi
 create mode 100644 arch/arm/boot/dts/r8a7742.dtsi
 create mode 100644 arch/arm/boot/dts/rtd1195-horseradish.dts
 create mode 100644 arch/arm/boot/dts/rtd1195-mele-x1000.dts
 create mode 100644 arch/arm/boot/dts/rtd1195.dtsi
 create mode 100644 arch/arm/boot/dts/stm32mp157a-dhcor-avenger96.dts
 create mode 100644 arch/arm/boot/dts/stm32mp157a-iot-box.dts
 create mode 100644 arch/arm/boot/dts/stm32mp157a-stinger96.dts
 create mode 100644 arch/arm/boot/dts/stm32mp157a-stinger96.dtsi
 create mode 100644 arch/arm/boot/dts/stm32mp157c-lxa-mc1.dts
 create mode 100644 arch/arm/boot/dts/stm32mp15xx-dhcom-pdk2.dtsi
 rename arch/arm/boot/dts/{stm32mp157c-dhcom-som.dtsi =>
stm32mp15xx-dhcom-som.dtsi} (98%)
 create mode 100644 arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi
 create mode 100644 arch/arm/boot/dts/stm32mp15xx-dhcor-io1v8.dtsi
 create mode 100644 arch/arm/boot/dts/stm32mp15xx-dhcor-som.dtsi
 create mode 100644 arch/arm/boot/dts/stm32mp15xx-osd32.dtsi
 create mode 100644 arch/arm/boot/dts/sun7i-a20-olinuxino-lime-emmc.dts
 create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h6-cpu-opp.dtsi
 create mode 100644 arch/arm64/boot/dts/amlogic/meson-g12b-gtking-pro.dts
 create mode 100644 arch/arm64/boot/dts/amlogic/meson-g12b-gtking.dts
 create mode 100644 arch/arm64/boot/dts/amlogic/meson-g12b-w400.dtsi
 create mode 100644 arch/arm64/boot/dts/amlogic/meson-gxl-s905d-sml5442tw.dts
 create mode 100644 arch/arm64/boot/dts/amlogic/meson-sm1-odroid-c4.dts
 create mode 100644 arch/arm64/boot/dts/freescale/imx8mm-beacon-baseboard.dtsi
 create mode 100644 arch/arm64/boot/dts/freescale/imx8mm-beacon-kit.dts
 create mode 100644 arch/arm64/boot/dts/freescale/imx8mm-beacon-som.dtsi
 create mode 100644 arch/arm64/boot/dts/mediatek/mt6358.dtsi
 create mode 100644 arch/arm64/boot/dts/mediatek/mt8173-elm-hana-rev7.dts
 create mode 100644 arch/arm64/boot/dts/mediatek/mt8173-elm-hana.dts
 create mode 100644 arch/arm64/boot/dts/mediatek/mt8173-elm-hana.dtsi
 create mode 100644 arch/arm64/boot/dts/mediatek/mt8173-elm.dts
 create mode 100644 arch/arm64/boot/dts/mediatek/mt8173-elm.dtsi
 delete mode 100644 arch/arm64/boot/dts/qcom/apq8016-sbc-pmic-pins.dtsi
 delete mode 100644 arch/arm64/boot/dts/qcom/apq8016-sbc-soc-pins.dtsi
 create mode 100644 arch/arm64/boot/dts/qcom/sdm660-xiaomi-lavender.dts
 create mode 100644 arch/arm64/boot/dts/qcom/sdm660.dtsi
 create mode 100644 arch/arm64/boot/dts/realtek/rtd1295-xnano-x5.dts
 create mode 100644 arch/arm64/boot/dts/realtek/rtd1395-bpi-m4.dts
 create mode 100644 arch/arm64/boot/dts/realtek/rtd1395-lionskin.dts
 create mode 100644 arch/arm64/boot/dts/realtek/rtd1395.dtsi
 create mode 100644 arch/arm64/boot/dts/realtek/rtd139x.dtsi
 create mode 100644 arch/arm64/boot/dts/realtek/rtd1619-mjolnir.dts
 create mode 100644 arch/arm64/boot/dts/realtek/rtd1619.dtsi
 create mode 100644 arch/arm64/boot/dts/realtek/rtd16xx.dtsi
 create mode 100644
arch/arm64/boot/dts/renesas/aistarvision-mipi-adapter-2.1.dtsi
 create mode 100644 arch/arm64/boot/dts/renesas/r8a774c0-ek874-mipi-2.1.dts
 create mode 100644 arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts
 create mode 100644 arch/arm64/boot/dts/rockchip/rk3326.dtsi
 create mode 100644 arch/arm64/boot/dts/socionext/uniphier-ld20-akebi96.dts
 create mode 100644 arch/arm64/boot/dts/ti/k3-am654-industrial-thermal.dtsi
 create mode 100644 include/dt-bindings/clock/r8a7742-cpg-mssr.h
 create mode 100644 include/dt-bindings/power/r8a7742-sysc.h
 create mode 100644 include/dt-bindings/reset/realtek,rtd1195.h

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply

* [GIT PULL 3/4] ARM: driver updates for v5.8
From: Arnd Bergmann @ 2020-06-04 20:54 UTC (permalink / raw)
  To: Linus Torvalds, SoC Team, Linux ARM, Linux Kernel Mailing List
In-Reply-To: <CAK8P3a3w4euZfDQPt7wqWg9w4uf7SM4NLeA2CyOMmgNGPAdQaQ@mail.gmail.com>

The following changes since commit 0e698dfa282211e414076f9dc7e83c1c288314fd:

  Linux 5.7-rc4 (2020-05-03 14:56:04 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git tags/arm-drivers-5.8

for you to fetch changes up to b5f73d47f34b238221ac771b5fe4907df621d7cb:

  clk: sprd: fix compile-testing (2020-06-03 12:57:28 +0200)

----------------------------------------------------------------
ARM/SoC: drivers for v5.7

These are updates to SoC specific drivers that did not have
another subsystem maintainer tree to go through for some
reason:

- Some bus and memory drivers for the MIPS P5600 based
  Baikal-T1 SoC that is getting added through the MIPS tree.

- There are new soc_device identification drivers for TI K3,
  Qualcomm MSM8939

- New reset controller drivers for NXP i.MX8MP, Renesas
  RZ/G1H, and Hisilicon hi6220

- The SCMI firmware interface can now work across ARM SMC/HVC
  as a transport.

- Mediatek platforms now use a new driver for their "MMSYS"
  hardware block that controls clocks and some other aspects
  in behalf of the media and gpu drivers.

- Some Tegra processors have improved power management
  support, including getting woken up by the PMIC and cluster
  power down during idle.

- A new v4l staging driver for Tegra is added.

- Cleanups and minor bugfixes for TI, NXP, Hisilicon,
  Mediatek, and Tegra.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>

----------------------------------------------------------------
Anson Huang (4):
      soc: imx8m: No need to put node when of_find_compatible_node() failed
      dt-bindings: reset: imx7: Add support for i.MX8MN
      dt-bindings: reset: imx7: Document usage on i.MX8MP SoC
      reset: imx7: Add support for i.MX8MP SoC

Arnd Bergmann (28):
      soc: tegra: Fix tegra_pmc_get_suspend_mode definition
      Merge tag 'scmi-updates-5.8' of
git://git.kernel.org/.../sudeep.holla/linux into arm/drivers
      Merge tag 'renesas-drivers-for-v5.8-tag1' of
git://git.kernel.org/.../geert/renesas-devel into arm/drivers
      Merge tag 'tee-subsys-for-5.8' of
git://git.linaro.org/people/jens.wiklander/linux-tee into arm/drivers
      Merge tag 'renesas-drivers-for-v5.8-tag2' of
git://git.kernel.org/.../geert/renesas-devel into arm/drivers
      Merge tag 'tegra-for-5.8-firmware-v2' of
git://git.kernel.org/.../tegra/linux into arm/drivers
      Merge tag 'v5.7-next-soc' of
git://git.kernel.org/.../matthias.bgg/linux into arm/drivers
      Merge tag 'tee-smatch-for-5.8' of
git://git.linaro.org/people/jens.wiklander/linux-tee into arm/drivers
      Merge tag 'amlogic-drivers' of
git://git.kernel.org/.../khilman/linux-amlogic into arm/drivers
      Merge tag 'reset-for-v5.8' of git://git.pengutronix.de/pza/linux
into arm/drivers
      Merge tag 'tee-login-for-5.8' of
git://git.linaro.org/people/jens.wiklander/linux-tee into arm/drivers
      Merge tag 'v5.7-next-soc.2' of
git://git.kernel.org/.../matthias.bgg/linux into arm/drivers
      Merge tag 'qcom-drivers-for-5.8' of
git://git.kernel.org/.../qcom/linux into arm/drivers
      Merge tag 'samsung-drivers-5.8' of
git://git.kernel.org/.../krzk/linux into arm/drivers
      Merge tag 'tegra-for-5.8-cpufreq' of
git://git.kernel.org/.../tegra/linux into arm/drivers
      Merge tag 'tegra-for-5.8-cpuidle' of
git://git.kernel.org/.../tegra/linux into arm/drivers
      Merge tag 'tegra-for-5.8-of' of
git://git.kernel.org/.../tegra/linux into arm/drivers
      Merge tag 'tegra-for-5.8-media' of
git://git.kernel.org/.../tegra/linux into arm/drivers
      Merge tag 'tegra-for-5.8-soc-v2' of
git://git.kernel.org/.../tegra/linux into arm/drivers
      Merge tag 'imx-drivers-5.8' of
git://git.kernel.org/.../shawnguo/linux into arm/drivers
      Merge tag 'hisi-drivers-for-5.8' of
git://github.com/hisilicon/linux-hisi into arm/drivers
      tee: fix crypto select
      Merge tag 'soc-fsl-next-v5.8' of
git://git.kernel.org/.../leo/linux into arm/drivers
      staging: tegra-video: fix V4L2 dependency
      Merge tag 'drivers_soc_for_5.8' of
git://git.kernel.org/.../ssantosh/linux-keystone into arm/drivers
      Merge branch 'baikal/drivers' into arm/drivers
      Merge branch 'baikal/drivers' into arm/drivers
      clk: sprd: fix compile-testing

Bernard Zhao (2):
      memory: samsung: exynos5422-dmc: Fix tFAW timings alignment
      memory: samsung: exynos5422-dmc: Reduce protected code area in IRQ handler

Bjorn Andersson (3):
      soc: qcom: rpmhpd: Add SM8250 power domains
      soc: qcom: aoss: Add SM8250 compatible
      Revert "soc: qcom: rpmh: Allow RPMH driver to be loaded as a module"

Christoph Hellwig (1):
      firmware: qcom_scm: fix bogous abuse of dma-direct internals

Colin Ian King (1):
      soc: fsl: qe: clean up an indentation issue

Corentin Labbe (1):
      soc/tegra: pmc: Select GENERIC_PINCONF

Cristian Marussi (5):
      firmware: arm_scmi: Add notifications support in transport layer
      firmware: arm_scmi: Rename .clear_notification() transport_ops
      firmware: arm_scmi: Clear channel on reception of unexpected responses
      firmware: arm_scmi: Clear channel for delayed responses
      firmware: arm_scmi: Fix handling of unexpected delayed responses

Dan Carpenter (1):
      tee: remove unnecessary NULL check in tee_shm_alloc()

Dmitry Osipenko (6):
      firmware: tf: Different way of L2 cache enabling after LP2 suspend
      ARM: tegra: Initialize r0 register for firmware wake-up
      ARM: tegra: Do not fully reinitialize L2 on resume
      cpuidle: tegra: Support CPU cluster power-down state on Tegra30
      cpufreq: tegra20: Use generic cpufreq-dt driver (Tegra30 supported now)
      dt-bindings: cpufreq: Add binding for NVIDIA Tegra20/30

Dong Aisheng (2):
      dt-bindings: firmware: imx: Move system control into dt-binding headfile
      dt-bindings: firmware: imx: Add more system controls and PM clock types

Douglas Anderson (18):
      soc: qcom: rpmh-rsc: Clean code reading/writing TCS regs/cmds
      soc: qcom: rpmh-rsc: Document the register layout better
      soc: qcom: rpmh-rsc: Fold tcs_ctrl_write() into its single caller
      soc: qcom: rpmh-rsc: Remove get_tcs_of_type() abstraction
      soc: qcom: rpmh-rsc: Kill cmd_cache and find_match() with fire
      soc: qcom: rpmh-rsc: A lot of comments
      soc: qcom: rpmh-rsc: tcs_is_free() can just check tcs_in_use
      soc: qcom: rpmh-rsc: Don't double-check rpmh payload
      soc: qcom: rpmh-rsc: Caller handles tcs_invalidate() exclusivity
      soc: qcom: rpmh-rsc: read_tcs_reg()/write_tcs_reg() are not for IRQ
      soc: qcom: rpmh: Dirt can only make you dirtier, not cleaner
      soc: qcom: rpmh-rsc: Factor "tcs_reg_addr" and "tcs_cmd_addr" calculation
      soc: qcom: rpmh-rsc: Timeout after 1 second in write_tcs_reg_sync()
      soc: qcom: rpmh-rsc: Correctly ignore CPU_CLUSTER_PM notifications
      soc: qcom: rpmh-rsc: We aren't notified of our own failure w/ NOTIFY_BAD
      kernel/cpu_pm: Fix uninitted local in cpu_pm
      soc: qcom: rpmh-rsc: Simplify locking by eliminating the per-TCS lock
      soc: qcom: rpmh-rsc: Remove the pm_lock

Enric Balletbo i Serra (6):
      dt-bindings: mediatek: Update mmsys binding to reflect it is a
system controller
      soc / drm: mediatek: Move routing control to mmsys device
      soc / drm: mediatek: Fix mediatek-drm device probing
      soc: mediatek: Enable mmsys driver by default if Mediatek arch is selected
      clk / soc: mediatek: Bind clock and gpu driver for mt2712
      clk / soc: mediatek: Bind clock and gpu driver for mt2701

Franck LENORMAND (1):
      firmware: imx: scu: Fix corruption of header

Geert Uytterhoeven (4):
      Merge tag 'renesas-r8a7742-dt-binding-defs-tag' into
renesas-drivers-for-v5.8
      of: Make <linux/of_reserved_mem.h> self-contained
      soc: mediatek: mmsys: Drop <linux/clk-provider.h>
      ARM: mediatek: Replace <linux/clk-provider.h> by <linux/of_clk.h>

Grygorii Strashko (2):
      dt-bindings: soc: ti: add binding for k3 platforms chipid module
      soc: ti: add k3 platforms chipid module driver

Gustavo A. R. Silva (3):
      firmware: qcom_scm-legacy: Replace zero-length array with flexible-array
      treewide: Replace zero-length array with flexible-array
      soc: fsl: qe: Replace one-element array and use struct_size() helper

Jason Yan (1):
      firmware: qcom_scm: Remove unneeded conversion to bool

Jerome Brunet (1):
      dt-bindings: reset: meson: add gxl internal dac reset

John Garry (3):
      io: Provide _inX() and _outX()
      logic_pio: Improve macro argument name
      logic_pio: Use _inX() and _outX()

John Stultz (3):
      soc: qcom: rpmh: Allow RPMH driver to be loaded as a module
      soc: qcom: rpmhpd: Allow RPMHPD driver to be loaded as a module
      soc: qcom: rpmpd: Allow RPMPD driver to be loaded as a module

Jon Hunter (6):
      soc/tegra: fuse: Add custom SoC attributes
      soc/tegra: fuse: Trivial clean-up of tegra_init_revision()
      soc/tegra: fuse: Update the SoC revision attribute to display a name
      soc/tegra: pmc: Enable PMIC wake event on Tegra194
      soc/tegra: pmc: Enable PMIC wake event on Tegra210
      firmware: tegra: Defer BPMP probe if shared memory not available

Joseph Lo (1):
      dt-bindings: memory: tegra: Add external memory controller
binding for Tegra210

Lad Prabhakar (5):
      dt-bindings: power: rcar-sysc: Add r8a7742 power domain index macros
      clk: renesas: Add r8a7742 CPG Core Clock Definitions
      soc: renesas: rcar-sysc: Add R8A7742 support
      soc: renesas: rcar-rst: Add support for RZ/G1H
      soc: renesas: Add Renesas R8A7742 config option

Lukas Bulwahn (1):
      MAINTAINERS: correct path in TEGRA VIDEO DRIVER

Markus Elfring (1):
      soc: qcom: smp2p: Delete an error message in qcom_smp2p_probe()

Martin Blumenstingl (4):
      dt-bindings: power: meson-ee-pwrc: add support for Meson8/8b/8m2
      dt-bindings: power: meson-ee-pwrc: add support for the Meson GX SoCs
      soc: amlogic: meson-ee-pwrc: add support for Meson8/Meson8b/Meson8m2
      soc: amlogic: meson-ee-pwrc: add support for the Meson GX SoCs

Matthias Brugger (5):
      drm/mediatek: Omit warning on probe defers
      clk / soc: mediatek: Move mt8173 MMSYS to platform driver
      clk/soc: mediatek: mt8183: Bind clock driver from platform device
      clk/soc: mediatek: mt6797: Bind clock driver from platform device
      clk/soc: mediatek: mt6779: Bind clock driver from platform device

Maulik Shah (4):
      soc: qcom: rpmh: Update dirty flag only when data changes
      soc: qcom: rpmh: Invalidate SLEEP and WAKE TCSes before flushing new data
      soc: qcom: rpmh: Invoke rpmh_flush() for dirty caches
      soc: qcom: rpmh-rsc: Allow using free WAKE TCS for active request

Peng Fan (3):
      dt-bindings: arm: Add smc/hvc transport for SCMI
      firmware: arm_scmi: Add smc/hvc transport
      firmware: imx-scu: Support one TX and one RX

Peter Griffin (1):
      reset: hi6220: Add support for AO reset controller

Raju P.L.S.S.S.N (1):
      soc: qcom: rpmh-rsc: Clear active mode configuration for wake TCS

Roy Pledge (1):
      soc: fsl: dpio: Prefer the CPU affine DPIO

Samuel Zou (2):
      media: tegra-video: Make tegra210_video_formats static
      drivers: soc: ti: knav_qmss_queue: Make knav_gp_range_ops static

Serge Semin (14):
      dt-bindings: bus: Add Baikal-T1 AXI-bus binding
      dt-bindings: bus: Add Baikal-T1 APB-bus binding
      bus: Add Baikal-T1 AXI-bus driver
      bus: Add Baikal-T1 APB-bus driver
      memory: Add Baikal-T1 L2-cache Control Block driver
      dt-bindings: memory: Add Baikal-T1 L2-cache Control Block binding
      bus: bt1-apb: Include linux/io.h
      bus: bt1-apb: Fix show/store callback identations
      bus: bt1-apb: Use PTR_ERR_OR_ZERO to return from request-regs method
      bus: bt1-apb: Use sysfs_streq instead of strncmp
      bus: bt1-axi: Optimize the return points in the driver
      bus: bt1-axi: Use sysfs_streq instead of strncmp
      bus: bt1-apb: Build the driver into the kernel
      bus: bt1-axi: Build the driver into the kernel

Sibi Sankar (2):
      soc: qcom: cmd-db: Fix compilation error when CMD_DB is disabled
      soc: qcom: pdr: Remove impossible error condition

Sowjanya Komatineni (5):
      dt-bindings: clock: tegra: Add clock ID for CSI TPG clock
      dt-bindings: clock: tegra: Remove PMC clock IDs
      dt-bindings: tegra: Add VI and CSI bindings
      media: tegra-video: Add Tegra210 Video input driver
      MAINTAINERS: Add Tegra Video driver section

Srinivas Kandagatla (1):
      soc: qcom: socinfo: add missing soc_id sysfs entry

Stephan Gerhold (1):
      dt-bindings: soc: qcom: apr: Use generic node names for APR services

Stephen Boyd (4):
      soc: qcom: cmd-db: Add debugfs dumping file
      soc: qcom: cmd-db: Cast sizeof() to int to silence field width warning
      soc: qcom: cmd-db: Use 5 digits for printing address
      soc: qcom: cmd-db: Properly endian swap the slv_id for debugfs

Sudeep Holla (11):
      firmware: arm_scmi: Make mutex channel specific
      firmware: arm_scmi: Drop empty stub for smc_mark_txdone
      firmware: arm_scmi: Check shmem property for channel availablity
      firmware: arm_scmi: Drop checking for shmem property in parent node
      firmware: arm_scmi: Add include guard to linux/scmi_protocol.h
      firmware: arm_scpi: Add include guard to linux/scpi_protocol.h
      firmware: arm_scmi: Add receive buffer support for notifications
      firmware: arm_scmi: Update protocol commands and notification list
      firmware: arm_scmi: Add support for notifications message processing
      firmware: arm_scmi: Fix return error code in smc_send_message
      firmware: arm_scmi: fix psci dependency

Sumit Garg (2):
      tee: enable support to register kernel memory
      tee: add private login method for kernel clients

Thierry Reding (9):
      firmware: tegra: Make BPMP a regular driver
      soc/tegra: pmc: Enable PMIC wake event on Tegra186
      of: reserved-memory: Support lookup of regions by name
      of: reserved-memory: Support multiple regions per device
      Merge branch 'for-5.8/firmware' into for-5.8/arm/core
      Merge branch 'for-5.8/arm/core' into for-5.8/cpuidle
      dt-bindings: i2c: tegra: Document Tegra210 VI I2C
      Merge branch 'for-5.8/dt-bindings' into for-5.8/media
      media: tegra-video: Do not enable COMPILE_TEST

Vesa Jääskeläinen (2):
      tee: add support for session's client UUID generation
      tee: optee: Add support for session login client UUID generation

Vincent Knecht (1):
      soc: qcom: socinfo: add msm8936/39 and apq8036/39 soc ids

Wei Yongjun (2):
      soc: mediatek: Missing platform_device_unregister() on error in
mtk_mmsys_probe()
      firmware: imx: scu: Fix possible memory leak in imx_scu_probe()

YueHaibing (2):
      soc: fsl: qbman: Remove unused inline function qm_eqcr_get_ci_stashing
      soc: fsl: dpio: Remove unused inline function
qbman_write_eqcr_am_rt_register

 Documentation/devicetree/bindings/arm/arm,scmi.txt |    3 +-
 .../bindings/arm/mediatek/mediatek,mmsys.txt       |    7 +-
 .../devicetree/bindings/bus/baikal,bt1-apb.yaml    |   90 ++
 .../devicetree/bindings/bus/baikal,bt1-axi.yaml    |  107 ++
 .../bindings/cpufreq/nvidia,tegra20-cpufreq.txt    |   56 +
 .../display/tegra/nvidia,tegra20-host1x.txt        |   73 +-
 .../devicetree/bindings/i2c/nvidia,tegra20-i2c.txt |    6 +
 .../memory-controllers/baikal,bt1-l2-ctl.yaml      |   63 ++
 .../memory-controllers/nvidia,tegra210-emc.yaml    |   82 ++
 .../bindings/power/amlogic,meson-ee-pwrc.yaml      |  102 +-
 .../devicetree/bindings/power/qcom,rpmpd.yaml      |    1 +
 .../devicetree/bindings/reset/fsl,imx7-src.txt     |    6 +-
 .../devicetree/bindings/soc/qcom/qcom,aoss-qmp.txt |    1 +
 .../devicetree/bindings/soc/qcom/qcom,apr.txt      |   20 +-
 .../devicetree/bindings/soc/ti/k3-socinfo.yaml     |   40 +
 MAINTAINERS                                        |   10 +
 arch/arm/mach-mediatek/mediatek.c                  |    2 +-
 arch/arm/mach-tegra/pm.c                           |    4 +
 arch/arm/mach-tegra/reset-handler.S                |    7 +-
 arch/arm64/Kconfig.platforms                       |    2 +-
 drivers/bus/Kconfig                                |   30 +
 drivers/bus/Makefile                               |    2 +
 drivers/bus/bt1-apb.c                              |  421 ++++++++
 drivers/bus/bt1-axi.c                              |  314 ++++++
 drivers/clk/Makefile                               |    2 +-
 drivers/clk/mediatek/Kconfig                       |    7 +
 drivers/clk/mediatek/Makefile                      |    1 +
 drivers/clk/mediatek/clk-mt2701-mm.c               |    9 +-
 drivers/clk/mediatek/clk-mt2712-mm.c               |    9 +-
 drivers/clk/mediatek/clk-mt6779-mm.c               |    9 +-
 drivers/clk/mediatek/clk-mt6797-mm.c               |    9 +-
 drivers/clk/mediatek/clk-mt8173-mm.c               |  146 +++
 drivers/clk/mediatek/clk-mt8173.c                  |  104 --
 drivers/clk/mediatek/clk-mt8183-mm.c               |    9 +-
 drivers/cpufreq/Kconfig.arm                        |    6 +-
 drivers/cpufreq/tegra20-cpufreq.c                  |  217 +---
 drivers/cpuidle/cpuidle-tegra.c                    |    1 -
 drivers/firmware/arm_scmi/Makefile                 |    4 +-
 drivers/firmware/arm_scmi/base.c                   |    7 +
 drivers/firmware/arm_scmi/common.h                 |   11 +
 drivers/firmware/arm_scmi/driver.c                 |  133 ++-
 drivers/firmware/arm_scmi/mailbox.c                |   17 +
 drivers/firmware/arm_scmi/perf.c                   |    5 +
 drivers/firmware/arm_scmi/power.c                  |    6 +
 drivers/firmware/arm_scmi/sensors.c                |    4 +
 drivers/firmware/arm_scmi/shmem.c                  |   15 +
 drivers/firmware/arm_scmi/smc.c                    |  153 +++
 drivers/firmware/imx/imx-scu.c                     |   64 +-
 drivers/firmware/qcom_scm-legacy.c                 |    2 +-
 drivers/firmware/qcom_scm.c                        |   11 +-
 drivers/firmware/tegra/bpmp-tegra186.c             |    4 +-
 drivers/firmware/tegra/bpmp.c                      |    9 +-
 drivers/firmware/trusted_foundations.c             |   21 +-
 drivers/gpu/drm/mediatek/Kconfig                   |    1 +
 drivers/gpu/drm/mediatek/mtk_disp_color.c          |    5 +-
 drivers/gpu/drm/mediatek/mtk_disp_ovl.c            |    5 +-
 drivers/gpu/drm/mediatek/mtk_disp_rdma.c           |    5 +-
 drivers/gpu/drm/mediatek/mtk_dpi.c                 |   12 +-
 drivers/gpu/drm/mediatek/mtk_drm_crtc.c            |   19 +-
 drivers/gpu/drm/mediatek/mtk_drm_ddp.c             |  259 +----
 drivers/gpu/drm/mediatek/mtk_drm_ddp.h             |    7 -
 drivers/gpu/drm/mediatek/mtk_drm_drv.c             |   45 +-
 drivers/gpu/drm/mediatek/mtk_drm_drv.h             |    2 +-
 drivers/gpu/drm/mediatek/mtk_dsi.c                 |    8 +-
 drivers/gpu/drm/mediatek/mtk_hdmi.c                |    4 +-
 drivers/memory/Kconfig                             |   11 +
 drivers/memory/Makefile                            |    1 +
 drivers/memory/bt1-l2-ctl.c                        |  322 ++++++
 drivers/memory/samsung/exynos5422-dmc.c            |    8 +-
 drivers/of/of_reserved_mem.c                       |   41 +-
 drivers/reset/hisilicon/hi6220_reset.c             |   69 +-
 drivers/reset/reset-imx7.c                         |  101 ++
 drivers/soc/amlogic/meson-ee-pwrc.c                |  112 +-
 drivers/soc/fsl/dpio/dpio-service.c                |    6 +-
 drivers/soc/fsl/dpio/qbman-portal.c                |   12 -
 drivers/soc/fsl/qbman/qman.c                       |    5 -
 drivers/soc/fsl/qe/qe.c                            |    4 +-
 drivers/soc/fsl/qe/ucc.c                           |    2 +-
 drivers/soc/imx/soc-imx8m.c                        |    7 +-
 drivers/soc/mediatek/Kconfig                       |    7 +
 drivers/soc/mediatek/Makefile                      |    1 +
 drivers/soc/mediatek/mtk-mmsys.c                   |  378 +++++++
 drivers/soc/qcom/Kconfig                           |    6 +-
 drivers/soc/qcom/cmd-db.c                          |   78 +-
 drivers/soc/qcom/pdr_interface.c                   |    4 -
 drivers/soc/qcom/qcom_aoss.c                       |    1 +
 drivers/soc/qcom/rpmh-internal.h                   |   59 +-
 drivers/soc/qcom/rpmh-rsc.c                        |  746 ++++++++++----
 drivers/soc/qcom/rpmh.c                            |   97 +-
 drivers/soc/qcom/rpmhpd.c                          |   24 +
 drivers/soc/qcom/rpmpd.c                           |    5 +
 drivers/soc/qcom/smp2p.c                           |    4 +-
 drivers/soc/qcom/socinfo.c                         |    6 +
 drivers/soc/renesas/Kconfig                        |   11 +
 drivers/soc/renesas/Makefile                       |    1 +
 drivers/soc/renesas/r8a7742-sysc.c                 |   42 +
 drivers/soc/renesas/rcar-rst.c                     |    1 +
 drivers/soc/renesas/rcar-sysc.c                    |    3 +
 drivers/soc/renesas/rcar-sysc.h                    |    1 +
 drivers/soc/tegra/Kconfig                          |    1 +
 drivers/soc/tegra/fuse/fuse-tegra.c                |   57 +-
 drivers/soc/tegra/fuse/fuse-tegra20.c              |    1 +
 drivers/soc/tegra/fuse/fuse-tegra30.c              |    6 +
 drivers/soc/tegra/fuse/fuse.h                      |    8 +
 drivers/soc/tegra/fuse/tegra-apbmisc.c             |   32 +-
 drivers/soc/tegra/pmc.c                            |    3 +
 drivers/soc/ti/Kconfig                             |   10 +
 drivers/soc/ti/Makefile                            |    1 +
 drivers/soc/ti/k3-socinfo.c                        |  152 +++
 drivers/soc/ti/knav_qmss_queue.c                   |    2 +-
 drivers/staging/media/Kconfig                      |    2 +
 drivers/staging/media/Makefile                     |    1 +
 drivers/staging/media/tegra-video/Kconfig          |   12 +
 drivers/staging/media/tegra-video/Makefile         |    8 +
 drivers/staging/media/tegra-video/TODO             |   11 +
 drivers/staging/media/tegra-video/csi.c            |  539 ++++++++++
 drivers/staging/media/tegra-video/csi.h            |  147 +++
 drivers/staging/media/tegra-video/tegra210.c       |  978 ++++++++++++++++++
 drivers/staging/media/tegra-video/vi.c             | 1074 ++++++++++++++++++++
 drivers/staging/media/tegra-video/vi.h             |  257 +++++
 drivers/staging/media/tegra-video/video.c          |  155 +++
 drivers/staging/media/tegra-video/video.h          |   29 +
 drivers/tee/Kconfig                                |    2 +
 drivers/tee/optee/call.c                           |    6 +-
 drivers/tee/tee_core.c                             |  159 +++
 drivers/tee/tee_shm.c                              |   31 +-
 drivers/thermal/imx_sc_thermal.c                   |    2 +-
 include/asm-generic/io.h                           |   64 +-
 include/dt-bindings/clock/r8a7742-cpg-mssr.h       |   42 +
 include/dt-bindings/clock/tegra114-car.h           |   14 +-
 include/dt-bindings/clock/tegra124-car-common.h    |   14 +-
 include/dt-bindings/clock/tegra20-car.h            |    2 +-
 include/dt-bindings/clock/tegra210-car.h           |   16 +-
 include/dt-bindings/clock/tegra30-car.h            |   14 +-
 include/dt-bindings/firmware/imx/rsrc.h            |   84 ++
 include/dt-bindings/power/meson-gxbb-power.h       |   13 +
 include/dt-bindings/power/meson8-power.h           |   13 +
 include/dt-bindings/power/qcom-rpmpd.h             |   12 +
 include/dt-bindings/power/r8a7742-sysc.h           |   29 +
 .../dt-bindings/reset/amlogic,meson-gxbb-reset.h   |    2 +-
 include/dt-bindings/reset/imx8mp-reset.h           |   50 +
 include/dt-bindings/reset/imx8mq-reset.h           |   56 +-
 include/linux/firmware/imx/sci.h                   |    1 -
 include/linux/firmware/imx/types.h                 |   65 --
 include/linux/firmware/trusted_foundations.h       |    1 +
 include/linux/fsl/bestcomm/bestcomm.h              |    2 +-
 include/linux/of_reserved_mem.h                    |   12 +
 include/linux/scmi_protocol.h                      |    6 +
 include/linux/scpi_protocol.h                      |    6 +
 include/linux/soc/mediatek/mtk-mmsys.h             |   20 +
 include/linux/tee_drv.h                            |   17 +
 include/soc/fsl/qe/qe.h                            |    2 +-
 include/soc/qcom/cmd-db.h                          |    1 +
 include/uapi/linux/tee.h                           |    9 +
 kernel/cpu_pm.c                                    |    4 +-
 lib/logic_pio.c                                    |   22 +-
 156 files changed, 8030 insertions(+), 1241 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/bus/baikal,bt1-apb.yaml
 create mode 100644 Documentation/devicetree/bindings/bus/baikal,bt1-axi.yaml
 create mode 100644
Documentation/devicetree/bindings/cpufreq/nvidia,tegra20-cpufreq.txt
 create mode 100644
Documentation/devicetree/bindings/memory-controllers/baikal,bt1-l2-ctl.yaml
 create mode 100644
Documentation/devicetree/bindings/memory-controllers/nvidia,tegra210-emc.yaml
 create mode 100644 Documentation/devicetree/bindings/soc/ti/k3-socinfo.yaml
 create mode 100644 drivers/bus/bt1-apb.c
 create mode 100644 drivers/bus/bt1-axi.c
 create mode 100644 drivers/clk/mediatek/clk-mt8173-mm.c
 create mode 100644 drivers/firmware/arm_scmi/smc.c
 create mode 100644 drivers/memory/bt1-l2-ctl.c
 create mode 100644 drivers/soc/mediatek/mtk-mmsys.c
 create mode 100644 drivers/soc/renesas/r8a7742-sysc.c
 create mode 100644 drivers/soc/ti/k3-socinfo.c
 create mode 100644 drivers/staging/media/tegra-video/Kconfig
 create mode 100644 drivers/staging/media/tegra-video/Makefile
 create mode 100644 drivers/staging/media/tegra-video/TODO
 create mode 100644 drivers/staging/media/tegra-video/csi.c
 create mode 100644 drivers/staging/media/tegra-video/csi.h
 create mode 100644 drivers/staging/media/tegra-video/tegra210.c
 create mode 100644 drivers/staging/media/tegra-video/vi.c
 create mode 100644 drivers/staging/media/tegra-video/vi.h
 create mode 100644 drivers/staging/media/tegra-video/video.c
 create mode 100644 drivers/staging/media/tegra-video/video.h
 create mode 100644 include/dt-bindings/clock/r8a7742-cpg-mssr.h
 create mode 100644 include/dt-bindings/power/meson-gxbb-power.h
 create mode 100644 include/dt-bindings/power/meson8-power.h
 create mode 100644 include/dt-bindings/power/r8a7742-sysc.h
 create mode 100644 include/dt-bindings/reset/imx8mp-reset.h
 delete mode 100644 include/linux/firmware/imx/types.h
 create mode 100644 include/linux/soc/mediatek/mtk-mmsys.h

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply

* [GIT PULL 2/4]ARM: defconfig updates for v5.8
From: Arnd Bergmann @ 2020-06-04 20:52 UTC (permalink / raw)
  To: Linus Torvalds, SoC Team, Linux ARM, Linux Kernel Mailing List
In-Reply-To: <CAK8P3a00L4n3b=X+PQXe1pxf9CHryZTes9L1MD5i2+0RLXprfw@mail.gmail.com>

The following changes since commit b9bbe6ed63b2b9f2c9ee5cbd0f2c946a2723f4ce:

  Linux 5.7-rc6 (2020-05-17 16:48:37 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git
tags/arm-defconfig-5.8

for you to fetch changes up to f11d7cb47f157b6af61cea8e4c571c8f81d670b4:

  Merge tag 'imx-defconfig-5.8' of
git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into
arm/defconfig (2020-05-26 00:17:12 +0200)

----------------------------------------------------------------
ARM: defconfig updates for v5.8

These are the usual updates to arm/arm64 defconfig files,
enabling newly added drivers and addressing changes to Kconfig
files.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>

----------------------------------------------------------------
Alex Elder (1):
      arm64: defconfig: enable Qualcomm IPA and RMNet modules

Andreas Kemnade (1):
      ARM: imx_v6_v7_defconfig: extend RN5T618 PMIC family support

Anson Huang (1):
      arm64: defconfig: Enable CONFIG_PINCTRL_IMX8DXL by default

Arnd Bergmann (12):
      Merge tag 'ux500-defconfig-v5.7' of
git://git.kernel.org/.../linusw/linux-stericsson into arm/defconfig
      Merge tag 'renesas-arm-defconfig-for-v5.8-tag1' of
git://git.kernel.org/.../geert/renesas-devel into arm/defconfig
      Merge tag 'arm-soc/for-5.8/defconfig' of
https://github.com/Broadcom/stblinux into arm/defconfig
      Merge tag 'samsung-defconfig-5.8' of
git://git.kernel.org/.../krzk/linux into arm/defconfig
      Merge tag 'renesas-arm-defconfig-for-v5.8-tag2' of
git://git.kernel.org/.../geert/renesas-devel into arm/defconfig
      Merge tag 'sunxi-config-for-5.8-1' of
git://git.kernel.org/.../sunxi/linux into arm/defconfig
      Merge tag 'at91-5.8-defconfig' of
git://git.kernel.org/.../at91/linux into arm/defconfig
      Merge tag 'qcom-arm64-defconfig-for-5.8' of
git://git.kernel.org/.../qcom/linux into arm/defconfig
      Merge tag 'amlogic-defconfig' of
git://git.kernel.org/.../khilman/linux-amlogic into arm/defconfig
      Merge tag 'hisi-arm64-defconfig-for-5.8' of
git://github.com/hisilicon/linux-hisi into arm/defconfig
      Merge tag 'arm64_defconfig_for_v5.8' of
git://git.kernel.org/.../dinguyen/linux into arm/defconfig
      Merge tag 'imx-defconfig-5.8' of
git://git.kernel.org/.../shawnguo/linux into arm/defconfig

Bjorn Andersson (2):
      arm64: defconfig: Remove QCOM_GLINK_SSR
      arm64: defconfig: Enable Qualcomm SC7180 pinctrl and gcc

Clément Péron (1):
      arm64: configs: Enable sun50i cpufreq nvmem

Corentin Labbe (1):
      ARM: configs: sunxi: Add sun8i analog codec

Dinh Nguyen (1):
      arm64: defconfig: Add LEDS_TRIGGER_TIMER

Florian Fainelli (1):
      Merge tag 'tags/bcm2835-defconfig-next-2020-03-27' into defconfig/next

Geert Uytterhoeven (1):
      ARM: shmobile: defconfig: Refresh for v5.7-rc1

Jerome Brunet (1):
      arm64: defconfig: enable meson gx audio as module

Lad Prabhakar (2):
      ARM: shmobile: defconfig: Enable r8a7742 SoC
      ARM: multi_v7_defconfig: Enable r8a7742 SoC

Linus Walleij (1):
      ARM: defconfig: u8500: Enable new drivers for ux500

Marek Szyprowski (2):
      ARM: exynos_defconfig: Enable serial bus and BCM HCIUART drivers
      ARM: exynos_defconfig: Compile MAC80211/CFG80211 as modules

Nicolas Saenz Julienne (1):
      ARM: bcm2835_defconfig: Enable fixed-regulator

Razvan Stefanescu (2):
      ARM: configs: at91: sama5: enable SAMA5D2_PIOBU
      ARM: configs: at91: sama5: enable MCP16502 regulator

Robert Foss (1):
      arm64: defconfig: Enable Qualcomm CAMCC, CAMSS and CCI drivers

Stephan Gerhold (1):
      ARM: defconfig: u8500: Enable new drivers for samsung-golden

Vinod Koul (1):
      arm64: defconfig: Enable SM8250 GCC driver

Zhou Wang (1):
      arm64: defconfig: Enable UACCE/PCI PASID/SEC2/HPRE configs

 arch/arm/configs/bcm2835_defconfig   |  1 +
 arch/arm/configs/exynos_defconfig    |  8 +++++---
 arch/arm/configs/imx_v6_v7_defconfig |  2 ++
 arch/arm/configs/multi_v7_defconfig  |  1 +
 arch/arm/configs/sama5_defconfig     |  2 ++
 arch/arm/configs/shmobile_defconfig  |  2 ++
 arch/arm/configs/sunxi_defconfig     |  1 +
 arch/arm/configs/u8500_defconfig     | 14 ++++++++++++++
 arch/arm64/configs/defconfig         | 18 +++++++++++++++++-
 9 files changed, 45 insertions(+), 4 deletions(-)

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply

* Re: [PATCH] arch/{mips,sparc,microblaze,powerpc}: Don't enable pagefault/preempt twice
From: Ira Weiny @ 2020-06-04 20:51 UTC (permalink / raw)
  To: Mike Rapoport
  Cc: Peter Zijlstra, Benjamin Herrenschmidt, Dave Hansen, dri-devel,
	linux-mips, James E.J. Bottomley, Max Filippov, Paul Mackerras,
	H. Peter Anvin, sparclinux, Dan Williams, Helge Deller, x86,
	linux-csky, Christoph Hellwig, Ingo Molnar, linux-snps-arc,
	Guenter Roeck, linux-xtensa, Borislav Petkov, Al Viro,
	Andy Lutomirski, Thomas Gleixner, linux-arm-kernel, Chris Zankel,
	Thomas Bogendoerfer, linux-parisc, linux-kernel, Christian Koenig,
	Andrew Morton, linuxppc-dev, David S. Miller
In-Reply-To: <20200604094133.GC202650@kernel.org>

On Thu, Jun 04, 2020 at 12:41:33PM +0300, Mike Rapoport wrote:
> On Wed, Jun 03, 2020 at 04:44:17PM -0700, Guenter Roeck wrote:
> > 
> > sparc32 smp images in next-20200603 still crash for me with a spinlock
> > recursion. s390 images hang early in boot. Several others (alpha, arm64,
> > various ppc) don't even compile. I can run some more bisects over time,
> > but this is becoming a full-time job :-(.
> 
> I've been able to bisect s390 hang to commit b614345f52bc ("x86/entry:
> Clarify irq_{enter,exit}_rcu()").
> 
> After this commit, lockdep_hardirq_exit() is called twice on s390 (and
> others) - one time in irq_exit_rcu() and another one in irq_exit():
> 
> /**
>  * irq_exit_rcu() - Exit an interrupt context without updating RCU
>  *
>  * Also processes softirqs if needed and possible.
>  */
> void irq_exit_rcu(void)
> {
> 	__irq_exit_rcu();
> 	 /* must be last! */
> 	lockdep_hardirq_exit();
> }
> 
> /**
>  * irq_exit - Exit an interrupt context, update RCU and lockdep
>  *
>  * Also processes softirqs if needed and possible.
>  */
> void irq_exit(void)
> {
> 	irq_exit_rcu();
> 	rcu_irq_exit();
> 	 /* must be last! */
> 	lockdep_hardirq_exit();
> }
> 
> Removing the call in irq_exit() make s390 boot again, and judgung by the
> x86 entry code, the comment /* must be last! */ is stale...

FWIW I got s390 to compile and this patch fixes s390 booting for me as well.

13:05:25 > /home/iweiny/dev/linux-build-test/rootfs/s390/run-qemu-s390.sh 
Build reference: next-20200603-4-g840714292d8c

Building s390:defconfig:initrd ... running ........... passed
Building s390:defconfig:virtio-blk-ccw:rootfs ... running ........... passed
Building s390:defconfig:scsi[virtio-ccw]:rootfs ... running ..............  passed
Building s390:defconfig:virtio-pci:rootfs ... running ........... passed
Building s390:defconfig:scsi[virtio-pci]:rootfs ... running ........... passed

Ira

> 
> @Peter, @Thomas, can you comment please?
> 
> From e51d50ee6f4d1f446decf91c2c67230da14ff82c Mon Sep 17 00:00:00 2001
> From: Mike Rapoport <rppt@linux.ibm.com>
> Date: Thu, 4 Jun 2020 12:37:03 +0300
> Subject: [PATCH] softirq: don't call lockdep_hardirq_exit() twice
> 
> After commit b614345f52bc ("x86/entry: Clarify irq_{enter,exit}_rcu()")
> lockdep_hardirq_exit() is called twice on every architecture that uses
> irq_exit(): one time in irq_exit_rcu() and another one in irq_exit().
> 
> Remove the extra call in irq_exit().
> 
> Signed-off-by: Mike Rapoport <rppt@linux.ibm.com>
> ---
>  kernel/softirq.c | 3 ---
>  1 file changed, 3 deletions(-)
> 
> diff --git a/kernel/softirq.c b/kernel/softirq.c
> index a3eb6eba8c41..7523f4ce4c1d 100644
> --- a/kernel/softirq.c
> +++ b/kernel/softirq.c
> @@ -427,7 +427,6 @@ static inline void __irq_exit_rcu(void)
>  void irq_exit_rcu(void)
>  {
>  	__irq_exit_rcu();
> -	 /* must be last! */
>  	lockdep_hardirq_exit();
>  }
>  
> @@ -440,8 +439,6 @@ void irq_exit(void)
>  {
>  	irq_exit_rcu();
>  	rcu_irq_exit();
> -	 /* must be last! */
> -	lockdep_hardirq_exit();
>  }
>  
>  /*
> -- 
> 2.26.2
> 
> 
> 
> > Guenter
> 
> -- 
> Sincerely yours,
> Mike.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply

* [GIT PULL 1/4] ARM: SoC changes for v5.8
From: Arnd Bergmann @ 2020-06-04 20:50 UTC (permalink / raw)
  To: Linus Torvalds, SoC Team, Linux ARM, Linux Kernel Mailing List
In-Reply-To: <CAK8P3a1dmaiYR5Oxkc0CQcxTm=rAHSx6R+xtf4Wup29JqXNZsA@mail.gmail.com>

The following changes since commit 0e698dfa282211e414076f9dc7e83c1c288314fd:

  Linux 5.7-rc4 (2020-05-03 14:56:04 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git tags/arm-soc-5.8

for you to fetch changes up to d2353bad2c1eef7a1228645fbb21e7887c633d12:

  ARM: omap2: fix omap5_realtime_timer_init definition (2020-06-02
19:14:21 +0200)

----------------------------------------------------------------
ARM: SoC changes for v5.8

One new platform gets added, the Realtek RTD1195, which is an older
Cortex-a7 based relative of the RTD12xx chips that are already supported
in arch/arm64. The platform may also be extended to support running
32-bit kernels on those 64-bit chips for memory-constrained machines.

In the Renesas shmobile platform, we gain support for "RZ/G1H" or R8A7742,
an eight-core chip based on Cortex-A15 and Cortex-A7 cores, originally
released in 2016 as one of the last high-end 32-bit designs.

There is ongoing cleanup for the integrator, tegra, imx, and omap2
platforms, with integrator getting very close to the goal of having
zero code in arch/arm/, and omap2 moving more of the chip specifics
from old board code into device tree files.

The Versatile Express platform is made more modular, with built-in
drivers now becoming loadable modules. This is part of a greater effort
for the Android OS to have a common kernel binary for all platforms and
any platform specific code in loadable modules.

The PXA platform drops support for Compulab's pxa2xx boards that had
rather unusual flash and PCI drivers but no known users remaining.
All device drivers specific to those boards can now get removed as
well.

Across platforms, there is ongoing cleanup, with Geert and Rob
revisiting some a lot of Kconfig options.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>

----------------------------------------------------------------
Anders Roxell (4):
      Revert "ARM: vexpress: Don't select VEXPRESS_CONFIG"
      power: vexpress: add suppress_bind_attrs to true
      power: vexpress: cleanup: use builtin_platform_driver
      power: reset: vexpress: fix build issue

Andreas Färber (2):
      ARM: Prepare Realtek RTD1195
      MAINTAINERS: Add Realtek arm DT files

Andrey Smirnov (1):
      ARM: vf610: report soc info via soc device

Arnd Bergmann (16):
      Merge tag 'versatile-v5.8-1' of
git://git.kernel.org/.../linusw/linux-integrator into arm/soc
      Merge tag 'renesas-arm-soc-for-v5.8-tag1' of
git://git.kernel.org/.../geert/renesas-devel into arm/soc
      Merge tag 'realtek-soc-for-5.8' of
git://git.kernel.org/.../afaerber/linux-realtek into arm/soc
      Merge tag 'arm-soc/for-5.8/maintainers' of
https://github.com/Broadcom/stblinux into arm/soc
      Merge tag 'arm-soc/for-5.8/soc' of
https://github.com/Broadcom/stblinux into arm/soc
      Merge tag 'samsung-soc-5.8' of
git://git.kernel.org/.../krzk/linux into arm/soc
      Merge tag 'omap-for-v5.8/soc-signed-take2' of
git://git.kernel.org/.../tmlind/linux-omap into arm/soc
      Merge tag 'vexpress-modules-for-soc-v2' of
git://git.kernel.org/.../robh/linux into arm/soc
      Merge tag 'renesas-arm-soc-for-v5.8-tag2' of
git://git.kernel.org/.../geert/renesas-devel into arm/soc
      Merge tag 'tegra-for-5.8-arm-core' of
git://git.kernel.org/.../tegra/linux into arm/soc
      Merge tag 'imx-soc-5.8' of
git://git.kernel.org/.../shawnguo/linux into arm/soc
      Merge tag 'omap-for-v5.8/timer-signed' of
git://git.kernel.org/.../tmlind/linux-omap into arm/soc
      Merge tag 'mvebu-arm-5.8-1' of
git://git.infradead.org/linux-mvebu into arm/soc
      Merge tag 'v5.8-rockchip-soc32-1' of
git://git.kernel.org/.../mmind/linux-rockchip into arm/soc
      ARM: davinci: fix build failure without I2C
      ARM: omap2: fix omap5_realtime_timer_init definition

Colin Ian King (1):
      ARM: rockchip: fix spelling mistake "to" -> "too"

Dmitry Osipenko (7):
      firmware: tf: Different way of L2 cache enabling after LP2 suspend
      ARM: tegra: Initialize r0 register for firmware wake-up
      ARM: tegra: Do not fully reinitialize L2 on resume
      ARM: tegra: Correct PL310 Auxiliary Control Register initialization
      ARM: tegra: Switch CPU to PLLP on resume from LP1 on Tegra30/114/124
      ARM: tegra: Don't enable PLLX while resuming from LP1 on Tegra30
      ARM: tegra: Create tegra20-cpufreq platform device on Tegra30

Florian Fainelli (1):
      ARM: mm: Remove virtual address print from B15 RAC driver

Geert Uytterhoeven (19):
      ARM: rockchip: Replace <linux/clk-provider.h> by <linux/of_clk.h>
      ARM: integrator: Drop unneeded select of SPARSE_IRQ
      ARM: realview: Drop unneeded select of multi-platform features
      ARM: omap2plus: Drop unneeded select of MIGHT_HAVE_CACHE_L2X0
      ARM/time: Replace <linux/clk-provider.h> by <linux/of_clk.h>
      ARM: mediatek: Replace <linux/clk-provider.h> by <linux/of_clk.h>
      ARM: mmp: Replace <linux/clk-provider.h> by <linux/of_clk.h>
      ARM: arch timer: Drop unneeded select GENERIC_CLOCKEVENTS
      ARM: actions: Drop unneeded select of COMMON_CLK
      ARM: alpine: Drop unneeded select of HAVE_SMP
      ARM: asm9260: Drop unneeded select of GENERIC_CLOCKEVENTS
      ARM: aspeed: Drop unneeded select of HAVE_SMP
      ARM: berlin: Drop unneeded select of HAVE_SMP
      ARM: clps711x: Drop unneeded select of multi-platform selected options
      ARM: davinci: Drop unneeded select of TIMER_OF
      ARM: mmp: Drop unneeded select of COMMON_CLK
      ARM: mvebu: Drop unneeded select of HAVE_SMP
      ARM: prima2: Drop unneeded select of HAVE_SMP
      ARM: socfpga: Drop unneeded select of PCI_DOMAINS_GENERIC

Lad Prabhakar (2):
      ARM: shmobile: r8a7742: Basic SoC support
      ARM: debug-ll: Add support for r8a7742

Linus Walleij (4):
      bus: Add DT bindings for Integrator/AP logic modules
      bus: Add driver for Integrator/AP logic modules
      ARM: integrator: Retire LM and IM-PD1 boardfile code
      ARM: integrator: Add some Kconfig selections

Lukas Bulwahn (2):
      MAINTAINERS: adjust to renaming physmap_of_versatile.c
      MAINTAINERS: clarify maintenance of ARM Dove drivers

Ma Feng (2):
      ARM: omap2: make omap5_erratum_workaround_801819 static
      ARM: imx: pcm037: make pcm970_sja1000_platform_data static

Nicolas Saenz Julienne (1):
      MAINTAINERS: Update Raspberry Pi development repository

Peng Fan (3):
      ARM: imx: use device_initcall for imx_soc_device_init
      ARM: imx: move cpu definitions into a header
      soc: imx: move cpu code to drivers/soc/imx

Rob Herring (21):
      ARM: versatile: Remove dead sched_clock code
      ARM: versatile: Drop mapping IB2 module registers
      ARM: vexpress: Move vexpress_flags_set() into arch code
      arm64: vexpress: Don't select CONFIG_POWER_RESET_VEXPRESS
      amba: Retry adding deferred devices at late_initcall
      clk: versatile: Rework kconfig structure
      clk: versatile: Only enable SP810 on 32-bit by default
      clk: vexpress-osc: Use the devres clock API variants
      clk: vexpress-osc: Support building as a module
      mfd: vexpress-sysreg: Drop selecting CONFIG_CLKSRC_MMIO
      mfd: vexpress-sysreg: Drop unused syscon child devices
      mfd: vexpress-sysreg: Use devres API variants
      mfd: vexpress-sysreg: Support building as a module
      bus: vexpress-config: Merge vexpress-syscfg into vexpress-config
      bus: vexpress-config: simplify config bus probing
      vexpress: Move setting master site to vexpress-config bus
      bus: vexpress-config: Support building as module
      ARM: vexpress: Don't select VEXPRESS_CONFIG
      clk: versatile: Drop the legacy IM-PD1 clock code
      clk: versatile: Fix kconfig dependency on COMMON_CLK_VERSATILE
      ARM: zynq: Don't select CONFIG_ICST

Robert Jarzmik (2):
      ARM: pxa: remove Compulab pxa2xx boards
      MAINTAINERS: pxa: remove Compulab arm/pxa support

Samuel Zou (1):
      ARM: OMAP2+: pm33xx-core: Make am43xx_get_rtc_base_addr static

Stefan Agner (1):
      ARM: OMAP2+: drop unnecessary adrl

Tang Bin (2):
      ARM: samsung: Omit superfluous error message in s3c_adc_probe()
      ARM: samsung: Use devm_platform_ioremap_resource() to simplify code

Thierry Reding (2):
      firmware: tegra: Make BPMP a regular driver
      Merge branch 'for-5.8/firmware' into for-5.8/arm/core

Tony Lindgren (16):
      clocksource/drivers/timer-ti-32k: Add support for initializing directly
      clocksource/drivers/timer-ti-dm: Add clockevent and clocksource support
      clocksource/drivers/timer-ti-dm: Fix warning for set but not used
      clk: ti: dm816: enable sysclk6_ck on init
      bus: ti-sysc: Ignore timer12 on secure omap3
      ARM: OMAP2+: Add omap_init_time_of()
      ARM: dts: Configure system timers for am335x
      ARM: dts: Configure system timers for am437x
      ARM: dts: Configure system timers for omap4
      ARM: dts: Configure system timers for omap5 and dra7
      ARM: dts: Configure system timers for omap3
      ARM: dts: Configure system timers for ti81xx
      ARM: dts: Configure system timers for omap2
      ARM: OMAP2+: Drop old timer code for dmtimer and 32k counter
      bus: ti-sysc: Timers no longer need legacy quirk handling
      ARM: OMAP2+: Fix regression for using local timer on non-SMP SoCs

Wei Yongjun (1):
      bus: arm-integrator-lm: Fix return value check in integrator_ap_lm_probe()

Wolfram Sang (1):
      ARM: s3c64xx: convert to use i2c_new_client_device()

 .../bindings/bus/arm,integrator-ap-lm.yaml         |   83 ++
 MAINTAINERS                                        |   13 +-
 arch/arm/Kconfig                                   |    4 +-
 arch/arm/Kconfig.debug                             |   10 +
 arch/arm/Makefile                                  |    3 +
 arch/arm/boot/dts/am33xx-l4.dtsi                   |    6 +-
 arch/arm/boot/dts/am33xx.dtsi                      |   20 +
 arch/arm/boot/dts/am3517.dtsi                      |   24 +-
 arch/arm/boot/dts/am4372.dtsi                      |   20 +
 arch/arm/boot/dts/am437x-l4.dtsi                   |    7 +-
 arch/arm/boot/dts/dm814x.dtsi                      |   74 +-
 arch/arm/boot/dts/dm816x.dtsi                      |   78 +-
 arch/arm/boot/dts/dra7-l4.dtsi                     |    7 +-
 arch/arm/boot/dts/dra7.dtsi                        |   10 +
 arch/arm/boot/dts/omap2.dtsi                       |   31 +-
 arch/arm/boot/dts/omap2420.dtsi                    |   68 +-
 arch/arm/boot/dts/omap2430.dtsi                    |   68 +-
 arch/arm/boot/dts/omap3-beagle.dts                 |   33 +
 arch/arm/boot/dts/omap3-devkit8000.dts             |   33 +
 arch/arm/boot/dts/omap3.dtsi                       |  134 +-
 arch/arm/boot/dts/omap4-l4.dtsi                    |    4 +-
 arch/arm/boot/dts/omap4.dtsi                       |   10 +
 arch/arm/boot/dts/omap5-l4.dtsi                    |    4 +-
 arch/arm/boot/dts/omap5.dtsi                       |   10 +
 arch/arm/configs/cm_x2xx_defconfig                 |  173 ---
 arch/arm/configs/em_x270_defconfig                 |  178 ---
 arch/arm/configs/pxa_defconfig                     |    2 -
 arch/arm/kernel/time.c                             |    2 +-
 arch/arm/mach-actions/Kconfig                      |    1 -
 arch/arm/mach-alpine/Kconfig                       |    1 -
 arch/arm/mach-asm9260/Kconfig                      |    1 -
 arch/arm/mach-aspeed/Kconfig                       |    1 -
 arch/arm/mach-berlin/Kconfig                       |    1 -
 arch/arm/mach-clps711x/Kconfig                     |    5 -
 arch/arm/mach-davinci/Kconfig                      |    1 -
 arch/arm/mach-davinci/board-dm644x-evm.c           |   26 +-
 arch/arm/mach-imx/common.h                         |    1 -
 arch/arm/mach-imx/cpu.c                            |  159 ---
 arch/arm/mach-imx/mach-imx6q.c                     |    8 +-
 arch/arm/mach-imx/mach-imx6sl.c                    |    8 +-
 arch/arm/mach-imx/mach-imx6sx.c                    |    8 +-
 arch/arm/mach-imx/mach-imx6ul.c                    |    8 +-
 arch/arm/mach-imx/mach-imx7d.c                     |    6 -
 arch/arm/mach-imx/mach-imx7ulp.c                   |    2 +-
 arch/arm/mach-imx/mach-pcm037.c                    |    2 +-
 arch/arm/mach-imx/mach-vf610.c                     |   47 +
 arch/arm/mach-imx/mxc.h                            |   22 +-
 arch/arm/mach-integrator/Kconfig                   |    9 +-
 arch/arm/mach-integrator/Makefile                  |    3 +-
 arch/arm/mach-integrator/impd1.c                   |  475 --------
 arch/arm/mach-integrator/impd1.h                   |   15 -
 arch/arm/mach-integrator/integrator_ap.c           |   31 -
 arch/arm/mach-integrator/lm.c                      |   96 --
 arch/arm/mach-integrator/lm.h                      |   24 -
 arch/arm/mach-mediatek/mediatek.c                  |    2 +-
 arch/arm/mach-mmp/Kconfig                          |    1 -
 arch/arm/mach-mmp/mmp-dt.c                         |    2 +-
 arch/arm/mach-mmp/mmp2-dt.c                        |    2 +-
 arch/arm/mach-mvebu/Kconfig                        |    3 -
 arch/arm/mach-omap2/Kconfig                        |    1 -
 arch/arm/mach-omap2/Makefile                       |    6 +-
 arch/arm/mach-omap2/board-generic.c                |   39 +-
 arch/arm/mach-omap2/common.h                       |    7 +
 arch/arm/mach-omap2/omap-smp.c                     |    2 +-
 arch/arm/mach-omap2/omap_hwmod_2420_data.c         |   20 -
 arch/arm/mach-omap2/omap_hwmod_2430_data.c         |   19 -
 .../mach-omap2/omap_hwmod_2xxx_interconnect_data.c |    8 -
 arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c |   47 -
 .../mach-omap2/omap_hwmod_33xx_43xx_common_data.h  |    2 -
 .../omap_hwmod_33xx_43xx_interconnect_data.c       |    8 -
 .../mach-omap2/omap_hwmod_33xx_43xx_ipblock_data.c |   62 -
 arch/arm/mach-omap2/omap_hwmod_33xx_data.c         |   10 -
 arch/arm/mach-omap2/omap_hwmod_3xxx_data.c         |  146 +--
 arch/arm/mach-omap2/omap_hwmod_43xx_data.c         |   45 -
 arch/arm/mach-omap2/omap_hwmod_44xx_data.c         |   90 --
 arch/arm/mach-omap2/omap_hwmod_54xx_data.c         |   89 --
 arch/arm/mach-omap2/omap_hwmod_7xx_data.c          |  176 ---
 arch/arm/mach-omap2/omap_hwmod_81xx_data.c         |   74 --
 arch/arm/mach-omap2/omap_hwmod_common_data.h       |    3 -
 arch/arm/mach-omap2/pm33xx-core.c                  |    2 +-
 arch/arm/mach-omap2/sleep34xx.S                    |    2 +-
 arch/arm/mach-omap2/timer.c                        |  577 +--------
 arch/arm/mach-prima2/Kconfig                       |    1 -
 arch/arm/mach-pxa/Kconfig                          |   17 -
 arch/arm/mach-pxa/Makefile                         |    5 -
 arch/arm/mach-pxa/cm-x255.c                        |  240 ----
 arch/arm/mach-pxa/cm-x270.c                        |  419 -------
 arch/arm/mach-pxa/cm-x2xx-pci.c                    |  196 ---
 arch/arm/mach-pxa/cm-x2xx-pci.h                    |   14 -
 arch/arm/mach-pxa/cm-x2xx.c                        |  538 --------
 arch/arm/mach-pxa/em-x270.c                        | 1286 --------------------
 arch/arm/mach-pxa/include/mach/io.h                |   18 -
 arch/arm/mach-realtek/Kconfig                      |   11 +
 arch/arm/mach-realtek/Makefile                     |    2 +
 arch/arm/mach-realtek/rtd1195.c                    |   40 +
 arch/arm/mach-realview/Kconfig                     |   10 -
 arch/arm/mach-rockchip/platsmp.c                   |    2 +-
 arch/arm/mach-rockchip/rockchip.c                  |    2 +-
 arch/arm/mach-s3c64xx/mach-crag6410-module.c       |    7 +-
 arch/arm/mach-shmobile/setup-rcar-gen2.c           |    2 +
 arch/arm/mach-socfpga/Kconfig                      |    1 -
 arch/arm/mach-tegra/pm.c                           |    4 +
 arch/arm/mach-tegra/reset-handler.S                |    7 +-
 arch/arm/mach-tegra/sleep-tegra30.S                |   16 +-
 arch/arm/mach-tegra/tegra.c                        |    8 +-
 arch/arm/mach-versatile/Kconfig                    |    1 -
 arch/arm/mach-versatile/versatile_dt.c             |    5 -
 arch/arm/mach-vexpress/Kconfig                     |    3 -
 arch/arm/mach-vexpress/core.h                      |    1 +
 arch/arm/mach-vexpress/dcscb.c                     |    1 +
 arch/arm/mach-vexpress/v2m.c                       |   23 +
 arch/arm/mach-zynq/Kconfig                         |    1 -
 arch/arm/mm/cache-b15-rac.c                        |    3 +-
 arch/arm/plat-samsung/adc.c                        |    8 +-
 arch/arm/plat-versatile/Kconfig                    |    7 -
 arch/arm/plat-versatile/Makefile                   |    1 -
 arch/arm/plat-versatile/include/plat/sched_clock.h |    7 -
 arch/arm/plat-versatile/sched-clock.c              |   28 -
 arch/arm64/Kconfig.platforms                       |    3 -
 drivers/amba/bus.c                                 |   14 +-
 drivers/bus/Kconfig                                |   11 +-
 drivers/bus/Makefile                               |    2 +-
 drivers/bus/arm-integrator-lm.c                    |  128 ++
 drivers/bus/ti-sysc.c                              |   25 +-
 drivers/bus/vexpress-config.c                      |  354 ++++--
 drivers/clk/Makefile                               |    2 +-
 drivers/clk/ti/clk-816x.c                          |    1 +
 drivers/clk/versatile/Kconfig                      |   21 +-
 drivers/clk/versatile/clk-impd1.c                  |  121 --
 drivers/clk/versatile/clk-vexpress-osc.c           |   20 +-
 drivers/clocksource/Makefile                       |    1 +
 drivers/clocksource/timer-ti-32k.c                 |   48 +-
 drivers/clocksource/timer-ti-dm-systimer.c         |  727 +++++++++++
 drivers/firmware/tegra/bpmp.c                      |    9 +-
 drivers/firmware/trusted_foundations.c             |   21 +-
 drivers/mfd/Kconfig                                |    5 +-
 drivers/mfd/vexpress-sysreg.c                      |   99 +-
 drivers/misc/Kconfig                               |    9 -
 drivers/misc/Makefile                              |    1 -
 drivers/misc/vexpress-syscfg.c                     |  280 -----
 drivers/power/reset/Kconfig                        |    2 +-
 drivers/power/reset/vexpress-poweroff.c            |    8 +-
 drivers/soc/imx/Makefile                           |    3 +
 drivers/soc/imx/soc-imx.c                          |  192 +++
 include/linux/firmware/trusted_foundations.h       |    1 +
 include/linux/platform_data/clk-integrator.h       |    2 -
 include/linux/vexpress.h                           |   30 -
 include/soc/imx/cpu.h                              |   36 +
 148 files changed, 2394 insertions(+), 6232 deletions(-)
 create mode 100644
Documentation/devicetree/bindings/bus/arm,integrator-ap-lm.yaml
 delete mode 100644 arch/arm/configs/cm_x2xx_defconfig
 delete mode 100644 arch/arm/configs/em_x270_defconfig
 delete mode 100644 arch/arm/mach-integrator/impd1.c
 delete mode 100644 arch/arm/mach-integrator/impd1.h
 delete mode 100644 arch/arm/mach-integrator/lm.c
 delete mode 100644 arch/arm/mach-integrator/lm.h
 delete mode 100644 arch/arm/mach-pxa/cm-x255.c
 delete mode 100644 arch/arm/mach-pxa/cm-x270.c
 delete mode 100644 arch/arm/mach-pxa/cm-x2xx-pci.c
 delete mode 100644 arch/arm/mach-pxa/cm-x2xx-pci.h
 delete mode 100644 arch/arm/mach-pxa/cm-x2xx.c
 delete mode 100644 arch/arm/mach-pxa/em-x270.c
 delete mode 100644 arch/arm/mach-pxa/include/mach/io.h
 create mode 100644 arch/arm/mach-realtek/Kconfig
 create mode 100644 arch/arm/mach-realtek/Makefile
 create mode 100644 arch/arm/mach-realtek/rtd1195.c
 delete mode 100644 arch/arm/plat-versatile/Kconfig
 delete mode 100644 arch/arm/plat-versatile/include/plat/sched_clock.h
 delete mode 100644 arch/arm/plat-versatile/sched-clock.c
 create mode 100644 drivers/bus/arm-integrator-lm.c
 create mode 100644 drivers/clocksource/timer-ti-dm-systimer.c
 delete mode 100644 drivers/misc/vexpress-syscfg.c
 create mode 100644 drivers/soc/imx/soc-imx.c
 delete mode 100644 include/linux/platform_data/clk-integrator.h
 create mode 100644 include/soc/imx/cpu.h

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply

* Re: [PATCH v3 12/13] dt-bindings: clock: Add Marvell MMP Audio Clock Controller binding
From: Rob Herring @ 2020-06-04 20:47 UTC (permalink / raw)
  To: Lubomir Rintel
  Cc: devicetree, Stephen Boyd, Michael Turquette,
	linux-kernel@vger.kernel.org, linux-clk,
	moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE
In-Reply-To: <20200519224151.2074597-13-lkundrak@v3.sk>

On Tue, May 19, 2020 at 4:42 PM Lubomir Rintel <lkundrak@v3.sk> wrote:
>
> This describes the bindings for a controller that generates master and bit
> clocks for the I2S interface.
>
> Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
>
> ---
> Changes since v1:
> - Fix commit message wording
> - Define MMP2_CLK_AUDIO_NR_CLKS
> - Make clock ids start at 0, not 1
> - Fix dt-bindings/clock/marvell,mmp2-audio.h file name
> - Rename node from "clocks" to "clock-controller"
>
>  .../clock/marvell,mmp2-audio-clock.yaml       | 74 +++++++++++++++++++
>  .../dt-bindings/clock/marvell,mmp2-audio.h    | 10 +++
>  2 files changed, 84 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/clock/marvell,mmp2-audio-clock.yaml
>  create mode 100644 include/dt-bindings/clock/marvell,mmp2-audio.h
>
> diff --git a/Documentation/devicetree/bindings/clock/marvell,mmp2-audio-clock.yaml b/Documentation/devicetree/bindings/clock/marvell,mmp2-audio-clock.yaml
> new file mode 100644
> index 000000000000..ab6e82d1d3a9
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/clock/marvell,mmp2-audio-clock.yaml
> @@ -0,0 +1,74 @@
> +# SPDX-License-Identifier: (GPL-2.0+ OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/clock/marvell,mmp2-audio-clock.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Marvell MMP2 Audio Clock Controller
> +
> +maintainers:
> +  - Lubomir Rintel <lkundrak@v3.sk>
> +
> +description: |
> +  The audio clock controller generates and supplies the clocks to the audio
> +  codec.
> +
> +  Each clock is assigned an identifier and client nodes use this identifier
> +  to specify the clock which they consume.
> +
> +  All these identifiers could be found in
> +  <dt-bindings/clock/marvell,mmp2-audio.h>.
> +
> +properties:
> +  compatible:
> +    enum:
> +      - marvell,mmp2-audio-clock
> +
> +  reg:
> +    maxItems: 1
> +
> +  clocks:
> +    items:
> +      - description: Audio subsystem clock
> +      - description: The crystal oscillator clock
> +      - description: First I2S clock
> +      - description: Second I2S clock
> +
> +  clock-names:
> +    items:
> +      - const: audio
> +      - const: vctcxo
> +      - const: i2s0
> +      - const: i2s1
> +
> +  '#clock-cells':
> +    const: 1
> +
> +  power-domains:
> +    maxItems: 1
> +
> +required:
> +  - compatible
> +  - reg
> +  - clocks
> +  - clock-names
> +  - '#clock-cells'
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    #include <dt-bindings/clock/marvell,mmp2-audio.h>
> +    #include <dt-bindings/power/marvell,mmp2.h>
> +
> +    clock-controller@d42a0c30 {
> +      compatible = "marvell,mmp2-audio-clock";
> +      reg = <0xd42a0c30 0x10>;
> +      clock-names = "audio", "vctcxo", "i2s0", "i2s1";
> +      clocks = <&soc_clocks MMP2_CLK_AUDIO>,
> +               <&soc_clocks MMP2_CLK_VCTCXO>,
> +               <&soc_clocks MMP2_CLK_I2S0>,
> +               <&soc_clocks MMP2_CLK_I2S1>;

This now breaks linux-next. I think the above defines are missing
their include.

My testing wasn't happy either because it couldn't find
marvell,mmp2.h. I guess that's somewhere in linux-next and now we're
on to the secondary issue. Once that's fixed, then the schema checks
will actually run (hint: make sure they pass).

Please get this fixed or revert before it is sent to Linus. Maybe we
can have an rc1 without the schema broken.

Rob

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply

* [GIT PULL 0/4] ARM: SoC branches for v5.8
From: Arnd Bergmann @ 2020-06-04 20:45 UTC (permalink / raw)
  To: Linus Torvalds, SoC Team, Linux ARM, Linux Kernel Mailing List,
	Andreas Färber, Marek Vasut, Geert Uytterhoeven, Rob Herring,
	Anson Huang, Doug Anderson

Hi Linus,

Here are the usual branches for arm-soc: five new SoC variants, 25
machines added, two machines removed, a few new drivers and the
usual amount of of cleanups and rework.

There are 835 patches from 196 contributors in total, with only
these contributing more than ten patches:

     36 Marek Vasut
     35 Andreas Färber
     27 Geert Uytterhoeven
     23 Rob Herring
     22 Anson Huang
     21 Douglas Anderson
     20 Tudor Ambarus
     20 Lad Prabhakar
     19 Johan Jonker
     17 Jonathan Bakker
     17 Andre Przywara
     16 Suman Anna
     15 Jerome Brunet
     14 Serge Semin
     14 Bjorn Andersson
     13 Tony Lindgren
     12 Lubomir Rintel
     12 Dmitry Osipenko
     11 Sudeep Holla
     11 Marek Szyprowski

The dirstat shows that as usual most changes are for device
tree files, this time slightly more 32-bit than 64-bit both in number
and size of the changes, while 60% of the newly added machines
are 64-bit.

   0.3% Documentation/devicetree/bindings/arm/
   0.6% Documentation/devicetree/bindings/bus/
   0.2% Documentation/devicetree/bindings/display/tegra/
   0.3% Documentation/devicetree/bindings/memory-controllers/
   0.5% Documentation/devicetree/bindings/
  31.9% arch/arm/boot/dts/
   0.7% arch/arm/configs/
   0.5% arch/arm/mach-imx/
   1.2% arch/arm/mach-integrator/
   3.2% arch/arm/mach-omap2/
   5.4% arch/arm/mach-pxa/
   0.5% arch/arm/
   0.6% arch/arm64/boot/dts/allwinner/
   4.0% arch/arm64/boot/dts/amlogic/
   1.5% arch/arm64/boot/dts/arm/
   2.4% arch/arm64/boot/dts/freescale/
   0.2% arch/arm64/boot/dts/hisilicon/
   5.2% arch/arm64/boot/dts/mediatek/
   0.4% arch/arm64/boot/dts/nvidia/
   7.6% arch/arm64/boot/dts/qcom/
   1.7% arch/arm64/boot/dts/realtek/
   2.0% arch/arm64/boot/dts/renesas/
   1.4% arch/arm64/boot/dts/rockchip/
   0.3% arch/arm64/boot/dts/socionext/
   0.4% arch/arm64/boot/dts/sprd/
   0.5% arch/arm64/boot/dts/ti/
   2.8% drivers/bus/
   0.9% drivers/clk/mediatek/
   0.4% drivers/clk/versatile/
   0.6% drivers/cpufreq/
   0.7% drivers/firmware/arm_scmi/
   0.2% drivers/firmware/
   1.1% drivers/gpu/drm/mediatek/
   0.6% drivers/memory/
   0.2% drivers/mfd/
   0.6% drivers/misc/
   0.4% drivers/reset/
   0.3% drivers/soc/amlogic/
   0.3% drivers/soc/imx/
   1.1% drivers/soc/mediatek/
   3.0% drivers/soc/qcom/
   0.2% drivers/soc/tegra/fuse/
   0.3% drivers/soc/ti/
   0.2% drivers/soc/
   7.8% drivers/staging/media/tegra-video/
   0.4% drivers/tee/
   0.2% include/dt-bindings/clock/
   0.2% include/dt-bindings/firmware/imx/
   0.6% include/dt-bindings/reset/
   0.3% include/linux/
   0.3% include/

The largest outlier are a few added drivers for the Tegra platform
and on MIPS SoC (Baikal-T1), for which I helped get some drivers
reviewed and merged. The changes for omap2 and pxa are
cleanups moving code out of the platform directory.

As of this morning, there were no merge conflicts against your tree.

     Arnd

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox