]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
drop some clk patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 17 Jan 2026 15:17:01 +0000 (16:17 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 17 Jan 2026 15:17:01 +0000 (16:17 +0100)
queue-5.10/clk-renesas-r9a06g032-export-function-to-set-dmamux.patch [deleted file]
queue-5.10/clk-renesas-r9a06g032-fix-memory-leak-in-error-path.patch
queue-5.10/series
queue-5.10/soc-renesas-r9a06g032-sysctrl-handle-h2mode-setting-.patch [deleted file]
queue-5.15/clk-renesas-r9a06g032-export-function-to-set-dmamux.patch [deleted file]
queue-5.15/clk-renesas-r9a06g032-fix-memory-leak-in-error-path.patch
queue-5.15/series
queue-5.15/soc-renesas-r9a06g032-sysctrl-handle-h2mode-setting-.patch [deleted file]

diff --git a/queue-5.10/clk-renesas-r9a06g032-export-function-to-set-dmamux.patch b/queue-5.10/clk-renesas-r9a06g032-export-function-to-set-dmamux.patch
deleted file mode 100644 (file)
index 433466b..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-From f8e16eebf617cd521687a5287495858a5c7853fa Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 27 Apr 2022 11:56:48 +0200
-Subject: clk: renesas: r9a06g032: Export function to set dmamux
-
-From: Miquel Raynal <miquel.raynal@bootlin.com>
-
-[ Upstream commit 885525c1e7e27ea6207d648a8db20dfbbd9e4238 ]
-
-The dmamux register is located within the system controller.
-
-Without syscon, we need an extra helper in order to give write access to
-this register to a dmamux driver.
-
-Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
-Acked-by: Stephen Boyd <sboyd@kernel.org>
-Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
-Acked-by: Geert Uytterhoeven <geert+renesas@glider.be>
-Link: https://lore.kernel.org/r/20220427095653.91804-5-miquel.raynal@bootlin.com
-Signed-off-by: Vinod Koul <vkoul@kernel.org>
-Stable-dep-of: f8def051bbcf ("clk: renesas: r9a06g032: Fix memory leak in error path")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/clk/renesas/r9a06g032-clocks.c        | 35 ++++++++++++++++++-
- include/linux/soc/renesas/r9a06g032-sysctrl.h | 11 ++++++
- 2 files changed, 45 insertions(+), 1 deletion(-)
- create mode 100644 include/linux/soc/renesas/r9a06g032-sysctrl.h
-
-diff --git a/drivers/clk/renesas/r9a06g032-clocks.c b/drivers/clk/renesas/r9a06g032-clocks.c
-index 285f6ac25372d..65cd6ed68923e 100644
---- a/drivers/clk/renesas/r9a06g032-clocks.c
-+++ b/drivers/clk/renesas/r9a06g032-clocks.c
-@@ -20,9 +20,12 @@
- #include <linux/pm_clock.h>
- #include <linux/pm_domain.h>
- #include <linux/slab.h>
-+#include <linux/soc/renesas/r9a06g032-sysctrl.h>
- #include <linux/spinlock.h>
- #include <dt-bindings/clock/r9a06g032-sysctrl.h>
-+#define R9A06G032_SYSCTRL_DMAMUX 0xA0
-+
- struct r9a06g032_gate {
-       u16 gate, reset, ready, midle,
-               scon, mirack, mistat;
-@@ -315,6 +318,30 @@ struct r9a06g032_priv {
-       void __iomem *reg;
- };
-+static struct r9a06g032_priv *sysctrl_priv;
-+
-+/* Exported helper to access the DMAMUX register */
-+int r9a06g032_sysctrl_set_dmamux(u32 mask, u32 val)
-+{
-+      unsigned long flags;
-+      u32 dmamux;
-+
-+      if (!sysctrl_priv)
-+              return -EPROBE_DEFER;
-+
-+      spin_lock_irqsave(&sysctrl_priv->lock, flags);
-+
-+      dmamux = readl(sysctrl_priv->reg + R9A06G032_SYSCTRL_DMAMUX);
-+      dmamux &= ~mask;
-+      dmamux |= val & mask;
-+      writel(dmamux, sysctrl_priv->reg + R9A06G032_SYSCTRL_DMAMUX);
-+
-+      spin_unlock_irqrestore(&sysctrl_priv->lock, flags);
-+
-+      return 0;
-+}
-+EXPORT_SYMBOL_GPL(r9a06g032_sysctrl_set_dmamux);
-+
- /* register/bit pairs are encoded as an uint16_t */
- static void
- clk_rdesc_set(struct r9a06g032_priv *clocks,
-@@ -961,7 +988,13 @@ static int __init r9a06g032_clocks_probe(struct platform_device *pdev)
-       if (error)
-               return error;
--      return r9a06g032_add_clk_domain(dev);
-+      error = r9a06g032_add_clk_domain(dev);
-+      if (error)
-+              return error;
-+
-+      sysctrl_priv = clocks;
-+
-+      return 0;
- }
- static const struct of_device_id r9a06g032_match[] = {
-diff --git a/include/linux/soc/renesas/r9a06g032-sysctrl.h b/include/linux/soc/renesas/r9a06g032-sysctrl.h
-new file mode 100644
-index 0000000000000..066dfb15cbddd
---- /dev/null
-+++ b/include/linux/soc/renesas/r9a06g032-sysctrl.h
-@@ -0,0 +1,11 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
-+#ifndef __LINUX_SOC_RENESAS_R9A06G032_SYSCTRL_H__
-+#define __LINUX_SOC_RENESAS_R9A06G032_SYSCTRL_H__
-+
-+#ifdef CONFIG_CLK_R9A06G032
-+int r9a06g032_sysctrl_set_dmamux(u32 mask, u32 val);
-+#else
-+static inline int r9a06g032_sysctrl_set_dmamux(u32 mask, u32 val) { return -ENODEV; }
-+#endif
-+
-+#endif /* __LINUX_SOC_RENESAS_R9A06G032_SYSCTRL_H__ */
--- 
-2.51.0
-
index 5dd86d905a5b44d7e1194b0f8cabf9439656b900..b3215b9ed51bf2fd5682d6f514087a0f98426d22 100644 (file)
@@ -23,14 +23,12 @@ Link: https://patch.msgid.link/20251030061603.1954-1-vulab@iscas.ac.cn
 Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
 Signed-off-by: Sasha Levin <sashal@kernel.org>
 ---
- drivers/clk/renesas/r9a06g032-clocks.c | +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
+ drivers/clk/renesas/r9a06g032-clocks.c |    7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
 
-diff --git a/drivers/clk/renesas/r9a06g032-clocks.c b/drivers/clk/renesas/r9a06g032-clocks.c
-index b3fd97615fc4c..9807fd0adb6c3 100644
 --- a/drivers/clk/renesas/r9a06g032-clocks.c
 +++ b/drivers/clk/renesas/r9a06g032-clocks.c
-@@ -969,9 +969,9 @@ static int __init r9a06g032_clocks_probe(struct platform_device *pdev)
+@@ -917,9 +917,10 @@ static int __init r9a06g032_clocks_probe
        if (IS_ERR(mclk))
                return PTR_ERR(mclk);
  
@@ -40,9 +38,7 @@ index b3fd97615fc4c..9807fd0adb6c3 100644
 +      clocks->reg = devm_of_iomap(dev, np, 0, NULL);
 +      if (IS_ERR(clocks->reg))
 +              return PTR_ERR(clocks->reg);
-       r9a06g032_init_h2mode(clocks);
--- 
-2.51.0
-
++
+       for (i = 0; i < ARRAY_SIZE(r9a06g032_clocks); ++i) {
+               const struct r9a06g032_clkdesc *d = &r9a06g032_clocks[i];
+               const char *parent_name = d->source ?
index 5943e71f5953d708536461aa8b1fd4ef834888df..205ac7424e7eee5f948a77550c112eb76bbb9cb2 100644 (file)
@@ -61,8 +61,6 @@ rdma-rtrs-server-fix-error-handling-in-get_or_create.patch
 macintosh-mac_hid-fix-race-condition-in-mac_hid_togg.patch
 wifi-cw1200-fix-potential-memory-leak-in-cw1200_bh_r.patch
 nbd-defer-config-unlock-in-nbd_genl_connect.patch
-clk-renesas-r9a06g032-export-function-to-set-dmamux.patch
-soc-renesas-r9a06g032-sysctrl-handle-h2mode-setting-.patch
 clk-renesas-r9a06g032-fix-memory-leak-in-error-path.patch
 lib-vsprintf-check-pointer-before-dereferencing-in-t.patch
 ocfs2-relax-bug-to-ocfs2_error-in-__ocfs2_move_exten.patch
diff --git a/queue-5.10/soc-renesas-r9a06g032-sysctrl-handle-h2mode-setting-.patch b/queue-5.10/soc-renesas-r9a06g032-sysctrl-handle-h2mode-setting-.patch
deleted file mode 100644 (file)
index b37bf52..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-From 2b777dc02f2e40c536b1a3663863d429992f4be9 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Thu, 5 Jan 2023 16:22:54 +0100
-Subject: soc: renesas: r9a06g032-sysctrl: Handle h2mode setting based on USBF
- presence
-
-From: Herve Codina <herve.codina@bootlin.com>
-
-[ Upstream commit e9fee814b054e4f6f2faf3d9c1944869fe41c9dd ]
-
-The CFG_USB[H2MODE] allows to switch the USB configuration. The
-configuration supported are:
-  - One host and one device
-or
-  - Two hosts
-
-Set CFG_USB[H2MODE] based on the USBF controller (USB device)
-availability.
-
-Signed-off-by: Herve Codina <herve.codina@bootlin.com>
-Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
-Link: https://lore.kernel.org/r/20230105152257.310642-3-herve.codina@bootlin.com
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-Stable-dep-of: f8def051bbcf ("clk: renesas: r9a06g032: Fix memory leak in error path")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/clk/renesas/r9a06g032-clocks.c | 28 ++++++++++++++++++++++++++
- 1 file changed, 28 insertions(+)
-
-diff --git a/drivers/clk/renesas/r9a06g032-clocks.c b/drivers/clk/renesas/r9a06g032-clocks.c
-index 65cd6ed68923e..b3fd97615fc4c 100644
---- a/drivers/clk/renesas/r9a06g032-clocks.c
-+++ b/drivers/clk/renesas/r9a06g032-clocks.c
-@@ -24,6 +24,8 @@
- #include <linux/spinlock.h>
- #include <dt-bindings/clock/r9a06g032-sysctrl.h>
-+#define R9A06G032_SYSCTRL_USB    0x00
-+#define R9A06G032_SYSCTRL_USB_H2MODE  (1<<1)
- #define R9A06G032_SYSCTRL_DMAMUX 0xA0
- struct r9a06g032_gate {
-@@ -918,6 +920,29 @@ static void r9a06g032_clocks_del_clk_provider(void *data)
-       of_clk_del_provider(data);
- }
-+static void __init r9a06g032_init_h2mode(struct r9a06g032_priv *clocks)
-+{
-+      struct device_node *usbf_np = NULL;
-+      u32 usb;
-+
-+      while ((usbf_np = of_find_compatible_node(usbf_np, NULL,
-+                                                "renesas,rzn1-usbf"))) {
-+              if (of_device_is_available(usbf_np))
-+                      break;
-+      }
-+
-+      usb = readl(clocks->reg + R9A06G032_SYSCTRL_USB);
-+      if (usbf_np) {
-+              /* 1 host and 1 device mode */
-+              usb &= ~R9A06G032_SYSCTRL_USB_H2MODE;
-+              of_node_put(usbf_np);
-+      } else {
-+              /* 2 hosts mode */
-+              usb |= R9A06G032_SYSCTRL_USB_H2MODE;
-+      }
-+      writel(usb, clocks->reg + R9A06G032_SYSCTRL_USB);
-+}
-+
- static int __init r9a06g032_clocks_probe(struct platform_device *pdev)
- {
-       struct device *dev = &pdev->dev;
-@@ -947,6 +972,9 @@ static int __init r9a06g032_clocks_probe(struct platform_device *pdev)
-       clocks->reg = of_iomap(np, 0);
-       if (WARN_ON(!clocks->reg))
-               return -ENOMEM;
-+
-+      r9a06g032_init_h2mode(clocks);
-+
-       for (i = 0; i < ARRAY_SIZE(r9a06g032_clocks); ++i) {
-               const struct r9a06g032_clkdesc *d = &r9a06g032_clocks[i];
-               const char *parent_name = d->source ?
--- 
-2.51.0
-
diff --git a/queue-5.15/clk-renesas-r9a06g032-export-function-to-set-dmamux.patch b/queue-5.15/clk-renesas-r9a06g032-export-function-to-set-dmamux.patch
deleted file mode 100644 (file)
index 7f93fd7..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-From 03cbaaa923499a558cc771f966367d16709760a9 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 27 Apr 2022 11:56:48 +0200
-Subject: clk: renesas: r9a06g032: Export function to set dmamux
-
-From: Miquel Raynal <miquel.raynal@bootlin.com>
-
-[ Upstream commit 885525c1e7e27ea6207d648a8db20dfbbd9e4238 ]
-
-The dmamux register is located within the system controller.
-
-Without syscon, we need an extra helper in order to give write access to
-this register to a dmamux driver.
-
-Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
-Acked-by: Stephen Boyd <sboyd@kernel.org>
-Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
-Acked-by: Geert Uytterhoeven <geert+renesas@glider.be>
-Link: https://lore.kernel.org/r/20220427095653.91804-5-miquel.raynal@bootlin.com
-Signed-off-by: Vinod Koul <vkoul@kernel.org>
-Stable-dep-of: f8def051bbcf ("clk: renesas: r9a06g032: Fix memory leak in error path")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/clk/renesas/r9a06g032-clocks.c        | 35 ++++++++++++++++++-
- include/linux/soc/renesas/r9a06g032-sysctrl.h | 11 ++++++
- 2 files changed, 45 insertions(+), 1 deletion(-)
- create mode 100644 include/linux/soc/renesas/r9a06g032-sysctrl.h
-
-diff --git a/drivers/clk/renesas/r9a06g032-clocks.c b/drivers/clk/renesas/r9a06g032-clocks.c
-index 3e43ae8480ddf..9f42d46ce6192 100644
---- a/drivers/clk/renesas/r9a06g032-clocks.c
-+++ b/drivers/clk/renesas/r9a06g032-clocks.c
-@@ -20,9 +20,12 @@
- #include <linux/pm_clock.h>
- #include <linux/pm_domain.h>
- #include <linux/slab.h>
-+#include <linux/soc/renesas/r9a06g032-sysctrl.h>
- #include <linux/spinlock.h>
- #include <dt-bindings/clock/r9a06g032-sysctrl.h>
-+#define R9A06G032_SYSCTRL_DMAMUX 0xA0
-+
- struct r9a06g032_gate {
-       u16 gate, reset, ready, midle,
-               scon, mirack, mistat;
-@@ -315,6 +318,30 @@ struct r9a06g032_priv {
-       void __iomem *reg;
- };
-+static struct r9a06g032_priv *sysctrl_priv;
-+
-+/* Exported helper to access the DMAMUX register */
-+int r9a06g032_sysctrl_set_dmamux(u32 mask, u32 val)
-+{
-+      unsigned long flags;
-+      u32 dmamux;
-+
-+      if (!sysctrl_priv)
-+              return -EPROBE_DEFER;
-+
-+      spin_lock_irqsave(&sysctrl_priv->lock, flags);
-+
-+      dmamux = readl(sysctrl_priv->reg + R9A06G032_SYSCTRL_DMAMUX);
-+      dmamux &= ~mask;
-+      dmamux |= val & mask;
-+      writel(dmamux, sysctrl_priv->reg + R9A06G032_SYSCTRL_DMAMUX);
-+
-+      spin_unlock_irqrestore(&sysctrl_priv->lock, flags);
-+
-+      return 0;
-+}
-+EXPORT_SYMBOL_GPL(r9a06g032_sysctrl_set_dmamux);
-+
- /* register/bit pairs are encoded as an uint16_t */
- static void
- clk_rdesc_set(struct r9a06g032_priv *clocks,
-@@ -962,7 +989,13 @@ static int __init r9a06g032_clocks_probe(struct platform_device *pdev)
-       if (error)
-               return error;
--      return r9a06g032_add_clk_domain(dev);
-+      error = r9a06g032_add_clk_domain(dev);
-+      if (error)
-+              return error;
-+
-+      sysctrl_priv = clocks;
-+
-+      return 0;
- }
- static const struct of_device_id r9a06g032_match[] = {
-diff --git a/include/linux/soc/renesas/r9a06g032-sysctrl.h b/include/linux/soc/renesas/r9a06g032-sysctrl.h
-new file mode 100644
-index 0000000000000..066dfb15cbddd
---- /dev/null
-+++ b/include/linux/soc/renesas/r9a06g032-sysctrl.h
-@@ -0,0 +1,11 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
-+#ifndef __LINUX_SOC_RENESAS_R9A06G032_SYSCTRL_H__
-+#define __LINUX_SOC_RENESAS_R9A06G032_SYSCTRL_H__
-+
-+#ifdef CONFIG_CLK_R9A06G032
-+int r9a06g032_sysctrl_set_dmamux(u32 mask, u32 val);
-+#else
-+static inline int r9a06g032_sysctrl_set_dmamux(u32 mask, u32 val) { return -ENODEV; }
-+#endif
-+
-+#endif /* __LINUX_SOC_RENESAS_R9A06G032_SYSCTRL_H__ */
--- 
-2.51.0
-
index 691fced54b63e2837d2a7fbc22f51f845b282efc..9cea7101b6a86f647a670dd0f31f0556556493dd 100644 (file)
@@ -1,4 +1,4 @@
-From 320095778cbcdbe31f82c86f862a77e639872922 Mon Sep 17 00:00:00 2001
+From 965e0e8f4f387e39aa13db221113f665d925ff30 Mon Sep 17 00:00:00 2001
 From: Sasha Levin <sashal@kernel.org>
 Date: Thu, 30 Oct 2025 14:16:03 +0800
 Subject: clk: renesas: r9a06g032: Fix memory leak in error path
@@ -22,15 +22,14 @@ Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
 Link: https://patch.msgid.link/20251030061603.1954-1-vulab@iscas.ac.cn
 Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
 Signed-off-by: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 ---
- drivers/clk/renesas/r9a06g032-clocks.c | +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
+ drivers/clk/renesas/r9a06g032-clocks.c |    7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
 
-diff --git a/drivers/clk/renesas/r9a06g032-clocks.c b/drivers/clk/renesas/r9a06g032-clocks.c
-index e46280059db79..7ee8443a38041 100644
 --- a/drivers/clk/renesas/r9a06g032-clocks.c
 +++ b/drivers/clk/renesas/r9a06g032-clocks.c
-@@ -970,9 +970,9 @@ static int __init r9a06g032_clocks_probe(struct platform_device *pdev)
+@@ -918,9 +918,10 @@ static int __init r9a06g032_clocks_probe
        if (IS_ERR(mclk))
                return PTR_ERR(mclk);
  
@@ -40,9 +39,7 @@ index e46280059db79..7ee8443a38041 100644
 +      clocks->reg = devm_of_iomap(dev, np, 0, NULL);
 +      if (IS_ERR(clocks->reg))
 +              return PTR_ERR(clocks->reg);
-       r9a06g032_init_h2mode(clocks);
--- 
-2.51.0
-
++
+       for (i = 0; i < ARRAY_SIZE(r9a06g032_clocks); ++i) {
+               const struct r9a06g032_clkdesc *d = &r9a06g032_clocks[i];
+               const char *parent_name = d->source ?
index bfd69fb0e2232f842892661ed59391cade7014db..5a16579bbaa35f1e58b12f36b7b526985c2104a5 100644 (file)
@@ -90,8 +90,6 @@ coresight-etm4x-use-trace-filtering-controls-dynamic.patch
 coresight-etm4x-add-isb-before-reading-the-trcstatr.patch
 coresight-etm4x-extract-the-trace-unit-controlling.patch
 coresight-etm4x-add-context-synchronization-before-e.patch
-clk-renesas-r9a06g032-export-function-to-set-dmamux.patch
-soc-renesas-r9a06g032-sysctrl-handle-h2mode-setting-.patch
 clk-renesas-r9a06g032-fix-memory-leak-in-error-path.patch
 lib-vsprintf-check-pointer-before-dereferencing-in-t.patch
 ocfs2-relax-bug-to-ocfs2_error-in-__ocfs2_move_exten.patch
diff --git a/queue-5.15/soc-renesas-r9a06g032-sysctrl-handle-h2mode-setting-.patch b/queue-5.15/soc-renesas-r9a06g032-sysctrl-handle-h2mode-setting-.patch
deleted file mode 100644 (file)
index cd0d572..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-From 2bcf0fd9833c87ff340cba986995cf3b3f230dc9 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Thu, 5 Jan 2023 16:22:54 +0100
-Subject: soc: renesas: r9a06g032-sysctrl: Handle h2mode setting based on USBF
- presence
-
-From: Herve Codina <herve.codina@bootlin.com>
-
-[ Upstream commit e9fee814b054e4f6f2faf3d9c1944869fe41c9dd ]
-
-The CFG_USB[H2MODE] allows to switch the USB configuration. The
-configuration supported are:
-  - One host and one device
-or
-  - Two hosts
-
-Set CFG_USB[H2MODE] based on the USBF controller (USB device)
-availability.
-
-Signed-off-by: Herve Codina <herve.codina@bootlin.com>
-Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
-Link: https://lore.kernel.org/r/20230105152257.310642-3-herve.codina@bootlin.com
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-Stable-dep-of: f8def051bbcf ("clk: renesas: r9a06g032: Fix memory leak in error path")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/clk/renesas/r9a06g032-clocks.c | 28 ++++++++++++++++++++++++++
- 1 file changed, 28 insertions(+)
-
-diff --git a/drivers/clk/renesas/r9a06g032-clocks.c b/drivers/clk/renesas/r9a06g032-clocks.c
-index 9f42d46ce6192..e46280059db79 100644
---- a/drivers/clk/renesas/r9a06g032-clocks.c
-+++ b/drivers/clk/renesas/r9a06g032-clocks.c
-@@ -24,6 +24,8 @@
- #include <linux/spinlock.h>
- #include <dt-bindings/clock/r9a06g032-sysctrl.h>
-+#define R9A06G032_SYSCTRL_USB    0x00
-+#define R9A06G032_SYSCTRL_USB_H2MODE  (1<<1)
- #define R9A06G032_SYSCTRL_DMAMUX 0xA0
- struct r9a06g032_gate {
-@@ -919,6 +921,29 @@ static void r9a06g032_clocks_del_clk_provider(void *data)
-       of_clk_del_provider(data);
- }
-+static void __init r9a06g032_init_h2mode(struct r9a06g032_priv *clocks)
-+{
-+      struct device_node *usbf_np = NULL;
-+      u32 usb;
-+
-+      while ((usbf_np = of_find_compatible_node(usbf_np, NULL,
-+                                                "renesas,rzn1-usbf"))) {
-+              if (of_device_is_available(usbf_np))
-+                      break;
-+      }
-+
-+      usb = readl(clocks->reg + R9A06G032_SYSCTRL_USB);
-+      if (usbf_np) {
-+              /* 1 host and 1 device mode */
-+              usb &= ~R9A06G032_SYSCTRL_USB_H2MODE;
-+              of_node_put(usbf_np);
-+      } else {
-+              /* 2 hosts mode */
-+              usb |= R9A06G032_SYSCTRL_USB_H2MODE;
-+      }
-+      writel(usb, clocks->reg + R9A06G032_SYSCTRL_USB);
-+}
-+
- static int __init r9a06g032_clocks_probe(struct platform_device *pdev)
- {
-       struct device *dev = &pdev->dev;
-@@ -948,6 +973,9 @@ static int __init r9a06g032_clocks_probe(struct platform_device *pdev)
-       clocks->reg = of_iomap(np, 0);
-       if (WARN_ON(!clocks->reg))
-               return -ENOMEM;
-+
-+      r9a06g032_init_h2mode(clocks);
-+
-       for (i = 0; i < ARRAY_SIZE(r9a06g032_clocks); ++i) {
-               const struct r9a06g032_clkdesc *d = &r9a06g032_clocks[i];
-               const char *parent_name = d->source ?
--- 
-2.51.0
-