linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 01/11] arch: arm: mach-hpe: Introduce the HPE GXP architecture
@ 2022-04-20 15:01 nick.hawkins
  2022-04-20 15:01 ` [PATCH v4 02/11] arch: arm: configs: multi_v7_defconfig nick.hawkins
                   ` (9 more replies)
  0 siblings, 10 replies; 19+ messages in thread
From: nick.hawkins @ 2022-04-20 15:01 UTC (permalink / raw)
  To: verdun, nick, joel, arnd
  Cc: Nick Hawkins, Russell King, linux-arm-kernel, linux-kernel

From: Nick Hawkins <nick.hawkins@hpe.com>

The GXP is the HPE BMC SoC that is used in the majority
of HPE Generation 10 servers. Traditionally the asic will
last multiple generations of server before being replaced.
In gxp.c we reset the EHCI controller early to boot the asic.

Info about SoC:

HPE GXP is the name of the HPE Soc. This SoC is used to implement
many BMC features at HPE. It supports ARMv7 architecture based on
the Cortex A9 core. It is capable of using an AXI bus to which
a memory controller is attached. It has multiple SPI interfaces
to connect boot flash and BIOS flash. It uses a 10/100/1000 MAC
for network connectivity. It has multiple i2c engines to drive
connectivity with a host infrastructure. The initial patches
enable the watchdog and timer enabling the host to be able to
boot.

Signed-off-by: Nick Hawkins <nick.hawkins@hpe.com>

---
v4:
* Removed unecessary code: restart, iomap, init_machine
* Reordered Kconfig so depends
* Removed SPARSE_IRQ, MULTI_IRQ_HANDLER, IRQ_DOMAIN, PINCTL from
  Kconfig
---
 arch/arm/Kconfig           |  2 ++
 arch/arm/Makefile          |  1 +
 arch/arm/mach-hpe/Kconfig  | 17 +++++++++++++++++
 arch/arm/mach-hpe/Makefile |  1 +
 arch/arm/mach-hpe/gxp.c    | 16 ++++++++++++++++
 5 files changed, 37 insertions(+)
 create mode 100644 arch/arm/mach-hpe/Kconfig
 create mode 100644 arch/arm/mach-hpe/Makefile
 create mode 100644 arch/arm/mach-hpe/gxp.c

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 4c97cb40eebb..6998b5b5f59e 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -618,6 +618,8 @@ source "arch/arm/mach-highbank/Kconfig"
 
 source "arch/arm/mach-hisi/Kconfig"
 
+source "arch/arm/mach-hpe/Kconfig"
+
 source "arch/arm/mach-imx/Kconfig"
 
 source "arch/arm/mach-integrator/Kconfig"
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index 77172d555c7e..1cc0523d0a0a 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -178,6 +178,7 @@ machine-$(CONFIG_ARCH_FOOTBRIDGE)	+= footbridge
 machine-$(CONFIG_ARCH_GEMINI)		+= gemini
 machine-$(CONFIG_ARCH_HIGHBANK)		+= highbank
 machine-$(CONFIG_ARCH_HISI)		+= hisi
+machine-$(CONFIG_ARCH_HPE)		+= hpe
 machine-$(CONFIG_ARCH_INTEGRATOR)	+= integrator
 machine-$(CONFIG_ARCH_IOP32X)		+= iop32x
 machine-$(CONFIG_ARCH_IXP4XX)		+= ixp4xx
diff --git a/arch/arm/mach-hpe/Kconfig b/arch/arm/mach-hpe/Kconfig
new file mode 100644
index 000000000000..c075248b259e
--- /dev/null
+++ b/arch/arm/mach-hpe/Kconfig
@@ -0,0 +1,17 @@
+menuconfig ARCH_HPE
+	bool "HPE SoC support"
+	depends on ARCH_MULTI_V7
+	help
+	  This enables support for HPE ARM based SoC chips
+if ARCH_HPE
+
+config ARCH_HPE_GXP
+	bool "HPE GXP SoC"
+	depends on ARCH_MULTI_V7
+	select ARM_VIC
+	select GENERIC_IRQ_CHIP
+	select CLKSRC_MMIO
+	help
+	  Support for GXP SoCs
+
+endif
diff --git a/arch/arm/mach-hpe/Makefile b/arch/arm/mach-hpe/Makefile
new file mode 100644
index 000000000000..8b0a91234df4
--- /dev/null
+++ b/arch/arm/mach-hpe/Makefile
@@ -0,0 +1 @@
+obj-$(CONFIG_ARCH_HPE_GXP) += gxp.o
diff --git a/arch/arm/mach-hpe/gxp.c b/arch/arm/mach-hpe/gxp.c
new file mode 100644
index 000000000000..e2f0c3ae6bd8
--- /dev/null
+++ b/arch/arm/mach-hpe/gxp.c
@@ -0,0 +1,16 @@
+// SPDX-License-Identifier: GPL-2.0
+/* Copyright (C) 2022 Hewlett-Packard Enterprise Development Company, L.P.*/
+
+#include <linux/of_platform.h>
+#include <asm/mach/arch.h>
+
+static const char * const gxp_board_dt_compat[] = {
+	"hpe,gxp",
+	NULL,
+};
+
+DT_MACHINE_START(GXP_DT, "HPE GXP")
+	.dt_compat	= gxp_board_dt_compat,
+	.l2c_aux_val = 0,
+	.l2c_aux_mask = 0,
+MACHINE_END
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH v4 02/11] arch: arm: configs: multi_v7_defconfig
  2022-04-20 15:01 [PATCH v4 01/11] arch: arm: mach-hpe: Introduce the HPE GXP architecture nick.hawkins
@ 2022-04-20 15:01 ` nick.hawkins
  2022-04-20 15:01 ` [PATCH v4 03/11] drivers: wdt: Introduce HPE GXP SoC Watchdog nick.hawkins
                   ` (8 subsequent siblings)
  9 siblings, 0 replies; 19+ messages in thread
From: nick.hawkins @ 2022-04-20 15:01 UTC (permalink / raw)
  To: verdun, nick, joel, arnd
  Cc: Nick Hawkins, Russell King, linux-arm-kernel, linux-kernel

From: Nick Hawkins <nick.hawkins@hpe.com>

Add support for the HPE GXP Processor by modifing the
multi_v7_defconfig instead. This adds basic HPE and GXP
architecture as well as enables the watchdog which is part
of this patch set.

Signed-off-by: Nick Hawkins <nick.hawkins@hpe.com>
---
 arch/arm/configs/multi_v7_defconfig | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/arm/configs/multi_v7_defconfig b/arch/arm/configs/multi_v7_defconfig
index 8863fa969ede..b93d213b7e60 100644
--- a/arch/arm/configs/multi_v7_defconfig
+++ b/arch/arm/configs/multi_v7_defconfig
@@ -1006,6 +1006,8 @@ CONFIG_QCOM_GSBI=y
 CONFIG_QCOM_SMD_RPM=m
 CONFIG_QCOM_WCNSS_CTRL=m
 CONFIG_ARCH_EMEV2=y
+CONFIG_ARCH_HPE=y
+CONFIG_ARCH_HPE_GXP=y
 CONFIG_ARCH_R8A7794=y
 CONFIG_ARCH_R8A7779=y
 CONFIG_ARCH_R8A7790=y
@@ -1169,3 +1171,4 @@ CONFIG_CMA_SIZE_MBYTES=64
 CONFIG_PRINTK_TIME=y
 CONFIG_MAGIC_SYSRQ=y
 CONFIG_DEBUG_FS=y
+CONFIG_GXP_WATCHDOG=y
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH v4 03/11] drivers: wdt: Introduce HPE GXP SoC Watchdog
  2022-04-20 15:01 [PATCH v4 01/11] arch: arm: mach-hpe: Introduce the HPE GXP architecture nick.hawkins
  2022-04-20 15:01 ` [PATCH v4 02/11] arch: arm: configs: multi_v7_defconfig nick.hawkins
@ 2022-04-20 15:01 ` nick.hawkins
  2022-04-20 15:52   ` Guenter Roeck
  2022-04-20 15:01 ` [PATCH v4 04/11] clocksource/drivers: Add HPE GXP timer nick.hawkins
                   ` (7 subsequent siblings)
  9 siblings, 1 reply; 19+ messages in thread
From: nick.hawkins @ 2022-04-20 15:01 UTC (permalink / raw)
  To: verdun, nick, joel, arnd
  Cc: Nick Hawkins, Wim Van Sebroeck, Guenter Roeck, linux-kernel,
	linux-watchdog

From: Nick Hawkins <nick.hawkins@hpe.com>

Adding support for the HPE GXP Watchdog. It is new to the linux
community and this along with several other patches is the first
support for it. The GXP asic contains a full compliment of
timers one of which is the watchdog timer. The watchdog timer
is 16 bit and has 10ms resolution. The watchdog is now
created as a child device of timer since the same register
range is used. This was done due to changes requested with
the device tree.

---
v2:
*Made watchdog a child of timer as they share the same register
region per change request on dtsi.
*Removed extra parenthesis
*Fixed u8 u32 u64 usage
*Fixed alignment issue
*Removed unused gxp_wdt_remove function

Signed-off-by: Nick Hawkins <nick.hawkins@hpe.com>
---
 drivers/watchdog/Kconfig   |   8 ++
 drivers/watchdog/Makefile  |   1 +
 drivers/watchdog/gxp-wdt.c | 166 +++++++++++++++++++++++++++++++++++++
 3 files changed, 175 insertions(+)
 create mode 100644 drivers/watchdog/gxp-wdt.c

diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
index c8fa79da23b3..cb210d2978d2 100644
--- a/drivers/watchdog/Kconfig
+++ b/drivers/watchdog/Kconfig
@@ -1820,6 +1820,14 @@ config RALINK_WDT
 	help
 	  Hardware driver for the Ralink SoC Watchdog Timer.
 
