uboot-sunxi: t113: refresh patches to fix clock issues
[openwrt/staging/wigyori.git] / package / boot / uboot-sunxi / patches / 4010-clk-sunxi-Add-support-for-the-D1-CCU.patch
diff --git a/package/boot/uboot-sunxi/patches/4010-clk-sunxi-Add-support-for-the-D1-CCU.patch b/package/boot/uboot-sunxi/patches/4010-clk-sunxi-Add-support-for-the-D1-CCU.patch
deleted file mode 100644 (file)
index b9459be..0000000
+++ /dev/null
@@ -1,406 +0,0 @@
-From 67617005348057a6546b99125d64a7dcc440901a Mon Sep 17 00:00:00 2001
-From: Samuel Holland <samuel@sholland.org>
-Date: Sat, 30 Apr 2022 22:38:37 -0500
-Subject: [PATCH 4010/4031] clk: sunxi: Add support for the D1 CCU
-
-Since the D1 CCU binding is defined, we can add support for its
-gates/resets, following the pattern of the existing drivers.
-
-Signed-off-by: Samuel Holland <samuel@sholland.org>
-Reviewed-by: Andre Przywara <andre.przywara@arm.com>
-Acked-by: Sean Anderson <seanga2@gmail.com>
----
- drivers/clk/sunxi/Kconfig                 |   6 +
- drivers/clk/sunxi/Makefile                |   1 +
- drivers/clk/sunxi/clk_d1.c                | 101 ++++++++++++++
- include/dt-bindings/clock/sun20i-d1-ccu.h | 156 ++++++++++++++++++++++
- include/dt-bindings/reset/sun20i-d1-ccu.h |  77 +++++++++++
- 5 files changed, 341 insertions(+)
- create mode 100644 drivers/clk/sunxi/clk_d1.c
- create mode 100644 include/dt-bindings/clock/sun20i-d1-ccu.h
- create mode 100644 include/dt-bindings/reset/sun20i-d1-ccu.h
-
-diff --git a/drivers/clk/sunxi/Kconfig b/drivers/clk/sunxi/Kconfig
-index bf11fad6ee..f65e482ba4 100644
---- a/drivers/clk/sunxi/Kconfig
-+++ b/drivers/clk/sunxi/Kconfig
-@@ -87,6 +87,12 @@ config CLK_SUN8I_H3
-         This enables common clock driver support for platforms based
-         on Allwinner H3/H5 SoC.
-+config CLK_SUN20I_D1
-+      bool "Clock driver for Allwinner D1"
-+      help
-+        This enables common clock driver support for platforms based
-+        on Allwinner D1 SoC.
-+
- config CLK_SUN50I_H6
-       bool "Clock driver for Allwinner H6"
-       default MACH_SUN50I_H6
-diff --git a/drivers/clk/sunxi/Makefile b/drivers/clk/sunxi/Makefile
-index 895da02ebe..90a277489d 100644
---- a/drivers/clk/sunxi/Makefile
-+++ b/drivers/clk/sunxi/Makefile
-@@ -19,6 +19,7 @@ obj-$(CONFIG_CLK_SUN8I_R40) += clk_r40.o
- obj-$(CONFIG_CLK_SUN8I_V3S) += clk_v3s.o
- obj-$(CONFIG_CLK_SUN9I_A80) += clk_a80.o
- obj-$(CONFIG_CLK_SUN8I_H3) += clk_h3.o
-+obj-$(CONFIG_CLK_SUN20I_D1) += clk_d1.o
- obj-$(CONFIG_CLK_SUN50I_H6) += clk_h6.o
- obj-$(CONFIG_CLK_SUN50I_H6_R) += clk_h6_r.o
- obj-$(CONFIG_CLK_SUN50I_H616) += clk_h616.o
-diff --git a/drivers/clk/sunxi/clk_d1.c b/drivers/clk/sunxi/clk_d1.c
-new file mode 100644
-index 0000000000..9412b77a54
---- /dev/null
-+++ b/drivers/clk/sunxi/clk_d1.c
-@@ -0,0 +1,101 @@
-+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
-+/*
-+ * Copyright (C) 2021 Samuel Holland <samuel@sholland.org>
-+ */
-+
-+#include <common.h>
-+#include <clk-uclass.h>
-+#include <dm.h>
-+#include <errno.h>
-+#include <clk/sunxi.h>
-+#include <dt-bindings/clock/sun20i-d1-ccu.h>
-+#include <dt-bindings/reset/sun20i-d1-ccu.h>
-+#include <linux/bitops.h>
-+
-+static struct ccu_clk_gate d1_gates[] = {
-+      [CLK_BUS_MMC0]          = GATE(0x84c, BIT(0)),
-+      [CLK_BUS_MMC1]          = GATE(0x84c, BIT(1)),
-+      [CLK_BUS_MMC2]          = GATE(0x84c, BIT(2)),
-+      [CLK_BUS_UART0]         = GATE(0x90c, BIT(0)),
-+      [CLK_BUS_UART1]         = GATE(0x90c, BIT(1)),
-+      [CLK_BUS_UART2]         = GATE(0x90c, BIT(2)),
-+      [CLK_BUS_UART3]         = GATE(0x90c, BIT(3)),
-+      [CLK_BUS_UART4]         = GATE(0x90c, BIT(4)),
-+      [CLK_BUS_UART5]         = GATE(0x90c, BIT(5)),
-+      [CLK_BUS_I2C0]          = GATE(0x91c, BIT(0)),
-+      [CLK_BUS_I2C1]          = GATE(0x91c, BIT(1)),
-+      [CLK_BUS_I2C2]          = GATE(0x91c, BIT(2)),
-+      [CLK_BUS_I2C3]          = GATE(0x91c, BIT(3)),
-+      [CLK_SPI0]              = GATE(0x940, BIT(31)),
-+      [CLK_SPI1]              = GATE(0x944, BIT(31)),
-+      [CLK_BUS_SPI0]          = GATE(0x96c, BIT(0)),
-+      [CLK_BUS_SPI1]          = GATE(0x96c, BIT(1)),
-+
-+      [CLK_BUS_EMAC]          = GATE(0x97c, BIT(0)),
-+
-+      [CLK_USB_OHCI0]         = GATE(0xa70, BIT(31)),
-+      [CLK_USB_OHCI1]         = GATE(0xa74, BIT(31)),
-+      [CLK_BUS_OHCI0]         = GATE(0xa8c, BIT(0)),
-+      [CLK_BUS_OHCI1]         = GATE(0xa8c, BIT(1)),
-+      [CLK_BUS_EHCI0]         = GATE(0xa8c, BIT(4)),
-+      [CLK_BUS_EHCI1]         = GATE(0xa8c, BIT(5)),
-+      [CLK_BUS_OTG]           = GATE(0xa8c, BIT(8)),
-+      [CLK_BUS_LRADC]         = GATE(0xa9c, BIT(0)),
-+
-+      [CLK_RISCV]             = GATE(0xd04, BIT(31)),
-+};
-+
-+static struct ccu_reset d1_resets[] = {
-+      [RST_BUS_MMC0]          = RESET(0x84c, BIT(16)),
-+      [RST_BUS_MMC1]          = RESET(0x84c, BIT(17)),
-+      [RST_BUS_MMC2]          = RESET(0x84c, BIT(18)),
-+      [RST_BUS_UART0]         = RESET(0x90c, BIT(16)),
-+      [RST_BUS_UART1]         = RESET(0x90c, BIT(17)),
-+      [RST_BUS_UART2]         = RESET(0x90c, BIT(18)),
-+      [RST_BUS_UART3]         = RESET(0x90c, BIT(19)),
-+      [RST_BUS_UART4]         = RESET(0x90c, BIT(20)),
-+      [RST_BUS_UART5]         = RESET(0x90c, BIT(21)),
-+      [RST_BUS_I2C0]          = RESET(0x91c, BIT(16)),
-+      [RST_BUS_I2C1]          = RESET(0x91c, BIT(17)),
-+      [RST_BUS_I2C2]          = RESET(0x91c, BIT(18)),
-+      [RST_BUS_I2C3]          = RESET(0x91c, BIT(19)),
-+      [RST_BUS_SPI0]          = RESET(0x96c, BIT(16)),
-+      [RST_BUS_SPI1]          = RESET(0x96c, BIT(17)),
-+
-+      [RST_BUS_EMAC]          = RESET(0x97c, BIT(16)),
-+
-+      [RST_USB_PHY0]          = RESET(0xa70, BIT(30)),
-+      [RST_USB_PHY1]          = RESET(0xa74, BIT(30)),
-+      [RST_BUS_OHCI0]         = RESET(0xa8c, BIT(16)),
-+      [RST_BUS_OHCI1]         = RESET(0xa8c, BIT(17)),
-+      [RST_BUS_EHCI0]         = RESET(0xa8c, BIT(20)),
-+      [RST_BUS_EHCI1]         = RESET(0xa8c, BIT(21)),
-+      [RST_BUS_OTG]           = RESET(0xa8c, BIT(24)),
-+      [RST_BUS_LRADC]         = RESET(0xa9c, BIT(16)),
-+};
-+
-+static const struct ccu_desc d1_ccu_desc = {
-+      .gates  = d1_gates,
-+      .resets = d1_resets,
-+};
-+
-+static int d1_clk_bind(struct udevice *dev)
-+{
-+      return sunxi_reset_bind(dev, ARRAY_SIZE(d1_resets));
-+}
-+
-+static const struct udevice_id d1_ccu_ids[] = {
-+      { .compatible = "allwinner,sun20i-d1-ccu",
-+        .data = (ulong)&d1_ccu_desc },
-+      { }
-+};
-+
-+U_BOOT_DRIVER(clk_sun20i_d1) = {
-+      .name           = "sun20i_d1_ccu",
-+      .id             = UCLASS_CLK,
-+      .of_match       = d1_ccu_ids,
-+      .priv_auto      = sizeof(struct ccu_priv),
-+      .ops            = &sunxi_clk_ops,
-+      .probe          = sunxi_clk_probe,
-+      .bind           = d1_clk_bind,
-+};
-diff --git a/include/dt-bindings/clock/sun20i-d1-ccu.h b/include/dt-bindings/clock/sun20i-d1-ccu.h
-new file mode 100644
-index 0000000000..e3ac53315e
---- /dev/null
-+++ b/include/dt-bindings/clock/sun20i-d1-ccu.h
-@@ -0,0 +1,156 @@
-+/* SPDX-License-Identifier: (GPL-2.0+ or MIT) */
-+/*
-+ * Copyright (C) 2020 huangzhenwei@allwinnertech.com
-+ * Copyright (C) 2021 Samuel Holland <samuel@sholland.org>
-+ */
-+
-+#ifndef _DT_BINDINGS_CLK_SUN20I_D1_CCU_H_
-+#define _DT_BINDINGS_CLK_SUN20I_D1_CCU_H_
-+
-+#define CLK_PLL_CPUX          0
-+#define CLK_PLL_DDR0          1
-+#define CLK_PLL_PERIPH0_4X    2
-+#define CLK_PLL_PERIPH0_2X    3
-+#define CLK_PLL_PERIPH0_800M  4
-+#define CLK_PLL_PERIPH0               5
-+#define CLK_PLL_PERIPH0_DIV3  6
-+#define CLK_PLL_VIDEO0_4X     7
-+#define CLK_PLL_VIDEO0_2X     8
-+#define CLK_PLL_VIDEO0                9
-+#define CLK_PLL_VIDEO1_4X     10
-+#define CLK_PLL_VIDEO1_2X     11
-+#define CLK_PLL_VIDEO1                12
-+#define CLK_PLL_VE            13
-+#define CLK_PLL_AUDIO0_4X     14
-+#define CLK_PLL_AUDIO0_2X     15
-+#define CLK_PLL_AUDIO0                16
-+#define CLK_PLL_AUDIO1                17
-+#define CLK_PLL_AUDIO1_DIV2   18
-+#define CLK_PLL_AUDIO1_DIV5   19
-+#define CLK_CPUX              20
-+#define CLK_CPUX_AXI          21
-+#define CLK_CPUX_APB          22
-+#define CLK_PSI_AHB           23
-+#define CLK_APB0              24
-+#define CLK_APB1              25
-+#define CLK_MBUS              26
-+#define CLK_DE                        27
-+#define CLK_BUS_DE            28
-+#define CLK_DI                        29
-+#define CLK_BUS_DI            30
-+#define CLK_G2D                       31
-+#define CLK_BUS_G2D           32
-+#define CLK_CE                        33
-+#define CLK_BUS_CE            34
-+#define CLK_VE                        35
-+#define CLK_BUS_VE            36
-+#define CLK_BUS_DMA           37
-+#define CLK_BUS_MSGBOX0               38
-+#define CLK_BUS_MSGBOX1               39
-+#define CLK_BUS_MSGBOX2               40
-+#define CLK_BUS_SPINLOCK      41
-+#define CLK_BUS_HSTIMER               42
-+#define CLK_AVS                       43
-+#define CLK_BUS_DBG           44
-+#define CLK_BUS_PWM           45
-+#define CLK_BUS_IOMMU         46
-+#define CLK_DRAM              47
-+#define CLK_MBUS_DMA          48
-+#define CLK_MBUS_VE           49
-+#define CLK_MBUS_CE           50
-+#define CLK_MBUS_TVIN         51
-+#define CLK_MBUS_CSI          52
-+#define CLK_MBUS_G2D          53
-+#define CLK_MBUS_RISCV                54
-+#define CLK_BUS_DRAM          55
-+#define CLK_MMC0              56
-+#define CLK_MMC1              57
-+#define CLK_MMC2              58
-+#define CLK_BUS_MMC0          59
-+#define CLK_BUS_MMC1          60
-+#define CLK_BUS_MMC2          61
-+#define CLK_BUS_UART0         62
-+#define CLK_BUS_UART1         63
-+#define CLK_BUS_UART2         64
-+#define CLK_BUS_UART3         65
-+#define CLK_BUS_UART4         66
-+#define CLK_BUS_UART5         67
-+#define CLK_BUS_I2C0          68
-+#define CLK_BUS_I2C1          69
-+#define CLK_BUS_I2C2          70
-+#define CLK_BUS_I2C3          71
-+#define CLK_SPI0              72
-+#define CLK_SPI1              73
-+#define CLK_BUS_SPI0          74
-+#define CLK_BUS_SPI1          75
-+#define CLK_EMAC_25M          76
-+#define CLK_BUS_EMAC          77
-+#define CLK_IR_TX             78
-+#define CLK_BUS_IR_TX         79
-+#define CLK_BUS_GPADC         80
-+#define CLK_BUS_THS           81
-+#define CLK_I2S0              82
-+#define CLK_I2S1              83
-+#define CLK_I2S2              84
-+#define CLK_I2S2_ASRC         85
-+#define CLK_BUS_I2S0          86
-+#define CLK_BUS_I2S1          87
-+#define CLK_BUS_I2S2          88
-+#define CLK_SPDIF_TX          89
-+#define CLK_SPDIF_RX          90
-+#define CLK_BUS_SPDIF         91
-+#define CLK_DMIC              92
-+#define CLK_BUS_DMIC          93
-+#define CLK_AUDIO_DAC         94
-+#define CLK_AUDIO_ADC         95
-+#define CLK_BUS_AUDIO         96
-+#define CLK_USB_OHCI0         97
-+#define CLK_USB_OHCI1         98
-+#define CLK_BUS_OHCI0         99
-+#define CLK_BUS_OHCI1         100
-+#define CLK_BUS_EHCI0         101
-+#define CLK_BUS_EHCI1         102
-+#define CLK_BUS_OTG           103
-+#define CLK_BUS_LRADC         104
-+#define CLK_BUS_DPSS_TOP      105
-+#define CLK_HDMI_24M          106
-+#define CLK_HDMI_CEC_32K      107
-+#define CLK_HDMI_CEC          108
-+#define CLK_BUS_HDMI          109
-+#define CLK_MIPI_DSI          110
-+#define CLK_BUS_MIPI_DSI      111
-+#define CLK_TCON_LCD0         112
-+#define CLK_BUS_TCON_LCD0     113
-+#define CLK_TCON_TV           114
-+#define CLK_BUS_TCON_TV               115
-+#define CLK_TVE                       116
-+#define CLK_BUS_TVE_TOP               117
-+#define CLK_BUS_TVE           118
-+#define CLK_TVD                       119
-+#define CLK_BUS_TVD_TOP               120
-+#define CLK_BUS_TVD           121
-+#define CLK_LEDC              122
-+#define CLK_BUS_LEDC          123
-+#define CLK_CSI_TOP           124
-+#define CLK_CSI_MCLK          125
-+#define CLK_BUS_CSI           126
-+#define CLK_TPADC             127
-+#define CLK_BUS_TPADC         128
-+#define CLK_BUS_TZMA          129
-+#define CLK_DSP                       130
-+#define CLK_BUS_DSP_CFG               131
-+#define CLK_RISCV             132
-+#define CLK_RISCV_AXI         133
-+#define CLK_BUS_RISCV_CFG     134
-+#define CLK_FANOUT_24M                135
-+#define CLK_FANOUT_12M                136
-+#define CLK_FANOUT_16M                137
-+#define CLK_FANOUT_25M                138
-+#define CLK_FANOUT_32K                139
-+#define CLK_FANOUT_27M                140
-+#define CLK_FANOUT_PCLK               141
-+#define CLK_FANOUT0           142
-+#define CLK_FANOUT1           143
-+#define CLK_FANOUT2           144
-+
-+#endif /* _DT_BINDINGS_CLK_SUN20I_D1_CCU_H_ */
-diff --git a/include/dt-bindings/reset/sun20i-d1-ccu.h b/include/dt-bindings/reset/sun20i-d1-ccu.h
-new file mode 100644
-index 0000000000..de9ff52032
---- /dev/null
-+++ b/include/dt-bindings/reset/sun20i-d1-ccu.h
-@@ -0,0 +1,77 @@
-+/* SPDX-License-Identifier: (GPL-2.0+ or MIT) */
-+/*
-+ * Copyright (c) 2020 huangzhenwei@allwinnertech.com
-+ * Copyright (C) 2021 Samuel Holland <samuel@sholland.org>
-+ */
-+
-+#ifndef _DT_BINDINGS_RST_SUN20I_D1_CCU_H_
-+#define _DT_BINDINGS_RST_SUN20I_D1_CCU_H_
-+
-+#define RST_MBUS              0
-+#define RST_BUS_DE            1
-+#define RST_BUS_DI            2
-+#define RST_BUS_G2D           3
-+#define RST_BUS_CE            4
-+#define RST_BUS_VE            5
-+#define RST_BUS_DMA           6
-+#define RST_BUS_MSGBOX0               7
-+#define RST_BUS_MSGBOX1               8
-+#define RST_BUS_MSGBOX2               9
-+#define RST_BUS_SPINLOCK      10
-+#define RST_BUS_HSTIMER               11
-+#define RST_BUS_DBG           12
-+#define RST_BUS_PWM           13
-+#define RST_BUS_DRAM          14
-+#define RST_BUS_MMC0          15
-+#define RST_BUS_MMC1          16
-+#define RST_BUS_MMC2          17
-+#define RST_BUS_UART0         18
-+#define RST_BUS_UART1         19
-+#define RST_BUS_UART2         20
-+#define RST_BUS_UART3         21
-+#define RST_BUS_UART4         22
-+#define RST_BUS_UART5         23
-+#define RST_BUS_I2C0          24
-+#define RST_BUS_I2C1          25
-+#define RST_BUS_I2C2          26
-+#define RST_BUS_I2C3          27
-+#define RST_BUS_SPI0          28
-+#define RST_BUS_SPI1          29
-+#define RST_BUS_EMAC          30
-+#define RST_BUS_IR_TX         31
-+#define RST_BUS_GPADC         32
-+#define RST_BUS_THS           33
-+#define RST_BUS_I2S0          34
-+#define RST_BUS_I2S1          35
-+#define RST_BUS_I2S2          36
-+#define RST_BUS_SPDIF         37
-+#define RST_BUS_DMIC          38
-+#define RST_BUS_AUDIO         39
-+#define RST_USB_PHY0          40
-+#define RST_USB_PHY1          41
-+#define RST_BUS_OHCI0         42
-+#define RST_BUS_OHCI1         43
-+#define RST_BUS_EHCI0         44
-+#define RST_BUS_EHCI1         45
-+#define RST_BUS_OTG           46
-+#define RST_BUS_LRADC         47
-+#define RST_BUS_DPSS_TOP      48
-+#define RST_BUS_HDMI_SUB      49
-+#define RST_BUS_HDMI_MAIN     50
-+#define RST_BUS_MIPI_DSI      51
-+#define RST_BUS_TCON_LCD0     52
-+#define RST_BUS_TCON_TV               53
-+#define RST_BUS_LVDS0         54
-+#define RST_BUS_TVE           55
-+#define RST_BUS_TVE_TOP               56
-+#define RST_BUS_TVD           57
-+#define RST_BUS_TVD_TOP               58
-+#define RST_BUS_LEDC          59
-+#define RST_BUS_CSI           60
-+#define RST_BUS_TPADC         61
-+#define RST_DSP                       62
-+#define RST_BUS_DSP_CFG               63
-+#define RST_BUS_DSP_DBG               64
-+#define RST_BUS_RISCV_CFG     65
-+
-+#endif /* _DT_BINDINGS_RST_SUN20I_D1_CCU_H_ */
--- 
-2.20.1
-