+config GXP_WATCHDOG
+	tristate "HPE GXP watchdog support"
+	depends on ARCH_HPE_GXP
+	select WATCHDOG_CORE
+	help
+	  Say Y here to include support for the watchdog timer
+	  in HPE GXP SoCs.
+
 config MT7621_WDT
 	tristate "Mediatek SoC watchdog"
 	select WATCHDOG_CORE
diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile
index f7da867e8782..e2acf3a0d0fc 100644
--- a/drivers/watchdog/Makefile
+++ b/drivers/watchdog/Makefile
@@ -92,6 +92,7 @@ obj-$(CONFIG_RTD119X_WATCHDOG) += rtd119x_wdt.o
 obj-$(CONFIG_SPRD_WATCHDOG) += sprd_wdt.o
 obj-$(CONFIG_PM8916_WATCHDOG) += pm8916_wdt.o
 obj-$(CONFIG_ARM_SMC_WATCHDOG) += arm_smc_wdt.o
+obj-$(CONFIG_GXP_WATCHDOG) += gxp-wdt.o
 obj-$(CONFIG_VISCONTI_WATCHDOG) += visconti_wdt.o
 obj-$(CONFIG_MSC313E_WATCHDOG) += msc313e_wdt.o
 obj-$(CONFIG_APPLE_WATCHDOG) += apple_wdt.o
diff --git a/drivers/watchdog/gxp-wdt.c b/drivers/watchdog/gxp-wdt.c
new file mode 100644
index 000000000000..f45ab9a826d6
--- /dev/null
+++ b/drivers/watchdog/gxp-wdt.c
@@ -0,0 +1,166 @@
+// SPDX-License-Identifier: GPL-2.0
+/* Copyright (C) 2022 Hewlett-Packard Enterprise Development Company, L.P. */
+
+#include <linux/delay.h>
+#include <linux/io.h>
+#include <linux/module.h>
+#include <linux/platform_device.h>
+#include <linux/of_address.h>
+#include <linux/of_platform.h>
+#include <linux/types.h>
+#include <linux/watchdog.h>
+
+#define MASK_WDGCS_ENABLE	0x01
+#define MASK_WDGCS_RELOAD	0x04
+#define MASK_WDGCS_NMIEN	0x08
+#define MASK_WDGCS_WARN		0x80
+
+#define WDT_MAX_TIMEOUT_MS	655000
+#define WDT_DEFAULT_TIMEOUT	30
+#define SECS_TO_WDOG_TICKS(x) ((x) * 100)
+#define WDOG_TICKS_TO_SECS(x) ((x) / 100)
+
+#define GXP_WDT_CNT_OFS		0x10
+#define GXP_WDT_CTRL_OFS	0x16
+
+struct gxp_wdt {
+	void __iomem *base;
+	struct watchdog_device wdd;
+};
+
+static void gxp_wdt_enable_reload(struct gxp_wdt *drvdata)
+{
+	u8 val;
+
+	val = readb(drvdata->base + GXP_WDT_CTRL_OFS);
+	val |= (MASK_WDGCS_ENABLE | MASK_WDGCS_RELOAD);
+	writeb(val, drvdata->base + GXP_WDT_CTRL_OFS);
+}
+
+static int gxp_wdt_start(struct watchdog_device *wdd)
+{
+	struct gxp_wdt *drvdata = watchdog_get_drvdata(wdd);
+
+	writew(SECS_TO_WDOG_TICKS(wdd->timeout), drvdata->base + GXP_WDT_CNT_OFS);
+	gxp_wdt_enable_reload(drvdata);
+	return 0;
+}
+
+static int gxp_wdt_stop(struct watchdog_device *wdd)
+{
+	struct gxp_wdt *drvdata = watchdog_get_drvdata(wdd);
+	u8 val;
+
+	val = readb_relaxed(drvdata->base + GXP_WDT_CTRL_OFS);
+	val &= ~MASK_WDGCS_ENABLE;
+	writeb(val, drvdata->base + GXP_WDT_CTRL_OFS);
+	return 0;
+}
+
+static int gxp_wdt_set_timeout(struct watchdog_device *wdd,
+			       unsigned int timeout)
+{
+	struct gxp_wdt *drvdata = watchdog_get_drvdata(wdd);
+	u32 actual;
+
+	wdd->timeout = timeout;
+	actual = min(timeout, wdd->max_hw_heartbeat_ms / 1000);
+	writew(SECS_TO_WDOG_TICKS(actual), drvdata->base + GXP_WDT_CNT_OFS);
+
+	return 0;
+}
+
+static unsigned int gxp_wdt_get_timeleft(struct watchdog_device *wdd)
+{
+	struct gxp_wdt *drvdata = watchdog_get_drvdata(wdd);
+	u32 val = readw(drvdata->base + GXP_WDT_CNT_OFS);
+
+	return WDOG_TICKS_TO_SECS(val);
+}
+
+static int gxp_wdt_ping(struct watchdog_device *wdd)
+{
+	struct gxp_wdt *drvdata = watchdog_get_drvdata(wdd);
+
+	gxp_wdt_enable_reload(drvdata);
+	return 0;
+}
+
+static int gxp_restart(struct watchdog_device *wdd, unsigned long action,
+		       void *data)
+{
+	struct gxp_wdt *drvdata = watchdog_get_drvdata(wdd);
+
+	writew(10, drvdata->base + GXP_WDT_CNT_OFS);
+	gxp_wdt_enable_reload(drvdata);
+	mdelay(100);
+	return 0;
+}
+
+static const struct watchdog_ops gxp_wdt_ops = {
+	.owner =	THIS_MODULE,
+	.start =	gxp_wdt_start,
+	.stop =		gxp_wdt_stop,
+	.ping =		gxp_wdt_ping,
+	.set_timeout =	gxp_wdt_set_timeout,
+	.get_timeleft =	gxp_wdt_get_timeleft,
+	.restart =	gxp_restart,
+};
+
+static const struct watchdog_info gxp_wdt_info = {
+	.options = WDIOF_SETTIMEOUT | WDIOF_MAGICCLOSE | WDIOF_KEEPALIVEPING,
+	.identity = "HPE GXP Watchdog timer",
+};
+
+static int gxp_wdt_probe(struct platform_device *pdev)
+{
+	struct device *dev = &pdev->dev;
+	struct gxp_wdt *drvdata;
+	int err;
+	u8 val;
+
+	drvdata = devm_kzalloc(dev, sizeof(struct gxp_wdt), GFP_KERNEL);
+	if (!drvdata)
+		return -ENOMEM;
+
+	drvdata->base = (void __iomem *)dev->platform_data;
+
+	drvdata->wdd.info = &gxp_wdt_info;
+	drvdata->wdd.ops = &gxp_wdt_ops;
+	drvdata->wdd.max_hw_heartbeat_ms = WDT_MAX_TIMEOUT_MS;
+	drvdata->wdd.parent = dev;
+	drvdata->wdd.timeout = WDT_DEFAULT_TIMEOUT;
+
+	watchdog_set_drvdata(&drvdata->wdd, drvdata);
+	watchdog_set_nowayout(&drvdata->wdd, WATCHDOG_NOWAYOUT);
+
+	val = readb(drvdata->base + GXP_WDT_CTRL_OFS);
+
+	if (val & MASK_WDGCS_ENABLE)
+		set_bit(WDOG_HW_RUNNING, &drvdata->wdd.status);
+
+	watchdog_set_restart_priority(&drvdata->wdd, 128);
+
+	watchdog_stop_on_reboot(&drvdata->wdd);
+	err = devm_watchdog_register_device(dev, &drvdata->wdd);
+	if (err) {
+		dev_err(dev, "Failed to register watchdog device");
+		return err;
+	}
+
+	dev_info(dev, "HPE GXP watchdog timer");
+
+	return 0;
+}
+
+static struct platform_driver gxp_wdt_driver = {
+	.probe = gxp_wdt_probe,
+	.driver = {
+		.name =	"gxp-wdt",
+	},
+};
+module_platform_driver(gxp_wdt_driver);
+
+MODULE_AUTHOR("Nick Hawkins <nick.hawkins@hpe.com>");
+MODULE_AUTHOR("Jean-Marie Verdun <verdun@hpe.com>");
+MODULE_DESCRIPTION("Driver for GXP watchdog timer");
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH v4 04/11] clocksource/drivers: Add HPE GXP timer
  2022-04-20 15:01 [PATCH v4 01/11] arch: arm: mach-hpe: Introduce the HPE GXP architecture nick.hawkins
  2022-04-20 15:01 ` [PATCH v4 02/11] arch: arm: configs: multi_v7_defconfig nick.hawkins
  2022-04-20 15:01 ` [PATCH v4 03/11] drivers: wdt: Introduce HPE GXP SoC Watchdog nick.hawkins
@ 2022-04-20 15:01 ` nick.hawkins
  2022-04-20 15:01 ` [PATCH v4 05/11] dt-bindings: timer: Add HPE GXP Timer Binding nick.hawkins
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 19+ messages in thread
From: nick.hawkins @ 2022-04-20 15:01 UTC (permalink / raw)
  To: verdun, nick, joel, arnd
  Cc: Nick Hawkins, Daniel Lezcano, Thomas Gleixner, linux-kernel

From: Nick Hawkins <nick.hawkins@hpe.com>

Add support for the HPE GXP SOC timer. The GXP supports several
different kinds of timers but for the purpose of this driver there
is only support for the General Timer. The timer has a 1us
resolution and is 32 bits. The timer also creates a child watchdog
device as the register region is the same based on previous review
feedback.

Signed-off-by: Nick Hawkins <nick.hawkins@hpe.com>

---
v2:
*Made watchdog a child of timer as they share the same register
region
*Fixed watchdog init timeout call
*Fixed variable usage u32/u64
*Removed Read Once
*fixed error that should have been debug
---
 drivers/clocksource/Kconfig     |   8 ++
 drivers/clocksource/Makefile    |   1 +
 drivers/clocksource/timer-gxp.c | 183 ++++++++++++++++++++++++++++++++
 3 files changed, 192 insertions(+)
 create mode 100644 drivers/clocksource/timer-gxp.c

diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig
index cfb8ea0df3b1..716117f21f95 100644
--- a/drivers/clocksource/Kconfig
+++ b/drivers/clocksource/Kconfig
@@ -617,6 +617,14 @@ config CLKSRC_ST_LPC
 	  Enable this option to use the Low Power controller timer
 	  as clocksource.
 
+config GXP_TIMER
+	bool "GXP timer driver" if COMPILE_TEST
+	depends on ARCH_HPE
+	default y
+	help
+	  Provides a driver for the timer control found on HPE
+	  GXP SOCs. This is required for all GXP SOCs.
+
 config ATCPIT100_TIMER
 	bool "ATCPIT100 timer driver"
 	depends on NDS32 || COMPILE_TEST
diff --git a/drivers/clocksource/Makefile b/drivers/clocksource/Makefile
index fa5f624eadb6..35cc32fe6c6a 100644
--- a/drivers/clocksource/Makefile
+++ b/drivers/clocksource/Makefile
@@ -89,3 +89,4 @@ obj-$(CONFIG_GX6605S_TIMER)		+= timer-gx6605s.o
 obj-$(CONFIG_HYPERV_TIMER)		+= hyperv_timer.o
 obj-$(CONFIG_MICROCHIP_PIT64B)		+= timer-microchip-pit64b.o
 obj-$(CONFIG_MSC313E_TIMER)		+= timer-msc313e.o
+obj-$(CONFIG_GXP_TIMER)			+= timer-gxp.o
diff --git a/drivers/clocksource/timer-gxp.c b/drivers/clocksource/timer-gxp.c
new file mode 100644
index 000000000000..3fe5be2f94c7
--- /dev/null
+++ b/drivers/clocksource/timer-gxp.c
@@ -0,0 +1,183 @@
+// SPDX-License-Identifier: GPL-2.0
+/* Copyright (C) 2022 Hewlett-Packard Enterprise Development Company, L.P.*/
+
+#include <linux/clk.h>
+#include <linux/clockchips.h>
+#include <linux/clocksource.h>
+#include <linux/interrupt.h>
+#include <linux/of_address.h>
+#include <linux/of_irq.h>
+#include <linux/of_platform.h>
+#include <linux/platform_device.h>
+#include <linux/sched_clock.h>
+
+#define TIMER0_FREQ	1000000
+#define GXP_TIMER_CNT_OFS 0x00
+#define GXP_TIMESTAMP_OFS 0x08
+#define GXP_TIMER_CTRL_OFS 0x14
+
+/*TCS Stands for Timer Control/Status: these are masks to be used in*/
+/* the Timer Count Registers */
+#define MASK_TCS_ENABLE	0x01
+#define MASK_TCS_PERIOD	0x02
+#define MASK_TCS_RELOAD	0x04
+#define MASK_TCS_TC	0x80
+
+struct gxp_timer {
+	void __iomem *counter;
+	void __iomem *control;
+	struct clock_event_device evt;
+};
+
+static struct gxp_timer *local_gxp_timer;
+
+static void __iomem *system_clock __read_mostly;
+
+static inline struct gxp_timer *to_gxp_timer(struct clock_event_device *evt_dev)
+{
+	return container_of(evt_dev, struct gxp_timer, evt);
+}
+
+static u64 notrace gxp_sched_read(void)
+{
+	return readl_relaxed(system_clock);
+}
+
+static int gxp_time_set_next_event(unsigned long event,	struct clock_event_device *evt_dev)
+{
+	struct gxp_timer *timer = to_gxp_timer(evt_dev);
+
+	/* Stop counting and disable interrupt before updating */
+	writeb_relaxed(MASK_TCS_TC, timer->control);
+	writel_relaxed(event, timer->counter);
+	writeb_relaxed(MASK_TCS_TC | MASK_TCS_ENABLE, timer->control);
+
+	return 0;
+}
+
+static irqreturn_t gxp_timer_interrupt(int irq, void *dev_id)
+{
+	struct gxp_timer *timer = (struct gxp_timer *)dev_id;
+
+	if (!(readb_relaxed(timer->control) & MASK_TCS_TC))
+		return IRQ_NONE;
+
+	writeb_relaxed(MASK_TCS_TC, timer->control);
+
+	timer->evt.event_handler(&timer->evt);
+
+	return IRQ_HANDLED;
+}
+
+static int __init gxp_timer_init(struct device_node *node)
+{
+	void __iomem *base;
+	struct clk *clk;
+	u32 freq;
+	int ret, irq;
+	struct gxp_timer *gxp_timer;
+
+	base = of_iomap(node, 0);
+	if (!base) {
+		pr_err("Can't remap timer base register");
+		ret = -ENXIO;
+		return ret;
+	}
+
+	/*Set the offset to the clock register*/
+	system_clock = base + GXP_TIMESTAMP_OFS;
+
+	clk = of_clk_get(node, 0);
+	if (IS_ERR(clk)) {
+		pr_err("%pOFn clock not found: %d\n", node, (int)PTR_ERR(clk));
+		ret = -EIO;
+		goto err_iounmap;
+	}
+
+	ret = clk_prepare_enable(clk);
+
+	freq = clk_get_rate(clk);
+
+	sched_clock_register(gxp_sched_read, 32, freq);
+	clocksource_mmio_init(system_clock, node->name, freq,
+			      300, 32, clocksource_mmio_readl_up);
+
+	irq = irq_of_parse_and_map(node, 0);
+	if (irq <= 0) {
+		ret = -EINVAL;
+		pr_err("GXP Timer Can't parse IRQ %d", irq);
+		goto err_iounmap;
+	}
+
+	gxp_timer = kzalloc(sizeof(*gxp_timer), GFP_KERNEL);
+	if (!gxp_timer) {
+		ret = -ENOMEM;
+		goto err_iounmap;
+	}
+
+	gxp_timer->counter = base + GXP_TIMER_CNT_OFS;
+	gxp_timer->control = base + GXP_TIMER_CTRL_OFS;
+	gxp_timer->evt.name = node->name;
+	gxp_timer->evt.rating = 300;
+	gxp_timer->evt.features = CLOCK_EVT_FEAT_ONESHOT;
+	gxp_timer->evt.set_next_event = gxp_time_set_next_event;
+	gxp_timer->evt.cpumask = cpumask_of(0);
+
+	local_gxp_timer = gxp_timer;
+
+	ret = request_irq(irq, gxp_timer_interrupt, IRQF_TIMER | IRQF_SHARED,
+			  node->name, gxp_timer);
+	if (ret) {
+		pr_err("%s: request_irq() failed %pe\n", "GXP Timer Tick", ERR_PTR(ret));
+		goto err_iounmap;
+	}
+
+	clockevents_config_and_register(&gxp_timer->evt, TIMER0_FREQ,
+					0xf, 0xffffffff);
+
+	pr_debug("gxp: system timer (irq = %d)\n", irq);
+	return 0;
+
+err_iounmap:
+	iounmap(system_clock);
+	iounmap(base);
+	return ret;
+}
+
+static struct platform_device gxp_watchdog_device = {
+	.name = "gxp-wdt",
+	.id = -1,
+};
+
+/*
+ * This probe gets called after the timer is already up and running. This will create
+ * the watchdog device as a child since the registers are shared.
+ */
+
+static int gxp_timer_probe(struct platform_device *pdev)
+{
+	struct device *dev = &pdev->dev;
+
+	/* Pass the base address (counter) as platform data and nothing else */
+	gxp_watchdog_device.dev.platform_data = local_gxp_timer->counter;
+	gxp_watchdog_device.dev.parent = dev;
+	return platform_device_register(&gxp_watchdog_device);
+}
+
+static const struct of_device_id gxp_timer_of_match[] = {
+	{ .compatible = "hpe,gxp-timer", },
+	{},
+};
+
+static struct platform_driver gxp_timer_driver = {
+	.probe  = gxp_timer_probe,
+	.driver = {
+		.name = "gxp-timer",
+		.of_match_table = gxp_timer_of_match,
+		.suppress_bind_attrs = true,
+	},
+};
+
+builtin_platform_driver(gxp_timer_driver);
+
+TIMER_OF_DECLARE(gxp, "hpe,gxp-timer", gxp_timer_init);
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH v4 05/11] dt-bindings: timer: Add HPE GXP Timer Binding
  2022-04-20 15:01 [PATCH v4 01/11] arch: arm: mach-hpe: Introduce the HPE GXP architecture nick.hawkins
                   ` (2 preceding siblings ...)
  2022-04-20 15:01 ` [PATCH v4 04/11] clocksource/drivers: Add HPE GXP timer nick.hawkins
@ 2022-04-20 15:01 ` nick.hawkins
  2022-04-20 15:01 ` [PATCH v4 06/11] dt-bindings: watchdog: Add HPE GXP Watchdog timer binding nick.hawkins
                   ` (5 subsequent siblings)
  9 siblings, 0 replies; 19+ messages in thread
From: nick.hawkins @ 2022-04-20 15:01 UTC (permalink / raw)
  To: verdun, nick, joel, arnd
  Cc: Nick Hawkins, Daniel Lezcano, Thomas Gleixner, Rob Herring,
	linux-kernel, devicetree

From: Nick Hawkins <nick.hawkins@hpe.com>

Creating binding for gxp timer in device tree hpe,gxp-timer
Although there are multiple times on the SoC we are only
enabling one at this time.

Signed-off-by: Nick Hawkins <nick.hawkins@hpe.com>

---
v3:
 *Made watchdog a child of timer
 *Added reference clock
v2:
 *Removed maintainer change from patch
 *Verified there was no compilation errors
 *Added reference code in separate patch of patchset
---
 .../bindings/timer/hpe,gxp-timer.yaml         | 49 +++++++++++++++++++
 1 file changed, 49 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/timer/hpe,gxp-timer.yaml

diff --git a/Documentation/devicetree/bindings/timer/hpe,gxp-timer.yaml b/Documentation/devicetree/bindings/timer/hpe,gxp-timer.yaml
new file mode 100644
index 000000000000..a4572be8d89a
--- /dev/null
+++ b/Documentation/devicetree/bindings/timer/hpe,gxp-timer.yaml
@@ -0,0 +1,49 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/timer/hpe,gxp-timer.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: HPE GXP TIMER
+
+maintainers:
+  - Nick Hawkins <nick.hawkins@hpe.com>
+  - Jean-Marie Verdun <verdun@hpe.com>
+
+properties:
+  compatible:
+    items:
+      - const: hpe,gxp-timer
+      - const: simple-mfd
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    const: iopclk
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - clock-names
+
+additionalProperties: true
+
+examples:
+  - |
+    timer0: timer@c0000000 {
+        compatible = "hpe,gxp-timer","simple-mfd";
+        reg = <0x80 0x16>;
+        interrupts = <0>;
+        interrupt-parent = <&vic0>;
+        clocks = <&iopclk>;
+        clock-names = "iopclk";
+    };
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH v4 06/11] dt-bindings: watchdog: Add HPE GXP Watchdog timer binding
  2022-04-20 15:01 [PATCH v4 01/11] arch: arm: mach-hpe: Introduce the HPE GXP architecture nick.hawkins
                   ` (3 preceding siblings ...)
  2022-04-20 15:01 ` [PATCH v4 05/11] dt-bindings: timer: Add HPE GXP Timer Binding nick.hawkins
@ 2022-04-20 15:01 ` nick.hawkins
  2022-04-20 15:53   ` Guenter Roeck
  2022-04-20 15:01 ` [PATCH v4 07/11] dt-bindings: arm: Add HPE GXP Binding nick.hawkins
                   ` (4 subsequent siblings)
  9 siblings, 1 reply; 19+ messages in thread
From: nick.hawkins @ 2022-04-20 15:01 UTC (permalink / raw)
  To: verdun, nick, joel, arnd
  Cc: Nick Hawkins, Wim Van Sebroeck, Guenter Roeck, Rob Herring,
	linux-watchdog, devicetree, linux-kernel

From: Nick Hawkins <nick.hawkins@hpe.com>

Add the hpe gxp watchdog timer binding hpe,gxp-wdt.
This will enable support for the HPE GXP Watchdog

Signed-off-by: Nick Hawkins <nick.hawkins@hpe.com>

---
v2:
*Made watchdog a child of timer because of same register
area based on review feedback
*Simplified the watchdog yaml as it will get information
from parent device
---
 .../bindings/watchdog/hpe,gxp-wdt.yaml        | 30 +++++++++++++++++++
 1 file changed, 30 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/watchdog/hpe,gxp-wdt.yaml

diff --git a/Documentation/devicetree/bindings/watchdog/hpe,gxp-wdt.yaml b/Documentation/devicetree/bindings/watchdog/hpe,gxp-wdt.yaml
new file mode 100644
index 000000000000..c20da146352f
--- /dev/null
+++ b/Documentation/devicetree/bindings/watchdog/hpe,gxp-wdt.yaml
@@ -0,0 +1,30 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/watchdog/hpe,gxp-wdt.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: HPE GXP Controlled Watchdog
+
+allOf:
+  - $ref: "watchdog.yaml#"
+
+maintainers:
+  - Nick Hawkins <nick.hawkins@hpe.com>
+  - Jean-Marie Verdun <verdun@hpe.com>
+
+properties:
+  compatible:
+    const: hpe,gxp-wdt
+
+required:
+  - compatible
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    watchdog0:  watchdog {
+      compatible = "hpe,gxp-wdt";
+    };
+
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH v4 07/11] dt-bindings: arm: Add HPE GXP Binding
  2022-04-20 15:01 [PATCH v4 01/11] arch: arm: mach-hpe: Introduce the HPE GXP architecture nick.hawkins
                   ` (4 preceding siblings ...)
  2022-04-20 15:01 ` [PATCH v4 06/11] dt-bindings: watchdog: Add HPE GXP Watchdog timer binding nick.hawkins
@ 2022-04-20 15:01 ` nick.hawkins
  2022-04-20 15:01 ` [PATCH v4 08/11] dt-bindings: usb: generic-echi: Add HPE GXP echi binding nick.hawkins
                   ` (3 subsequent siblings)
  9 siblings, 0 replies; 19+ messages in thread
From: nick.hawkins @ 2022-04-20 15:01 UTC (permalink / raw)
  To: verdun, nick, joel, arnd
  Cc: Nick Hawkins, Rob Herring, devicetree, linux-kernel

From: Nick Hawkins <nick.hawkins@hpe.com>

This adds support for the hpe,gxp binding. The GXP is based on
the cortex a9 processor and supports arm7.

Signed-off-by: Nick Hawkins <nick.hawkins@hpe.com>

---
v4:
*Removed gxp.yaml
*Created hpe,gxp.yaml based on reviewer input
---
 .../devicetree/bindings/arm/hpe,gxp.yaml      | 22 +++++++++++++++++++
 1 file changed, 22 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/arm/hpe,gxp.yaml

diff --git a/Documentation/devicetree/bindings/arm/hpe,gxp.yaml b/Documentation/devicetree/bindings/arm/hpe,gxp.yaml
new file mode 100644
index 000000000000..f896fc602d64
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/hpe,gxp.yaml
@@ -0,0 +1,22 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/arm/hpe,gxp.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: HPE bmc GXP SoC driver
+
+maintainers:
+  - Nick Hawkins <nick.hawkins@hpe.com>
+  - Jean-Marie Verdun <verdun@hpe.com>
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - hpe,gxp-dl360gen10
+      - const: hpe,gxp
+
+additionalProperties: true
+
+...
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH v4 08/11] dt-bindings: usb: generic-echi:  Add HPE GXP echi binding
  2022-04-20 15:01 [PATCH v4 01/11] arch: arm: mach-hpe: Introduce the HPE GXP architecture nick.hawkins
                   ` (5 preceding siblings ...)
  2022-04-20 15:01 ` [PATCH v4 07/11] dt-bindings: arm: Add HPE GXP Binding nick.hawkins
@ 2022-04-20 15:01 ` nick.hawkins
  2022-04-20 15:01 ` [PATCH v4 09/11] dt-bindings: usb: generic-ochi: Add HPE GXP ochi binding nick.hawkins
                   ` (2 subsequent siblings)
  9 siblings, 0 replies; 19+ messages in thread
From: nick.hawkins @ 2022-04-20 15:01 UTC (permalink / raw)
  To: verdun, nick, joel, arnd
  Cc: Nick Hawkins, Greg Kroah-Hartman, Rob Herring, linux-usb,
	devicetree, linux-kernel

From: Nick Hawkins <nick.hawkins@hpe.com>

Add hpe,gxp-echi to the generic-echi list. This is to
enable the device tree.

Signed-off-by: Nick Hawkins <nick.hawkins@hpe.com>

---
v1:
*Based on previous feedback the hpe,gxp-echi has been
added to the list of devices
---
 Documentation/devicetree/bindings/usb/generic-ehci.yaml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/usb/generic-ehci.yaml b/Documentation/devicetree/bindings/usb/generic-ehci.yaml
index 8913497624de..2d52f53ae805 100644
--- a/Documentation/devicetree/bindings/usb/generic-ehci.yaml
+++ b/Documentation/devicetree/bindings/usb/generic-ehci.yaml
@@ -55,6 +55,7 @@ properties:
               - brcm,bcm7420-ehci
               - brcm,bcm7425-ehci
               - brcm,bcm7435-ehci
+              - hpe,gxp-echi
               - ibm,476gtr-ehci
               - nxp,lpc1850-ehci
               - qca,ar7100-ehci
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH v4 09/11] dt-bindings: usb: generic-ochi:  Add HPE GXP ochi binding
  2022-04-20 15:01 [PATCH v4 01/11] arch: arm: mach-hpe: Introduce the HPE GXP architecture nick.hawkins
                   ` (6 preceding siblings ...)
  2022-04-20 15:01 ` [PATCH v4 08/11] dt-bindings: usb: generic-echi: Add HPE GXP echi binding nick.hawkins
@ 2022-04-20 15:01 ` nick.hawkins
  2022-04-20 17:02   ` Arnd Bergmann
  2022-04-20 15:01 ` [PATCH v4 10/11] arch: arm: boot: dts: Introduce HPE GXP Device tree nick.hawkins
  2022-04-20 15:01 ` [PATCH v4 11/11] maintainers: Introduce HPE GXP Architecture nick.hawkins
  9 siblings, 1 reply; 19+ messages in thread
From: nick.hawkins @ 2022-04-20 15:01 UTC (permalink / raw)
  To: verdun, nick, joel, arnd
  Cc: Nick Hawkins, Greg Kroah-Hartman, Rob Herring, linux-usb,
	devicetree, linux-kernel

From: Nick Hawkins <nick.hawkins@hpe.com>

Add hpe,gxp-ochi to the generic-ochi list. This is to
enable the device tree support.

Signed-off-by: Nick Hawkins <nick.hawkins@hpe.com>

---
v1:
*Based on previous feedback the hpe,gxp-ochi is added
to the list
---
 Documentation/devicetree/bindings/usb/generic-ohci.yaml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/usb/generic-ohci.yaml b/Documentation/devicetree/bindings/usb/generic-ohci.yaml
index acbf94fa5f74..e2ac84665316 100644
--- a/Documentation/devicetree/bindings/usb/generic-ohci.yaml
+++ b/Documentation/devicetree/bindings/usb/generic-ohci.yaml
@@ -42,6 +42,7 @@ properties:
               - brcm,bcm7420-ohci
               - brcm,bcm7425-ohci
               - brcm,bcm7435-ohci
+              - hpe,gxp-ohci
               - ibm,476gtr-ohci
               - ingenic,jz4740-ohci
               - snps,hsdk-v1.0-ohci
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH v4 10/11] arch: arm: boot: dts: Introduce HPE GXP Device tree
  2022-04-20 15:01 [PATCH v4 01/11] arch: arm: mach-hpe: Introduce the HPE GXP architecture nick.hawkins
                   ` (7 preceding siblings ...)
  2022-04-20 15:01 ` [PATCH v4 09/11] dt-bindings: usb: generic-ochi: Add HPE GXP ochi binding nick.hawkins
@ 2022-04-20 15:01 ` nick.hawkins
  2022-04-20 15:01 ` [PATCH v4 11/11] maintainers: Introduce HPE GXP Architecture nick.hawkins
  9 siblings, 0 replies; 19+ messages in thread
From: nick.hawkins @ 2022-04-20 15:01 UTC (permalink / raw)
  To: verdun, nick, joel, arnd
  Cc: Nick Hawkins, Olof Johansson, soc, Rob Herring, linux-arm-kernel,
	devicetree, linux-kernel

From: Nick Hawkins <nick.hawkins@hpe.com>

The HPE SoC is new to linux. This patch
creates the basic device tree layout with minimum required
for linux to boot. This includes timer and watchdog
support.

The dts file is empty at this point but will be
updated in subsequent updates as board specific features
are enabled.

Signed-off-by: Nick Hawkins <nick.hawkins@hpe.com>

---
v4:
* Removed hpe,gxp-cpu-init as it was no longer necessary
* Removed bootargs as requested
* Removed empty ahb node
* Moved reg after compatible, everywhere
* Removed osc and memclk
* Removed syscon@c00000f8 as it was not necessary for boot
* Fixed Alphabetical issue in dts/Makefile
* Added specific board binding for dl360gen10
* Removed empty node
* Added Accurate Clock Architecture
---
 arch/arm/boot/dts/Makefile               |   2 +
 arch/arm/boot/dts/hpe-bmc-dl360gen10.dts |  13 +++
 arch/arm/boot/dts/hpe-gxp.dtsi           | 128 +++++++++++++++++++++++
 3 files changed, 143 insertions(+)
 create mode 100644 arch/arm/boot/dts/hpe-bmc-dl360gen10.dts
 create mode 100644 arch/arm/boot/dts/hpe-gxp.dtsi

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index e41eca79c950..a217c403c819 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -250,6 +250,8 @@ dtb-$(CONFIG_ARCH_HISI) += \
 	hi3519-demb.dtb
 dtb-$(CONFIG_ARCH_HIX5HD2) += \
 	hisi-x5hd2-dkb.dtb
+dtb-$(CONFIG_ARCH_HPE_GXP) += \
+	hpe-bmc-dl360gen10.dtb
 dtb-$(CONFIG_ARCH_INTEGRATOR) += \
 	integratorap.dtb \
 	integratorap-im-pd1.dtb \
diff --git a/arch/arm/boot/dts/hpe-bmc-dl360gen10.dts b/arch/arm/boot/dts/hpe-bmc-dl360gen10.dts
new file mode 100644
index 000000000000..69e9c6672ea8
--- /dev/null
+++ b/arch/arm/boot/dts/hpe-bmc-dl360gen10.dts
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Device Tree file for HPE DL360Gen10
+ */
+
+/include/ "hpe-gxp.dtsi"
+
+/ {
+	#address-cells = <1>;
+	#size-cells = <1>;
+	compatible = "hpe,gxp-dl360gen10","hpe,gxp";
+	model = "Hewlett Packard Enterprise ProLiant dl360 Gen10";
+};
diff --git a/arch/arm/boot/dts/hpe-gxp.dtsi b/arch/arm/boot/dts/hpe-gxp.dtsi
new file mode 100644
index 000000000000..e0b77f4a799a
--- /dev/null
+++ b/arch/arm/boot/dts/hpe-gxp.dtsi
@@ -0,0 +1,128 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Device Tree file for HPE GXP
+ */
+
+/dts-v1/;
+/ {
+	model = "Hewlett Packard Enterprise GXP BMC";
+	compatible = "hpe,gxp","hpe,gxp-dl360gen10";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	cpus {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		cpu@0 {
+			compatible = "arm,cortex-a9";
+			reg = <0>;
+			device_type = "cpu";
+		};
+	};
+
+	clocks {
+
+		pll: pll {
+			compatible = "fixed-clock";
+			#clock-cells = <0>;
+			clock-frequency = <1600000000>;
+		};
+
+		iopclk: iopclk {
+			compatible = "fixed-factor-clock";
+			#clock-cells = <0>;
+			clock-div = <4>;
+			clock-mult = <1>;
+			clocks = <&pll>;
+		};
+	};
+
+	memory@40000000 {
+		device_type = "memory";
+		reg = <0x40000000 0x20000000>;
+	};
+
+	axi {
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges;
+		dma-ranges;
+
+		ahb@c0000000 {
+			compatible = "simple-bus";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xc0000000 0x30000000>;
+
+			vic0: interrupt-controller@eff0000 {
+				compatible = "arm,pl192-vic";
+				reg = <0xeff0000 0x1000>;
+				interrupt-controller;
+				#interrupt-cells = <1>;
+			};
+
+			vic1: interrupt-controller@80f00000 {
+				compatible = "arm,pl192-vic";
+				reg = <0x80f00000 0x1000>;
+				interrupt-controller;
+				#interrupt-cells = <1>;
+			};
+
+			uarta: serial@e0 {
+				compatible = "ns16550a";
+				reg = <0xe0 0x8>;
+				interrupts = <17>;
+				interrupt-parent = <&vic0>;
+				clock-frequency = <1846153>;
+				reg-shift = <0>;
+			};
+
+			uartb: serial@e8 {
+				compatible = "ns16550a";
+				reg = <0xe8 0x8>;
+				interrupts = <18>;
+				interrupt-parent = <&vic0>;
+				clock-frequency = <1846153>;
+				reg-shift = <0>;
+			};
+
+			uartc: serial@f0 {
+				compatible = "ns16550a";
+				reg = <0xf0 0x8>;
+				interrupts = <19>;
+				interrupt-parent = <&vic0>;
+				clock-frequency = <1846153>;
+				reg-shift = <0>;
+			};
+
+			usb0: usb@efe0000 {
+				compatible = "hpe,gxp-echi","generic-ehci";
+				reg = <0xefe0000 0x100>;
+				interrupts = <7>;
+				interrupt-parent = <&vic0>;
+			};
+
+			st: timer@80 {
+				compatible = "hpe,gxp-timer","simple-mfd";
+				reg = <0x80 0x16>;
+				interrupts = <0>;
+				interrupt-parent = <&vic0>;
+				clocks = <&iopclk>;
+				clock-names = "iopclk";
+				watchdog {
+					compatible = "hpe,gxp-wdt";
+				};
+			};
+
+			usb1: usb@efe0100 {
+				compatible = "hpe,gxp-ohci","generic-ohci";
+				reg = <0xefe0100 0x110>;
+				interrupts = <6>;
+				interrupt-parent = <&vic0>;
+			};
+		};
+	};
+
+};
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH v4 11/11] maintainers: Introduce HPE GXP Architecture
  2022-04-20 15:01 [PATCH v4 01/11] arch: arm: mach-hpe: Introduce the HPE GXP architecture nick.hawkins
                   ` (8 preceding siblings ...)
  2022-04-20 15:01 ` [PATCH v4 10/11] arch: arm: boot: dts: Introduce HPE GXP Device tree nick.hawkins
@ 2022-04-20 15:01 ` nick.hawkins
  9 siblings, 0 replies; 19+ messages in thread
From: nick.hawkins @ 2022-04-20 15:01 UTC (permalink / raw)
  To: verdun, nick, joel, arnd; +Cc: Nick Hawkins, linux-kernel

From: Nick Hawkins <nick.hawkins@hpe.com>

Create a section in MAINTAINERS for the GXP HPE
architecture.

Signed-off-by: Nick Hawkins <nick.hawkins@hpe.com>

---
v4:
*Added ARM/ before HPE Title
*Changed MAINTAINED to Maintained
*Renamed gxp-timer.c to timer-gxp.c
*Renamed gxp.yaml to hpe,gxp.yaml
---
 MAINTAINERS | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/MAINTAINERS b/MAINTAINERS
index 6db79f3b209e..c3164a527747 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -2062,6 +2062,19 @@ T:	git git://git.kernel.org/pub/scm/linux/kernel/git/kristoffer/linux-hpc.git
 F:	arch/arm/mach-sa1100/include/mach/jornada720.h
 F:	arch/arm/mach-sa1100/jornada720.c
 
+ARM/HPE GXP ARCHITECTURE
+M:	Jean-Marie Verdun <verdun@hpe.com>
+M:	Nick Hawkins <nick.hawkins@hpe.com>
+S:	Maintained
+F:	Documentation/devicetree/bindings/arm/hpe,gxp.yaml
+F:	Documentation/devicetree/bindings/timer/hpe,gxp-timer.yaml
+F:	Documentation/devicetree/bindings/wdt/hpe,gxp-wdt.yaml
+F:	arch/arm/boot/dts/hpe-bmc-dl360gen10.dts
+F:	arch/arm/boot/dts/hpe-gxp.dtsi
+F:	arch/arm/mach-hpe/gxp.c
+F:	drivers/clocksource/timer-gxp.c
+F:	drivers/watchdog/gxp-wdt.c
+
 ARM/IGEP MACHINE SUPPORT
 M:	Enric Balletbo i Serra <eballetbo@gmail.com>
 M:	Javier Martinez Canillas <javier@dowhile0.org>
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: [PATCH v4 03/11] drivers: wdt: Introduce HPE GXP SoC Watchdog
  2022-04-20 15:01 ` [PATCH v4 03/11] drivers: wdt: Introduce HPE GXP SoC Watchdog nick.hawkins
@ 2022-04-20 15:52   ` Guenter Roeck
  2022-04-20 17:06     ` Hawkins, Nick
  0 siblings, 1 reply; 19+ messages in thread
From: Guenter Roeck @ 2022-04-20 15:52 UTC (permalink / raw)
  To: nick.hawkins, verdun, nick, joel, arnd
  Cc: Wim Van Sebroeck, linux-kernel, linux-watchdog

On 4/20/22 08:01, nick.hawkins@hpe.com wrote:
> From: Nick Hawkins <nick.hawkins@hpe.com>
> 
> Adding support for the HPE GXP Watchdog. It is new to the linux
> community and this along with several other patches is the first
> support for it. The GXP asic contains a full compliment of
> timers one of which is the watchdog timer. The watchdog timer
> is 16 bit and has 10ms resolution. The watchdog is now

Drop "now".

> created as a child device of timer since the same register
> range is used. This was done due to changes requested with
> the device tree.
> 

Drop last sentence; it is part of the change log and should stay there.

> ---

Changes made in v3 and v4 are missing.

> v2:
> *Made watchdog a child of timer as they share the same register
> region per change request on dtsi.
> *Removed extra parenthesis
> *Fixed u8 u32 u64 usage
> *Fixed alignment issue
> *Removed unused gxp_wdt_remove function
> 
> Signed-off-by: Nick Hawkins <nick.hawkins@hpe.com>
> ---
>   drivers/watchdog/Kconfig   |   8 ++
>   drivers/watchdog/Makefile  |   1 +
>   drivers/watchdog/gxp-wdt.c | 166 +++++++++++++++++++++++++++++++++++++
>   3 files changed, 175 insertions(+)
>   create mode 100644 drivers/watchdog/gxp-wdt.c
> 
> diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
> index c8fa79da23b3..cb210d2978d2 100644
> --- a/drivers/watchdog/Kconfig
> +++ b/drivers/watchdog/Kconfig
> @@ -1820,6 +1820,14 @@ config RALINK_WDT
>   	help
>   	  Hardware driver for the Ralink SoC Watchdog Timer.
>   
> +config GXP_WATCHDOG
> +	tristate "HPE GXP watchdog support"
> +	depends on ARCH_HPE_GXP
> +	select WATCHDOG_CORE
> +	help
> +	  Say Y here to include support for the watchdog timer
> +	  in HPE GXP SoCs.
> +

Add something like:

To compile this driver as a module, choose M here: the
module will be calledgxp_wdt.

>   config MT7621_WDT
>   	tristate "Mediatek SoC watchdog"
>   	select WATCHDOG_CORE
> diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile
> index f7da867e8782..e2acf3a0d0fc 100644
> --- a/drivers/watchdog/Makefile
> +++ b/drivers/watchdog/Makefile
> @@ -92,6 +92,7 @@ obj-$(CONFIG_RTD119X_WATCHDOG) += rtd119x_wdt.o
>   obj-$(CONFIG_SPRD_WATCHDOG) += sprd_wdt.o
>   obj-$(CONFIG_PM8916_WATCHDOG) += pm8916_wdt.o
>   obj-$(CONFIG_ARM_SMC_WATCHDOG) += arm_smc_wdt.o
> +obj-$(CONFIG_GXP_WATCHDOG) += gxp-wdt.o
>   obj-$(CONFIG_VISCONTI_WATCHDOG) += visconti_wdt.o
>   obj-$(CONFIG_MSC313E_WATCHDOG) += msc313e_wdt.o
>   obj-$(CONFIG_APPLE_WATCHDOG) += apple_wdt.o
> diff --git a/drivers/watchdog/gxp-wdt.c b/drivers/watchdog/gxp-wdt.c
> new file mode 100644
> index 000000000000..f45ab9a826d6
> --- /dev/null
> +++ b/drivers/watchdog/gxp-wdt.c
> @@ -0,0 +1,166 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/* Copyright (C) 2022 Hewlett-Packard Enterprise Development Company, L.P. */
> +
> +#include <linux/delay.h>
> +#include <linux/io.h>
> +#include <linux/module.h>
> +#include <linux/platform_device.h>
> +#include <linux/of_address.h>
> +#include <linux/of_platform.h>
> +#include <linux/types.h>
> +#include <linux/watchdog.h>
> +
> +#define MASK_WDGCS_ENABLE	0x01
> +#define MASK_WDGCS_RELOAD	0x04
> +#define MASK_WDGCS_NMIEN	0x08
> +#define MASK_WDGCS_WARN		0x80
> +
> +#define WDT_MAX_TIMEOUT_MS	655000
> +#define WDT_DEFAULT_TIMEOUT	30
> +#define SECS_TO_WDOG_TICKS(x) ((x) * 100)
> +#define WDOG_TICKS_TO_SECS(x) ((x) / 100)
> +
> +#define GXP_WDT_CNT_OFS		0x10
> +#define GXP_WDT_CTRL_OFS	0x16
> +
> +struct gxp_wdt {
> +	void __iomem *base;
> +	struct watchdog_device wdd;
> +};
> +
> +static void gxp_wdt_enable_reload(struct gxp_wdt *drvdata)
> +{
> +	u8 val;
> +
> +	val = readb(drvdata->base + GXP_WDT_CTRL_OFS);
> +	val |= (MASK_WDGCS_ENABLE | MASK_WDGCS_RELOAD);
> +	writeb(val, drvdata->base + GXP_WDT_CTRL_OFS);
> +}
> +
> +static int gxp_wdt_start(struct watchdog_device *wdd)
> +{
> +	struct gxp_wdt *drvdata = watchdog_get_drvdata(wdd);
> +
> +	writew(SECS_TO_WDOG_TICKS(wdd->timeout), drvdata->base + GXP_WDT_CNT_OFS);
> +	gxp_wdt_enable_reload(drvdata);
> +	return 0;
> +}
> +
> +static int gxp_wdt_stop(struct watchdog_device *wdd)
> +{
> +	struct gxp_wdt *drvdata = watchdog_get_drvdata(wdd);
> +	u8 val;
> +
> +	val = readb_relaxed(drvdata->base + GXP_WDT_CTRL_OFS);
> +	val &= ~MASK_WDGCS_ENABLE;
> +	writeb(val, drvdata->base + GXP_WDT_CTRL_OFS);
> +	return 0;
> +}
> +
> +static int gxp_wdt_set_timeout(struct watchdog_device *wdd,
> +			       unsigned int timeout)
> +{
> +	struct gxp_wdt *drvdata = watchdog_get_drvdata(wdd);
> +	u32 actual;
> +
> +	wdd->timeout = timeout;
> +	actual = min(timeout, wdd->max_hw_heartbeat_ms / 1000);
> +	writew(SECS_TO_WDOG_TICKS(actual), drvdata->base + GXP_WDT_CNT_OFS);
> +
> +	return 0;
> +}
> +
> +static unsigned int gxp_wdt_get_timeleft(struct watchdog_device *wdd)
> +{
> +	struct gxp_wdt *drvdata = watchdog_get_drvdata(wdd);
> +	u32 val = readw(drvdata->base + GXP_WDT_CNT_OFS);
> +
> +	return WDOG_TICKS_TO_SECS(val);
> +}
> +
> +static int gxp_wdt_ping(struct watchdog_device *wdd)
> +{
> +	struct gxp_wdt *drvdata = watchdog_get_drvdata(wdd);
> +
> +	gxp_wdt_enable_reload(drvdata);
> +	return 0;
> +}
> +
> +static int gxp_restart(struct watchdog_device *wdd, unsigned long action,
> +		       void *data)
> +{
> +	struct gxp_wdt *drvdata = watchdog_get_drvdata(wdd);
> +
> +	writew(10, drvdata->base + GXP_WDT_CNT_OFS);
> +	gxp_wdt_enable_reload(drvdata);
> +	mdelay(100);
> +	return 0;
> +}
> +
> +static const struct watchdog_ops gxp_wdt_ops = {
> +	.owner =	THIS_MODULE,
> +	.start =	gxp_wdt_start,
> +	.stop =		gxp_wdt_stop,
> +	.ping =		gxp_wdt_ping,
> +	.set_timeout =	gxp_wdt_set_timeout,
> +	.get_timeleft =	gxp_wdt_get_timeleft,
> +	.restart =	gxp_restart,
> +};
> +
> +static const struct watchdog_info gxp_wdt_info = {
> +	.options = WDIOF_SETTIMEOUT | WDIOF_MAGICCLOSE | WDIOF_KEEPALIVEPING,
> +	.identity = "HPE GXP Watchdog timer",
> +};
> +
> +static int gxp_wdt_probe(struct platform_device *pdev)
> +{
> +	struct device *dev = &pdev->dev;
> +	struct gxp_wdt *drvdata;
> +	int err;
> +	u8 val;
> +
> +	drvdata = devm_kzalloc(dev, sizeof(struct gxp_wdt), GFP_KERNEL);
> +	if (!drvdata)
> +		return -ENOMEM;
> +
> +	drvdata->base = (void __iomem *)dev->platform_data;
> +
> +	drvdata->wdd.info = &gxp_wdt_info;
> +	drvdata->wdd.ops = &gxp_wdt_ops;
> +	drvdata->wdd.max_hw_heartbeat_ms = WDT_MAX_TIMEOUT_MS;
> +	drvdata->wdd.parent = dev;
> +	drvdata->wdd.timeout = WDT_DEFAULT_TIMEOUT;
> +
> +	watchdog_set_drvdata(&drvdata->wdd, drvdata);
> +	watchdog_set_nowayout(&drvdata->wdd, WATCHDOG_NOWAYOUT);
> +
> +	val = readb(drvdata->base + GXP_WDT_CTRL_OFS);
> +
> +	if (val & MASK_WDGCS_ENABLE)
> +		set_bit(WDOG_HW_RUNNING, &drvdata->wdd.status);
> +
> +	watchdog_set_restart_priority(&drvdata->wdd, 128);
> +
> +	watchdog_stop_on_reboot(&drvdata->wdd);
> +	err = devm_watchdog_register_device(dev, &drvdata->wdd);
> +	if (err) {
> +		dev_err(dev, "Failed to register watchdog device");
> +		return err;
> +	}
> +
> +	dev_info(dev, "HPE GXP watchdog timer");
> +
> +	return 0;
> +}
> +
> +static struct platform_driver gxp_wdt_driver = {
> +	.probe = gxp_wdt_probe,
> +	.driver = {
> +		.name =	"gxp-wdt",
> +	},
> +};
> +module_platform_driver(gxp_wdt_driver);
> +
> +MODULE_AUTHOR("Nick Hawkins <nick.hawkins@hpe.com>");
> +MODULE_AUTHOR("Jean-Marie Verdun <verdun@hpe.com>");
> +MODULE_DESCRIPTION("Driver for GXP watchdog timer");


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v4 06/11] dt-bindings: watchdog: Add HPE GXP Watchdog timer binding
  2022-04-20 15:01 ` [PATCH v4 06/11] dt-bindings: watchdog: Add HPE GXP Watchdog timer binding nick.hawkins
@ 2022-04-20 15:53   ` Guenter Roeck
  2022-04-20 16:08     ` Hawkins, Nick
  0 siblings, 1 reply; 19+ messages in thread
From: Guenter Roeck @ 2022-04-20 15:53 UTC (permalink / raw)
  To: nick.hawkins, verdun, nick, joel, arnd
  Cc: Wim Van Sebroeck, Rob Herring, linux-watchdog, devicetree, linux-kernel

On 4/20/22 08:01, nick.hawkins@hpe.com wrote:
> From: Nick Hawkins <nick.hawkins@hpe.com>
> 
> Add the hpe gxp watchdog timer binding hpe,gxp-wdt.
> This will enable support for the HPE GXP Watchdog
> 
> Signed-off-by: Nick Hawkins <nick.hawkins@hpe.com>
> 
> ---
> v2:

v3 and v4 changes are missing.

> *Made watchdog a child of timer because of same register
> area based on review feedback
> *Simplified the watchdog yaml as it will get information
> from parent device
> ---
>   .../bindings/watchdog/hpe,gxp-wdt.yaml        | 30 +++++++++++++++++++
>   1 file changed, 30 insertions(+)
>   create mode 100644 Documentation/devicetree/bindings/watchdog/hpe,gxp-wdt.yaml
> 
> diff --git a/Documentation/devicetree/bindings/watchdog/hpe,gxp-wdt.yaml b/Documentation/devicetree/bindings/watchdog/hpe,gxp-wdt.yaml
> new file mode 100644
> index 000000000000..c20da146352f
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/watchdog/hpe,gxp-wdt.yaml
> @@ -0,0 +1,30 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/watchdog/hpe,gxp-wdt.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: HPE GXP Controlled Watchdog
> +
> +allOf:
> +  - $ref: "watchdog.yaml#"
> +
> +maintainers:
> +  - Nick Hawkins <nick.hawkins@hpe.com>
> +  - Jean-Marie Verdun <verdun@hpe.com>
> +
> +properties:
> +  compatible:
> +    const: hpe,gxp-wdt
> +
> +required:
> +  - compatible
> +
> +unevaluatedProperties: false
> +
> +examples:
> +  - |
> +    watchdog0:  watchdog {
> +      compatible = "hpe,gxp-wdt";
> +    };
> +


^ permalink raw reply	[flat|nested] 19+ messages in thread

* RE: [PATCH v4 06/11] dt-bindings: watchdog: Add HPE GXP Watchdog timer binding
  2022-04-20 15:53   ` Guenter Roeck
@ 2022-04-20 16:08     ` Hawkins, Nick
  2022-04-20 16:36       ` Guenter Roeck
  0 siblings, 1 reply; 19+ messages in thread
From: Hawkins, Nick @ 2022-04-20 16:08 UTC (permalink / raw)
  To: Guenter Roeck, Verdun, Jean-Marie, Harders, Nick, joel, arnd
  Cc: Wim Van Sebroeck, Rob Herring, linux-watchdog, devicetree, linux-kernel



-----Original Message-----
From: Guenter Roeck [mailto:groeck7@gmail.com] On Behalf Of Guenter Roeck
Sent: Wednesday, April 20, 2022 10:53 AM
To: Hawkins, Nick <nick.hawkins@hpe.com>; Verdun, Jean-Marie <verdun@hpe.com>; Harders, Nick <nicholas.harders@hpe.com>; joel@jms.id.au; arnd@arndb.de
Cc: Wim Van Sebroeck <wim@linux-watchdog.org>; Rob Herring <robh+dt@kernel.org>; linux-watchdog@vger.kernel.org; devicetree@vger.kernel.org; linux-kernel@vger.kernel.org
Subject: Re: [PATCH v4 06/11] dt-bindings: watchdog: Add HPE GXP Watchdog timer binding

On 4/20/22 08:01, nick.hawkins@hpe.com wrote:
> > From: Nick Hawkins <nick.hawkins@hpe.com>
> > 
> > Add the hpe gxp watchdog timer binding hpe,gxp-wdt.
> > This will enable support for the HPE GXP Watchdog
> > 
> > Signed-off-by: Nick Hawkins <nick.hawkins@hpe.com>
> >
> > ---
> > v2:

> v3 and v4 changes are missing.

I considered this the second attempt with a valid patchset but I will change this to v4 and add v3 v2. Should I make a v5 to say I updated the patch message?

Regards,

-Nick

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v4 06/11] dt-bindings: watchdog: Add HPE GXP Watchdog timer binding
  2022-04-20 16:08     ` Hawkins, Nick
@ 2022-04-20 16:36       ` Guenter Roeck
  2022-04-20 17:15         ` Hawkins, Nick
  0 siblings, 1 reply; 19+ messages in thread
From: Guenter Roeck @ 2022-04-20 16:36 UTC (permalink / raw)
  To: Hawkins, Nick, Verdun, Jean-Marie, Harders, Nick, joel, arnd
  Cc: Wim Van Sebroeck, Rob Herring, linux-watchdog, devicetree, linux-kernel

On 4/20/22 09:08, Hawkins, Nick wrote:
> 
> 
> -----Original Message-----
> From: Guenter Roeck [mailto:groeck7@gmail.com] On Behalf Of Guenter Roeck
> Sent: Wednesday, April 20, 2022 10:53 AM
> To: Hawkins, Nick <nick.hawkins@hpe.com>; Verdun, Jean-Marie <verdun@hpe.com>; Harders, Nick <nicholas.harders@hpe.com>; joel@jms.id.au; arnd@arndb.de
> Cc: Wim Van Sebroeck <wim@linux-watchdog.org>; Rob Herring <robh+dt@kernel.org>; linux-watchdog@vger.kernel.org; devicetree@vger.kernel.org; linux-kernel@vger.kernel.org
> Subject: Re: [PATCH v4 06/11] dt-bindings: watchdog: Add HPE GXP Watchdog timer binding
> 
> On 4/20/22 08:01, nick.hawkins@hpe.com wrote:
>>> From: Nick Hawkins <nick.hawkins@hpe.com>
>>>
>>> Add the hpe gxp watchdog timer binding hpe,gxp-wdt.
>>> This will enable support for the HPE GXP Watchdog
>>>
>>> Signed-off-by: Nick Hawkins <nick.hawkins@hpe.com>
>>>
>>> ---
>>> v2:
> 
>> v3 and v4 changes are missing.
> 
> I considered this the second attempt with a valid patchset but I will change this to v4 and add v3 v2. Should I make a v5 to say I updated the patch message?
> 

Sorry, I can't parse your statement. If there was no change in v3 and v4,
the change log for v3 and v4 should say "no changes in v3 and v4".
If the changes were made in v3 and/or v4, the change log should say that.
If the patch was added in v2/v3/v4, the change log should say that.
Either case, the last version in the change log should match the version
in the subject. Reviewers won't otherwise know how to match the patch
version with the change log. They will have to dig up v1..v3 to compare
the versions and find that out what exactly changed where (and why).
In my case, that commonly translates to "move patch to the end of my
review queue" because I just don't have the time to do that.

Guenter

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v4 09/11] dt-bindings: usb: generic-ochi: Add HPE GXP ochi binding
  2022-04-20 15:01 ` [PATCH v4 09/11] dt-bindings: usb: generic-ochi: Add HPE GXP ochi binding nick.hawkins
@ 2022-04-20 17:02   ` Arnd Bergmann
  2022-04-20 17:12     ` Hawkins, Nick
  0 siblings, 1 reply; 19+ messages in thread
From: Arnd Bergmann @ 2022-04-20 17:02 UTC (permalink / raw)
  To: Hawkins, Nick
  Cc: Verdun, Jean-Marie, nick, Joel Stanley, Arnd Bergmann,
	Greg Kroah-Hartman, Rob Herring, USB list, DTML,
	Linux Kernel Mailing List

On Wed, Apr 20, 2022 at 5:01 PM <nick.hawkins@hpe.com> wrote:
>
> From: Nick Hawkins <nick.hawkins@hpe.com>
>
> Add hpe,gxp-ochi to the generic-ochi list. This is to
> enable the device tree support.
>
> Signed-off-by: Nick Hawkins <nick.hawkins@hpe.com>

s/ochi/ohci/

everywhere

^ permalink raw reply	[flat|nested] 19+ messages in thread

* RE: [PATCH v4 03/11] drivers: wdt: Introduce HPE GXP SoC Watchdog
  2022-04-20 15:52   ` Guenter Roeck
@ 2022-04-20 17:06     ` Hawkins, Nick
  0 siblings, 0 replies; 19+ messages in thread
From: Hawkins, Nick @ 2022-04-20 17:06 UTC (permalink / raw)
  To: Guenter Roeck, Verdun, Jean-Marie, Harders, Nick, joel, arnd
  Cc: Wim Van Sebroeck, linux-kernel, linux-watchdog



-----Original Message-----
From: Guenter Roeck [mailto:groeck7@gmail.com] On Behalf Of Guenter Roeck
Sent: Wednesday, April 20, 2022 10:53 AM
To: Hawkins, Nick <nick.hawkins@hpe.com>; Verdun, Jean-Marie <verdun@hpe.com>; Harders, Nick <nicholas.harders@hpe.com>; joel@jms.id.au; arnd@arndb.de
Cc: Wim Van Sebroeck <wim@linux-watchdog.org>; linux-kernel@vger.kernel.org; linux-watchdog@vger.kernel.org
Subject: Re: [PATCH v4 03/11] drivers: wdt: Introduce HPE GXP SoC Watchdog

On 4/20/22 08:01, nick.hawkins@hpe.com wrote:
> > From: Nick Hawkins <nick.hawkins@hpe.com>
> > 
> > Adding support for the HPE GXP Watchdog. It is new to the linux 
> > community and this along with several other patches is the first 
> > support for it. The GXP asic contains a full compliment of timers one 
> > of which is the watchdog timer. The watchdog timer is 16 bit and has 
> > 10ms resolution. The watchdog is now

>  Drop "now".

I have corrected this.

> > created as a child device of timer since the same register range is 
> > used. This was done due to changes requested with the device tree.
> > 

> Drop last sentence; it is part of the change log and should stay there.

I have corrected this.

> > ---

> Changes made in v3 and v4 are missing.
Fixed, I will fix this on the rest of the patches on this set.
> > +config GXP_WATCHDOG
> > +	tristate "HPE GXP watchdog support"
> > +	depends on ARCH_HPE_GXP
> > +	select WATCHDOG_CORE
> > +	help
> > +	  Say Y here to include support for the watchdog timer
> > +	  in HPE GXP SoCs.
> > +

> Add something like:

> To compile this driver as a module, choose M here: the
> module will be calledgxp_wdt.

This has been changed. I will look through the rest of the other Kconfigs to make sure this statement is there.

Thanks for the feedback,

-Nick Hawkins

^ permalink raw reply	[flat|nested] 19+ messages in thread

* RE: [PATCH v4 09/11] dt-bindings: usb: generic-ochi: Add HPE GXP ochi binding
  2022-04-20 17:02   ` Arnd Bergmann
@ 2022-04-20 17:12     ` Hawkins, Nick
  0 siblings, 0 replies; 19+ messages in thread
From: Hawkins, Nick @ 2022-04-20 17:12 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Verdun, Jean-Marie, Harders, Nick, Joel Stanley,
	Greg Kroah-Hartman, Rob Herring, USB list, DTML,
	Linux Kernel Mailing List



-----Original Message-----
From: Arnd Bergmann [mailto:arnd@arndb.de] 
Sent: Wednesday, April 20, 2022 12:03 PM
To: Hawkins, Nick <nick.hawkins@hpe.com>
Cc: Verdun, Jean-Marie <verdun@hpe.com>; Harders, Nick <nicholas.harders@hpe.com>; Joel Stanley <joel@jms.id.au>; Arnd Bergmann <arnd@arndb.de>; Greg Kroah-Hartman <gregkh@linuxfoundation.org>; Rob Herring <robh+dt@kernel.org>; USB list <linux-usb@vger.kernel.org>; DTML <devicetree@vger.kernel.org>; Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v4 09/11] dt-bindings: usb: generic-ochi: Add HPE GXP ochi binding

On Wed, Apr 20, 2022 at 5:01 PM <nick.hawkins@hpe.com> wrote:
> >
> > From: Nick Hawkins <nick.hawkins@hpe.com>
> >
> > Add hpe,gxp-ochi to the generic-ochi list. This is to enable the 
> > device tree support.
> >
> > Signed-off-by: Nick Hawkins <nick.hawkins@hpe.com>

> s/ochi/ohci/

> everywhere

I have corrected this. I noticed that I did the same thing with echi -> ehci so that has been corrected as well.

Thanks for the feedback,

-Nick Hawkins

^ permalink raw reply	[flat|nested] 19+ messages in thread

* RE: [PATCH v4 06/11] dt-bindings: watchdog: Add HPE GXP Watchdog timer binding
  2022-04-20 16:36       ` Guenter Roeck
@ 2022-04-20 17:15         ` Hawkins, Nick
  0 siblings, 0 replies; 19+ messages in thread
From: Hawkins, Nick @ 2022-04-20 17:15 UTC (permalink / raw)
  To: Guenter Roeck, Verdun, Jean-Marie, Harders, Nick, joel, arnd
  Cc: Wim Van Sebroeck, Rob Herring, linux-watchdog, devicetree, linux-kernel



-----Original Message-----
From: Guenter Roeck [mailto:groeck7@gmail.com] On Behalf Of Guenter Roeck
Sent: Wednesday, April 20, 2022 11:37 AM
To: Hawkins, Nick <nick.hawkins@hpe.com>; Verdun, Jean-Marie <verdun@hpe.com>; Harders, Nick <nicholas.harders@hpe.com>; joel@jms.id.au; arnd@arndb.de
Cc: Wim Van Sebroeck <wim@linux-watchdog.org>; Rob Herring <robh+dt@kernel.org>; linux-watchdog@vger.kernel.org; devicetree@vger.kernel.org; linux-kernel@vger.kernel.org
Subject: Re: [PATCH v4 06/11] dt-bindings: watchdog: Add HPE GXP Watchdog timer binding

On 4/20/22 09:08, Hawkins, Nick wrote:
> 
> 
> -----Original Message-----
> From: Guenter Roeck [mailto:groeck7@gmail.com] On Behalf Of Guenter 
> Roeck
> Sent: Wednesday, April 20, 2022 10:53 AM
> To: Hawkins, Nick <nick.hawkins@hpe.com>; Verdun, Jean-Marie 
> <verdun@hpe.com>; Harders, Nick <nicholas.harders@hpe.com>; 
> joel@jms.id.au; arnd@arndb.de
> Cc: Wim Van Sebroeck <wim@linux-watchdog.org>; Rob Herring 
> <robh+dt@kernel.org>; linux-watchdog@vger.kernel.org; 
> devicetree@vger.kernel.org; linux-kernel@vger.kernel.org
> Subject: Re: [PATCH v4 06/11] dt-bindings: watchdog: Add HPE GXP 
> Watchdog timer binding
> 
> On 4/20/22 08:01, nick.hawkins@hpe.com wrote:
>>> From: Nick Hawkins <nick.hawkins@hpe.com>
>>>
>>> Add the hpe gxp watchdog timer binding hpe,gxp-wdt.
>>> This will enable support for the HPE GXP Watchdog
>>>
>>> Signed-off-by: Nick Hawkins <nick.hawkins@hpe.com>
>>>
>>> ---
>>> v2:
> 
>> v3 and v4 changes are missing.
> 
> I considered this the second attempt with a valid patchset but I will change this to v4 and add v3 v2. Should I make a v5 to say I updated the patch message?
> 

> Sorry, I can't parse your statement. If there was no change in v3 and v4, the change log for v3 and v4 should say "no changes in v3 and v4".
> If the changes were made in v3 and/or v4, the change log should say that.
> If the patch was added in v2/v3/v4, the change log should say that.
> Either case, the last version in the change log should match the version in the subject. Reviewers won't otherwise know how to match the patch version with the change log. They will have to dig up v1..v3 to compare the versions and find that out what exactly changed where (and why).
> In my case, that commonly translates to "move patch to the end of my review queue" because I just don't have the time to do that.

Understood, I have gone through the entire patchset and updated versions to be in line with the patchset version number. The places where no changes were made I have put no changes.

Thanks for the feedback,

-Nick

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2022-04-20 17:16 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-20 15:01 [PATCH v4 01/11] arch: arm: mach-hpe: Introduce the HPE GXP architecture nick.hawkins
2022-04-20 15:01 ` [PATCH v4 02/11] arch: arm: configs: multi_v7_defconfig nick.hawkins
2022-04-20 15:01 ` [PATCH v4 03/11] drivers: wdt: Introduce HPE GXP SoC Watchdog nick.hawkins
2022-04-20 15:52   ` Guenter Roeck
2022-04-20 17:06     ` Hawkins, Nick
2022-04-20 15:01 ` [PATCH v4 04/11] clocksource/drivers: Add HPE GXP timer nick.hawkins
2022-04-20 15:01 ` [PATCH v4 05/11] dt-bindings: timer: Add HPE GXP Timer Binding nick.hawkins
2022-04-20 15:01 ` [PATCH v4 06/11] dt-bindings: watchdog: Add HPE GXP Watchdog timer binding nick.hawkins
2022-04-20 15:53   ` Guenter Roeck
2022-04-20 16:08     ` Hawkins, Nick
2022-04-20 16:36       ` Guenter Roeck
2022-04-20 17:15         ` Hawkins, Nick
2022-04-20 15:01 ` [PATCH v4 07/11] dt-bindings: arm: Add HPE GXP Binding nick.hawkins
2022-04-20 15:01 ` [PATCH v4 08/11] dt-bindings: usb: generic-echi: Add HPE GXP echi binding nick.hawkins
2022-04-20 15:01 ` [PATCH v4 09/11] dt-bindings: usb: generic-ochi: Add HPE GXP ochi binding nick.hawkins
2022-04-20 17:02   ` Arnd Bergmann
2022-04-20 17:12     ` Hawkins, Nick
2022-04-20 15:01 ` [PATCH v4 10/11] arch: arm: boot: dts: Introduce HPE GXP Device tree nick.hawkins
2022-04-20 15:01 ` [PATCH v4 11/11] maintainers: Introduce HPE GXP Architecture nick.hawkins

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).