Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branches 'clk-versa', 'clk-strdup', 'clk-amlogic', 'clk-allwinner' and 'clk-rockchip' into clk-next

- Add Versa3 clk generator to support 48KHz playback/record with audio
codec on RZ/G2L SMARC EVK
- Introduce kstrdup_and_replace() and use it

* clk-versa:
clk: vc7: Use i2c_get_match_data() instead of device_get_match_data()
clk: vc5: Use i2c_get_match_data() instead of device_get_match_data()
clk: versaclock3: Switch to use i2c_driver's probe callback
clk: Add support for versa3 clock driver
dt-bindings: clock: Add Renesas versa3 clock generator bindings

* clk-strdup:
clk: ti: Replace kstrdup() + strreplace() with kstrdup_and_replace()
clk: tegra: Replace kstrdup() + strreplace() with kstrdup_and_replace()
driver core: Replace kstrdup() + strreplace() with kstrdup_and_replace()
lib/string_helpers: Add kstrdup_and_replace() helper

* clk-amlogic: (22 commits)
dt-bindings: soc: amlogic: document System Control registers
dt-bindings: clock: amlogic: convert amlogic,gxbb-aoclkc.txt to dt-schema
dt-bindings: clock: amlogic: convert amlogic,gxbb-clkc.txt to dt-schema
clk: meson: axg-audio: move bindings include to main driver
clk: meson: meson8b: move bindings include to main driver
clk: meson: a1: move bindings include to main driver
clk: meson: eeclk: move bindings include to main driver
clk: meson: aoclk: move bindings include to main driver
dt-bindings: clk: axg-audio-clkc: expose all clock ids
dt-bindings: clk: amlogic,a1-pll-clkc: expose all clock ids
dt-bindings: clk: amlogic,a1-peripherals-clkc: expose all clock ids
dt-bindings: clk: meson8b-clkc: expose all clock ids
dt-bindings: clk: g12a-aoclkc: expose all clock ids
dt-bindings: clk: g12a-clks: expose all clock ids
dt-bindings: clk: axg-clkc: expose all clock ids
dt-bindings: clk: gxbb-clkc: expose all clock ids
clk: meson: migrate axg-audio out of hw_onecell_data to drop NR_CLKS
clk: meson: migrate meson8b out of hw_onecell_data to drop NR_CLKS
clk: meson: migrate a1 clock drivers out of hw_onecell_data to drop NR_CLKS
clk: meson: migrate meson-aoclk out of hw_onecell_data to drop NR_CLKS
...

* clk-allwinner:
clk: sunxi-ng: nkm: Prefer current parent rate
clk: sunxi-ng: a64: select closest rate for pll-video0
clk: sunxi-ng: div: Support finding closest rate
clk: sunxi-ng: mux: Support finding closest rate
clk: sunxi-ng: nkm: Support finding closest rate
clk: sunxi-ng: nm: Support finding closest rate
clk: sunxi-ng: Add helper function to find closest rate
clk: sunxi-ng: Add feature to find closest rate
clk: sunxi-ng: a64: allow pll-mipi to set parent's rate
clk: sunxi-ng: nkm: consider alternative parent rates when determining rate
clk: sunxi-ng: nkm: Use correct parameter name for parent HW
clk: sunxi-ng: Modify mismatched function name
clk: sunxi: sun9i-mmc: Use devm_platform_get_and_ioremap_resource()

* clk-rockchip:
clk: rockchip: rv1126: Add PD_VO clock tree
clk: rockchip: rk3568: Fix PLL rate setting for 78.75MHz
clk: rockchip: rk3568: Add PLL rate for 101MHz

+5000 -3463
-64
Documentation/devicetree/bindings/clock/amlogic,gxbb-aoclkc.txt
··· 1 - * Amlogic GXBB AO Clock and Reset Unit 2 - 3 - The Amlogic GXBB AO clock controller generates and supplies clock to various 4 - controllers within the Always-On part of the SoC. 5 - 6 - Required Properties: 7 - 8 - - compatible: value should be different for each SoC family as : 9 - - GXBB (S905) : "amlogic,meson-gxbb-aoclkc" 10 - - GXL (S905X, S905D) : "amlogic,meson-gxl-aoclkc" 11 - - GXM (S912) : "amlogic,meson-gxm-aoclkc" 12 - - AXG (A113D, A113X) : "amlogic,meson-axg-aoclkc" 13 - - G12A (S905X2, S905D2, S905Y2) : "amlogic,meson-g12a-aoclkc" 14 - followed by the common "amlogic,meson-gx-aoclkc" 15 - - clocks: list of clock phandle, one for each entry clock-names. 16 - - clock-names: should contain the following: 17 - * "xtal" : the platform xtal 18 - * "mpeg-clk" : the main clock controller mother clock (aka clk81) 19 - * "ext-32k-0" : external 32kHz reference #0 if any (optional) 20 - * "ext-32k-1" : external 32kHz reference #1 if any (optional - gx only) 21 - * "ext-32k-2" : external 32kHz reference #2 if any (optional - gx only) 22 - 23 - - #clock-cells: should be 1. 24 - 25 - Each clock is assigned an identifier and client nodes can use this identifier 26 - to specify the clock which they consume. All available clocks are defined as 27 - preprocessor macros in the dt-bindings/clock/gxbb-aoclkc.h header and can be 28 - used in device tree sources. 29 - 30 - - #reset-cells: should be 1. 31 - 32 - Each reset is assigned an identifier and client nodes can use this identifier 33 - to specify the reset which they consume. All available resets are defined as 34 - preprocessor macros in the dt-bindings/reset/gxbb-aoclkc.h header and can be 35 - used in device tree sources. 36 - 37 - Parent node should have the following properties : 38 - - compatible: "amlogic,meson-gx-ao-sysctrl", "syscon", "simple-mfd" 39 - - reg: base address and size of the AO system control register space. 40 - 41 - Example: AO Clock controller node: 42 - 43 - ao_sysctrl: sys-ctrl@0 { 44 - compatible = "amlogic,meson-gx-ao-sysctrl", "syscon", "simple-mfd"; 45 - reg = <0x0 0x0 0x0 0x100>; 46 - 47 - clkc_AO: clock-controller { 48 - compatible = "amlogic,meson-gxbb-aoclkc", "amlogic,meson-gx-aoclkc"; 49 - #clock-cells = <1>; 50 - #reset-cells = <1>; 51 - clocks = <&xtal>, <&clkc CLKID_CLK81>; 52 - clock-names = "xtal", "mpeg-clk"; 53 - }; 54 - 55 - Example: UART controller node that consumes the clock and reset generated 56 - by the clock controller: 57 - 58 - uart_AO: serial@4c0 { 59 - compatible = "amlogic,meson-uart"; 60 - reg = <0x4c0 0x14>; 61 - interrupts = <0 90 1>; 62 - clocks = <&clkc_AO CLKID_AO_UART1>; 63 - resets = <&clkc_AO RESET_AO_UART1>; 64 - };
+85
Documentation/devicetree/bindings/clock/amlogic,gxbb-aoclkc.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/amlogic,gxbb-aoclkc.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Amlogic Always-On Clock Controller 8 + 9 + maintainers: 10 + - Neil Armstrong <neil.armstrong@linaro.org> 11 + 12 + properties: 13 + compatible: 14 + oneOf: 15 + - items: 16 + - enum: 17 + - amlogic,meson-gxbb-aoclkc 18 + - amlogic,meson-gxl-aoclkc 19 + - amlogic,meson-gxm-aoclkc 20 + - amlogic,meson-axg-aoclkc 21 + - const: amlogic,meson-gx-aoclkc 22 + - enum: 23 + - amlogic,meson-axg-aoclkc 24 + - amlogic,meson-g12a-aoclkc 25 + 26 + clocks: 27 + minItems: 2 28 + maxItems: 5 29 + 30 + clock-names: 31 + minItems: 2 32 + items: 33 + - const: xtal 34 + - const: mpeg-clk 35 + - const: ext-32k-0 36 + - const: ext-32k-1 37 + - const: ext-32k-2 38 + 39 + '#clock-cells': 40 + const: 1 41 + 42 + '#reset-cells': 43 + const: 1 44 + 45 + required: 46 + - compatible 47 + - clocks 48 + - clock-names 49 + - '#clock-cells' 50 + - '#reset-cells' 51 + 52 + allOf: 53 + - if: 54 + properties: 55 + compatible: 56 + enum: 57 + - amlogic,meson-g12a-aoclkc 58 + 59 + then: 60 + properties: 61 + clocks: 62 + minItems: 2 63 + maxItems: 3 64 + 65 + clock-names: 66 + minItems: 2 67 + maxItems: 3 68 + 69 + - if: 70 + properties: 71 + compatible: 72 + enum: 73 + - amlogic,meson-gxl-aoclkc 74 + - amlogic,meson-gxm-aoclkc 75 + - amlogic,meson-axg-aoclkc 76 + 77 + then: 78 + properties: 79 + clocks: 80 + maxItems: 2 81 + 82 + clock-names: 83 + maxItems: 2 84 + 85 + additionalProperties: false
-53
Documentation/devicetree/bindings/clock/amlogic,gxbb-clkc.txt
··· 1 - * Amlogic GXBB Clock and Reset Unit 2 - 3 - The Amlogic GXBB clock controller generates and supplies clock to various 4 - controllers within the SoC. 5 - 6 - Required Properties: 7 - 8 - - compatible: should be: 9 - "amlogic,gxbb-clkc" for GXBB SoC, 10 - "amlogic,gxl-clkc" for GXL and GXM SoC, 11 - "amlogic,axg-clkc" for AXG SoC. 12 - "amlogic,g12a-clkc" for G12A SoC. 13 - "amlogic,g12b-clkc" for G12B SoC. 14 - "amlogic,sm1-clkc" for SM1 SoC. 15 - - clocks : list of clock phandle, one for each entry clock-names. 16 - - clock-names : should contain the following: 17 - * "xtal": the platform xtal 18 - 19 - - #clock-cells: should be 1. 20 - 21 - Each clock is assigned an identifier and client nodes can use this identifier 22 - to specify the clock which they consume. All available clocks are defined as 23 - preprocessor macros in the dt-bindings/clock/gxbb-clkc.h header and can be 24 - used in device tree sources. 25 - 26 - Parent node should have the following properties : 27 - - compatible: "syscon", "simple-mfd, and "amlogic,meson-gx-hhi-sysctrl" or 28 - "amlogic,meson-axg-hhi-sysctrl" 29 - - reg: base address and size of the HHI system control register space. 30 - 31 - Example: Clock controller node: 32 - 33 - sysctrl: system-controller@0 { 34 - compatible = "amlogic,meson-gx-hhi-sysctrl", "syscon", "simple-mfd"; 35 - reg = <0 0 0 0x400>; 36 - 37 - clkc: clock-controller { 38 - #clock-cells = <1>; 39 - compatible = "amlogic,gxbb-clkc"; 40 - clocks = <&xtal>; 41 - clock-names = "xtal"; 42 - }; 43 - }; 44 - 45 - Example: UART controller node that consumes the clock generated by the clock 46 - controller: 47 - 48 - uart_AO: serial@c81004c0 { 49 - compatible = "amlogic,meson-uart"; 50 - reg = <0xc81004c0 0x14>; 51 - interrupts = <0 90 1>; 52 - clocks = <&clkc CLKID_CLK81>; 53 - };
+37
Documentation/devicetree/bindings/clock/amlogic,gxbb-clkc.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/amlogic,gxbb-clkc.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Amlogic Clock Controller 8 + 9 + maintainers: 10 + - Neil Armstrong <neil.armstrong@linaro.org> 11 + 12 + properties: 13 + compatible: 14 + enum: 15 + - amlogic,gxbb-clkc 16 + - amlogic,gxl-clkc 17 + - amlogic,axg-clkc 18 + - amlogic,g12a-clkc 19 + - amlogic,g12b-clkc 20 + - amlogic,sm1-clkc 21 + 22 + clocks: 23 + maxItems: 1 24 + 25 + clock-names: 26 + const: xtal 27 + 28 + '#clock-cells': 29 + const: 1 30 + 31 + required: 32 + - compatible 33 + - clocks 34 + - clock-names 35 + - '#clock-cells' 36 + 37 + additionalProperties: false
+86
Documentation/devicetree/bindings/clock/renesas,5p35023.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/renesas,5p35023.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Renesas 5p35023 VersaClock 3 programmable I2C clock generator 8 + 9 + maintainers: 10 + - Biju Das <biju.das.jz@bp.renesas.com> 11 + 12 + description: | 13 + The 5P35023 is a VersaClock programmable clock generator and 14 + is designed for low-power, consumer, and high-performance PCI 15 + express applications. The 5P35023 device is a three PLL 16 + architecture design, and each PLL is individually programmable 17 + and allowing for up to 6 unique frequency outputs. 18 + 19 + An internal OTP memory allows the user to store the configuration 20 + in the device. After power up, the user can change the device register 21 + settings through the I2C interface when I2C mode is selected. 22 + 23 + The driver can read a full register map from the DT, and will use that 24 + register map to initialize the attached part (via I2C) when the system 25 + boots. Any configuration not supported by the common clock framework 26 + must be done via the full register map, including optimized settings. 27 + 28 + Link to datasheet: 29 + https://www.renesas.com/us/en/products/clocks-timing/clock-generation/programmable-clocks/5p35023-versaclock-3s-programmable-clock-generator 30 + 31 + properties: 32 + compatible: 33 + enum: 34 + - renesas,5p35023 35 + 36 + reg: 37 + maxItems: 1 38 + 39 + '#clock-cells': 40 + const: 1 41 + 42 + clocks: 43 + maxItems: 1 44 + 45 + renesas,settings: 46 + description: Optional, complete register map of the device. 47 + Optimized settings for the device must be provided in full 48 + and are written during initialization. 49 + $ref: /schemas/types.yaml#/definitions/uint8-array 50 + maxItems: 37 51 + 52 + required: 53 + - compatible 54 + - reg 55 + - '#clock-cells' 56 + - clocks 57 + 58 + additionalProperties: false 59 + 60 + examples: 61 + - | 62 + i2c { 63 + #address-cells = <1>; 64 + #size-cells = <0>; 65 + 66 + versa3: clock-generator@68 { 67 + compatible = "renesas,5p35023"; 68 + reg = <0x68>; 69 + #clock-cells = <1>; 70 + 71 + clocks = <&x1_x2>; 72 + 73 + renesas,settings = [ 74 + 80 00 11 19 4c 02 23 7f 83 19 08 a9 5f 25 24 bf 75 + 00 14 7a e1 00 00 00 00 01 55 59 bb 3f 30 90 b6 76 + 80 b0 45 c4 95 77 + ]; 78 + 79 + assigned-clocks = <&versa3 0>, <&versa3 1>, 80 + <&versa3 2>, <&versa3 3>, 81 + <&versa3 4>, <&versa3 5>; 82 + assigned-clock-rates = <12288000>, <25000000>, 83 + <12000000>, <11289600>, 84 + <11289600>, <24000000>; 85 + }; 86 + };
+160
Documentation/devicetree/bindings/soc/amlogic/amlogic,meson-gx-hhi-sysctrl.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/soc/amlogic/amlogic,meson-gx-hhi-sysctrl.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Amlogic Meson System Control registers 8 + 9 + maintainers: 10 + - Neil Armstrong <neil.armstrong@linaro.org> 11 + 12 + properties: 13 + compatible: 14 + items: 15 + - enum: 16 + - amlogic,meson-gx-hhi-sysctrl 17 + - amlogic,meson-gx-ao-sysctrl 18 + - amlogic,meson-axg-hhi-sysctrl 19 + - amlogic,meson-axg-ao-sysctrl 20 + - const: simple-mfd 21 + - const: syscon 22 + 23 + reg: 24 + maxItems: 1 25 + 26 + clock-controller: 27 + type: object 28 + 29 + power-controller: 30 + $ref: /schemas/power/amlogic,meson-ee-pwrc.yaml 31 + 32 + pinctrl: 33 + type: object 34 + 35 + phy: 36 + type: object 37 + 38 + allOf: 39 + - if: 40 + properties: 41 + compatible: 42 + enum: 43 + - amlogic,meson-gx-hhi-sysctrl 44 + - amlogic,meson-axg-hhi-sysctrl 45 + then: 46 + properties: 47 + clock-controller: 48 + $ref: /schemas/clock/amlogic,gxbb-clkc.yaml# 49 + 50 + required: 51 + - power-controller 52 + 53 + - if: 54 + properties: 55 + compatible: 56 + enum: 57 + - amlogic,meson-gx-ao-sysctrl 58 + - amlogic,meson-axg-ao-sysctrl 59 + then: 60 + properties: 61 + clock-controller: 62 + $ref: /schemas/clock/amlogic,gxbb-aoclkc.yaml# 63 + 64 + power-controller: false 65 + phy: false 66 + 67 + - if: 68 + properties: 69 + compatible: 70 + enum: 71 + - amlogic,meson-gx-hhi-sysctrl 72 + then: 73 + properties: 74 + phy: false 75 + 76 + - if: 77 + properties: 78 + compatible: 79 + enum: 80 + - amlogic,meson-axg-hhi-sysctrl 81 + then: 82 + properties: 83 + phy: 84 + oneOf: 85 + - $ref: /schemas/phy/amlogic,g12a-mipi-dphy-analog.yaml 86 + - $ref: /schemas/phy/amlogic,meson-axg-mipi-pcie-analog.yaml 87 + 88 + required: 89 + - compatible 90 + - reg 91 + - clock-controller 92 + 93 + additionalProperties: false 94 + 95 + examples: 96 + - | 97 + bus@c883c000 { 98 + compatible = "simple-bus"; 99 + reg = <0xc883c000 0x2000>; 100 + #address-cells = <1>; 101 + #size-cells = <1>; 102 + ranges = <0x0 0xc883c000 0x2000>; 103 + 104 + sysctrl: system-controller@0 { 105 + compatible = "amlogic,meson-gx-hhi-sysctrl", "simple-mfd", "syscon"; 106 + reg = <0 0x400>; 107 + 108 + clock-controller { 109 + compatible = "amlogic,gxbb-clkc"; 110 + #clock-cells = <1>; 111 + clocks = <&xtal>; 112 + clock-names = "xtal"; 113 + }; 114 + 115 + power-controller { 116 + compatible = "amlogic,meson-gxbb-pwrc"; 117 + #power-domain-cells = <1>; 118 + amlogic,ao-sysctrl = <&sysctrl_AO>; 119 + 120 + resets = <&reset_viu>, 121 + <&reset_venc>, 122 + <&reset_vcbus>, 123 + <&reset_bt656>, 124 + <&reset_dvin>, 125 + <&reset_rdma>, 126 + <&reset_venci>, 127 + <&reset_vencp>, 128 + <&reset_vdac>, 129 + <&reset_vdi6>, 130 + <&reset_vencl>, 131 + <&reset_vid_lock>; 132 + reset-names = "viu", "venc", "vcbus", "bt656", "dvin", 133 + "rdma", "venci", "vencp", "vdac", "vdi6", 134 + "vencl", "vid_lock"; 135 + clocks = <&clk_vpu>, <&clk_vapb>; 136 + clock-names = "vpu", "vapb"; 137 + }; 138 + }; 139 + }; 140 + 141 + bus@c8100000 { 142 + compatible = "simple-bus"; 143 + reg = <0xc8100000 0x100000>; 144 + #address-cells = <1>; 145 + #size-cells = <1>; 146 + ranges = <0x0 0xc8100000 0x100000>; 147 + 148 + sysctrl_AO: system-controller@0 { 149 + compatible = "amlogic,meson-gx-ao-sysctrl", "simple-mfd", "syscon"; 150 + reg = <0 0x100>; 151 + 152 + clock-controller { 153 + compatible = "amlogic,meson-gxbb-aoclkc", "amlogic,meson-gx-aoclkc"; 154 + #clock-cells = <1>; 155 + #reset-cells = <1>; 156 + clocks = <&xtal>, <&clk81>; 157 + clock-names = "xtal", "mpeg-clk"; 158 + }; 159 + }; 160 + };
+2 -3
drivers/base/core.c
··· 17 17 #include <linux/kstrtox.h> 18 18 #include <linux/module.h> 19 19 #include <linux/slab.h> 20 - #include <linux/string.h> 21 20 #include <linux/kdev_t.h> 22 21 #include <linux/notifier.h> 23 22 #include <linux/of.h> ··· 27 28 #include <linux/netdevice.h> 28 29 #include <linux/sched/signal.h> 29 30 #include <linux/sched/mm.h> 31 + #include <linux/string_helpers.h> 30 32 #include <linux/swiotlb.h> 31 33 #include <linux/sysfs.h> 32 34 #include <linux/dma-map-ops.h> /* for dma_default_coherent */ ··· 3910 3910 return dev_name(dev); 3911 3911 3912 3912 /* replace '!' in the name with '/' */ 3913 - s = kstrdup(dev_name(dev), GFP_KERNEL); 3913 + s = kstrdup_and_replace(dev_name(dev), '!', '/', GFP_KERNEL); 3914 3914 if (!s) 3915 3915 return NULL; 3916 - strreplace(s, '!', '/'); 3917 3916 return *tmp = s; 3918 3917 } 3919 3918
+9
drivers/clk/Kconfig
··· 378 378 This driver supports the SkyWorks Si521xx PCIe clock generator 379 379 models Si52144/Si52146/Si52147. 380 380 381 + config COMMON_CLK_VC3 382 + tristate "Clock driver for Renesas VersaClock 3 devices" 383 + depends on I2C 384 + depends on OF 385 + select REGMAP_I2C 386 + help 387 + This driver supports the Renesas VersaClock 3 programmable clock 388 + generators. 389 + 381 390 config COMMON_CLK_VC5 382 391 tristate "Clock driver for IDT VersaClock 5,6 devices" 383 392 depends on I2C
+1
drivers/clk/Makefile
··· 75 75 obj-$(CONFIG_ARCH_VT8500) += clk-vt8500.o 76 76 obj-$(CONFIG_COMMON_CLK_RS9_PCIE) += clk-renesas-pcie.o 77 77 obj-$(CONFIG_COMMON_CLK_SI521XX) += clk-si521xx.o 78 + obj-$(CONFIG_COMMON_CLK_VC3) += clk-versaclock3.o 78 79 obj-$(CONFIG_COMMON_CLK_VC5) += clk-versaclock5.o 79 80 obj-$(CONFIG_COMMON_CLK_VC7) += clk-versaclock7.o 80 81 obj-$(CONFIG_COMMON_CLK_WM831X) += clk-wm831x.o
+1143
drivers/clk/clk-versaclock3.c
··· 1 + // SPDX-License-Identifier: GPL-2.0+ 2 + /* 3 + * Driver for Renesas Versaclock 3 4 + * 5 + * Copyright (C) 2023 Renesas Electronics Corp. 6 + */ 7 + 8 + #include <linux/clk-provider.h> 9 + #include <linux/i2c.h> 10 + #include <linux/limits.h> 11 + #include <linux/module.h> 12 + #include <linux/regmap.h> 13 + 14 + #define NUM_CONFIG_REGISTERS 37 15 + 16 + #define VC3_GENERAL_CTR 0x0 17 + #define VC3_GENERAL_CTR_DIV1_SRC_SEL BIT(3) 18 + #define VC3_GENERAL_CTR_PLL3_REFIN_SEL BIT(2) 19 + 20 + #define VC3_PLL3_M_DIVIDER 0x3 21 + #define VC3_PLL3_M_DIV1 BIT(7) 22 + #define VC3_PLL3_M_DIV2 BIT(6) 23 + #define VC3_PLL3_M_DIV(n) ((n) & GENMASK(5, 0)) 24 + 25 + #define VC3_PLL3_N_DIVIDER 0x4 26 + #define VC3_PLL3_LOOP_FILTER_N_DIV_MSB 0x5 27 + 28 + #define VC3_PLL3_CHARGE_PUMP_CTRL 0x6 29 + #define VC3_PLL3_CHARGE_PUMP_CTRL_OUTDIV3_SRC_SEL BIT(7) 30 + 31 + #define VC3_PLL1_CTRL_OUTDIV5 0x7 32 + #define VC3_PLL1_CTRL_OUTDIV5_PLL1_MDIV_DOUBLER BIT(7) 33 + 34 + #define VC3_PLL1_M_DIVIDER 0x8 35 + #define VC3_PLL1_M_DIV1 BIT(7) 36 + #define VC3_PLL1_M_DIV2 BIT(6) 37 + #define VC3_PLL1_M_DIV(n) ((n) & GENMASK(5, 0)) 38 + 39 + #define VC3_PLL1_VCO_N_DIVIDER 0x9 40 + #define VC3_PLL1_LOOP_FILTER_N_DIV_MSB 0x0a 41 + 42 + #define VC3_OUT_DIV1_DIV2_CTRL 0xf 43 + 44 + #define VC3_PLL2_FB_INT_DIV_MSB 0x10 45 + #define VC3_PLL2_FB_INT_DIV_LSB 0x11 46 + #define VC3_PLL2_FB_FRC_DIV_MSB 0x12 47 + #define VC3_PLL2_FB_FRC_DIV_LSB 0x13 48 + 49 + #define VC3_PLL2_M_DIVIDER 0x1a 50 + #define VC3_PLL2_MDIV_DOUBLER BIT(7) 51 + #define VC3_PLL2_M_DIV1 BIT(6) 52 + #define VC3_PLL2_M_DIV2 BIT(5) 53 + #define VC3_PLL2_M_DIV(n) ((n) & GENMASK(4, 0)) 54 + 55 + #define VC3_OUT_DIV3_DIV4_CTRL 0x1b 56 + 57 + #define VC3_PLL_OP_CTRL 0x1c 58 + #define VC3_PLL_OP_CTRL_PLL2_REFIN_SEL 6 59 + 60 + #define VC3_OUTPUT_CTR 0x1d 61 + #define VC3_OUTPUT_CTR_DIV4_SRC_SEL BIT(3) 62 + 63 + #define VC3_SE2_CTRL_REG0 0x1f 64 + #define VC3_SE2_CTRL_REG0_SE2_CLK_SEL BIT(6) 65 + 66 + #define VC3_SE3_DIFF1_CTRL_REG 0x21 67 + #define VC3_SE3_DIFF1_CTRL_REG_SE3_CLK_SEL BIT(6) 68 + 69 + #define VC3_DIFF1_CTRL_REG 0x22 70 + #define VC3_DIFF1_CTRL_REG_DIFF1_CLK_SEL BIT(7) 71 + 72 + #define VC3_DIFF2_CTRL_REG 0x23 73 + #define VC3_DIFF2_CTRL_REG_DIFF2_CLK_SEL BIT(7) 74 + 75 + #define VC3_SE1_DIV4_CTRL 0x24 76 + #define VC3_SE1_DIV4_CTRL_SE1_CLK_SEL BIT(3) 77 + 78 + #define VC3_PLL1_VCO_MIN 300000000UL 79 + #define VC3_PLL1_VCO_MAX 600000000UL 80 + 81 + #define VC3_PLL2_VCO_MIN 400000000UL 82 + #define VC3_PLL2_VCO_MAX 1200000000UL 83 + 84 + #define VC3_PLL3_VCO_MIN 300000000UL 85 + #define VC3_PLL3_VCO_MAX 800000000UL 86 + 87 + #define VC3_2_POW_16 (U16_MAX + 1) 88 + #define VC3_DIV_MASK(width) ((1 << (width)) - 1) 89 + 90 + enum vc3_pfd_mux { 91 + VC3_PFD2_MUX, 92 + VC3_PFD3_MUX, 93 + }; 94 + 95 + enum vc3_pfd { 96 + VC3_PFD1, 97 + VC3_PFD2, 98 + VC3_PFD3, 99 + }; 100 + 101 + enum vc3_pll { 102 + VC3_PLL1, 103 + VC3_PLL2, 104 + VC3_PLL3, 105 + }; 106 + 107 + enum vc3_div_mux { 108 + VC3_DIV1_MUX, 109 + VC3_DIV3_MUX, 110 + VC3_DIV4_MUX, 111 + }; 112 + 113 + enum vc3_div { 114 + VC3_DIV1, 115 + VC3_DIV2, 116 + VC3_DIV3, 117 + VC3_DIV4, 118 + VC3_DIV5, 119 + }; 120 + 121 + enum vc3_clk_mux { 122 + VC3_DIFF2_MUX, 123 + VC3_DIFF1_MUX, 124 + VC3_SE3_MUX, 125 + VC3_SE2_MUX, 126 + VC3_SE1_MUX, 127 + }; 128 + 129 + enum vc3_clk { 130 + VC3_DIFF2, 131 + VC3_DIFF1, 132 + VC3_SE3, 133 + VC3_SE2, 134 + VC3_SE1, 135 + VC3_REF, 136 + }; 137 + 138 + struct vc3_clk_data { 139 + u8 offs; 140 + u8 bitmsk; 141 + }; 142 + 143 + struct vc3_pfd_data { 144 + u8 num; 145 + u8 offs; 146 + u8 mdiv1_bitmsk; 147 + u8 mdiv2_bitmsk; 148 + }; 149 + 150 + struct vc3_pll_data { 151 + u8 num; 152 + u8 int_div_msb_offs; 153 + u8 int_div_lsb_offs; 154 + unsigned long vco_min; 155 + unsigned long vco_max; 156 + }; 157 + 158 + struct vc3_div_data { 159 + u8 offs; 160 + const struct clk_div_table *table; 161 + u8 shift; 162 + u8 width; 163 + u8 flags; 164 + }; 165 + 166 + struct vc3_hw_data { 167 + struct clk_hw hw; 168 + struct regmap *regmap; 169 + const void *data; 170 + 171 + u32 div_int; 172 + u32 div_frc; 173 + }; 174 + 175 + static const struct clk_div_table div1_divs[] = { 176 + { .val = 0, .div = 1, }, { .val = 1, .div = 4, }, 177 + { .val = 2, .div = 5, }, { .val = 3, .div = 6, }, 178 + { .val = 4, .div = 2, }, { .val = 5, .div = 8, }, 179 + { .val = 6, .div = 10, }, { .val = 7, .div = 12, }, 180 + { .val = 8, .div = 4, }, { .val = 9, .div = 16, }, 181 + { .val = 10, .div = 20, }, { .val = 11, .div = 24, }, 182 + { .val = 12, .div = 8, }, { .val = 13, .div = 32, }, 183 + { .val = 14, .div = 40, }, { .val = 15, .div = 48, }, 184 + {} 185 + }; 186 + 187 + static const struct clk_div_table div245_divs[] = { 188 + { .val = 0, .div = 1, }, { .val = 1, .div = 3, }, 189 + { .val = 2, .div = 5, }, { .val = 3, .div = 10, }, 190 + { .val = 4, .div = 2, }, { .val = 5, .div = 6, }, 191 + { .val = 6, .div = 10, }, { .val = 7, .div = 20, }, 192 + { .val = 8, .div = 4, }, { .val = 9, .div = 12, }, 193 + { .val = 10, .div = 20, }, { .val = 11, .div = 40, }, 194 + { .val = 12, .div = 5, }, { .val = 13, .div = 15, }, 195 + { .val = 14, .div = 25, }, { .val = 15, .div = 50, }, 196 + {} 197 + }; 198 + 199 + static const struct clk_div_table div3_divs[] = { 200 + { .val = 0, .div = 1, }, { .val = 1, .div = 3, }, 201 + { .val = 2, .div = 5, }, { .val = 3, .div = 10, }, 202 + { .val = 4, .div = 2, }, { .val = 5, .div = 6, }, 203 + { .val = 6, .div = 10, }, { .val = 7, .div = 20, }, 204 + { .val = 8, .div = 4, }, { .val = 9, .div = 12, }, 205 + { .val = 10, .div = 20, }, { .val = 11, .div = 40, }, 206 + { .val = 12, .div = 8, }, { .val = 13, .div = 24, }, 207 + { .val = 14, .div = 40, }, { .val = 15, .div = 80, }, 208 + {} 209 + }; 210 + 211 + static struct clk_hw *clk_out[6]; 212 + 213 + static unsigned char vc3_pfd_mux_get_parent(struct clk_hw *hw) 214 + { 215 + struct vc3_hw_data *vc3 = container_of(hw, struct vc3_hw_data, hw); 216 + const struct vc3_clk_data *pfd_mux = vc3->data; 217 + u32 src; 218 + 219 + regmap_read(vc3->regmap, pfd_mux->offs, &src); 220 + 221 + return !!(src & pfd_mux->bitmsk); 222 + } 223 + 224 + static int vc3_pfd_mux_set_parent(struct clk_hw *hw, u8 index) 225 + { 226 + struct vc3_hw_data *vc3 = container_of(hw, struct vc3_hw_data, hw); 227 + const struct vc3_clk_data *pfd_mux = vc3->data; 228 + 229 + regmap_update_bits(vc3->regmap, pfd_mux->offs, pfd_mux->bitmsk, 230 + index ? pfd_mux->bitmsk : 0); 231 + return 0; 232 + } 233 + 234 + static const struct clk_ops vc3_pfd_mux_ops = { 235 + .determine_rate = clk_hw_determine_rate_no_reparent, 236 + .set_parent = vc3_pfd_mux_set_parent, 237 + .get_parent = vc3_pfd_mux_get_parent, 238 + }; 239 + 240 + static unsigned long vc3_pfd_recalc_rate(struct clk_hw *hw, 241 + unsigned long parent_rate) 242 + { 243 + struct vc3_hw_data *vc3 = container_of(hw, struct vc3_hw_data, hw); 244 + const struct vc3_pfd_data *pfd = vc3->data; 245 + unsigned int prediv, premul; 246 + unsigned long rate; 247 + u8 mdiv; 248 + 249 + regmap_read(vc3->regmap, pfd->offs, &prediv); 250 + if (pfd->num == VC3_PFD1) { 251 + /* The bypass_prediv is set, PLL fed from Ref_in directly. */ 252 + if (prediv & pfd->mdiv1_bitmsk) { 253 + /* check doubler is set or not */ 254 + regmap_read(vc3->regmap, VC3_PLL1_CTRL_OUTDIV5, &premul); 255 + if (premul & VC3_PLL1_CTRL_OUTDIV5_PLL1_MDIV_DOUBLER) 256 + parent_rate *= 2; 257 + return parent_rate; 258 + } 259 + mdiv = VC3_PLL1_M_DIV(prediv); 260 + } else if (pfd->num == VC3_PFD2) { 261 + /* The bypass_prediv is set, PLL fed from Ref_in directly. */ 262 + if (prediv & pfd->mdiv1_bitmsk) { 263 + regmap_read(vc3->regmap, VC3_PLL2_M_DIVIDER, &premul); 264 + /* check doubler is set or not */ 265 + if (premul & VC3_PLL2_MDIV_DOUBLER) 266 + parent_rate *= 2; 267 + return parent_rate; 268 + } 269 + 270 + mdiv = VC3_PLL2_M_DIV(prediv); 271 + } else { 272 + /* The bypass_prediv is set, PLL fed from Ref_in directly. */ 273 + if (prediv & pfd->mdiv1_bitmsk) 274 + return parent_rate; 275 + 276 + mdiv = VC3_PLL3_M_DIV(prediv); 277 + } 278 + 279 + if (prediv & pfd->mdiv2_bitmsk) 280 + rate = parent_rate / 2; 281 + else 282 + rate = parent_rate / mdiv; 283 + 284 + return rate; 285 + } 286 + 287 + static long vc3_pfd_round_rate(struct clk_hw *hw, unsigned long rate, 288 + unsigned long *parent_rate) 289 + { 290 + struct vc3_hw_data *vc3 = container_of(hw, struct vc3_hw_data, hw); 291 + const struct vc3_pfd_data *pfd = vc3->data; 292 + unsigned long idiv; 293 + 294 + /* PLL cannot operate with input clock above 50 MHz. */ 295 + if (rate > 50000000) 296 + return -EINVAL; 297 + 298 + /* CLKIN within range of PLL input, feed directly to PLL. */ 299 + if (*parent_rate <= 50000000) 300 + return *parent_rate; 301 + 302 + idiv = DIV_ROUND_UP(*parent_rate, rate); 303 + if (pfd->num == VC3_PFD1 || pfd->num == VC3_PFD3) { 304 + if (idiv > 63) 305 + return -EINVAL; 306 + } else { 307 + if (idiv > 31) 308 + return -EINVAL; 309 + } 310 + 311 + return *parent_rate / idiv; 312 + } 313 + 314 + static int vc3_pfd_set_rate(struct clk_hw *hw, unsigned long rate, 315 + unsigned long parent_rate) 316 + { 317 + struct vc3_hw_data *vc3 = container_of(hw, struct vc3_hw_data, hw); 318 + const struct vc3_pfd_data *pfd = vc3->data; 319 + unsigned long idiv; 320 + u8 div; 321 + 322 + /* CLKIN within range of PLL input, feed directly to PLL. */ 323 + if (parent_rate <= 50000000) { 324 + regmap_update_bits(vc3->regmap, pfd->offs, pfd->mdiv1_bitmsk, 325 + pfd->mdiv1_bitmsk); 326 + regmap_update_bits(vc3->regmap, pfd->offs, pfd->mdiv2_bitmsk, 0); 327 + return 0; 328 + } 329 + 330 + idiv = DIV_ROUND_UP(parent_rate, rate); 331 + /* We have dedicated div-2 predivider. */ 332 + if (idiv == 2) { 333 + regmap_update_bits(vc3->regmap, pfd->offs, pfd->mdiv2_bitmsk, 334 + pfd->mdiv2_bitmsk); 335 + regmap_update_bits(vc3->regmap, pfd->offs, pfd->mdiv1_bitmsk, 0); 336 + } else { 337 + if (pfd->num == VC3_PFD1) 338 + div = VC3_PLL1_M_DIV(idiv); 339 + else if (pfd->num == VC3_PFD2) 340 + div = VC3_PLL2_M_DIV(idiv); 341 + else 342 + div = VC3_PLL3_M_DIV(idiv); 343 + 344 + regmap_write(vc3->regmap, pfd->offs, div); 345 + } 346 + 347 + return 0; 348 + } 349 + 350 + static const struct clk_ops vc3_pfd_ops = { 351 + .recalc_rate = vc3_pfd_recalc_rate, 352 + .round_rate = vc3_pfd_round_rate, 353 + .set_rate = vc3_pfd_set_rate, 354 + }; 355 + 356 + static unsigned long vc3_pll_recalc_rate(struct clk_hw *hw, 357 + unsigned long parent_rate) 358 + { 359 + struct vc3_hw_data *vc3 = container_of(hw, struct vc3_hw_data, hw); 360 + const struct vc3_pll_data *pll = vc3->data; 361 + u32 div_int, div_frc, val; 362 + unsigned long rate; 363 + 364 + regmap_read(vc3->regmap, pll->int_div_msb_offs, &val); 365 + div_int = (val & GENMASK(2, 0)) << 8; 366 + regmap_read(vc3->regmap, pll->int_div_lsb_offs, &val); 367 + div_int |= val; 368 + 369 + if (pll->num == VC3_PLL2) { 370 + regmap_read(vc3->regmap, VC3_PLL2_FB_FRC_DIV_MSB, &val); 371 + div_frc = val << 8; 372 + regmap_read(vc3->regmap, VC3_PLL2_FB_FRC_DIV_LSB, &val); 373 + div_frc |= val; 374 + rate = (parent_rate * 375 + (div_int * VC3_2_POW_16 + div_frc) / VC3_2_POW_16); 376 + } else { 377 + rate = parent_rate * div_int; 378 + } 379 + 380 + return rate; 381 + } 382 + 383 + static long vc3_pll_round_rate(struct clk_hw *hw, unsigned long rate, 384 + unsigned long *parent_rate) 385 + { 386 + struct vc3_hw_data *vc3 = container_of(hw, struct vc3_hw_data, hw); 387 + const struct vc3_pll_data *pll = vc3->data; 388 + u64 div_frc; 389 + 390 + if (rate < pll->vco_min) 391 + rate = pll->vco_min; 392 + if (rate > pll->vco_max) 393 + rate = pll->vco_max; 394 + 395 + vc3->div_int = rate / *parent_rate; 396 + 397 + if (pll->num == VC3_PLL2) { 398 + if (vc3->div_int > 0x7ff) 399 + rate = *parent_rate * 0x7ff; 400 + 401 + /* Determine best fractional part, which is 16 bit wide */ 402 + div_frc = rate % *parent_rate; 403 + div_frc *= BIT(16) - 1; 404 + do_div(div_frc, *parent_rate); 405 + 406 + vc3->div_frc = (u32)div_frc; 407 + rate = (*parent_rate * 408 + (vc3->div_int * VC3_2_POW_16 + div_frc) / VC3_2_POW_16); 409 + } else { 410 + rate = *parent_rate * vc3->div_int; 411 + } 412 + 413 + return rate; 414 + } 415 + 416 + static int vc3_pll_set_rate(struct clk_hw *hw, unsigned long rate, 417 + unsigned long parent_rate) 418 + { 419 + struct vc3_hw_data *vc3 = container_of(hw, struct vc3_hw_data, hw); 420 + const struct vc3_pll_data *pll = vc3->data; 421 + u32 val; 422 + 423 + regmap_read(vc3->regmap, pll->int_div_msb_offs, &val); 424 + val = (val & 0xf8) | ((vc3->div_int >> 8) & 0x7); 425 + regmap_write(vc3->regmap, pll->int_div_msb_offs, val); 426 + regmap_write(vc3->regmap, pll->int_div_lsb_offs, vc3->div_int & 0xff); 427 + 428 + if (pll->num == VC3_PLL2) { 429 + regmap_write(vc3->regmap, VC3_PLL2_FB_FRC_DIV_MSB, 430 + vc3->div_frc >> 8); 431 + regmap_write(vc3->regmap, VC3_PLL2_FB_FRC_DIV_LSB, 432 + vc3->div_frc & 0xff); 433 + } 434 + 435 + return 0; 436 + } 437 + 438 + static const struct clk_ops vc3_pll_ops = { 439 + .recalc_rate = vc3_pll_recalc_rate, 440 + .round_rate = vc3_pll_round_rate, 441 + .set_rate = vc3_pll_set_rate, 442 + }; 443 + 444 + static unsigned char vc3_div_mux_get_parent(struct clk_hw *hw) 445 + { 446 + struct vc3_hw_data *vc3 = container_of(hw, struct vc3_hw_data, hw); 447 + const struct vc3_clk_data *div_mux = vc3->data; 448 + u32 src; 449 + 450 + regmap_read(vc3->regmap, div_mux->offs, &src); 451 + 452 + return !!(src & div_mux->bitmsk); 453 + } 454 + 455 + static int vc3_div_mux_set_parent(struct clk_hw *hw, u8 index) 456 + { 457 + struct vc3_hw_data *vc3 = container_of(hw, struct vc3_hw_data, hw); 458 + const struct vc3_clk_data *div_mux = vc3->data; 459 + 460 + regmap_update_bits(vc3->regmap, div_mux->offs, div_mux->bitmsk, 461 + index ? div_mux->bitmsk : 0); 462 + 463 + return 0; 464 + } 465 + 466 + static const struct clk_ops vc3_div_mux_ops = { 467 + .determine_rate = clk_hw_determine_rate_no_reparent, 468 + .set_parent = vc3_div_mux_set_parent, 469 + .get_parent = vc3_div_mux_get_parent, 470 + }; 471 + 472 + static unsigned int vc3_get_div(const struct clk_div_table *table, 473 + unsigned int val, unsigned long flag) 474 + { 475 + const struct clk_div_table *clkt; 476 + 477 + for (clkt = table; clkt->div; clkt++) 478 + if (clkt->val == val) 479 + return clkt->div; 480 + 481 + return 0; 482 + } 483 + 484 + static unsigned long vc3_div_recalc_rate(struct clk_hw *hw, 485 + unsigned long parent_rate) 486 + { 487 + struct vc3_hw_data *vc3 = container_of(hw, struct vc3_hw_data, hw); 488 + const struct vc3_div_data *div_data = vc3->data; 489 + unsigned int val; 490 + 491 + regmap_read(vc3->regmap, div_data->offs, &val); 492 + val >>= div_data->shift; 493 + val &= VC3_DIV_MASK(div_data->width); 494 + 495 + return divider_recalc_rate(hw, parent_rate, val, div_data->table, 496 + div_data->flags, div_data->width); 497 + } 498 + 499 + static long vc3_div_round_rate(struct clk_hw *hw, unsigned long rate, 500 + unsigned long *parent_rate) 501 + { 502 + struct vc3_hw_data *vc3 = container_of(hw, struct vc3_hw_data, hw); 503 + const struct vc3_div_data *div_data = vc3->data; 504 + unsigned int bestdiv; 505 + 506 + /* if read only, just return current value */ 507 + if (div_data->flags & CLK_DIVIDER_READ_ONLY) { 508 + regmap_read(vc3->regmap, div_data->offs, &bestdiv); 509 + bestdiv >>= div_data->shift; 510 + bestdiv &= VC3_DIV_MASK(div_data->width); 511 + bestdiv = vc3_get_div(div_data->table, bestdiv, div_data->flags); 512 + return DIV_ROUND_UP(*parent_rate, bestdiv); 513 + } 514 + 515 + return divider_round_rate(hw, rate, parent_rate, div_data->table, 516 + div_data->width, div_data->flags); 517 + } 518 + 519 + static int vc3_div_set_rate(struct clk_hw *hw, unsigned long rate, 520 + unsigned long parent_rate) 521 + { 522 + struct vc3_hw_data *vc3 = container_of(hw, struct vc3_hw_data, hw); 523 + const struct vc3_div_data *div_data = vc3->data; 524 + unsigned int value; 525 + 526 + value = divider_get_val(rate, parent_rate, div_data->table, 527 + div_data->width, div_data->flags); 528 + regmap_update_bits(vc3->regmap, div_data->offs, 529 + VC3_DIV_MASK(div_data->width) << div_data->shift, 530 + value << div_data->shift); 531 + return 0; 532 + } 533 + 534 + static const struct clk_ops vc3_div_ops = { 535 + .recalc_rate = vc3_div_recalc_rate, 536 + .round_rate = vc3_div_round_rate, 537 + .set_rate = vc3_div_set_rate, 538 + }; 539 + 540 + static int vc3_clk_mux_determine_rate(struct clk_hw *hw, 541 + struct clk_rate_request *req) 542 + { 543 + int ret; 544 + int frc; 545 + 546 + ret = clk_mux_determine_rate_flags(hw, req, CLK_SET_RATE_PARENT); 547 + if (ret) { 548 + /* The below check is equivalent to (best_parent_rate/rate) */ 549 + if (req->best_parent_rate >= req->rate) { 550 + frc = DIV_ROUND_CLOSEST_ULL(req->best_parent_rate, 551 + req->rate); 552 + req->rate *= frc; 553 + return clk_mux_determine_rate_flags(hw, req, 554 + CLK_SET_RATE_PARENT); 555 + } 556 + ret = 0; 557 + } 558 + 559 + return ret; 560 + } 561 + 562 + static unsigned char vc3_clk_mux_get_parent(struct clk_hw *hw) 563 + { 564 + struct vc3_hw_data *vc3 = container_of(hw, struct vc3_hw_data, hw); 565 + const struct vc3_clk_data *clk_mux = vc3->data; 566 + u32 val; 567 + 568 + regmap_read(vc3->regmap, clk_mux->offs, &val); 569 + 570 + return !!(val & clk_mux->bitmsk); 571 + } 572 + 573 + static int vc3_clk_mux_set_parent(struct clk_hw *hw, u8 index) 574 + { 575 + struct vc3_hw_data *vc3 = container_of(hw, struct vc3_hw_data, hw); 576 + const struct vc3_clk_data *clk_mux = vc3->data; 577 + 578 + regmap_update_bits(vc3->regmap, clk_mux->offs, 579 + clk_mux->bitmsk, index ? clk_mux->bitmsk : 0); 580 + return 0; 581 + } 582 + 583 + static const struct clk_ops vc3_clk_mux_ops = { 584 + .determine_rate = vc3_clk_mux_determine_rate, 585 + .set_parent = vc3_clk_mux_set_parent, 586 + .get_parent = vc3_clk_mux_get_parent, 587 + }; 588 + 589 + static bool vc3_regmap_is_writeable(struct device *dev, unsigned int reg) 590 + { 591 + return true; 592 + } 593 + 594 + static const struct regmap_config vc3_regmap_config = { 595 + .reg_bits = 8, 596 + .val_bits = 8, 597 + .cache_type = REGCACHE_RBTREE, 598 + .max_register = 0x24, 599 + .writeable_reg = vc3_regmap_is_writeable, 600 + }; 601 + 602 + static struct vc3_hw_data clk_div[5]; 603 + 604 + static const struct clk_parent_data pfd_mux_parent_data[] = { 605 + { .index = 0, }, 606 + { .hw = &clk_div[VC3_DIV2].hw } 607 + }; 608 + 609 + static struct vc3_hw_data clk_pfd_mux[] = { 610 + [VC3_PFD2_MUX] = { 611 + .data = &(struct vc3_clk_data) { 612 + .offs = VC3_PLL_OP_CTRL, 613 + .bitmsk = BIT(VC3_PLL_OP_CTRL_PLL2_REFIN_SEL) 614 + }, 615 + .hw.init = &(struct clk_init_data){ 616 + .name = "pfd2_mux", 617 + .ops = &vc3_pfd_mux_ops, 618 + .parent_data = pfd_mux_parent_data, 619 + .num_parents = 2, 620 + .flags = CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT 621 + } 622 + }, 623 + [VC3_PFD3_MUX] = { 624 + .data = &(struct vc3_clk_data) { 625 + .offs = VC3_GENERAL_CTR, 626 + .bitmsk = BIT(VC3_GENERAL_CTR_PLL3_REFIN_SEL) 627 + }, 628 + .hw.init = &(struct clk_init_data){ 629 + .name = "pfd3_mux", 630 + .ops = &vc3_pfd_mux_ops, 631 + .parent_data = pfd_mux_parent_data, 632 + .num_parents = 2, 633 + .flags = CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT 634 + } 635 + } 636 + }; 637 + 638 + static struct vc3_hw_data clk_pfd[] = { 639 + [VC3_PFD1] = { 640 + .data = &(struct vc3_pfd_data) { 641 + .num = VC3_PFD1, 642 + .offs = VC3_PLL1_M_DIVIDER, 643 + .mdiv1_bitmsk = VC3_PLL1_M_DIV1, 644 + .mdiv2_bitmsk = VC3_PLL1_M_DIV2 645 + }, 646 + .hw.init = &(struct clk_init_data){ 647 + .name = "pfd1", 648 + .ops = &vc3_pfd_ops, 649 + .parent_data = &(const struct clk_parent_data) { 650 + .index = 0 651 + }, 652 + .num_parents = 1, 653 + .flags = CLK_SET_RATE_PARENT 654 + } 655 + }, 656 + [VC3_PFD2] = { 657 + .data = &(struct vc3_pfd_data) { 658 + .num = VC3_PFD2, 659 + .offs = VC3_PLL2_M_DIVIDER, 660 + .mdiv1_bitmsk = VC3_PLL2_M_DIV1, 661 + .mdiv2_bitmsk = VC3_PLL2_M_DIV2 662 + }, 663 + .hw.init = &(struct clk_init_data){ 664 + .name = "pfd2", 665 + .ops = &vc3_pfd_ops, 666 + .parent_hws = (const struct clk_hw *[]) { 667 + &clk_pfd_mux[VC3_PFD2_MUX].hw 668 + }, 669 + .num_parents = 1, 670 + .flags = CLK_SET_RATE_PARENT 671 + } 672 + }, 673 + [VC3_PFD3] = { 674 + .data = &(struct vc3_pfd_data) { 675 + .num = VC3_PFD3, 676 + .offs = VC3_PLL3_M_DIVIDER, 677 + .mdiv1_bitmsk = VC3_PLL3_M_DIV1, 678 + .mdiv2_bitmsk = VC3_PLL3_M_DIV2 679 + }, 680 + .hw.init = &(struct clk_init_data){ 681 + .name = "pfd3", 682 + .ops = &vc3_pfd_ops, 683 + .parent_hws = (const struct clk_hw *[]) { 684 + &clk_pfd_mux[VC3_PFD3_MUX].hw 685 + }, 686 + .num_parents = 1, 687 + .flags = CLK_SET_RATE_PARENT 688 + } 689 + } 690 + }; 691 + 692 + static struct vc3_hw_data clk_pll[] = { 693 + [VC3_PLL1] = { 694 + .data = &(struct vc3_pll_data) { 695 + .num = VC3_PLL1, 696 + .int_div_msb_offs = VC3_PLL1_LOOP_FILTER_N_DIV_MSB, 697 + .int_div_lsb_offs = VC3_PLL1_VCO_N_DIVIDER, 698 + .vco_min = VC3_PLL1_VCO_MIN, 699 + .vco_max = VC3_PLL1_VCO_MAX 700 + }, 701 + .hw.init = &(struct clk_init_data){ 702 + .name = "pll1", 703 + .ops = &vc3_pll_ops, 704 + .parent_hws = (const struct clk_hw *[]) { 705 + &clk_pfd[VC3_PFD1].hw 706 + }, 707 + .num_parents = 1, 708 + .flags = CLK_SET_RATE_PARENT 709 + } 710 + }, 711 + [VC3_PLL2] = { 712 + .data = &(struct vc3_pll_data) { 713 + .num = VC3_PLL2, 714 + .int_div_msb_offs = VC3_PLL2_FB_INT_DIV_MSB, 715 + .int_div_lsb_offs = VC3_PLL2_FB_INT_DIV_LSB, 716 + .vco_min = VC3_PLL2_VCO_MIN, 717 + .vco_max = VC3_PLL2_VCO_MAX 718 + }, 719 + .hw.init = &(struct clk_init_data){ 720 + .name = "pll2", 721 + .ops = &vc3_pll_ops, 722 + .parent_hws = (const struct clk_hw *[]) { 723 + &clk_pfd[VC3_PFD2].hw 724 + }, 725 + .num_parents = 1, 726 + .flags = CLK_SET_RATE_PARENT 727 + } 728 + }, 729 + [VC3_PLL3] = { 730 + .data = &(struct vc3_pll_data) { 731 + .num = VC3_PLL3, 732 + .int_div_msb_offs = VC3_PLL3_LOOP_FILTER_N_DIV_MSB, 733 + .int_div_lsb_offs = VC3_PLL3_N_DIVIDER, 734 + .vco_min = VC3_PLL3_VCO_MIN, 735 + .vco_max = VC3_PLL3_VCO_MAX 736 + }, 737 + .hw.init = &(struct clk_init_data){ 738 + .name = "pll3", 739 + .ops = &vc3_pll_ops, 740 + .parent_hws = (const struct clk_hw *[]) { 741 + &clk_pfd[VC3_PFD3].hw 742 + }, 743 + .num_parents = 1, 744 + .flags = CLK_SET_RATE_PARENT 745 + } 746 + } 747 + }; 748 + 749 + static const struct clk_parent_data div_mux_parent_data[][2] = { 750 + [VC3_DIV1_MUX] = { 751 + { .hw = &clk_pll[VC3_PLL1].hw }, 752 + { .index = 0 } 753 + }, 754 + [VC3_DIV3_MUX] = { 755 + { .hw = &clk_pll[VC3_PLL2].hw }, 756 + { .hw = &clk_pll[VC3_PLL3].hw } 757 + }, 758 + [VC3_DIV4_MUX] = { 759 + { .hw = &clk_pll[VC3_PLL2].hw }, 760 + { .index = 0 } 761 + } 762 + }; 763 + 764 + static struct vc3_hw_data clk_div_mux[] = { 765 + [VC3_DIV1_MUX] = { 766 + .data = &(struct vc3_clk_data) { 767 + .offs = VC3_GENERAL_CTR, 768 + .bitmsk = VC3_GENERAL_CTR_DIV1_SRC_SEL 769 + }, 770 + .hw.init = &(struct clk_init_data){ 771 + .name = "div1_mux", 772 + .ops = &vc3_div_mux_ops, 773 + .parent_data = div_mux_parent_data[VC3_DIV1_MUX], 774 + .num_parents = 2, 775 + .flags = CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT 776 + } 777 + }, 778 + [VC3_DIV3_MUX] = { 779 + .data = &(struct vc3_clk_data) { 780 + .offs = VC3_PLL3_CHARGE_PUMP_CTRL, 781 + .bitmsk = VC3_PLL3_CHARGE_PUMP_CTRL_OUTDIV3_SRC_SEL 782 + }, 783 + .hw.init = &(struct clk_init_data){ 784 + .name = "div3_mux", 785 + .ops = &vc3_div_mux_ops, 786 + .parent_data = div_mux_parent_data[VC3_DIV3_MUX], 787 + .num_parents = 2, 788 + .flags = CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT 789 + } 790 + }, 791 + [VC3_DIV4_MUX] = { 792 + .data = &(struct vc3_clk_data) { 793 + .offs = VC3_OUTPUT_CTR, 794 + .bitmsk = VC3_OUTPUT_CTR_DIV4_SRC_SEL 795 + }, 796 + .hw.init = &(struct clk_init_data){ 797 + .name = "div4_mux", 798 + .ops = &vc3_div_mux_ops, 799 + .parent_data = div_mux_parent_data[VC3_DIV4_MUX], 800 + .num_parents = 2, 801 + .flags = CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT 802 + } 803 + } 804 + }; 805 + 806 + static struct vc3_hw_data clk_div[] = { 807 + [VC3_DIV1] = { 808 + .data = &(struct vc3_div_data) { 809 + .offs = VC3_OUT_DIV1_DIV2_CTRL, 810 + .table = div1_divs, 811 + .shift = 4, 812 + .width = 4, 813 + .flags = CLK_DIVIDER_READ_ONLY 814 + }, 815 + .hw.init = &(struct clk_init_data){ 816 + .name = "div1", 817 + .ops = &vc3_div_ops, 818 + .parent_hws = (const struct clk_hw *[]) { 819 + &clk_div_mux[VC3_DIV1_MUX].hw 820 + }, 821 + .num_parents = 1, 822 + .flags = CLK_SET_RATE_PARENT 823 + } 824 + }, 825 + [VC3_DIV2] = { 826 + .data = &(struct vc3_div_data) { 827 + .offs = VC3_OUT_DIV1_DIV2_CTRL, 828 + .table = div245_divs, 829 + .shift = 0, 830 + .width = 4, 831 + .flags = CLK_DIVIDER_READ_ONLY 832 + }, 833 + .hw.init = &(struct clk_init_data){ 834 + .name = "div2", 835 + .ops = &vc3_div_ops, 836 + .parent_hws = (const struct clk_hw *[]) { 837 + &clk_pll[VC3_PLL1].hw 838 + }, 839 + .num_parents = 1, 840 + .flags = CLK_SET_RATE_PARENT 841 + } 842 + }, 843 + [VC3_DIV3] = { 844 + .data = &(struct vc3_div_data) { 845 + .offs = VC3_OUT_DIV3_DIV4_CTRL, 846 + .table = div3_divs, 847 + .shift = 4, 848 + .width = 4, 849 + .flags = CLK_DIVIDER_READ_ONLY 850 + }, 851 + .hw.init = &(struct clk_init_data){ 852 + .name = "div3", 853 + .ops = &vc3_div_ops, 854 + .parent_hws = (const struct clk_hw *[]) { 855 + &clk_div_mux[VC3_DIV3_MUX].hw 856 + }, 857 + .num_parents = 1, 858 + .flags = CLK_SET_RATE_PARENT 859 + } 860 + }, 861 + [VC3_DIV4] = { 862 + .data = &(struct vc3_div_data) { 863 + .offs = VC3_OUT_DIV3_DIV4_CTRL, 864 + .table = div245_divs, 865 + .shift = 0, 866 + .width = 4, 867 + .flags = CLK_DIVIDER_READ_ONLY 868 + }, 869 + .hw.init = &(struct clk_init_data){ 870 + .name = "div4", 871 + .ops = &vc3_div_ops, 872 + .parent_hws = (const struct clk_hw *[]) { 873 + &clk_div_mux[VC3_DIV4_MUX].hw 874 + }, 875 + .num_parents = 1, 876 + .flags = CLK_SET_RATE_PARENT 877 + } 878 + }, 879 + [VC3_DIV5] = { 880 + .data = &(struct vc3_div_data) { 881 + .offs = VC3_PLL1_CTRL_OUTDIV5, 882 + .table = div245_divs, 883 + .shift = 0, 884 + .width = 4, 885 + .flags = CLK_DIVIDER_READ_ONLY 886 + }, 887 + .hw.init = &(struct clk_init_data){ 888 + .name = "div5", 889 + .ops = &vc3_div_ops, 890 + .parent_hws = (const struct clk_hw *[]) { 891 + &clk_pll[VC3_PLL3].hw 892 + }, 893 + .num_parents = 1, 894 + .flags = CLK_SET_RATE_PARENT 895 + } 896 + } 897 + }; 898 + 899 + static struct vc3_hw_data clk_mux[] = { 900 + [VC3_DIFF2_MUX] = { 901 + .data = &(struct vc3_clk_data) { 902 + .offs = VC3_DIFF2_CTRL_REG, 903 + .bitmsk = VC3_DIFF2_CTRL_REG_DIFF2_CLK_SEL 904 + }, 905 + .hw.init = &(struct clk_init_data){ 906 + .name = "diff2_mux", 907 + .ops = &vc3_clk_mux_ops, 908 + .parent_hws = (const struct clk_hw *[]) { 909 + &clk_div[VC3_DIV1].hw, 910 + &clk_div[VC3_DIV3].hw 911 + }, 912 + .num_parents = 2, 913 + .flags = CLK_SET_RATE_PARENT 914 + } 915 + }, 916 + [VC3_DIFF1_MUX] = { 917 + .data = &(struct vc3_clk_data) { 918 + .offs = VC3_DIFF1_CTRL_REG, 919 + .bitmsk = VC3_DIFF1_CTRL_REG_DIFF1_CLK_SEL 920 + }, 921 + .hw.init = &(struct clk_init_data){ 922 + .name = "diff1_mux", 923 + .ops = &vc3_clk_mux_ops, 924 + .parent_hws = (const struct clk_hw *[]) { 925 + &clk_div[VC3_DIV1].hw, 926 + &clk_div[VC3_DIV3].hw 927 + }, 928 + .num_parents = 2, 929 + .flags = CLK_SET_RATE_PARENT 930 + } 931 + }, 932 + [VC3_SE3_MUX] = { 933 + .data = &(struct vc3_clk_data) { 934 + .offs = VC3_SE3_DIFF1_CTRL_REG, 935 + .bitmsk = VC3_SE3_DIFF1_CTRL_REG_SE3_CLK_SEL 936 + }, 937 + .hw.init = &(struct clk_init_data){ 938 + .name = "se3_mux", 939 + .ops = &vc3_clk_mux_ops, 940 + .parent_hws = (const struct clk_hw *[]) { 941 + &clk_div[VC3_DIV2].hw, 942 + &clk_div[VC3_DIV4].hw 943 + }, 944 + .num_parents = 2, 945 + .flags = CLK_SET_RATE_PARENT 946 + } 947 + }, 948 + [VC3_SE2_MUX] = { 949 + .data = &(struct vc3_clk_data) { 950 + .offs = VC3_SE2_CTRL_REG0, 951 + .bitmsk = VC3_SE2_CTRL_REG0_SE2_CLK_SEL 952 + }, 953 + .hw.init = &(struct clk_init_data){ 954 + .name = "se2_mux", 955 + .ops = &vc3_clk_mux_ops, 956 + .parent_hws = (const struct clk_hw *[]) { 957 + &clk_div[VC3_DIV5].hw, 958 + &clk_div[VC3_DIV4].hw 959 + }, 960 + .num_parents = 2, 961 + .flags = CLK_SET_RATE_PARENT 962 + } 963 + }, 964 + [VC3_SE1_MUX] = { 965 + .data = &(struct vc3_clk_data) { 966 + .offs = VC3_SE1_DIV4_CTRL, 967 + .bitmsk = VC3_SE1_DIV4_CTRL_SE1_CLK_SEL 968 + }, 969 + .hw.init = &(struct clk_init_data){ 970 + .name = "se1_mux", 971 + .ops = &vc3_clk_mux_ops, 972 + .parent_hws = (const struct clk_hw *[]) { 973 + &clk_div[VC3_DIV5].hw, 974 + &clk_div[VC3_DIV4].hw 975 + }, 976 + .num_parents = 2, 977 + .flags = CLK_SET_RATE_PARENT 978 + } 979 + } 980 + }; 981 + 982 + static struct clk_hw *vc3_of_clk_get(struct of_phandle_args *clkspec, 983 + void *data) 984 + { 985 + unsigned int idx = clkspec->args[0]; 986 + struct clk_hw **clkout_hw = data; 987 + 988 + if (idx >= ARRAY_SIZE(clk_out)) { 989 + pr_err("invalid clk index %u for provider %pOF\n", idx, clkspec->np); 990 + return ERR_PTR(-EINVAL); 991 + } 992 + 993 + return clkout_hw[idx]; 994 + } 995 + 996 + static int vc3_probe(struct i2c_client *client) 997 + { 998 + struct device *dev = &client->dev; 999 + u8 settings[NUM_CONFIG_REGISTERS]; 1000 + struct regmap *regmap; 1001 + const char *name; 1002 + int ret, i; 1003 + 1004 + regmap = devm_regmap_init_i2c(client, &vc3_regmap_config); 1005 + if (IS_ERR(regmap)) 1006 + return dev_err_probe(dev, PTR_ERR(regmap), 1007 + "failed to allocate register map\n"); 1008 + 1009 + ret = of_property_read_u8_array(dev->of_node, "renesas,settings", 1010 + settings, ARRAY_SIZE(settings)); 1011 + if (!ret) { 1012 + /* 1013 + * A raw settings array was specified in the DT. Write the 1014 + * settings to the device immediately. 1015 + */ 1016 + for (i = 0; i < NUM_CONFIG_REGISTERS; i++) { 1017 + ret = regmap_write(regmap, i, settings[i]); 1018 + if (ret) { 1019 + dev_err(dev, "error writing to chip (%i)\n", ret); 1020 + return ret; 1021 + } 1022 + } 1023 + } else if (ret == -EOVERFLOW) { 1024 + dev_err(&client->dev, "EOVERFLOW reg settings. ARRAY_SIZE: %zu\n", 1025 + ARRAY_SIZE(settings)); 1026 + return ret; 1027 + } 1028 + 1029 + /* Register pfd muxes */ 1030 + for (i = 0; i < ARRAY_SIZE(clk_pfd_mux); i++) { 1031 + clk_pfd_mux[i].regmap = regmap; 1032 + ret = devm_clk_hw_register(dev, &clk_pfd_mux[i].hw); 1033 + if (ret) 1034 + return dev_err_probe(dev, ret, "%s failed\n", 1035 + clk_pfd_mux[i].hw.init->name); 1036 + } 1037 + 1038 + /* Register pfd's */ 1039 + for (i = 0; i < ARRAY_SIZE(clk_pfd); i++) { 1040 + clk_pfd[i].regmap = regmap; 1041 + ret = devm_clk_hw_register(dev, &clk_pfd[i].hw); 1042 + if (ret) 1043 + return dev_err_probe(dev, ret, "%s failed\n", 1044 + clk_pfd[i].hw.init->name); 1045 + } 1046 + 1047 + /* Register pll's */ 1048 + for (i = 0; i < ARRAY_SIZE(clk_pll); i++) { 1049 + clk_pll[i].regmap = regmap; 1050 + ret = devm_clk_hw_register(dev, &clk_pll[i].hw); 1051 + if (ret) 1052 + return dev_err_probe(dev, ret, "%s failed\n", 1053 + clk_pll[i].hw.init->name); 1054 + } 1055 + 1056 + /* Register divider muxes */ 1057 + for (i = 0; i < ARRAY_SIZE(clk_div_mux); i++) { 1058 + clk_div_mux[i].regmap = regmap; 1059 + ret = devm_clk_hw_register(dev, &clk_div_mux[i].hw); 1060 + if (ret) 1061 + return dev_err_probe(dev, ret, "%s failed\n", 1062 + clk_div_mux[i].hw.init->name); 1063 + } 1064 + 1065 + /* Register dividers */ 1066 + for (i = 0; i < ARRAY_SIZE(clk_div); i++) { 1067 + clk_div[i].regmap = regmap; 1068 + ret = devm_clk_hw_register(dev, &clk_div[i].hw); 1069 + if (ret) 1070 + return dev_err_probe(dev, ret, "%s failed\n", 1071 + clk_div[i].hw.init->name); 1072 + } 1073 + 1074 + /* Register clk muxes */ 1075 + for (i = 0; i < ARRAY_SIZE(clk_mux); i++) { 1076 + clk_mux[i].regmap = regmap; 1077 + ret = devm_clk_hw_register(dev, &clk_mux[i].hw); 1078 + if (ret) 1079 + return dev_err_probe(dev, ret, "%s failed\n", 1080 + clk_mux[i].hw.init->name); 1081 + } 1082 + 1083 + /* Register clk outputs */ 1084 + for (i = 0; i < ARRAY_SIZE(clk_out); i++) { 1085 + switch (i) { 1086 + case VC3_DIFF2: 1087 + name = "diff2"; 1088 + break; 1089 + case VC3_DIFF1: 1090 + name = "diff1"; 1091 + break; 1092 + case VC3_SE3: 1093 + name = "se3"; 1094 + break; 1095 + case VC3_SE2: 1096 + name = "se2"; 1097 + break; 1098 + case VC3_SE1: 1099 + name = "se1"; 1100 + break; 1101 + case VC3_REF: 1102 + name = "ref"; 1103 + break; 1104 + default: 1105 + return dev_err_probe(dev, -EINVAL, "invalid clk output %d\n", i); 1106 + } 1107 + 1108 + if (i == VC3_REF) 1109 + clk_out[i] = devm_clk_hw_register_fixed_factor_index(dev, 1110 + name, 0, CLK_SET_RATE_PARENT, 1, 1); 1111 + else 1112 + clk_out[i] = devm_clk_hw_register_fixed_factor_parent_hw(dev, 1113 + name, &clk_mux[i].hw, CLK_SET_RATE_PARENT, 1, 1); 1114 + 1115 + if (IS_ERR(clk_out[i])) 1116 + return PTR_ERR(clk_out[i]); 1117 + } 1118 + 1119 + ret = devm_of_clk_add_hw_provider(dev, vc3_of_clk_get, clk_out); 1120 + if (ret) 1121 + return dev_err_probe(dev, ret, "unable to add clk provider\n"); 1122 + 1123 + return ret; 1124 + } 1125 + 1126 + static const struct of_device_id dev_ids[] = { 1127 + { .compatible = "renesas,5p35023" }, 1128 + { /* Sentinel */ } 1129 + }; 1130 + MODULE_DEVICE_TABLE(of, dev_ids); 1131 + 1132 + static struct i2c_driver vc3_driver = { 1133 + .driver = { 1134 + .name = "vc3", 1135 + .of_match_table = of_match_ptr(dev_ids), 1136 + }, 1137 + .probe = vc3_probe, 1138 + }; 1139 + module_i2c_driver(vc3_driver); 1140 + 1141 + MODULE_AUTHOR("Biju Das <biju.das.jz@bp.renesas.com>"); 1142 + MODULE_DESCRIPTION("Renesas VersaClock 3 driver"); 1143 + MODULE_LICENSE("GPL");
+1 -1
drivers/clk/clk-versaclock5.c
··· 955 955 956 956 i2c_set_clientdata(client, vc5); 957 957 vc5->client = client; 958 - vc5->chip_info = device_get_match_data(&client->dev); 958 + vc5->chip_info = i2c_get_match_data(client); 959 959 960 960 vc5->pin_xin = devm_clk_get(&client->dev, "xin"); 961 961 if (PTR_ERR(vc5->pin_xin) == -EPROBE_DEFER)
+1 -1
drivers/clk/clk-versaclock7.c
··· 1108 1108 1109 1109 i2c_set_clientdata(client, vc7); 1110 1110 vc7->client = client; 1111 - vc7->chip_info = device_get_match_data(&client->dev); 1111 + vc7->chip_info = i2c_get_match_data(client); 1112 1112 1113 1113 vc7->pin_xin = devm_clk_get(&client->dev, "xin"); 1114 1114 if (PTR_ERR(vc7->pin_xin) == -EPROBE_DEFER) {
+9
drivers/clk/meson/Kconfig
··· 30 30 tristate 31 31 select COMMON_CLK_MESON_REGMAP 32 32 33 + config COMMON_CLK_MESON_CLKC_UTILS 34 + tristate 35 + 33 36 config COMMON_CLK_MESON_AO_CLKC 34 37 tristate 35 38 select COMMON_CLK_MESON_REGMAP 39 + select COMMON_CLK_MESON_CLKC_UTILS 36 40 select RESET_CONTROLLER 37 41 38 42 config COMMON_CLK_MESON_EE_CLKC 39 43 tristate 40 44 select COMMON_CLK_MESON_REGMAP 45 + select COMMON_CLK_MESON_CLKC_UTILS 41 46 42 47 config COMMON_CLK_MESON_CPU_DYNDIV 43 48 tristate ··· 53 48 depends on ARM 54 49 default y 55 50 select COMMON_CLK_MESON_REGMAP 51 + select COMMON_CLK_MESON_CLKC_UTILS 56 52 select COMMON_CLK_MESON_MPLL 57 53 select COMMON_CLK_MESON_PLL 58 54 select MFD_SYSCON ··· 100 94 select COMMON_CLK_MESON_REGMAP 101 95 select COMMON_CLK_MESON_PHASE 102 96 select COMMON_CLK_MESON_SCLK_DIV 97 + select COMMON_CLK_MESON_CLKC_UTILS 103 98 select REGMAP_MMIO 104 99 help 105 100 Support for the audio clock controller on AmLogic A113D devices, ··· 110 103 tristate "Amlogic A1 SoC PLL controller support" 111 104 depends on ARM64 112 105 select COMMON_CLK_MESON_REGMAP 106 + select COMMON_CLK_MESON_CLKC_UTILS 113 107 select COMMON_CLK_MESON_PLL 114 108 help 115 109 Support for the PLL clock controller on Amlogic A113L based ··· 122 114 depends on ARM64 123 115 select COMMON_CLK_MESON_DUALDIV 124 116 select COMMON_CLK_MESON_REGMAP 117 + select COMMON_CLK_MESON_CLKC_UTILS 125 118 help 126 119 Support for the Peripherals clock controller on Amlogic A113L based 127 120 device, A1 SoC Family. Say Y if you want A1 Peripherals clock
+1
drivers/clk/meson/Makefile
··· 1 1 # SPDX-License-Identifier: GPL-2.0-only 2 2 # Amlogic clock drivers 3 3 4 + obj-$(CONFIG_COMMON_CLK_MESON_CLKC_UTILS) += meson-clkc-utils.o 4 5 obj-$(CONFIG_COMMON_CLK_MESON_AO_CLKC) += meson-aoclk.o 5 6 obj-$(CONFIG_COMMON_CLK_MESON_CPU_DYNDIV) += clk-cpu-dyndiv.o 6 7 obj-$(CONFIG_COMMON_CLK_MESON_DUALDIV) += clk-dualdiv.o
+164 -161
drivers/clk/meson/a1-peripherals.c
··· 13 13 #include "a1-peripherals.h" 14 14 #include "clk-dualdiv.h" 15 15 #include "clk-regmap.h" 16 + #include "meson-clkc-utils.h" 17 + 18 + #include <dt-bindings/clock/amlogic,a1-peripherals-clkc.h> 16 19 17 20 static struct clk_regmap xtal_in = { 18 21 .data = &(struct clk_regmap_gate_data){ ··· 1869 1866 static MESON_GATE(prod_i2c, AXI_CLK_EN, 12); 1870 1867 1871 1868 /* Array of all clocks registered by this provider */ 1872 - static struct clk_hw_onecell_data a1_periphs_clks = { 1873 - .hws = { 1874 - [CLKID_XTAL_IN] = &xtal_in.hw, 1875 - [CLKID_FIXPLL_IN] = &fixpll_in.hw, 1876 - [CLKID_USB_PHY_IN] = &usb_phy_in.hw, 1877 - [CLKID_USB_CTRL_IN] = &usb_ctrl_in.hw, 1878 - [CLKID_HIFIPLL_IN] = &hifipll_in.hw, 1879 - [CLKID_SYSPLL_IN] = &syspll_in.hw, 1880 - [CLKID_DDS_IN] = &dds_in.hw, 1881 - [CLKID_SYS] = &sys.hw, 1882 - [CLKID_CLKTREE] = &clktree.hw, 1883 - [CLKID_RESET_CTRL] = &reset_ctrl.hw, 1884 - [CLKID_ANALOG_CTRL] = &analog_ctrl.hw, 1885 - [CLKID_PWR_CTRL] = &pwr_ctrl.hw, 1886 - [CLKID_PAD_CTRL] = &pad_ctrl.hw, 1887 - [CLKID_SYS_CTRL] = &sys_ctrl.hw, 1888 - [CLKID_TEMP_SENSOR] = &temp_sensor.hw, 1889 - [CLKID_AM2AXI_DIV] = &am2axi_dev.hw, 1890 - [CLKID_SPICC_B] = &spicc_b.hw, 1891 - [CLKID_SPICC_A] = &spicc_a.hw, 1892 - [CLKID_MSR] = &msr.hw, 1893 - [CLKID_AUDIO] = &audio.hw, 1894 - [CLKID_JTAG_CTRL] = &jtag_ctrl.hw, 1895 - [CLKID_SARADC_EN] = &saradc_en.hw, 1896 - [CLKID_PWM_EF] = &pwm_ef.hw, 1897 - [CLKID_PWM_CD] = &pwm_cd.hw, 1898 - [CLKID_PWM_AB] = &pwm_ab.hw, 1899 - [CLKID_CEC] = &cec.hw, 1900 - [CLKID_I2C_S] = &i2c_s.hw, 1901 - [CLKID_IR_CTRL] = &ir_ctrl.hw, 1902 - [CLKID_I2C_M_D] = &i2c_m_d.hw, 1903 - [CLKID_I2C_M_C] = &i2c_m_c.hw, 1904 - [CLKID_I2C_M_B] = &i2c_m_b.hw, 1905 - [CLKID_I2C_M_A] = &i2c_m_a.hw, 1906 - [CLKID_ACODEC] = &acodec.hw, 1907 - [CLKID_OTP] = &otp.hw, 1908 - [CLKID_SD_EMMC_A] = &sd_emmc_a.hw, 1909 - [CLKID_USB_PHY] = &usb_phy.hw, 1910 - [CLKID_USB_CTRL] = &usb_ctrl.hw, 1911 - [CLKID_SYS_DSPB] = &sys_dspb.hw, 1912 - [CLKID_SYS_DSPA] = &sys_dspa.hw, 1913 - [CLKID_DMA] = &dma.hw, 1914 - [CLKID_IRQ_CTRL] = &irq_ctrl.hw, 1915 - [CLKID_NIC] = &nic.hw, 1916 - [CLKID_GIC] = &gic.hw, 1917 - [CLKID_UART_C] = &uart_c.hw, 1918 - [CLKID_UART_B] = &uart_b.hw, 1919 - [CLKID_UART_A] = &uart_a.hw, 1920 - [CLKID_SYS_PSRAM] = &sys_psram.hw, 1921 - [CLKID_RSA] = &rsa.hw, 1922 - [CLKID_CORESIGHT] = &coresight.hw, 1923 - [CLKID_AM2AXI_VAD] = &am2axi_vad.hw, 1924 - [CLKID_AUDIO_VAD] = &audio_vad.hw, 1925 - [CLKID_AXI_DMC] = &axi_dmc.hw, 1926 - [CLKID_AXI_PSRAM] = &axi_psram.hw, 1927 - [CLKID_RAMB] = &ramb.hw, 1928 - [CLKID_RAMA] = &rama.hw, 1929 - [CLKID_AXI_SPIFC] = &axi_spifc.hw, 1930 - [CLKID_AXI_NIC] = &axi_nic.hw, 1931 - [CLKID_AXI_DMA] = &axi_dma.hw, 1932 - [CLKID_CPU_CTRL] = &cpu_ctrl.hw, 1933 - [CLKID_ROM] = &rom.hw, 1934 - [CLKID_PROC_I2C] = &prod_i2c.hw, 1935 - [CLKID_DSPA_SEL] = &dspa_sel.hw, 1936 - [CLKID_DSPB_SEL] = &dspb_sel.hw, 1937 - [CLKID_DSPA_EN] = &dspa_en.hw, 1938 - [CLKID_DSPA_EN_NIC] = &dspa_en_nic.hw, 1939 - [CLKID_DSPB_EN] = &dspb_en.hw, 1940 - [CLKID_DSPB_EN_NIC] = &dspb_en_nic.hw, 1941 - [CLKID_RTC] = &rtc.hw, 1942 - [CLKID_CECA_32K] = &ceca_32k_out.hw, 1943 - [CLKID_CECB_32K] = &cecb_32k_out.hw, 1944 - [CLKID_24M] = &clk_24m.hw, 1945 - [CLKID_12M] = &clk_12m.hw, 1946 - [CLKID_FCLK_DIV2_DIVN] = &fclk_div2_divn.hw, 1947 - [CLKID_GEN] = &gen.hw, 1948 - [CLKID_SARADC_SEL] = &saradc_sel.hw, 1949 - [CLKID_SARADC] = &saradc.hw, 1950 - [CLKID_PWM_A] = &pwm_a.hw, 1951 - [CLKID_PWM_B] = &pwm_b.hw, 1952 - [CLKID_PWM_C] = &pwm_c.hw, 1953 - [CLKID_PWM_D] = &pwm_d.hw, 1954 - [CLKID_PWM_E] = &pwm_e.hw, 1955 - [CLKID_PWM_F] = &pwm_f.hw, 1956 - [CLKID_SPICC] = &spicc.hw, 1957 - [CLKID_TS] = &ts.hw, 1958 - [CLKID_SPIFC] = &spifc.hw, 1959 - [CLKID_USB_BUS] = &usb_bus.hw, 1960 - [CLKID_SD_EMMC] = &sd_emmc.hw, 1961 - [CLKID_PSRAM] = &psram.hw, 1962 - [CLKID_DMC] = &dmc.hw, 1963 - [CLKID_SYS_A_SEL] = &sys_a_sel.hw, 1964 - [CLKID_SYS_A_DIV] = &sys_a_div.hw, 1965 - [CLKID_SYS_A] = &sys_a.hw, 1966 - [CLKID_SYS_B_SEL] = &sys_b_sel.hw, 1967 - [CLKID_SYS_B_DIV] = &sys_b_div.hw, 1968 - [CLKID_SYS_B] = &sys_b.hw, 1969 - [CLKID_DSPA_A_SEL] = &dspa_a_sel.hw, 1970 - [CLKID_DSPA_A_DIV] = &dspa_a_div.hw, 1971 - [CLKID_DSPA_A] = &dspa_a.hw, 1972 - [CLKID_DSPA_B_SEL] = &dspa_b_sel.hw, 1973 - [CLKID_DSPA_B_DIV] = &dspa_b_div.hw, 1974 - [CLKID_DSPA_B] = &dspa_b.hw, 1975 - [CLKID_DSPB_A_SEL] = &dspb_a_sel.hw, 1976 - [CLKID_DSPB_A_DIV] = &dspb_a_div.hw, 1977 - [CLKID_DSPB_A] = &dspb_a.hw, 1978 - [CLKID_DSPB_B_SEL] = &dspb_b_sel.hw, 1979 - [CLKID_DSPB_B_DIV] = &dspb_b_div.hw, 1980 - [CLKID_DSPB_B] = &dspb_b.hw, 1981 - [CLKID_RTC_32K_IN] = &rtc_32k_in.hw, 1982 - [CLKID_RTC_32K_DIV] = &rtc_32k_div.hw, 1983 - [CLKID_RTC_32K_XTAL] = &rtc_32k_xtal.hw, 1984 - [CLKID_RTC_32K_SEL] = &rtc_32k_sel.hw, 1985 - [CLKID_CECB_32K_IN] = &cecb_32k_in.hw, 1986 - [CLKID_CECB_32K_DIV] = &cecb_32k_div.hw, 1987 - [CLKID_CECB_32K_SEL_PRE] = &cecb_32k_sel_pre.hw, 1988 - [CLKID_CECB_32K_SEL] = &cecb_32k_sel.hw, 1989 - [CLKID_CECA_32K_IN] = &ceca_32k_in.hw, 1990 - [CLKID_CECA_32K_DIV] = &ceca_32k_div.hw, 1991 - [CLKID_CECA_32K_SEL_PRE] = &ceca_32k_sel_pre.hw, 1992 - [CLKID_CECA_32K_SEL] = &ceca_32k_sel.hw, 1993 - [CLKID_DIV2_PRE] = &fclk_div2_divn_pre.hw, 1994 - [CLKID_24M_DIV2] = &clk_24m_div2.hw, 1995 - [CLKID_GEN_SEL] = &gen_sel.hw, 1996 - [CLKID_GEN_DIV] = &gen_div.hw, 1997 - [CLKID_SARADC_DIV] = &saradc_div.hw, 1998 - [CLKID_PWM_A_SEL] = &pwm_a_sel.hw, 1999 - [CLKID_PWM_A_DIV] = &pwm_a_div.hw, 2000 - [CLKID_PWM_B_SEL] = &pwm_b_sel.hw, 2001 - [CLKID_PWM_B_DIV] = &pwm_b_div.hw, 2002 - [CLKID_PWM_C_SEL] = &pwm_c_sel.hw, 2003 - [CLKID_PWM_C_DIV] = &pwm_c_div.hw, 2004 - [CLKID_PWM_D_SEL] = &pwm_d_sel.hw, 2005 - [CLKID_PWM_D_DIV] = &pwm_d_div.hw, 2006 - [CLKID_PWM_E_SEL] = &pwm_e_sel.hw, 2007 - [CLKID_PWM_E_DIV] = &pwm_e_div.hw, 2008 - [CLKID_PWM_F_SEL] = &pwm_f_sel.hw, 2009 - [CLKID_PWM_F_DIV] = &pwm_f_div.hw, 2010 - [CLKID_SPICC_SEL] = &spicc_sel.hw, 2011 - [CLKID_SPICC_DIV] = &spicc_div.hw, 2012 - [CLKID_SPICC_SEL2] = &spicc_sel2.hw, 2013 - [CLKID_TS_DIV] = &ts_div.hw, 2014 - [CLKID_SPIFC_SEL] = &spifc_sel.hw, 2015 - [CLKID_SPIFC_DIV] = &spifc_div.hw, 2016 - [CLKID_SPIFC_SEL2] = &spifc_sel2.hw, 2017 - [CLKID_USB_BUS_SEL] = &usb_bus_sel.hw, 2018 - [CLKID_USB_BUS_DIV] = &usb_bus_div.hw, 2019 - [CLKID_SD_EMMC_SEL] = &sd_emmc_sel.hw, 2020 - [CLKID_SD_EMMC_DIV] = &sd_emmc_div.hw, 2021 - [CLKID_SD_EMMC_SEL2] = &sd_emmc_sel2.hw, 2022 - [CLKID_PSRAM_SEL] = &psram_sel.hw, 2023 - [CLKID_PSRAM_DIV] = &psram_div.hw, 2024 - [CLKID_PSRAM_SEL2] = &psram_sel2.hw, 2025 - [CLKID_DMC_SEL] = &dmc_sel.hw, 2026 - [CLKID_DMC_DIV] = &dmc_div.hw, 2027 - [CLKID_DMC_SEL2] = &dmc_sel2.hw, 2028 - [NR_CLKS] = NULL, 2029 - }, 2030 - .num = NR_CLKS, 1869 + static struct clk_hw *a1_periphs_hw_clks[] = { 1870 + [CLKID_XTAL_IN] = &xtal_in.hw, 1871 + [CLKID_FIXPLL_IN] = &fixpll_in.hw, 1872 + [CLKID_USB_PHY_IN] = &usb_phy_in.hw, 1873 + [CLKID_USB_CTRL_IN] = &usb_ctrl_in.hw, 1874 + [CLKID_HIFIPLL_IN] = &hifipll_in.hw, 1875 + [CLKID_SYSPLL_IN] = &syspll_in.hw, 1876 + [CLKID_DDS_IN] = &dds_in.hw, 1877 + [CLKID_SYS] = &sys.hw, 1878 + [CLKID_CLKTREE] = &clktree.hw, 1879 + [CLKID_RESET_CTRL] = &reset_ctrl.hw, 1880 + [CLKID_ANALOG_CTRL] = &analog_ctrl.hw, 1881 + [CLKID_PWR_CTRL] = &pwr_ctrl.hw, 1882 + [CLKID_PAD_CTRL] = &pad_ctrl.hw, 1883 + [CLKID_SYS_CTRL] = &sys_ctrl.hw, 1884 + [CLKID_TEMP_SENSOR] = &temp_sensor.hw, 1885 + [CLKID_AM2AXI_DIV] = &am2axi_dev.hw, 1886 + [CLKID_SPICC_B] = &spicc_b.hw, 1887 + [CLKID_SPICC_A] = &spicc_a.hw, 1888 + [CLKID_MSR] = &msr.hw, 1889 + [CLKID_AUDIO] = &audio.hw, 1890 + [CLKID_JTAG_CTRL] = &jtag_ctrl.hw, 1891 + [CLKID_SARADC_EN] = &saradc_en.hw, 1892 + [CLKID_PWM_EF] = &pwm_ef.hw, 1893 + [CLKID_PWM_CD] = &pwm_cd.hw, 1894 + [CLKID_PWM_AB] = &pwm_ab.hw, 1895 + [CLKID_CEC] = &cec.hw, 1896 + [CLKID_I2C_S] = &i2c_s.hw, 1897 + [CLKID_IR_CTRL] = &ir_ctrl.hw, 1898 + [CLKID_I2C_M_D] = &i2c_m_d.hw, 1899 + [CLKID_I2C_M_C] = &i2c_m_c.hw, 1900 + [CLKID_I2C_M_B] = &i2c_m_b.hw, 1901 + [CLKID_I2C_M_A] = &i2c_m_a.hw, 1902 + [CLKID_ACODEC] = &acodec.hw, 1903 + [CLKID_OTP] = &otp.hw, 1904 + [CLKID_SD_EMMC_A] = &sd_emmc_a.hw, 1905 + [CLKID_USB_PHY] = &usb_phy.hw, 1906 + [CLKID_USB_CTRL] = &usb_ctrl.hw, 1907 + [CLKID_SYS_DSPB] = &sys_dspb.hw, 1908 + [CLKID_SYS_DSPA] = &sys_dspa.hw, 1909 + [CLKID_DMA] = &dma.hw, 1910 + [CLKID_IRQ_CTRL] = &irq_ctrl.hw, 1911 + [CLKID_NIC] = &nic.hw, 1912 + [CLKID_GIC] = &gic.hw, 1913 + [CLKID_UART_C] = &uart_c.hw, 1914 + [CLKID_UART_B] = &uart_b.hw, 1915 + [CLKID_UART_A] = &uart_a.hw, 1916 + [CLKID_SYS_PSRAM] = &sys_psram.hw, 1917 + [CLKID_RSA] = &rsa.hw, 1918 + [CLKID_CORESIGHT] = &coresight.hw, 1919 + [CLKID_AM2AXI_VAD] = &am2axi_vad.hw, 1920 + [CLKID_AUDIO_VAD] = &audio_vad.hw, 1921 + [CLKID_AXI_DMC] = &axi_dmc.hw, 1922 + [CLKID_AXI_PSRAM] = &axi_psram.hw, 1923 + [CLKID_RAMB] = &ramb.hw, 1924 + [CLKID_RAMA] = &rama.hw, 1925 + [CLKID_AXI_SPIFC] = &axi_spifc.hw, 1926 + [CLKID_AXI_NIC] = &axi_nic.hw, 1927 + [CLKID_AXI_DMA] = &axi_dma.hw, 1928 + [CLKID_CPU_CTRL] = &cpu_ctrl.hw, 1929 + [CLKID_ROM] = &rom.hw, 1930 + [CLKID_PROC_I2C] = &prod_i2c.hw, 1931 + [CLKID_DSPA_SEL] = &dspa_sel.hw, 1932 + [CLKID_DSPB_SEL] = &dspb_sel.hw, 1933 + [CLKID_DSPA_EN] = &dspa_en.hw, 1934 + [CLKID_DSPA_EN_NIC] = &dspa_en_nic.hw, 1935 + [CLKID_DSPB_EN] = &dspb_en.hw, 1936 + [CLKID_DSPB_EN_NIC] = &dspb_en_nic.hw, 1937 + [CLKID_RTC] = &rtc.hw, 1938 + [CLKID_CECA_32K] = &ceca_32k_out.hw, 1939 + [CLKID_CECB_32K] = &cecb_32k_out.hw, 1940 + [CLKID_24M] = &clk_24m.hw, 1941 + [CLKID_12M] = &clk_12m.hw, 1942 + [CLKID_FCLK_DIV2_DIVN] = &fclk_div2_divn.hw, 1943 + [CLKID_GEN] = &gen.hw, 1944 + [CLKID_SARADC_SEL] = &saradc_sel.hw, 1945 + [CLKID_SARADC] = &saradc.hw, 1946 + [CLKID_PWM_A] = &pwm_a.hw, 1947 + [CLKID_PWM_B] = &pwm_b.hw, 1948 + [CLKID_PWM_C] = &pwm_c.hw, 1949 + [CLKID_PWM_D] = &pwm_d.hw, 1950 + [CLKID_PWM_E] = &pwm_e.hw, 1951 + [CLKID_PWM_F] = &pwm_f.hw, 1952 + [CLKID_SPICC] = &spicc.hw, 1953 + [CLKID_TS] = &ts.hw, 1954 + [CLKID_SPIFC] = &spifc.hw, 1955 + [CLKID_USB_BUS] = &usb_bus.hw, 1956 + [CLKID_SD_EMMC] = &sd_emmc.hw, 1957 + [CLKID_PSRAM] = &psram.hw, 1958 + [CLKID_DMC] = &dmc.hw, 1959 + [CLKID_SYS_A_SEL] = &sys_a_sel.hw, 1960 + [CLKID_SYS_A_DIV] = &sys_a_div.hw, 1961 + [CLKID_SYS_A] = &sys_a.hw, 1962 + [CLKID_SYS_B_SEL] = &sys_b_sel.hw, 1963 + [CLKID_SYS_B_DIV] = &sys_b_div.hw, 1964 + [CLKID_SYS_B] = &sys_b.hw, 1965 + [CLKID_DSPA_A_SEL] = &dspa_a_sel.hw, 1966 + [CLKID_DSPA_A_DIV] = &dspa_a_div.hw, 1967 + [CLKID_DSPA_A] = &dspa_a.hw, 1968 + [CLKID_DSPA_B_SEL] = &dspa_b_sel.hw, 1969 + [CLKID_DSPA_B_DIV] = &dspa_b_div.hw, 1970 + [CLKID_DSPA_B] = &dspa_b.hw, 1971 + [CLKID_DSPB_A_SEL] = &dspb_a_sel.hw, 1972 + [CLKID_DSPB_A_DIV] = &dspb_a_div.hw, 1973 + [CLKID_DSPB_A] = &dspb_a.hw, 1974 + [CLKID_DSPB_B_SEL] = &dspb_b_sel.hw, 1975 + [CLKID_DSPB_B_DIV] = &dspb_b_div.hw, 1976 + [CLKID_DSPB_B] = &dspb_b.hw, 1977 + [CLKID_RTC_32K_IN] = &rtc_32k_in.hw, 1978 + [CLKID_RTC_32K_DIV] = &rtc_32k_div.hw, 1979 + [CLKID_RTC_32K_XTAL] = &rtc_32k_xtal.hw, 1980 + [CLKID_RTC_32K_SEL] = &rtc_32k_sel.hw, 1981 + [CLKID_CECB_32K_IN] = &cecb_32k_in.hw, 1982 + [CLKID_CECB_32K_DIV] = &cecb_32k_div.hw, 1983 + [CLKID_CECB_32K_SEL_PRE] = &cecb_32k_sel_pre.hw, 1984 + [CLKID_CECB_32K_SEL] = &cecb_32k_sel.hw, 1985 + [CLKID_CECA_32K_IN] = &ceca_32k_in.hw, 1986 + [CLKID_CECA_32K_DIV] = &ceca_32k_div.hw, 1987 + [CLKID_CECA_32K_SEL_PRE] = &ceca_32k_sel_pre.hw, 1988 + [CLKID_CECA_32K_SEL] = &ceca_32k_sel.hw, 1989 + [CLKID_DIV2_PRE] = &fclk_div2_divn_pre.hw, 1990 + [CLKID_24M_DIV2] = &clk_24m_div2.hw, 1991 + [CLKID_GEN_SEL] = &gen_sel.hw, 1992 + [CLKID_GEN_DIV] = &gen_div.hw, 1993 + [CLKID_SARADC_DIV] = &saradc_div.hw, 1994 + [CLKID_PWM_A_SEL] = &pwm_a_sel.hw, 1995 + [CLKID_PWM_A_DIV] = &pwm_a_div.hw, 1996 + [CLKID_PWM_B_SEL] = &pwm_b_sel.hw, 1997 + [CLKID_PWM_B_DIV] = &pwm_b_div.hw, 1998 + [CLKID_PWM_C_SEL] = &pwm_c_sel.hw, 1999 + [CLKID_PWM_C_DIV] = &pwm_c_div.hw, 2000 + [CLKID_PWM_D_SEL] = &pwm_d_sel.hw, 2001 + [CLKID_PWM_D_DIV] = &pwm_d_div.hw, 2002 + [CLKID_PWM_E_SEL] = &pwm_e_sel.hw, 2003 + [CLKID_PWM_E_DIV] = &pwm_e_div.hw, 2004 + [CLKID_PWM_F_SEL] = &pwm_f_sel.hw, 2005 + [CLKID_PWM_F_DIV] = &pwm_f_div.hw, 2006 + [CLKID_SPICC_SEL] = &spicc_sel.hw, 2007 + [CLKID_SPICC_DIV] = &spicc_div.hw, 2008 + [CLKID_SPICC_SEL2] = &spicc_sel2.hw, 2009 + [CLKID_TS_DIV] = &ts_div.hw, 2010 + [CLKID_SPIFC_SEL] = &spifc_sel.hw, 2011 + [CLKID_SPIFC_DIV] = &spifc_div.hw, 2012 + [CLKID_SPIFC_SEL2] = &spifc_sel2.hw, 2013 + [CLKID_USB_BUS_SEL] = &usb_bus_sel.hw, 2014 + [CLKID_USB_BUS_DIV] = &usb_bus_div.hw, 2015 + [CLKID_SD_EMMC_SEL] = &sd_emmc_sel.hw, 2016 + [CLKID_SD_EMMC_DIV] = &sd_emmc_div.hw, 2017 + [CLKID_SD_EMMC_SEL2] = &sd_emmc_sel2.hw, 2018 + [CLKID_PSRAM_SEL] = &psram_sel.hw, 2019 + [CLKID_PSRAM_DIV] = &psram_div.hw, 2020 + [CLKID_PSRAM_SEL2] = &psram_sel2.hw, 2021 + [CLKID_DMC_SEL] = &dmc_sel.hw, 2022 + [CLKID_DMC_DIV] = &dmc_div.hw, 2023 + [CLKID_DMC_SEL2] = &dmc_sel2.hw, 2031 2024 }; 2032 2025 2033 2026 /* Convenience table to populate regmap in .probe */ ··· 2189 2190 .reg_stride = 4, 2190 2191 }; 2191 2192 2193 + static struct meson_clk_hw_data a1_periphs_clks = { 2194 + .hws = a1_periphs_hw_clks, 2195 + .num = ARRAY_SIZE(a1_periphs_hw_clks), 2196 + }; 2197 + 2192 2198 static int meson_a1_periphs_probe(struct platform_device *pdev) 2193 2199 { 2194 2200 struct device *dev = &pdev->dev; ··· 2223 2219 clkid); 2224 2220 } 2225 2221 2226 - return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, 2227 - &a1_periphs_clks); 2222 + return devm_of_clk_add_hw_provider(dev, meson_clk_hw_get, &a1_periphs_clks); 2228 2223 } 2229 2224 2230 2225 static const struct of_device_id a1_periphs_clkc_match_table[] = {
-67
drivers/clk/meson/a1-peripherals.h
··· 43 43 #define PSRAM_CLK_CTRL 0xf4 44 44 #define DMC_CLK_CTRL 0xf8 45 45 46 - /* include the CLKIDs that have been made part of the DT binding */ 47 - #include <dt-bindings/clock/amlogic,a1-peripherals-clkc.h> 48 - 49 - /* 50 - * CLKID index values for internal clocks 51 - * 52 - * These indices are entirely contrived and do not map onto the hardware. 53 - * It has now been decided to expose everything by default in the DT header: 54 - * include/dt-bindings/clock/a1-peripherals-clkc.h. 55 - * Only the clocks ids we don't want to expose, such as the internal muxes and 56 - * dividers of composite clocks, will remain defined here. 57 - */ 58 - #define CLKID_XTAL_IN 0 59 - #define CLKID_DSPA_SEL 61 60 - #define CLKID_DSPB_SEL 62 61 - #define CLKID_SARADC_SEL 74 62 - #define CLKID_SYS_A_SEL 89 63 - #define CLKID_SYS_A_DIV 90 64 - #define CLKID_SYS_A 91 65 - #define CLKID_SYS_B_SEL 92 66 - #define CLKID_SYS_B_DIV 93 67 - #define CLKID_SYS_B 94 68 - #define CLKID_DSPA_A_DIV 96 69 - #define CLKID_DSPA_A 97 70 - #define CLKID_DSPA_B_DIV 99 71 - #define CLKID_DSPA_B 100 72 - #define CLKID_DSPB_A_DIV 102 73 - #define CLKID_DSPB_A 103 74 - #define CLKID_DSPB_B_DIV 105 75 - #define CLKID_DSPB_B 106 76 - #define CLKID_RTC_32K_IN 107 77 - #define CLKID_RTC_32K_DIV 108 78 - #define CLKID_RTC_32K_XTAL 109 79 - #define CLKID_RTC_32K_SEL 110 80 - #define CLKID_CECB_32K_IN 111 81 - #define CLKID_CECB_32K_DIV 112 82 - #define CLKID_CECA_32K_IN 115 83 - #define CLKID_CECA_32K_DIV 116 84 - #define CLKID_DIV2_PRE 119 85 - #define CLKID_24M_DIV2 120 86 - #define CLKID_GEN_DIV 122 87 - #define CLKID_SARADC_DIV 123 88 - #define CLKID_PWM_A_DIV 125 89 - #define CLKID_PWM_B_DIV 127 90 - #define CLKID_PWM_C_DIV 129 91 - #define CLKID_PWM_D_DIV 131 92 - #define CLKID_PWM_E_DIV 133 93 - #define CLKID_PWM_F_DIV 135 94 - #define CLKID_SPICC_SEL 136 95 - #define CLKID_SPICC_DIV 137 96 - #define CLKID_SPICC_SEL2 138 97 - #define CLKID_TS_DIV 139 98 - #define CLKID_SPIFC_SEL 140 99 - #define CLKID_SPIFC_DIV 141 100 - #define CLKID_SPIFC_SEL2 142 101 - #define CLKID_USB_BUS_SEL 143 102 - #define CLKID_USB_BUS_DIV 144 103 - #define CLKID_SD_EMMC_SEL 145 104 - #define CLKID_SD_EMMC_DIV 146 105 - #define CLKID_PSRAM_SEL 148 106 - #define CLKID_PSRAM_DIV 149 107 - #define CLKID_PSRAM_SEL2 150 108 - #define CLKID_DMC_SEL 151 109 - #define CLKID_DMC_DIV 152 110 - #define CLKID_DMC_SEL2 153 111 - #define NR_CLKS 154 112 - 113 46 #endif /* __A1_PERIPHERALS_H */
+21 -17
drivers/clk/meson/a1-pll.c
··· 12 12 #include <linux/platform_device.h> 13 13 #include "a1-pll.h" 14 14 #include "clk-regmap.h" 15 + #include "meson-clkc-utils.h" 16 + 17 + #include <dt-bindings/clock/amlogic,a1-pll-clkc.h> 15 18 16 19 static struct clk_regmap fixed_pll_dco = { 17 20 .data = &(struct meson_clk_pll_data){ ··· 271 268 }; 272 269 273 270 /* Array of all clocks registered by this provider */ 274 - static struct clk_hw_onecell_data a1_pll_clks = { 275 - .hws = { 276 - [CLKID_FIXED_PLL_DCO] = &fixed_pll_dco.hw, 277 - [CLKID_FIXED_PLL] = &fixed_pll.hw, 278 - [CLKID_FCLK_DIV2_DIV] = &fclk_div2_div.hw, 279 - [CLKID_FCLK_DIV3_DIV] = &fclk_div3_div.hw, 280 - [CLKID_FCLK_DIV5_DIV] = &fclk_div5_div.hw, 281 - [CLKID_FCLK_DIV7_DIV] = &fclk_div7_div.hw, 282 - [CLKID_FCLK_DIV2] = &fclk_div2.hw, 283 - [CLKID_FCLK_DIV3] = &fclk_div3.hw, 284 - [CLKID_FCLK_DIV5] = &fclk_div5.hw, 285 - [CLKID_FCLK_DIV7] = &fclk_div7.hw, 286 - [CLKID_HIFI_PLL] = &hifi_pll.hw, 287 - [NR_PLL_CLKS] = NULL, 288 - }, 289 - .num = NR_PLL_CLKS, 271 + static struct clk_hw *a1_pll_hw_clks[] = { 272 + [CLKID_FIXED_PLL_DCO] = &fixed_pll_dco.hw, 273 + [CLKID_FIXED_PLL] = &fixed_pll.hw, 274 + [CLKID_FCLK_DIV2_DIV] = &fclk_div2_div.hw, 275 + [CLKID_FCLK_DIV3_DIV] = &fclk_div3_div.hw, 276 + [CLKID_FCLK_DIV5_DIV] = &fclk_div5_div.hw, 277 + [CLKID_FCLK_DIV7_DIV] = &fclk_div7_div.hw, 278 + [CLKID_FCLK_DIV2] = &fclk_div2.hw, 279 + [CLKID_FCLK_DIV3] = &fclk_div3.hw, 280 + [CLKID_FCLK_DIV5] = &fclk_div5.hw, 281 + [CLKID_FCLK_DIV7] = &fclk_div7.hw, 282 + [CLKID_HIFI_PLL] = &hifi_pll.hw, 290 283 }; 291 284 292 285 static struct clk_regmap *const a1_pll_regmaps[] = { ··· 299 300 .reg_bits = 32, 300 301 .val_bits = 32, 301 302 .reg_stride = 4, 303 + }; 304 + 305 + static struct meson_clk_hw_data a1_pll_clks = { 306 + .hws = a1_pll_hw_clks, 307 + .num = ARRAY_SIZE(a1_pll_hw_clks), 302 308 }; 303 309 304 310 static int meson_a1_pll_probe(struct platform_device *pdev) ··· 336 332 clkid); 337 333 } 338 334 339 - return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, 335 + return devm_of_clk_add_hw_provider(dev, meson_clk_hw_get, 340 336 &a1_pll_clks); 341 337 } 342 338
-19
drivers/clk/meson/a1-pll.h
··· 25 25 #define ANACTRL_HIFIPLL_CTRL4 0xd0 26 26 #define ANACTRL_HIFIPLL_STS 0xd4 27 27 28 - /* include the CLKIDs that have been made part of the DT binding */ 29 - #include <dt-bindings/clock/amlogic,a1-pll-clkc.h> 30 - 31 - /* 32 - * CLKID index values for internal clocks 33 - * 34 - * These indices are entirely contrived and do not map onto the hardware. 35 - * It has now been decided to expose everything by default in the DT header: 36 - * include/dt-bindings/clock/a1-pll-clkc.h. Only the clocks ids we don't want 37 - * to expose, such as the internal muxes and dividers of composite clocks, 38 - * will remain defined here. 39 - */ 40 - #define CLKID_FIXED_PLL_DCO 0 41 - #define CLKID_FCLK_DIV2_DIV 2 42 - #define CLKID_FCLK_DIV3_DIV 3 43 - #define CLKID_FCLK_DIV5_DIV 4 44 - #define CLKID_FCLK_DIV7_DIV 5 45 - #define NR_PLL_CLKS 11 46 - 47 28 #endif /* __A1_PLL_H */
+25 -23
drivers/clk/meson/axg-aoclk.c
··· 14 14 #include <linux/mfd/syscon.h> 15 15 #include <linux/module.h> 16 16 #include "meson-aoclk.h" 17 - #include "axg-aoclk.h" 18 17 19 18 #include "clk-regmap.h" 20 19 #include "clk-dualdiv.h" 20 + 21 + #include <dt-bindings/clock/axg-aoclkc.h> 22 + #include <dt-bindings/reset/axg-aoclkc.h> 21 23 22 24 /* 23 25 * AO Configuration Clock registers offsets ··· 290 288 &axg_aoclk_saradc_gate, 291 289 }; 292 290 293 - static const struct clk_hw_onecell_data axg_aoclk_onecell_data = { 294 - .hws = { 295 - [CLKID_AO_REMOTE] = &axg_aoclk_remote.hw, 296 - [CLKID_AO_I2C_MASTER] = &axg_aoclk_i2c_master.hw, 297 - [CLKID_AO_I2C_SLAVE] = &axg_aoclk_i2c_slave.hw, 298 - [CLKID_AO_UART1] = &axg_aoclk_uart1.hw, 299 - [CLKID_AO_UART2] = &axg_aoclk_uart2.hw, 300 - [CLKID_AO_IR_BLASTER] = &axg_aoclk_ir_blaster.hw, 301 - [CLKID_AO_SAR_ADC] = &axg_aoclk_saradc.hw, 302 - [CLKID_AO_CLK81] = &axg_aoclk_clk81.hw, 303 - [CLKID_AO_SAR_ADC_SEL] = &axg_aoclk_saradc_mux.hw, 304 - [CLKID_AO_SAR_ADC_DIV] = &axg_aoclk_saradc_div.hw, 305 - [CLKID_AO_SAR_ADC_CLK] = &axg_aoclk_saradc_gate.hw, 306 - [CLKID_AO_CTS_OSCIN] = &axg_aoclk_cts_oscin.hw, 307 - [CLKID_AO_32K_PRE] = &axg_aoclk_32k_pre.hw, 308 - [CLKID_AO_32K_DIV] = &axg_aoclk_32k_div.hw, 309 - [CLKID_AO_32K_SEL] = &axg_aoclk_32k_sel.hw, 310 - [CLKID_AO_32K] = &axg_aoclk_32k.hw, 311 - [CLKID_AO_CTS_RTC_OSCIN] = &axg_aoclk_cts_rtc_oscin.hw, 312 - }, 313 - .num = NR_CLKS, 291 + static struct clk_hw *axg_aoclk_hw_clks[] = { 292 + [CLKID_AO_REMOTE] = &axg_aoclk_remote.hw, 293 + [CLKID_AO_I2C_MASTER] = &axg_aoclk_i2c_master.hw, 294 + [CLKID_AO_I2C_SLAVE] = &axg_aoclk_i2c_slave.hw, 295 + [CLKID_AO_UART1] = &axg_aoclk_uart1.hw, 296 + [CLKID_AO_UART2] = &axg_aoclk_uart2.hw, 297 + [CLKID_AO_IR_BLASTER] = &axg_aoclk_ir_blaster.hw, 298 + [CLKID_AO_SAR_ADC] = &axg_aoclk_saradc.hw, 299 + [CLKID_AO_CLK81] = &axg_aoclk_clk81.hw, 300 + [CLKID_AO_SAR_ADC_SEL] = &axg_aoclk_saradc_mux.hw, 301 + [CLKID_AO_SAR_ADC_DIV] = &axg_aoclk_saradc_div.hw, 302 + [CLKID_AO_SAR_ADC_CLK] = &axg_aoclk_saradc_gate.hw, 303 + [CLKID_AO_CTS_OSCIN] = &axg_aoclk_cts_oscin.hw, 304 + [CLKID_AO_32K_PRE] = &axg_aoclk_32k_pre.hw, 305 + [CLKID_AO_32K_DIV] = &axg_aoclk_32k_div.hw, 306 + [CLKID_AO_32K_SEL] = &axg_aoclk_32k_sel.hw, 307 + [CLKID_AO_32K] = &axg_aoclk_32k.hw, 308 + [CLKID_AO_CTS_RTC_OSCIN] = &axg_aoclk_cts_rtc_oscin.hw, 314 309 }; 315 310 316 311 static const struct meson_aoclk_data axg_aoclkc_data = { ··· 316 317 .reset = axg_aoclk_reset, 317 318 .num_clks = ARRAY_SIZE(axg_aoclk_regmap), 318 319 .clks = axg_aoclk_regmap, 319 - .hw_data = &axg_aoclk_onecell_data, 320 + .hw_clks = { 321 + .hws = axg_aoclk_hw_clks, 322 + .num = ARRAY_SIZE(axg_aoclk_hw_clks), 323 + }, 320 324 }; 321 325 322 326 static const struct of_device_id axg_aoclkc_match_table[] = {
-18
drivers/clk/meson/axg-aoclk.h
··· 1 - /* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */ 2 - /* 3 - * Copyright (c) 2017 BayLibre, SAS 4 - * Author: Neil Armstrong <narmstrong@baylibre.com> 5 - * 6 - * Copyright (c) 2018 Amlogic, inc. 7 - * Author: Qiufang Dai <qiufang.dai@amlogic.com> 8 - */ 9 - 10 - #ifndef __AXG_AOCLKC_H 11 - #define __AXG_AOCLKC_H 12 - 13 - #define NR_CLKS 17 14 - 15 - #include <dt-bindings/clock/axg-aoclkc.h> 16 - #include <dt-bindings/reset/axg-aoclkc.h> 17 - 18 - #endif /* __AXG_AOCLKC_H */
+425 -426
drivers/clk/meson/axg-audio.c
··· 15 15 #include <linux/reset-controller.h> 16 16 #include <linux/slab.h> 17 17 18 + #include "meson-clkc-utils.h" 18 19 #include "axg-audio.h" 19 20 #include "clk-regmap.h" 20 21 #include "clk-phase.h" 21 22 #include "sclk-div.h" 23 + 24 + #include <dt-bindings/clock/axg-audio-clkc.h> 22 25 23 26 #define AUD_GATE(_name, _reg, _bit, _pname, _iflags) { \ 24 27 .data = &(struct clk_regmap_gate_data){ \ ··· 814 811 * Array of all clocks provided by this provider 815 812 * The input clocks of the controller will be populated at runtime 816 813 */ 817 - static struct clk_hw_onecell_data axg_audio_hw_onecell_data = { 818 - .hws = { 819 - [AUD_CLKID_DDR_ARB] = &ddr_arb.hw, 820 - [AUD_CLKID_PDM] = &pdm.hw, 821 - [AUD_CLKID_TDMIN_A] = &tdmin_a.hw, 822 - [AUD_CLKID_TDMIN_B] = &tdmin_b.hw, 823 - [AUD_CLKID_TDMIN_C] = &tdmin_c.hw, 824 - [AUD_CLKID_TDMIN_LB] = &tdmin_lb.hw, 825 - [AUD_CLKID_TDMOUT_A] = &tdmout_a.hw, 826 - [AUD_CLKID_TDMOUT_B] = &tdmout_b.hw, 827 - [AUD_CLKID_TDMOUT_C] = &tdmout_c.hw, 828 - [AUD_CLKID_FRDDR_A] = &frddr_a.hw, 829 - [AUD_CLKID_FRDDR_B] = &frddr_b.hw, 830 - [AUD_CLKID_FRDDR_C] = &frddr_c.hw, 831 - [AUD_CLKID_TODDR_A] = &toddr_a.hw, 832 - [AUD_CLKID_TODDR_B] = &toddr_b.hw, 833 - [AUD_CLKID_TODDR_C] = &toddr_c.hw, 834 - [AUD_CLKID_LOOPBACK] = &loopback.hw, 835 - [AUD_CLKID_SPDIFIN] = &spdifin.hw, 836 - [AUD_CLKID_SPDIFOUT] = &spdifout.hw, 837 - [AUD_CLKID_RESAMPLE] = &resample.hw, 838 - [AUD_CLKID_POWER_DETECT] = &power_detect.hw, 839 - [AUD_CLKID_MST_A_MCLK_SEL] = &mst_a_mclk_sel.hw, 840 - [AUD_CLKID_MST_B_MCLK_SEL] = &mst_b_mclk_sel.hw, 841 - [AUD_CLKID_MST_C_MCLK_SEL] = &mst_c_mclk_sel.hw, 842 - [AUD_CLKID_MST_D_MCLK_SEL] = &mst_d_mclk_sel.hw, 843 - [AUD_CLKID_MST_E_MCLK_SEL] = &mst_e_mclk_sel.hw, 844 - [AUD_CLKID_MST_F_MCLK_SEL] = &mst_f_mclk_sel.hw, 845 - [AUD_CLKID_MST_A_MCLK_DIV] = &mst_a_mclk_div.hw, 846 - [AUD_CLKID_MST_B_MCLK_DIV] = &mst_b_mclk_div.hw, 847 - [AUD_CLKID_MST_C_MCLK_DIV] = &mst_c_mclk_div.hw, 848 - [AUD_CLKID_MST_D_MCLK_DIV] = &mst_d_mclk_div.hw, 849 - [AUD_CLKID_MST_E_MCLK_DIV] = &mst_e_mclk_div.hw, 850 - [AUD_CLKID_MST_F_MCLK_DIV] = &mst_f_mclk_div.hw, 851 - [AUD_CLKID_MST_A_MCLK] = &mst_a_mclk.hw, 852 - [AUD_CLKID_MST_B_MCLK] = &mst_b_mclk.hw, 853 - [AUD_CLKID_MST_C_MCLK] = &mst_c_mclk.hw, 854 - [AUD_CLKID_MST_D_MCLK] = &mst_d_mclk.hw, 855 - [AUD_CLKID_MST_E_MCLK] = &mst_e_mclk.hw, 856 - [AUD_CLKID_MST_F_MCLK] = &mst_f_mclk.hw, 857 - [AUD_CLKID_SPDIFOUT_CLK_SEL] = &spdifout_clk_sel.hw, 858 - [AUD_CLKID_SPDIFOUT_CLK_DIV] = &spdifout_clk_div.hw, 859 - [AUD_CLKID_SPDIFOUT_CLK] = &spdifout_clk.hw, 860 - [AUD_CLKID_SPDIFIN_CLK_SEL] = &spdifin_clk_sel.hw, 861 - [AUD_CLKID_SPDIFIN_CLK_DIV] = &spdifin_clk_div.hw, 862 - [AUD_CLKID_SPDIFIN_CLK] = &spdifin_clk.hw, 863 - [AUD_CLKID_PDM_DCLK_SEL] = &pdm_dclk_sel.hw, 864 - [AUD_CLKID_PDM_DCLK_DIV] = &pdm_dclk_div.hw, 865 - [AUD_CLKID_PDM_DCLK] = &pdm_dclk.hw, 866 - [AUD_CLKID_PDM_SYSCLK_SEL] = &pdm_sysclk_sel.hw, 867 - [AUD_CLKID_PDM_SYSCLK_DIV] = &pdm_sysclk_div.hw, 868 - [AUD_CLKID_PDM_SYSCLK] = &pdm_sysclk.hw, 869 - [AUD_CLKID_MST_A_SCLK_PRE_EN] = &mst_a_sclk_pre_en.hw, 870 - [AUD_CLKID_MST_B_SCLK_PRE_EN] = &mst_b_sclk_pre_en.hw, 871 - [AUD_CLKID_MST_C_SCLK_PRE_EN] = &mst_c_sclk_pre_en.hw, 872 - [AUD_CLKID_MST_D_SCLK_PRE_EN] = &mst_d_sclk_pre_en.hw, 873 - [AUD_CLKID_MST_E_SCLK_PRE_EN] = &mst_e_sclk_pre_en.hw, 874 - [AUD_CLKID_MST_F_SCLK_PRE_EN] = &mst_f_sclk_pre_en.hw, 875 - [AUD_CLKID_MST_A_SCLK_DIV] = &mst_a_sclk_div.hw, 876 - [AUD_CLKID_MST_B_SCLK_DIV] = &mst_b_sclk_div.hw, 877 - [AUD_CLKID_MST_C_SCLK_DIV] = &mst_c_sclk_div.hw, 878 - [AUD_CLKID_MST_D_SCLK_DIV] = &mst_d_sclk_div.hw, 879 - [AUD_CLKID_MST_E_SCLK_DIV] = &mst_e_sclk_div.hw, 880 - [AUD_CLKID_MST_F_SCLK_DIV] = &mst_f_sclk_div.hw, 881 - [AUD_CLKID_MST_A_SCLK_POST_EN] = &mst_a_sclk_post_en.hw, 882 - [AUD_CLKID_MST_B_SCLK_POST_EN] = &mst_b_sclk_post_en.hw, 883 - [AUD_CLKID_MST_C_SCLK_POST_EN] = &mst_c_sclk_post_en.hw, 884 - [AUD_CLKID_MST_D_SCLK_POST_EN] = &mst_d_sclk_post_en.hw, 885 - [AUD_CLKID_MST_E_SCLK_POST_EN] = &mst_e_sclk_post_en.hw, 886 - [AUD_CLKID_MST_F_SCLK_POST_EN] = &mst_f_sclk_post_en.hw, 887 - [AUD_CLKID_MST_A_SCLK] = &mst_a_sclk.hw, 888 - [AUD_CLKID_MST_B_SCLK] = &mst_b_sclk.hw, 889 - [AUD_CLKID_MST_C_SCLK] = &mst_c_sclk.hw, 890 - [AUD_CLKID_MST_D_SCLK] = &mst_d_sclk.hw, 891 - [AUD_CLKID_MST_E_SCLK] = &mst_e_sclk.hw, 892 - [AUD_CLKID_MST_F_SCLK] = &mst_f_sclk.hw, 893 - [AUD_CLKID_MST_A_LRCLK_DIV] = &mst_a_lrclk_div.hw, 894 - [AUD_CLKID_MST_B_LRCLK_DIV] = &mst_b_lrclk_div.hw, 895 - [AUD_CLKID_MST_C_LRCLK_DIV] = &mst_c_lrclk_div.hw, 896 - [AUD_CLKID_MST_D_LRCLK_DIV] = &mst_d_lrclk_div.hw, 897 - [AUD_CLKID_MST_E_LRCLK_DIV] = &mst_e_lrclk_div.hw, 898 - [AUD_CLKID_MST_F_LRCLK_DIV] = &mst_f_lrclk_div.hw, 899 - [AUD_CLKID_MST_A_LRCLK] = &mst_a_lrclk.hw, 900 - [AUD_CLKID_MST_B_LRCLK] = &mst_b_lrclk.hw, 901 - [AUD_CLKID_MST_C_LRCLK] = &mst_c_lrclk.hw, 902 - [AUD_CLKID_MST_D_LRCLK] = &mst_d_lrclk.hw, 903 - [AUD_CLKID_MST_E_LRCLK] = &mst_e_lrclk.hw, 904 - [AUD_CLKID_MST_F_LRCLK] = &mst_f_lrclk.hw, 905 - [AUD_CLKID_TDMIN_A_SCLK_SEL] = &tdmin_a_sclk_sel.hw, 906 - [AUD_CLKID_TDMIN_B_SCLK_SEL] = &tdmin_b_sclk_sel.hw, 907 - [AUD_CLKID_TDMIN_C_SCLK_SEL] = &tdmin_c_sclk_sel.hw, 908 - [AUD_CLKID_TDMIN_LB_SCLK_SEL] = &tdmin_lb_sclk_sel.hw, 909 - [AUD_CLKID_TDMOUT_A_SCLK_SEL] = &tdmout_a_sclk_sel.hw, 910 - [AUD_CLKID_TDMOUT_B_SCLK_SEL] = &tdmout_b_sclk_sel.hw, 911 - [AUD_CLKID_TDMOUT_C_SCLK_SEL] = &tdmout_c_sclk_sel.hw, 912 - [AUD_CLKID_TDMIN_A_SCLK_PRE_EN] = &tdmin_a_sclk_pre_en.hw, 913 - [AUD_CLKID_TDMIN_B_SCLK_PRE_EN] = &tdmin_b_sclk_pre_en.hw, 914 - [AUD_CLKID_TDMIN_C_SCLK_PRE_EN] = &tdmin_c_sclk_pre_en.hw, 915 - [AUD_CLKID_TDMIN_LB_SCLK_PRE_EN] = &tdmin_lb_sclk_pre_en.hw, 916 - [AUD_CLKID_TDMOUT_A_SCLK_PRE_EN] = &tdmout_a_sclk_pre_en.hw, 917 - [AUD_CLKID_TDMOUT_B_SCLK_PRE_EN] = &tdmout_b_sclk_pre_en.hw, 918 - [AUD_CLKID_TDMOUT_C_SCLK_PRE_EN] = &tdmout_c_sclk_pre_en.hw, 919 - [AUD_CLKID_TDMIN_A_SCLK_POST_EN] = &tdmin_a_sclk_post_en.hw, 920 - [AUD_CLKID_TDMIN_B_SCLK_POST_EN] = &tdmin_b_sclk_post_en.hw, 921 - [AUD_CLKID_TDMIN_C_SCLK_POST_EN] = &tdmin_c_sclk_post_en.hw, 922 - [AUD_CLKID_TDMIN_LB_SCLK_POST_EN] = &tdmin_lb_sclk_post_en.hw, 923 - [AUD_CLKID_TDMOUT_A_SCLK_POST_EN] = &tdmout_a_sclk_post_en.hw, 924 - [AUD_CLKID_TDMOUT_B_SCLK_POST_EN] = &tdmout_b_sclk_post_en.hw, 925 - [AUD_CLKID_TDMOUT_C_SCLK_POST_EN] = &tdmout_c_sclk_post_en.hw, 926 - [AUD_CLKID_TDMIN_A_SCLK] = &tdmin_a_sclk.hw, 927 - [AUD_CLKID_TDMIN_B_SCLK] = &tdmin_b_sclk.hw, 928 - [AUD_CLKID_TDMIN_C_SCLK] = &tdmin_c_sclk.hw, 929 - [AUD_CLKID_TDMIN_LB_SCLK] = &tdmin_lb_sclk.hw, 930 - [AUD_CLKID_TDMOUT_A_SCLK] = &axg_tdmout_a_sclk.hw, 931 - [AUD_CLKID_TDMOUT_B_SCLK] = &axg_tdmout_b_sclk.hw, 932 - [AUD_CLKID_TDMOUT_C_SCLK] = &axg_tdmout_c_sclk.hw, 933 - [AUD_CLKID_TDMIN_A_LRCLK] = &tdmin_a_lrclk.hw, 934 - [AUD_CLKID_TDMIN_B_LRCLK] = &tdmin_b_lrclk.hw, 935 - [AUD_CLKID_TDMIN_C_LRCLK] = &tdmin_c_lrclk.hw, 936 - [AUD_CLKID_TDMIN_LB_LRCLK] = &tdmin_lb_lrclk.hw, 937 - [AUD_CLKID_TDMOUT_A_LRCLK] = &tdmout_a_lrclk.hw, 938 - [AUD_CLKID_TDMOUT_B_LRCLK] = &tdmout_b_lrclk.hw, 939 - [AUD_CLKID_TDMOUT_C_LRCLK] = &tdmout_c_lrclk.hw, 940 - [AUD_CLKID_TOP] = &axg_aud_top, 941 - [NR_CLKS] = NULL, 942 - }, 943 - .num = NR_CLKS, 814 + static struct clk_hw *axg_audio_hw_clks[] = { 815 + [AUD_CLKID_DDR_ARB] = &ddr_arb.hw, 816 + [AUD_CLKID_PDM] = &pdm.hw, 817 + [AUD_CLKID_TDMIN_A] = &tdmin_a.hw, 818 + [AUD_CLKID_TDMIN_B] = &tdmin_b.hw, 819 + [AUD_CLKID_TDMIN_C] = &tdmin_c.hw, 820 + [AUD_CLKID_TDMIN_LB] = &tdmin_lb.hw, 821 + [AUD_CLKID_TDMOUT_A] = &tdmout_a.hw, 822 + [AUD_CLKID_TDMOUT_B] = &tdmout_b.hw, 823 + [AUD_CLKID_TDMOUT_C] = &tdmout_c.hw, 824 + [AUD_CLKID_FRDDR_A] = &frddr_a.hw, 825 + [AUD_CLKID_FRDDR_B] = &frddr_b.hw, 826 + [AUD_CLKID_FRDDR_C] = &frddr_c.hw, 827 + [AUD_CLKID_TODDR_A] = &toddr_a.hw, 828 + [AUD_CLKID_TODDR_B] = &toddr_b.hw, 829 + [AUD_CLKID_TODDR_C] = &toddr_c.hw, 830 + [AUD_CLKID_LOOPBACK] = &loopback.hw, 831 + [AUD_CLKID_SPDIFIN] = &spdifin.hw, 832 + [AUD_CLKID_SPDIFOUT] = &spdifout.hw, 833 + [AUD_CLKID_RESAMPLE] = &resample.hw, 834 + [AUD_CLKID_POWER_DETECT] = &power_detect.hw, 835 + [AUD_CLKID_MST_A_MCLK_SEL] = &mst_a_mclk_sel.hw, 836 + [AUD_CLKID_MST_B_MCLK_SEL] = &mst_b_mclk_sel.hw, 837 + [AUD_CLKID_MST_C_MCLK_SEL] = &mst_c_mclk_sel.hw, 838 + [AUD_CLKID_MST_D_MCLK_SEL] = &mst_d_mclk_sel.hw, 839 + [AUD_CLKID_MST_E_MCLK_SEL] = &mst_e_mclk_sel.hw, 840 + [AUD_CLKID_MST_F_MCLK_SEL] = &mst_f_mclk_sel.hw, 841 + [AUD_CLKID_MST_A_MCLK_DIV] = &mst_a_mclk_div.hw, 842 + [AUD_CLKID_MST_B_MCLK_DIV] = &mst_b_mclk_div.hw, 843 + [AUD_CLKID_MST_C_MCLK_DIV] = &mst_c_mclk_div.hw, 844 + [AUD_CLKID_MST_D_MCLK_DIV] = &mst_d_mclk_div.hw, 845 + [AUD_CLKID_MST_E_MCLK_DIV] = &mst_e_mclk_div.hw, 846 + [AUD_CLKID_MST_F_MCLK_DIV] = &mst_f_mclk_div.hw, 847 + [AUD_CLKID_MST_A_MCLK] = &mst_a_mclk.hw, 848 + [AUD_CLKID_MST_B_MCLK] = &mst_b_mclk.hw, 849 + [AUD_CLKID_MST_C_MCLK] = &mst_c_mclk.hw, 850 + [AUD_CLKID_MST_D_MCLK] = &mst_d_mclk.hw, 851 + [AUD_CLKID_MST_E_MCLK] = &mst_e_mclk.hw, 852 + [AUD_CLKID_MST_F_MCLK] = &mst_f_mclk.hw, 853 + [AUD_CLKID_SPDIFOUT_CLK_SEL] = &spdifout_clk_sel.hw, 854 + [AUD_CLKID_SPDIFOUT_CLK_DIV] = &spdifout_clk_div.hw, 855 + [AUD_CLKID_SPDIFOUT_CLK] = &spdifout_clk.hw, 856 + [AUD_CLKID_SPDIFIN_CLK_SEL] = &spdifin_clk_sel.hw, 857 + [AUD_CLKID_SPDIFIN_CLK_DIV] = &spdifin_clk_div.hw, 858 + [AUD_CLKID_SPDIFIN_CLK] = &spdifin_clk.hw, 859 + [AUD_CLKID_PDM_DCLK_SEL] = &pdm_dclk_sel.hw, 860 + [AUD_CLKID_PDM_DCLK_DIV] = &pdm_dclk_div.hw, 861 + [AUD_CLKID_PDM_DCLK] = &pdm_dclk.hw, 862 + [AUD_CLKID_PDM_SYSCLK_SEL] = &pdm_sysclk_sel.hw, 863 + [AUD_CLKID_PDM_SYSCLK_DIV] = &pdm_sysclk_div.hw, 864 + [AUD_CLKID_PDM_SYSCLK] = &pdm_sysclk.hw, 865 + [AUD_CLKID_MST_A_SCLK_PRE_EN] = &mst_a_sclk_pre_en.hw, 866 + [AUD_CLKID_MST_B_SCLK_PRE_EN] = &mst_b_sclk_pre_en.hw, 867 + [AUD_CLKID_MST_C_SCLK_PRE_EN] = &mst_c_sclk_pre_en.hw, 868 + [AUD_CLKID_MST_D_SCLK_PRE_EN] = &mst_d_sclk_pre_en.hw, 869 + [AUD_CLKID_MST_E_SCLK_PRE_EN] = &mst_e_sclk_pre_en.hw, 870 + [AUD_CLKID_MST_F_SCLK_PRE_EN] = &mst_f_sclk_pre_en.hw, 871 + [AUD_CLKID_MST_A_SCLK_DIV] = &mst_a_sclk_div.hw, 872 + [AUD_CLKID_MST_B_SCLK_DIV] = &mst_b_sclk_div.hw, 873 + [AUD_CLKID_MST_C_SCLK_DIV] = &mst_c_sclk_div.hw, 874 + [AUD_CLKID_MST_D_SCLK_DIV] = &mst_d_sclk_div.hw, 875 + [AUD_CLKID_MST_E_SCLK_DIV] = &mst_e_sclk_div.hw, 876 + [AUD_CLKID_MST_F_SCLK_DIV] = &mst_f_sclk_div.hw, 877 + [AUD_CLKID_MST_A_SCLK_POST_EN] = &mst_a_sclk_post_en.hw, 878 + [AUD_CLKID_MST_B_SCLK_POST_EN] = &mst_b_sclk_post_en.hw, 879 + [AUD_CLKID_MST_C_SCLK_POST_EN] = &mst_c_sclk_post_en.hw, 880 + [AUD_CLKID_MST_D_SCLK_POST_EN] = &mst_d_sclk_post_en.hw, 881 + [AUD_CLKID_MST_E_SCLK_POST_EN] = &mst_e_sclk_post_en.hw, 882 + [AUD_CLKID_MST_F_SCLK_POST_EN] = &mst_f_sclk_post_en.hw, 883 + [AUD_CLKID_MST_A_SCLK] = &mst_a_sclk.hw, 884 + [AUD_CLKID_MST_B_SCLK] = &mst_b_sclk.hw, 885 + [AUD_CLKID_MST_C_SCLK] = &mst_c_sclk.hw, 886 + [AUD_CLKID_MST_D_SCLK] = &mst_d_sclk.hw, 887 + [AUD_CLKID_MST_E_SCLK] = &mst_e_sclk.hw, 888 + [AUD_CLKID_MST_F_SCLK] = &mst_f_sclk.hw, 889 + [AUD_CLKID_MST_A_LRCLK_DIV] = &mst_a_lrclk_div.hw, 890 + [AUD_CLKID_MST_B_LRCLK_DIV] = &mst_b_lrclk_div.hw, 891 + [AUD_CLKID_MST_C_LRCLK_DIV] = &mst_c_lrclk_div.hw, 892 + [AUD_CLKID_MST_D_LRCLK_DIV] = &mst_d_lrclk_div.hw, 893 + [AUD_CLKID_MST_E_LRCLK_DIV] = &mst_e_lrclk_div.hw, 894 + [AUD_CLKID_MST_F_LRCLK_DIV] = &mst_f_lrclk_div.hw, 895 + [AUD_CLKID_MST_A_LRCLK] = &mst_a_lrclk.hw, 896 + [AUD_CLKID_MST_B_LRCLK] = &mst_b_lrclk.hw, 897 + [AUD_CLKID_MST_C_LRCLK] = &mst_c_lrclk.hw, 898 + [AUD_CLKID_MST_D_LRCLK] = &mst_d_lrclk.hw, 899 + [AUD_CLKID_MST_E_LRCLK] = &mst_e_lrclk.hw, 900 + [AUD_CLKID_MST_F_LRCLK] = &mst_f_lrclk.hw, 901 + [AUD_CLKID_TDMIN_A_SCLK_SEL] = &tdmin_a_sclk_sel.hw, 902 + [AUD_CLKID_TDMIN_B_SCLK_SEL] = &tdmin_b_sclk_sel.hw, 903 + [AUD_CLKID_TDMIN_C_SCLK_SEL] = &tdmin_c_sclk_sel.hw, 904 + [AUD_CLKID_TDMIN_LB_SCLK_SEL] = &tdmin_lb_sclk_sel.hw, 905 + [AUD_CLKID_TDMOUT_A_SCLK_SEL] = &tdmout_a_sclk_sel.hw, 906 + [AUD_CLKID_TDMOUT_B_SCLK_SEL] = &tdmout_b_sclk_sel.hw, 907 + [AUD_CLKID_TDMOUT_C_SCLK_SEL] = &tdmout_c_sclk_sel.hw, 908 + [AUD_CLKID_TDMIN_A_SCLK_PRE_EN] = &tdmin_a_sclk_pre_en.hw, 909 + [AUD_CLKID_TDMIN_B_SCLK_PRE_EN] = &tdmin_b_sclk_pre_en.hw, 910 + [AUD_CLKID_TDMIN_C_SCLK_PRE_EN] = &tdmin_c_sclk_pre_en.hw, 911 + [AUD_CLKID_TDMIN_LB_SCLK_PRE_EN] = &tdmin_lb_sclk_pre_en.hw, 912 + [AUD_CLKID_TDMOUT_A_SCLK_PRE_EN] = &tdmout_a_sclk_pre_en.hw, 913 + [AUD_CLKID_TDMOUT_B_SCLK_PRE_EN] = &tdmout_b_sclk_pre_en.hw, 914 + [AUD_CLKID_TDMOUT_C_SCLK_PRE_EN] = &tdmout_c_sclk_pre_en.hw, 915 + [AUD_CLKID_TDMIN_A_SCLK_POST_EN] = &tdmin_a_sclk_post_en.hw, 916 + [AUD_CLKID_TDMIN_B_SCLK_POST_EN] = &tdmin_b_sclk_post_en.hw, 917 + [AUD_CLKID_TDMIN_C_SCLK_POST_EN] = &tdmin_c_sclk_post_en.hw, 918 + [AUD_CLKID_TDMIN_LB_SCLK_POST_EN] = &tdmin_lb_sclk_post_en.hw, 919 + [AUD_CLKID_TDMOUT_A_SCLK_POST_EN] = &tdmout_a_sclk_post_en.hw, 920 + [AUD_CLKID_TDMOUT_B_SCLK_POST_EN] = &tdmout_b_sclk_post_en.hw, 921 + [AUD_CLKID_TDMOUT_C_SCLK_POST_EN] = &tdmout_c_sclk_post_en.hw, 922 + [AUD_CLKID_TDMIN_A_SCLK] = &tdmin_a_sclk.hw, 923 + [AUD_CLKID_TDMIN_B_SCLK] = &tdmin_b_sclk.hw, 924 + [AUD_CLKID_TDMIN_C_SCLK] = &tdmin_c_sclk.hw, 925 + [AUD_CLKID_TDMIN_LB_SCLK] = &tdmin_lb_sclk.hw, 926 + [AUD_CLKID_TDMOUT_A_SCLK] = &axg_tdmout_a_sclk.hw, 927 + [AUD_CLKID_TDMOUT_B_SCLK] = &axg_tdmout_b_sclk.hw, 928 + [AUD_CLKID_TDMOUT_C_SCLK] = &axg_tdmout_c_sclk.hw, 929 + [AUD_CLKID_TDMIN_A_LRCLK] = &tdmin_a_lrclk.hw, 930 + [AUD_CLKID_TDMIN_B_LRCLK] = &tdmin_b_lrclk.hw, 931 + [AUD_CLKID_TDMIN_C_LRCLK] = &tdmin_c_lrclk.hw, 932 + [AUD_CLKID_TDMIN_LB_LRCLK] = &tdmin_lb_lrclk.hw, 933 + [AUD_CLKID_TDMOUT_A_LRCLK] = &tdmout_a_lrclk.hw, 934 + [AUD_CLKID_TDMOUT_B_LRCLK] = &tdmout_b_lrclk.hw, 935 + [AUD_CLKID_TDMOUT_C_LRCLK] = &tdmout_c_lrclk.hw, 936 + [AUD_CLKID_TOP] = &axg_aud_top, 944 937 }; 945 938 946 939 /* 947 940 * Array of all G12A clocks provided by this provider 948 941 * The input clocks of the controller will be populated at runtime 949 942 */ 950 - static struct clk_hw_onecell_data g12a_audio_hw_onecell_data = { 951 - .hws = { 952 - [AUD_CLKID_DDR_ARB] = &ddr_arb.hw, 953 - [AUD_CLKID_PDM] = &pdm.hw, 954 - [AUD_CLKID_TDMIN_A] = &tdmin_a.hw, 955 - [AUD_CLKID_TDMIN_B] = &tdmin_b.hw, 956 - [AUD_CLKID_TDMIN_C] = &tdmin_c.hw, 957 - [AUD_CLKID_TDMIN_LB] = &tdmin_lb.hw, 958 - [AUD_CLKID_TDMOUT_A] = &tdmout_a.hw, 959 - [AUD_CLKID_TDMOUT_B] = &tdmout_b.hw, 960 - [AUD_CLKID_TDMOUT_C] = &tdmout_c.hw, 961 - [AUD_CLKID_FRDDR_A] = &frddr_a.hw, 962 - [AUD_CLKID_FRDDR_B] = &frddr_b.hw, 963 - [AUD_CLKID_FRDDR_C] = &frddr_c.hw, 964 - [AUD_CLKID_TODDR_A] = &toddr_a.hw, 965 - [AUD_CLKID_TODDR_B] = &toddr_b.hw, 966 - [AUD_CLKID_TODDR_C] = &toddr_c.hw, 967 - [AUD_CLKID_LOOPBACK] = &loopback.hw, 968 - [AUD_CLKID_SPDIFIN] = &spdifin.hw, 969 - [AUD_CLKID_SPDIFOUT] = &spdifout.hw, 970 - [AUD_CLKID_RESAMPLE] = &resample.hw, 971 - [AUD_CLKID_POWER_DETECT] = &power_detect.hw, 972 - [AUD_CLKID_SPDIFOUT_B] = &spdifout_b.hw, 973 - [AUD_CLKID_MST_A_MCLK_SEL] = &mst_a_mclk_sel.hw, 974 - [AUD_CLKID_MST_B_MCLK_SEL] = &mst_b_mclk_sel.hw, 975 - [AUD_CLKID_MST_C_MCLK_SEL] = &mst_c_mclk_sel.hw, 976 - [AUD_CLKID_MST_D_MCLK_SEL] = &mst_d_mclk_sel.hw, 977 - [AUD_CLKID_MST_E_MCLK_SEL] = &mst_e_mclk_sel.hw, 978 - [AUD_CLKID_MST_F_MCLK_SEL] = &mst_f_mclk_sel.hw, 979 - [AUD_CLKID_MST_A_MCLK_DIV] = &mst_a_mclk_div.hw, 980 - [AUD_CLKID_MST_B_MCLK_DIV] = &mst_b_mclk_div.hw, 981 - [AUD_CLKID_MST_C_MCLK_DIV] = &mst_c_mclk_div.hw, 982 - [AUD_CLKID_MST_D_MCLK_DIV] = &mst_d_mclk_div.hw, 983 - [AUD_CLKID_MST_E_MCLK_DIV] = &mst_e_mclk_div.hw, 984 - [AUD_CLKID_MST_F_MCLK_DIV] = &mst_f_mclk_div.hw, 985 - [AUD_CLKID_MST_A_MCLK] = &mst_a_mclk.hw, 986 - [AUD_CLKID_MST_B_MCLK] = &mst_b_mclk.hw, 987 - [AUD_CLKID_MST_C_MCLK] = &mst_c_mclk.hw, 988 - [AUD_CLKID_MST_D_MCLK] = &mst_d_mclk.hw, 989 - [AUD_CLKID_MST_E_MCLK] = &mst_e_mclk.hw, 990 - [AUD_CLKID_MST_F_MCLK] = &mst_f_mclk.hw, 991 - [AUD_CLKID_SPDIFOUT_CLK_SEL] = &spdifout_clk_sel.hw, 992 - [AUD_CLKID_SPDIFOUT_CLK_DIV] = &spdifout_clk_div.hw, 993 - [AUD_CLKID_SPDIFOUT_CLK] = &spdifout_clk.hw, 994 - [AUD_CLKID_SPDIFOUT_B_CLK_SEL] = &spdifout_b_clk_sel.hw, 995 - [AUD_CLKID_SPDIFOUT_B_CLK_DIV] = &spdifout_b_clk_div.hw, 996 - [AUD_CLKID_SPDIFOUT_B_CLK] = &spdifout_b_clk.hw, 997 - [AUD_CLKID_SPDIFIN_CLK_SEL] = &spdifin_clk_sel.hw, 998 - [AUD_CLKID_SPDIFIN_CLK_DIV] = &spdifin_clk_div.hw, 999 - [AUD_CLKID_SPDIFIN_CLK] = &spdifin_clk.hw, 1000 - [AUD_CLKID_PDM_DCLK_SEL] = &pdm_dclk_sel.hw, 1001 - [AUD_CLKID_PDM_DCLK_DIV] = &pdm_dclk_div.hw, 1002 - [AUD_CLKID_PDM_DCLK] = &pdm_dclk.hw, 1003 - [AUD_CLKID_PDM_SYSCLK_SEL] = &pdm_sysclk_sel.hw, 1004 - [AUD_CLKID_PDM_SYSCLK_DIV] = &pdm_sysclk_div.hw, 1005 - [AUD_CLKID_PDM_SYSCLK] = &pdm_sysclk.hw, 1006 - [AUD_CLKID_MST_A_SCLK_PRE_EN] = &mst_a_sclk_pre_en.hw, 1007 - [AUD_CLKID_MST_B_SCLK_PRE_EN] = &mst_b_sclk_pre_en.hw, 1008 - [AUD_CLKID_MST_C_SCLK_PRE_EN] = &mst_c_sclk_pre_en.hw, 1009 - [AUD_CLKID_MST_D_SCLK_PRE_EN] = &mst_d_sclk_pre_en.hw, 1010 - [AUD_CLKID_MST_E_SCLK_PRE_EN] = &mst_e_sclk_pre_en.hw, 1011 - [AUD_CLKID_MST_F_SCLK_PRE_EN] = &mst_f_sclk_pre_en.hw, 1012 - [AUD_CLKID_MST_A_SCLK_DIV] = &mst_a_sclk_div.hw, 1013 - [AUD_CLKID_MST_B_SCLK_DIV] = &mst_b_sclk_div.hw, 1014 - [AUD_CLKID_MST_C_SCLK_DIV] = &mst_c_sclk_div.hw, 1015 - [AUD_CLKID_MST_D_SCLK_DIV] = &mst_d_sclk_div.hw, 1016 - [AUD_CLKID_MST_E_SCLK_DIV] = &mst_e_sclk_div.hw, 1017 - [AUD_CLKID_MST_F_SCLK_DIV] = &mst_f_sclk_div.hw, 1018 - [AUD_CLKID_MST_A_SCLK_POST_EN] = &mst_a_sclk_post_en.hw, 1019 - [AUD_CLKID_MST_B_SCLK_POST_EN] = &mst_b_sclk_post_en.hw, 1020 - [AUD_CLKID_MST_C_SCLK_POST_EN] = &mst_c_sclk_post_en.hw, 1021 - [AUD_CLKID_MST_D_SCLK_POST_EN] = &mst_d_sclk_post_en.hw, 1022 - [AUD_CLKID_MST_E_SCLK_POST_EN] = &mst_e_sclk_post_en.hw, 1023 - [AUD_CLKID_MST_F_SCLK_POST_EN] = &mst_f_sclk_post_en.hw, 1024 - [AUD_CLKID_MST_A_SCLK] = &mst_a_sclk.hw, 1025 - [AUD_CLKID_MST_B_SCLK] = &mst_b_sclk.hw, 1026 - [AUD_CLKID_MST_C_SCLK] = &mst_c_sclk.hw, 1027 - [AUD_CLKID_MST_D_SCLK] = &mst_d_sclk.hw, 1028 - [AUD_CLKID_MST_E_SCLK] = &mst_e_sclk.hw, 1029 - [AUD_CLKID_MST_F_SCLK] = &mst_f_sclk.hw, 1030 - [AUD_CLKID_MST_A_LRCLK_DIV] = &mst_a_lrclk_div.hw, 1031 - [AUD_CLKID_MST_B_LRCLK_DIV] = &mst_b_lrclk_div.hw, 1032 - [AUD_CLKID_MST_C_LRCLK_DIV] = &mst_c_lrclk_div.hw, 1033 - [AUD_CLKID_MST_D_LRCLK_DIV] = &mst_d_lrclk_div.hw, 1034 - [AUD_CLKID_MST_E_LRCLK_DIV] = &mst_e_lrclk_div.hw, 1035 - [AUD_CLKID_MST_F_LRCLK_DIV] = &mst_f_lrclk_div.hw, 1036 - [AUD_CLKID_MST_A_LRCLK] = &mst_a_lrclk.hw, 1037 - [AUD_CLKID_MST_B_LRCLK] = &mst_b_lrclk.hw, 1038 - [AUD_CLKID_MST_C_LRCLK] = &mst_c_lrclk.hw, 1039 - [AUD_CLKID_MST_D_LRCLK] = &mst_d_lrclk.hw, 1040 - [AUD_CLKID_MST_E_LRCLK] = &mst_e_lrclk.hw, 1041 - [AUD_CLKID_MST_F_LRCLK] = &mst_f_lrclk.hw, 1042 - [AUD_CLKID_TDMIN_A_SCLK_SEL] = &tdmin_a_sclk_sel.hw, 1043 - [AUD_CLKID_TDMIN_B_SCLK_SEL] = &tdmin_b_sclk_sel.hw, 1044 - [AUD_CLKID_TDMIN_C_SCLK_SEL] = &tdmin_c_sclk_sel.hw, 1045 - [AUD_CLKID_TDMIN_LB_SCLK_SEL] = &tdmin_lb_sclk_sel.hw, 1046 - [AUD_CLKID_TDMOUT_A_SCLK_SEL] = &tdmout_a_sclk_sel.hw, 1047 - [AUD_CLKID_TDMOUT_B_SCLK_SEL] = &tdmout_b_sclk_sel.hw, 1048 - [AUD_CLKID_TDMOUT_C_SCLK_SEL] = &tdmout_c_sclk_sel.hw, 1049 - [AUD_CLKID_TDMIN_A_SCLK_PRE_EN] = &tdmin_a_sclk_pre_en.hw, 1050 - [AUD_CLKID_TDMIN_B_SCLK_PRE_EN] = &tdmin_b_sclk_pre_en.hw, 1051 - [AUD_CLKID_TDMIN_C_SCLK_PRE_EN] = &tdmin_c_sclk_pre_en.hw, 1052 - [AUD_CLKID_TDMIN_LB_SCLK_PRE_EN] = &tdmin_lb_sclk_pre_en.hw, 1053 - [AUD_CLKID_TDMOUT_A_SCLK_PRE_EN] = &tdmout_a_sclk_pre_en.hw, 1054 - [AUD_CLKID_TDMOUT_B_SCLK_PRE_EN] = &tdmout_b_sclk_pre_en.hw, 1055 - [AUD_CLKID_TDMOUT_C_SCLK_PRE_EN] = &tdmout_c_sclk_pre_en.hw, 1056 - [AUD_CLKID_TDMIN_A_SCLK_POST_EN] = &tdmin_a_sclk_post_en.hw, 1057 - [AUD_CLKID_TDMIN_B_SCLK_POST_EN] = &tdmin_b_sclk_post_en.hw, 1058 - [AUD_CLKID_TDMIN_C_SCLK_POST_EN] = &tdmin_c_sclk_post_en.hw, 1059 - [AUD_CLKID_TDMIN_LB_SCLK_POST_EN] = &tdmin_lb_sclk_post_en.hw, 1060 - [AUD_CLKID_TDMOUT_A_SCLK_POST_EN] = &tdmout_a_sclk_post_en.hw, 1061 - [AUD_CLKID_TDMOUT_B_SCLK_POST_EN] = &tdmout_b_sclk_post_en.hw, 1062 - [AUD_CLKID_TDMOUT_C_SCLK_POST_EN] = &tdmout_c_sclk_post_en.hw, 1063 - [AUD_CLKID_TDMIN_A_SCLK] = &tdmin_a_sclk.hw, 1064 - [AUD_CLKID_TDMIN_B_SCLK] = &tdmin_b_sclk.hw, 1065 - [AUD_CLKID_TDMIN_C_SCLK] = &tdmin_c_sclk.hw, 1066 - [AUD_CLKID_TDMIN_LB_SCLK] = &tdmin_lb_sclk.hw, 1067 - [AUD_CLKID_TDMOUT_A_SCLK] = &g12a_tdmout_a_sclk.hw, 1068 - [AUD_CLKID_TDMOUT_B_SCLK] = &g12a_tdmout_b_sclk.hw, 1069 - [AUD_CLKID_TDMOUT_C_SCLK] = &g12a_tdmout_c_sclk.hw, 1070 - [AUD_CLKID_TDMIN_A_LRCLK] = &tdmin_a_lrclk.hw, 1071 - [AUD_CLKID_TDMIN_B_LRCLK] = &tdmin_b_lrclk.hw, 1072 - [AUD_CLKID_TDMIN_C_LRCLK] = &tdmin_c_lrclk.hw, 1073 - [AUD_CLKID_TDMIN_LB_LRCLK] = &tdmin_lb_lrclk.hw, 1074 - [AUD_CLKID_TDMOUT_A_LRCLK] = &tdmout_a_lrclk.hw, 1075 - [AUD_CLKID_TDMOUT_B_LRCLK] = &tdmout_b_lrclk.hw, 1076 - [AUD_CLKID_TDMOUT_C_LRCLK] = &tdmout_c_lrclk.hw, 1077 - [AUD_CLKID_TDM_MCLK_PAD0] = &g12a_tdm_mclk_pad_0.hw, 1078 - [AUD_CLKID_TDM_MCLK_PAD1] = &g12a_tdm_mclk_pad_1.hw, 1079 - [AUD_CLKID_TDM_LRCLK_PAD0] = &g12a_tdm_lrclk_pad_0.hw, 1080 - [AUD_CLKID_TDM_LRCLK_PAD1] = &g12a_tdm_lrclk_pad_1.hw, 1081 - [AUD_CLKID_TDM_LRCLK_PAD2] = &g12a_tdm_lrclk_pad_2.hw, 1082 - [AUD_CLKID_TDM_SCLK_PAD0] = &g12a_tdm_sclk_pad_0.hw, 1083 - [AUD_CLKID_TDM_SCLK_PAD1] = &g12a_tdm_sclk_pad_1.hw, 1084 - [AUD_CLKID_TDM_SCLK_PAD2] = &g12a_tdm_sclk_pad_2.hw, 1085 - [AUD_CLKID_TOP] = &axg_aud_top, 1086 - [NR_CLKS] = NULL, 1087 - }, 1088 - .num = NR_CLKS, 943 + static struct clk_hw *g12a_audio_hw_clks[] = { 944 + [AUD_CLKID_DDR_ARB] = &ddr_arb.hw, 945 + [AUD_CLKID_PDM] = &pdm.hw, 946 + [AUD_CLKID_TDMIN_A] = &tdmin_a.hw, 947 + [AUD_CLKID_TDMIN_B] = &tdmin_b.hw, 948 + [AUD_CLKID_TDMIN_C] = &tdmin_c.hw, 949 + [AUD_CLKID_TDMIN_LB] = &tdmin_lb.hw, 950 + [AUD_CLKID_TDMOUT_A] = &tdmout_a.hw, 951 + [AUD_CLKID_TDMOUT_B] = &tdmout_b.hw, 952 + [AUD_CLKID_TDMOUT_C] = &tdmout_c.hw, 953 + [AUD_CLKID_FRDDR_A] = &frddr_a.hw, 954 + [AUD_CLKID_FRDDR_B] = &frddr_b.hw, 955 + [AUD_CLKID_FRDDR_C] = &frddr_c.hw, 956 + [AUD_CLKID_TODDR_A] = &toddr_a.hw, 957 + [AUD_CLKID_TODDR_B] = &toddr_b.hw, 958 + [AUD_CLKID_TODDR_C] = &toddr_c.hw, 959 + [AUD_CLKID_LOOPBACK] = &loopback.hw, 960 + [AUD_CLKID_SPDIFIN] = &spdifin.hw, 961 + [AUD_CLKID_SPDIFOUT] = &spdifout.hw, 962 + [AUD_CLKID_RESAMPLE] = &resample.hw, 963 + [AUD_CLKID_POWER_DETECT] = &power_detect.hw, 964 + [AUD_CLKID_SPDIFOUT_B] = &spdifout_b.hw, 965 + [AUD_CLKID_MST_A_MCLK_SEL] = &mst_a_mclk_sel.hw, 966 + [AUD_CLKID_MST_B_MCLK_SEL] = &mst_b_mclk_sel.hw, 967 + [AUD_CLKID_MST_C_MCLK_SEL] = &mst_c_mclk_sel.hw, 968 + [AUD_CLKID_MST_D_MCLK_SEL] = &mst_d_mclk_sel.hw, 969 + [AUD_CLKID_MST_E_MCLK_SEL] = &mst_e_mclk_sel.hw, 970 + [AUD_CLKID_MST_F_MCLK_SEL] = &mst_f_mclk_sel.hw, 971 + [AUD_CLKID_MST_A_MCLK_DIV] = &mst_a_mclk_div.hw, 972 + [AUD_CLKID_MST_B_MCLK_DIV] = &mst_b_mclk_div.hw, 973 + [AUD_CLKID_MST_C_MCLK_DIV] = &mst_c_mclk_div.hw, 974 + [AUD_CLKID_MST_D_MCLK_DIV] = &mst_d_mclk_div.hw, 975 + [AUD_CLKID_MST_E_MCLK_DIV] = &mst_e_mclk_div.hw, 976 + [AUD_CLKID_MST_F_MCLK_DIV] = &mst_f_mclk_div.hw, 977 + [AUD_CLKID_MST_A_MCLK] = &mst_a_mclk.hw, 978 + [AUD_CLKID_MST_B_MCLK] = &mst_b_mclk.hw, 979 + [AUD_CLKID_MST_C_MCLK] = &mst_c_mclk.hw, 980 + [AUD_CLKID_MST_D_MCLK] = &mst_d_mclk.hw, 981 + [AUD_CLKID_MST_E_MCLK] = &mst_e_mclk.hw, 982 + [AUD_CLKID_MST_F_MCLK] = &mst_f_mclk.hw, 983 + [AUD_CLKID_SPDIFOUT_CLK_SEL] = &spdifout_clk_sel.hw, 984 + [AUD_CLKID_SPDIFOUT_CLK_DIV] = &spdifout_clk_div.hw, 985 + [AUD_CLKID_SPDIFOUT_CLK] = &spdifout_clk.hw, 986 + [AUD_CLKID_SPDIFOUT_B_CLK_SEL] = &spdifout_b_clk_sel.hw, 987 + [AUD_CLKID_SPDIFOUT_B_CLK_DIV] = &spdifout_b_clk_div.hw, 988 + [AUD_CLKID_SPDIFOUT_B_CLK] = &spdifout_b_clk.hw, 989 + [AUD_CLKID_SPDIFIN_CLK_SEL] = &spdifin_clk_sel.hw, 990 + [AUD_CLKID_SPDIFIN_CLK_DIV] = &spdifin_clk_div.hw, 991 + [AUD_CLKID_SPDIFIN_CLK] = &spdifin_clk.hw, 992 + [AUD_CLKID_PDM_DCLK_SEL] = &pdm_dclk_sel.hw, 993 + [AUD_CLKID_PDM_DCLK_DIV] = &pdm_dclk_div.hw, 994 + [AUD_CLKID_PDM_DCLK] = &pdm_dclk.hw, 995 + [AUD_CLKID_PDM_SYSCLK_SEL] = &pdm_sysclk_sel.hw, 996 + [AUD_CLKID_PDM_SYSCLK_DIV] = &pdm_sysclk_div.hw, 997 + [AUD_CLKID_PDM_SYSCLK] = &pdm_sysclk.hw, 998 + [AUD_CLKID_MST_A_SCLK_PRE_EN] = &mst_a_sclk_pre_en.hw, 999 + [AUD_CLKID_MST_B_SCLK_PRE_EN] = &mst_b_sclk_pre_en.hw, 1000 + [AUD_CLKID_MST_C_SCLK_PRE_EN] = &mst_c_sclk_pre_en.hw, 1001 + [AUD_CLKID_MST_D_SCLK_PRE_EN] = &mst_d_sclk_pre_en.hw, 1002 + [AUD_CLKID_MST_E_SCLK_PRE_EN] = &mst_e_sclk_pre_en.hw, 1003 + [AUD_CLKID_MST_F_SCLK_PRE_EN] = &mst_f_sclk_pre_en.hw, 1004 + [AUD_CLKID_MST_A_SCLK_DIV] = &mst_a_sclk_div.hw, 1005 + [AUD_CLKID_MST_B_SCLK_DIV] = &mst_b_sclk_div.hw, 1006 + [AUD_CLKID_MST_C_SCLK_DIV] = &mst_c_sclk_div.hw, 1007 + [AUD_CLKID_MST_D_SCLK_DIV] = &mst_d_sclk_div.hw, 1008 + [AUD_CLKID_MST_E_SCLK_DIV] = &mst_e_sclk_div.hw, 1009 + [AUD_CLKID_MST_F_SCLK_DIV] = &mst_f_sclk_div.hw, 1010 + [AUD_CLKID_MST_A_SCLK_POST_EN] = &mst_a_sclk_post_en.hw, 1011 + [AUD_CLKID_MST_B_SCLK_POST_EN] = &mst_b_sclk_post_en.hw, 1012 + [AUD_CLKID_MST_C_SCLK_POST_EN] = &mst_c_sclk_post_en.hw, 1013 + [AUD_CLKID_MST_D_SCLK_POST_EN] = &mst_d_sclk_post_en.hw, 1014 + [AUD_CLKID_MST_E_SCLK_POST_EN] = &mst_e_sclk_post_en.hw, 1015 + [AUD_CLKID_MST_F_SCLK_POST_EN] = &mst_f_sclk_post_en.hw, 1016 + [AUD_CLKID_MST_A_SCLK] = &mst_a_sclk.hw, 1017 + [AUD_CLKID_MST_B_SCLK] = &mst_b_sclk.hw, 1018 + [AUD_CLKID_MST_C_SCLK] = &mst_c_sclk.hw, 1019 + [AUD_CLKID_MST_D_SCLK] = &mst_d_sclk.hw, 1020 + [AUD_CLKID_MST_E_SCLK] = &mst_e_sclk.hw, 1021 + [AUD_CLKID_MST_F_SCLK] = &mst_f_sclk.hw, 1022 + [AUD_CLKID_MST_A_LRCLK_DIV] = &mst_a_lrclk_div.hw, 1023 + [AUD_CLKID_MST_B_LRCLK_DIV] = &mst_b_lrclk_div.hw, 1024 + [AUD_CLKID_MST_C_LRCLK_DIV] = &mst_c_lrclk_div.hw, 1025 + [AUD_CLKID_MST_D_LRCLK_DIV] = &mst_d_lrclk_div.hw, 1026 + [AUD_CLKID_MST_E_LRCLK_DIV] = &mst_e_lrclk_div.hw, 1027 + [AUD_CLKID_MST_F_LRCLK_DIV] = &mst_f_lrclk_div.hw, 1028 + [AUD_CLKID_MST_A_LRCLK] = &mst_a_lrclk.hw, 1029 + [AUD_CLKID_MST_B_LRCLK] = &mst_b_lrclk.hw, 1030 + [AUD_CLKID_MST_C_LRCLK] = &mst_c_lrclk.hw, 1031 + [AUD_CLKID_MST_D_LRCLK] = &mst_d_lrclk.hw, 1032 + [AUD_CLKID_MST_E_LRCLK] = &mst_e_lrclk.hw, 1033 + [AUD_CLKID_MST_F_LRCLK] = &mst_f_lrclk.hw, 1034 + [AUD_CLKID_TDMIN_A_SCLK_SEL] = &tdmin_a_sclk_sel.hw, 1035 + [AUD_CLKID_TDMIN_B_SCLK_SEL] = &tdmin_b_sclk_sel.hw, 1036 + [AUD_CLKID_TDMIN_C_SCLK_SEL] = &tdmin_c_sclk_sel.hw, 1037 + [AUD_CLKID_TDMIN_LB_SCLK_SEL] = &tdmin_lb_sclk_sel.hw, 1038 + [AUD_CLKID_TDMOUT_A_SCLK_SEL] = &tdmout_a_sclk_sel.hw, 1039 + [AUD_CLKID_TDMOUT_B_SCLK_SEL] = &tdmout_b_sclk_sel.hw, 1040 + [AUD_CLKID_TDMOUT_C_SCLK_SEL] = &tdmout_c_sclk_sel.hw, 1041 + [AUD_CLKID_TDMIN_A_SCLK_PRE_EN] = &tdmin_a_sclk_pre_en.hw, 1042 + [AUD_CLKID_TDMIN_B_SCLK_PRE_EN] = &tdmin_b_sclk_pre_en.hw, 1043 + [AUD_CLKID_TDMIN_C_SCLK_PRE_EN] = &tdmin_c_sclk_pre_en.hw, 1044 + [AUD_CLKID_TDMIN_LB_SCLK_PRE_EN] = &tdmin_lb_sclk_pre_en.hw, 1045 + [AUD_CLKID_TDMOUT_A_SCLK_PRE_EN] = &tdmout_a_sclk_pre_en.hw, 1046 + [AUD_CLKID_TDMOUT_B_SCLK_PRE_EN] = &tdmout_b_sclk_pre_en.hw, 1047 + [AUD_CLKID_TDMOUT_C_SCLK_PRE_EN] = &tdmout_c_sclk_pre_en.hw, 1048 + [AUD_CLKID_TDMIN_A_SCLK_POST_EN] = &tdmin_a_sclk_post_en.hw, 1049 + [AUD_CLKID_TDMIN_B_SCLK_POST_EN] = &tdmin_b_sclk_post_en.hw, 1050 + [AUD_CLKID_TDMIN_C_SCLK_POST_EN] = &tdmin_c_sclk_post_en.hw, 1051 + [AUD_CLKID_TDMIN_LB_SCLK_POST_EN] = &tdmin_lb_sclk_post_en.hw, 1052 + [AUD_CLKID_TDMOUT_A_SCLK_POST_EN] = &tdmout_a_sclk_post_en.hw, 1053 + [AUD_CLKID_TDMOUT_B_SCLK_POST_EN] = &tdmout_b_sclk_post_en.hw, 1054 + [AUD_CLKID_TDMOUT_C_SCLK_POST_EN] = &tdmout_c_sclk_post_en.hw, 1055 + [AUD_CLKID_TDMIN_A_SCLK] = &tdmin_a_sclk.hw, 1056 + [AUD_CLKID_TDMIN_B_SCLK] = &tdmin_b_sclk.hw, 1057 + [AUD_CLKID_TDMIN_C_SCLK] = &tdmin_c_sclk.hw, 1058 + [AUD_CLKID_TDMIN_LB_SCLK] = &tdmin_lb_sclk.hw, 1059 + [AUD_CLKID_TDMOUT_A_SCLK] = &g12a_tdmout_a_sclk.hw, 1060 + [AUD_CLKID_TDMOUT_B_SCLK] = &g12a_tdmout_b_sclk.hw, 1061 + [AUD_CLKID_TDMOUT_C_SCLK] = &g12a_tdmout_c_sclk.hw, 1062 + [AUD_CLKID_TDMIN_A_LRCLK] = &tdmin_a_lrclk.hw, 1063 + [AUD_CLKID_TDMIN_B_LRCLK] = &tdmin_b_lrclk.hw, 1064 + [AUD_CLKID_TDMIN_C_LRCLK] = &tdmin_c_lrclk.hw, 1065 + [AUD_CLKID_TDMIN_LB_LRCLK] = &tdmin_lb_lrclk.hw, 1066 + [AUD_CLKID_TDMOUT_A_LRCLK] = &tdmout_a_lrclk.hw, 1067 + [AUD_CLKID_TDMOUT_B_LRCLK] = &tdmout_b_lrclk.hw, 1068 + [AUD_CLKID_TDMOUT_C_LRCLK] = &tdmout_c_lrclk.hw, 1069 + [AUD_CLKID_TDM_MCLK_PAD0] = &g12a_tdm_mclk_pad_0.hw, 1070 + [AUD_CLKID_TDM_MCLK_PAD1] = &g12a_tdm_mclk_pad_1.hw, 1071 + [AUD_CLKID_TDM_LRCLK_PAD0] = &g12a_tdm_lrclk_pad_0.hw, 1072 + [AUD_CLKID_TDM_LRCLK_PAD1] = &g12a_tdm_lrclk_pad_1.hw, 1073 + [AUD_CLKID_TDM_LRCLK_PAD2] = &g12a_tdm_lrclk_pad_2.hw, 1074 + [AUD_CLKID_TDM_SCLK_PAD0] = &g12a_tdm_sclk_pad_0.hw, 1075 + [AUD_CLKID_TDM_SCLK_PAD1] = &g12a_tdm_sclk_pad_1.hw, 1076 + [AUD_CLKID_TDM_SCLK_PAD2] = &g12a_tdm_sclk_pad_2.hw, 1077 + [AUD_CLKID_TOP] = &axg_aud_top, 1089 1078 }; 1090 1079 1091 1080 /* 1092 1081 * Array of all SM1 clocks provided by this provider 1093 1082 * The input clocks of the controller will be populated at runtime 1094 1083 */ 1095 - static struct clk_hw_onecell_data sm1_audio_hw_onecell_data = { 1096 - .hws = { 1097 - [AUD_CLKID_DDR_ARB] = &ddr_arb.hw, 1098 - [AUD_CLKID_PDM] = &pdm.hw, 1099 - [AUD_CLKID_TDMIN_A] = &tdmin_a.hw, 1100 - [AUD_CLKID_TDMIN_B] = &tdmin_b.hw, 1101 - [AUD_CLKID_TDMIN_C] = &tdmin_c.hw, 1102 - [AUD_CLKID_TDMIN_LB] = &tdmin_lb.hw, 1103 - [AUD_CLKID_TDMOUT_A] = &tdmout_a.hw, 1104 - [AUD_CLKID_TDMOUT_B] = &tdmout_b.hw, 1105 - [AUD_CLKID_TDMOUT_C] = &tdmout_c.hw, 1106 - [AUD_CLKID_FRDDR_A] = &frddr_a.hw, 1107 - [AUD_CLKID_FRDDR_B] = &frddr_b.hw, 1108 - [AUD_CLKID_FRDDR_C] = &frddr_c.hw, 1109 - [AUD_CLKID_TODDR_A] = &toddr_a.hw, 1110 - [AUD_CLKID_TODDR_B] = &toddr_b.hw, 1111 - [AUD_CLKID_TODDR_C] = &toddr_c.hw, 1112 - [AUD_CLKID_LOOPBACK] = &loopback.hw, 1113 - [AUD_CLKID_SPDIFIN] = &spdifin.hw, 1114 - [AUD_CLKID_SPDIFOUT] = &spdifout.hw, 1115 - [AUD_CLKID_RESAMPLE] = &resample.hw, 1116 - [AUD_CLKID_SPDIFOUT_B] = &spdifout_b.hw, 1117 - [AUD_CLKID_MST_A_MCLK_SEL] = &sm1_mst_a_mclk_sel.hw, 1118 - [AUD_CLKID_MST_B_MCLK_SEL] = &sm1_mst_b_mclk_sel.hw, 1119 - [AUD_CLKID_MST_C_MCLK_SEL] = &sm1_mst_c_mclk_sel.hw, 1120 - [AUD_CLKID_MST_D_MCLK_SEL] = &sm1_mst_d_mclk_sel.hw, 1121 - [AUD_CLKID_MST_E_MCLK_SEL] = &sm1_mst_e_mclk_sel.hw, 1122 - [AUD_CLKID_MST_F_MCLK_SEL] = &sm1_mst_f_mclk_sel.hw, 1123 - [AUD_CLKID_MST_A_MCLK_DIV] = &sm1_mst_a_mclk_div.hw, 1124 - [AUD_CLKID_MST_B_MCLK_DIV] = &sm1_mst_b_mclk_div.hw, 1125 - [AUD_CLKID_MST_C_MCLK_DIV] = &sm1_mst_c_mclk_div.hw, 1126 - [AUD_CLKID_MST_D_MCLK_DIV] = &sm1_mst_d_mclk_div.hw, 1127 - [AUD_CLKID_MST_E_MCLK_DIV] = &sm1_mst_e_mclk_div.hw, 1128 - [AUD_CLKID_MST_F_MCLK_DIV] = &sm1_mst_f_mclk_div.hw, 1129 - [AUD_CLKID_MST_A_MCLK] = &sm1_mst_a_mclk.hw, 1130 - [AUD_CLKID_MST_B_MCLK] = &sm1_mst_b_mclk.hw, 1131 - [AUD_CLKID_MST_C_MCLK] = &sm1_mst_c_mclk.hw, 1132 - [AUD_CLKID_MST_D_MCLK] = &sm1_mst_d_mclk.hw, 1133 - [AUD_CLKID_MST_E_MCLK] = &sm1_mst_e_mclk.hw, 1134 - [AUD_CLKID_MST_F_MCLK] = &sm1_mst_f_mclk.hw, 1135 - [AUD_CLKID_SPDIFOUT_CLK_SEL] = &spdifout_clk_sel.hw, 1136 - [AUD_CLKID_SPDIFOUT_CLK_DIV] = &spdifout_clk_div.hw, 1137 - [AUD_CLKID_SPDIFOUT_CLK] = &spdifout_clk.hw, 1138 - [AUD_CLKID_SPDIFOUT_B_CLK_SEL] = &spdifout_b_clk_sel.hw, 1139 - [AUD_CLKID_SPDIFOUT_B_CLK_DIV] = &spdifout_b_clk_div.hw, 1140 - [AUD_CLKID_SPDIFOUT_B_CLK] = &spdifout_b_clk.hw, 1141 - [AUD_CLKID_SPDIFIN_CLK_SEL] = &spdifin_clk_sel.hw, 1142 - [AUD_CLKID_SPDIFIN_CLK_DIV] = &spdifin_clk_div.hw, 1143 - [AUD_CLKID_SPDIFIN_CLK] = &spdifin_clk.hw, 1144 - [AUD_CLKID_PDM_DCLK_SEL] = &pdm_dclk_sel.hw, 1145 - [AUD_CLKID_PDM_DCLK_DIV] = &pdm_dclk_div.hw, 1146 - [AUD_CLKID_PDM_DCLK] = &pdm_dclk.hw, 1147 - [AUD_CLKID_PDM_SYSCLK_SEL] = &pdm_sysclk_sel.hw, 1148 - [AUD_CLKID_PDM_SYSCLK_DIV] = &pdm_sysclk_div.hw, 1149 - [AUD_CLKID_PDM_SYSCLK] = &pdm_sysclk.hw, 1150 - [AUD_CLKID_MST_A_SCLK_PRE_EN] = &mst_a_sclk_pre_en.hw, 1151 - [AUD_CLKID_MST_B_SCLK_PRE_EN] = &mst_b_sclk_pre_en.hw, 1152 - [AUD_CLKID_MST_C_SCLK_PRE_EN] = &mst_c_sclk_pre_en.hw, 1153 - [AUD_CLKID_MST_D_SCLK_PRE_EN] = &mst_d_sclk_pre_en.hw, 1154 - [AUD_CLKID_MST_E_SCLK_PRE_EN] = &mst_e_sclk_pre_en.hw, 1155 - [AUD_CLKID_MST_F_SCLK_PRE_EN] = &mst_f_sclk_pre_en.hw, 1156 - [AUD_CLKID_MST_A_SCLK_DIV] = &mst_a_sclk_div.hw, 1157 - [AUD_CLKID_MST_B_SCLK_DIV] = &mst_b_sclk_div.hw, 1158 - [AUD_CLKID_MST_C_SCLK_DIV] = &mst_c_sclk_div.hw, 1159 - [AUD_CLKID_MST_D_SCLK_DIV] = &mst_d_sclk_div.hw, 1160 - [AUD_CLKID_MST_E_SCLK_DIV] = &mst_e_sclk_div.hw, 1161 - [AUD_CLKID_MST_F_SCLK_DIV] = &mst_f_sclk_div.hw, 1162 - [AUD_CLKID_MST_A_SCLK_POST_EN] = &mst_a_sclk_post_en.hw, 1163 - [AUD_CLKID_MST_B_SCLK_POST_EN] = &mst_b_sclk_post_en.hw, 1164 - [AUD_CLKID_MST_C_SCLK_POST_EN] = &mst_c_sclk_post_en.hw, 1165 - [AUD_CLKID_MST_D_SCLK_POST_EN] = &mst_d_sclk_post_en.hw, 1166 - [AUD_CLKID_MST_E_SCLK_POST_EN] = &mst_e_sclk_post_en.hw, 1167 - [AUD_CLKID_MST_F_SCLK_POST_EN] = &mst_f_sclk_post_en.hw, 1168 - [AUD_CLKID_MST_A_SCLK] = &mst_a_sclk.hw, 1169 - [AUD_CLKID_MST_B_SCLK] = &mst_b_sclk.hw, 1170 - [AUD_CLKID_MST_C_SCLK] = &mst_c_sclk.hw, 1171 - [AUD_CLKID_MST_D_SCLK] = &mst_d_sclk.hw, 1172 - [AUD_CLKID_MST_E_SCLK] = &mst_e_sclk.hw, 1173 - [AUD_CLKID_MST_F_SCLK] = &mst_f_sclk.hw, 1174 - [AUD_CLKID_MST_A_LRCLK_DIV] = &mst_a_lrclk_div.hw, 1175 - [AUD_CLKID_MST_B_LRCLK_DIV] = &mst_b_lrclk_div.hw, 1176 - [AUD_CLKID_MST_C_LRCLK_DIV] = &mst_c_lrclk_div.hw, 1177 - [AUD_CLKID_MST_D_LRCLK_DIV] = &mst_d_lrclk_div.hw, 1178 - [AUD_CLKID_MST_E_LRCLK_DIV] = &mst_e_lrclk_div.hw, 1179 - [AUD_CLKID_MST_F_LRCLK_DIV] = &mst_f_lrclk_div.hw, 1180 - [AUD_CLKID_MST_A_LRCLK] = &mst_a_lrclk.hw, 1181 - [AUD_CLKID_MST_B_LRCLK] = &mst_b_lrclk.hw, 1182 - [AUD_CLKID_MST_C_LRCLK] = &mst_c_lrclk.hw, 1183 - [AUD_CLKID_MST_D_LRCLK] = &mst_d_lrclk.hw, 1184 - [AUD_CLKID_MST_E_LRCLK] = &mst_e_lrclk.hw, 1185 - [AUD_CLKID_MST_F_LRCLK] = &mst_f_lrclk.hw, 1186 - [AUD_CLKID_TDMIN_A_SCLK_SEL] = &tdmin_a_sclk_sel.hw, 1187 - [AUD_CLKID_TDMIN_B_SCLK_SEL] = &tdmin_b_sclk_sel.hw, 1188 - [AUD_CLKID_TDMIN_C_SCLK_SEL] = &tdmin_c_sclk_sel.hw, 1189 - [AUD_CLKID_TDMIN_LB_SCLK_SEL] = &tdmin_lb_sclk_sel.hw, 1190 - [AUD_CLKID_TDMOUT_A_SCLK_SEL] = &tdmout_a_sclk_sel.hw, 1191 - [AUD_CLKID_TDMOUT_B_SCLK_SEL] = &tdmout_b_sclk_sel.hw, 1192 - [AUD_CLKID_TDMOUT_C_SCLK_SEL] = &tdmout_c_sclk_sel.hw, 1193 - [AUD_CLKID_TDMIN_A_SCLK_PRE_EN] = &tdmin_a_sclk_pre_en.hw, 1194 - [AUD_CLKID_TDMIN_B_SCLK_PRE_EN] = &tdmin_b_sclk_pre_en.hw, 1195 - [AUD_CLKID_TDMIN_C_SCLK_PRE_EN] = &tdmin_c_sclk_pre_en.hw, 1196 - [AUD_CLKID_TDMIN_LB_SCLK_PRE_EN] = &tdmin_lb_sclk_pre_en.hw, 1197 - [AUD_CLKID_TDMOUT_A_SCLK_PRE_EN] = &tdmout_a_sclk_pre_en.hw, 1198 - [AUD_CLKID_TDMOUT_B_SCLK_PRE_EN] = &tdmout_b_sclk_pre_en.hw, 1199 - [AUD_CLKID_TDMOUT_C_SCLK_PRE_EN] = &tdmout_c_sclk_pre_en.hw, 1200 - [AUD_CLKID_TDMIN_A_SCLK_POST_EN] = &tdmin_a_sclk_post_en.hw, 1201 - [AUD_CLKID_TDMIN_B_SCLK_POST_EN] = &tdmin_b_sclk_post_en.hw, 1202 - [AUD_CLKID_TDMIN_C_SCLK_POST_EN] = &tdmin_c_sclk_post_en.hw, 1203 - [AUD_CLKID_TDMIN_LB_SCLK_POST_EN] = &tdmin_lb_sclk_post_en.hw, 1204 - [AUD_CLKID_TDMOUT_A_SCLK_POST_EN] = &tdmout_a_sclk_post_en.hw, 1205 - [AUD_CLKID_TDMOUT_B_SCLK_POST_EN] = &tdmout_b_sclk_post_en.hw, 1206 - [AUD_CLKID_TDMOUT_C_SCLK_POST_EN] = &tdmout_c_sclk_post_en.hw, 1207 - [AUD_CLKID_TDMIN_A_SCLK] = &tdmin_a_sclk.hw, 1208 - [AUD_CLKID_TDMIN_B_SCLK] = &tdmin_b_sclk.hw, 1209 - [AUD_CLKID_TDMIN_C_SCLK] = &tdmin_c_sclk.hw, 1210 - [AUD_CLKID_TDMIN_LB_SCLK] = &tdmin_lb_sclk.hw, 1211 - [AUD_CLKID_TDMOUT_A_SCLK] = &g12a_tdmout_a_sclk.hw, 1212 - [AUD_CLKID_TDMOUT_B_SCLK] = &g12a_tdmout_b_sclk.hw, 1213 - [AUD_CLKID_TDMOUT_C_SCLK] = &g12a_tdmout_c_sclk.hw, 1214 - [AUD_CLKID_TDMIN_A_LRCLK] = &tdmin_a_lrclk.hw, 1215 - [AUD_CLKID_TDMIN_B_LRCLK] = &tdmin_b_lrclk.hw, 1216 - [AUD_CLKID_TDMIN_C_LRCLK] = &tdmin_c_lrclk.hw, 1217 - [AUD_CLKID_TDMIN_LB_LRCLK] = &tdmin_lb_lrclk.hw, 1218 - [AUD_CLKID_TDMOUT_A_LRCLK] = &tdmout_a_lrclk.hw, 1219 - [AUD_CLKID_TDMOUT_B_LRCLK] = &tdmout_b_lrclk.hw, 1220 - [AUD_CLKID_TDMOUT_C_LRCLK] = &tdmout_c_lrclk.hw, 1221 - [AUD_CLKID_TDM_MCLK_PAD0] = &sm1_tdm_mclk_pad_0.hw, 1222 - [AUD_CLKID_TDM_MCLK_PAD1] = &sm1_tdm_mclk_pad_1.hw, 1223 - [AUD_CLKID_TDM_LRCLK_PAD0] = &sm1_tdm_lrclk_pad_0.hw, 1224 - [AUD_CLKID_TDM_LRCLK_PAD1] = &sm1_tdm_lrclk_pad_1.hw, 1225 - [AUD_CLKID_TDM_LRCLK_PAD2] = &sm1_tdm_lrclk_pad_2.hw, 1226 - [AUD_CLKID_TDM_SCLK_PAD0] = &sm1_tdm_sclk_pad_0.hw, 1227 - [AUD_CLKID_TDM_SCLK_PAD1] = &sm1_tdm_sclk_pad_1.hw, 1228 - [AUD_CLKID_TDM_SCLK_PAD2] = &sm1_tdm_sclk_pad_2.hw, 1229 - [AUD_CLKID_TOP] = &sm1_aud_top.hw, 1230 - [AUD_CLKID_TORAM] = &toram.hw, 1231 - [AUD_CLKID_EQDRC] = &eqdrc.hw, 1232 - [AUD_CLKID_RESAMPLE_B] = &resample_b.hw, 1233 - [AUD_CLKID_TOVAD] = &tovad.hw, 1234 - [AUD_CLKID_LOCKER] = &locker.hw, 1235 - [AUD_CLKID_SPDIFIN_LB] = &spdifin_lb.hw, 1236 - [AUD_CLKID_FRDDR_D] = &frddr_d.hw, 1237 - [AUD_CLKID_TODDR_D] = &toddr_d.hw, 1238 - [AUD_CLKID_LOOPBACK_B] = &loopback_b.hw, 1239 - [AUD_CLKID_CLK81_EN] = &sm1_clk81_en.hw, 1240 - [AUD_CLKID_SYSCLK_A_DIV] = &sm1_sysclk_a_div.hw, 1241 - [AUD_CLKID_SYSCLK_A_EN] = &sm1_sysclk_a_en.hw, 1242 - [AUD_CLKID_SYSCLK_B_DIV] = &sm1_sysclk_b_div.hw, 1243 - [AUD_CLKID_SYSCLK_B_EN] = &sm1_sysclk_b_en.hw, 1244 - [NR_CLKS] = NULL, 1245 - }, 1246 - .num = NR_CLKS, 1084 + static struct clk_hw *sm1_audio_hw_clks[] = { 1085 + [AUD_CLKID_DDR_ARB] = &ddr_arb.hw, 1086 + [AUD_CLKID_PDM] = &pdm.hw, 1087 + [AUD_CLKID_TDMIN_A] = &tdmin_a.hw, 1088 + [AUD_CLKID_TDMIN_B] = &tdmin_b.hw, 1089 + [AUD_CLKID_TDMIN_C] = &tdmin_c.hw, 1090 + [AUD_CLKID_TDMIN_LB] = &tdmin_lb.hw, 1091 + [AUD_CLKID_TDMOUT_A] = &tdmout_a.hw, 1092 + [AUD_CLKID_TDMOUT_B] = &tdmout_b.hw, 1093 + [AUD_CLKID_TDMOUT_C] = &tdmout_c.hw, 1094 + [AUD_CLKID_FRDDR_A] = &frddr_a.hw, 1095 + [AUD_CLKID_FRDDR_B] = &frddr_b.hw, 1096 + [AUD_CLKID_FRDDR_C] = &frddr_c.hw, 1097 + [AUD_CLKID_TODDR_A] = &toddr_a.hw, 1098 + [AUD_CLKID_TODDR_B] = &toddr_b.hw, 1099 + [AUD_CLKID_TODDR_C] = &toddr_c.hw, 1100 + [AUD_CLKID_LOOPBACK] = &loopback.hw, 1101 + [AUD_CLKID_SPDIFIN] = &spdifin.hw, 1102 + [AUD_CLKID_SPDIFOUT] = &spdifout.hw, 1103 + [AUD_CLKID_RESAMPLE] = &resample.hw, 1104 + [AUD_CLKID_SPDIFOUT_B] = &spdifout_b.hw, 1105 + [AUD_CLKID_MST_A_MCLK_SEL] = &sm1_mst_a_mclk_sel.hw, 1106 + [AUD_CLKID_MST_B_MCLK_SEL] = &sm1_mst_b_mclk_sel.hw, 1107 + [AUD_CLKID_MST_C_MCLK_SEL] = &sm1_mst_c_mclk_sel.hw, 1108 + [AUD_CLKID_MST_D_MCLK_SEL] = &sm1_mst_d_mclk_sel.hw, 1109 + [AUD_CLKID_MST_E_MCLK_SEL] = &sm1_mst_e_mclk_sel.hw, 1110 + [AUD_CLKID_MST_F_MCLK_SEL] = &sm1_mst_f_mclk_sel.hw, 1111 + [AUD_CLKID_MST_A_MCLK_DIV] = &sm1_mst_a_mclk_div.hw, 1112 + [AUD_CLKID_MST_B_MCLK_DIV] = &sm1_mst_b_mclk_div.hw, 1113 + [AUD_CLKID_MST_C_MCLK_DIV] = &sm1_mst_c_mclk_div.hw, 1114 + [AUD_CLKID_MST_D_MCLK_DIV] = &sm1_mst_d_mclk_div.hw, 1115 + [AUD_CLKID_MST_E_MCLK_DIV] = &sm1_mst_e_mclk_div.hw, 1116 + [AUD_CLKID_MST_F_MCLK_DIV] = &sm1_mst_f_mclk_div.hw, 1117 + [AUD_CLKID_MST_A_MCLK] = &sm1_mst_a_mclk.hw, 1118 + [AUD_CLKID_MST_B_MCLK] = &sm1_mst_b_mclk.hw, 1119 + [AUD_CLKID_MST_C_MCLK] = &sm1_mst_c_mclk.hw, 1120 + [AUD_CLKID_MST_D_MCLK] = &sm1_mst_d_mclk.hw, 1121 + [AUD_CLKID_MST_E_MCLK] = &sm1_mst_e_mclk.hw, 1122 + [AUD_CLKID_MST_F_MCLK] = &sm1_mst_f_mclk.hw, 1123 + [AUD_CLKID_SPDIFOUT_CLK_SEL] = &spdifout_clk_sel.hw, 1124 + [AUD_CLKID_SPDIFOUT_CLK_DIV] = &spdifout_clk_div.hw, 1125 + [AUD_CLKID_SPDIFOUT_CLK] = &spdifout_clk.hw, 1126 + [AUD_CLKID_SPDIFOUT_B_CLK_SEL] = &spdifout_b_clk_sel.hw, 1127 + [AUD_CLKID_SPDIFOUT_B_CLK_DIV] = &spdifout_b_clk_div.hw, 1128 + [AUD_CLKID_SPDIFOUT_B_CLK] = &spdifout_b_clk.hw, 1129 + [AUD_CLKID_SPDIFIN_CLK_SEL] = &spdifin_clk_sel.hw, 1130 + [AUD_CLKID_SPDIFIN_CLK_DIV] = &spdifin_clk_div.hw, 1131 + [AUD_CLKID_SPDIFIN_CLK] = &spdifin_clk.hw, 1132 + [AUD_CLKID_PDM_DCLK_SEL] = &pdm_dclk_sel.hw, 1133 + [AUD_CLKID_PDM_DCLK_DIV] = &pdm_dclk_div.hw, 1134 + [AUD_CLKID_PDM_DCLK] = &pdm_dclk.hw, 1135 + [AUD_CLKID_PDM_SYSCLK_SEL] = &pdm_sysclk_sel.hw, 1136 + [AUD_CLKID_PDM_SYSCLK_DIV] = &pdm_sysclk_div.hw, 1137 + [AUD_CLKID_PDM_SYSCLK] = &pdm_sysclk.hw, 1138 + [AUD_CLKID_MST_A_SCLK_PRE_EN] = &mst_a_sclk_pre_en.hw, 1139 + [AUD_CLKID_MST_B_SCLK_PRE_EN] = &mst_b_sclk_pre_en.hw, 1140 + [AUD_CLKID_MST_C_SCLK_PRE_EN] = &mst_c_sclk_pre_en.hw, 1141 + [AUD_CLKID_MST_D_SCLK_PRE_EN] = &mst_d_sclk_pre_en.hw, 1142 + [AUD_CLKID_MST_E_SCLK_PRE_EN] = &mst_e_sclk_pre_en.hw, 1143 + [AUD_CLKID_MST_F_SCLK_PRE_EN] = &mst_f_sclk_pre_en.hw, 1144 + [AUD_CLKID_MST_A_SCLK_DIV] = &mst_a_sclk_div.hw, 1145 + [AUD_CLKID_MST_B_SCLK_DIV] = &mst_b_sclk_div.hw, 1146 + [AUD_CLKID_MST_C_SCLK_DIV] = &mst_c_sclk_div.hw, 1147 + [AUD_CLKID_MST_D_SCLK_DIV] = &mst_d_sclk_div.hw, 1148 + [AUD_CLKID_MST_E_SCLK_DIV] = &mst_e_sclk_div.hw, 1149 + [AUD_CLKID_MST_F_SCLK_DIV] = &mst_f_sclk_div.hw, 1150 + [AUD_CLKID_MST_A_SCLK_POST_EN] = &mst_a_sclk_post_en.hw, 1151 + [AUD_CLKID_MST_B_SCLK_POST_EN] = &mst_b_sclk_post_en.hw, 1152 + [AUD_CLKID_MST_C_SCLK_POST_EN] = &mst_c_sclk_post_en.hw, 1153 + [AUD_CLKID_MST_D_SCLK_POST_EN] = &mst_d_sclk_post_en.hw, 1154 + [AUD_CLKID_MST_E_SCLK_POST_EN] = &mst_e_sclk_post_en.hw, 1155 + [AUD_CLKID_MST_F_SCLK_POST_EN] = &mst_f_sclk_post_en.hw, 1156 + [AUD_CLKID_MST_A_SCLK] = &mst_a_sclk.hw, 1157 + [AUD_CLKID_MST_B_SCLK] = &mst_b_sclk.hw, 1158 + [AUD_CLKID_MST_C_SCLK] = &mst_c_sclk.hw, 1159 + [AUD_CLKID_MST_D_SCLK] = &mst_d_sclk.hw, 1160 + [AUD_CLKID_MST_E_SCLK] = &mst_e_sclk.hw, 1161 + [AUD_CLKID_MST_F_SCLK] = &mst_f_sclk.hw, 1162 + [AUD_CLKID_MST_A_LRCLK_DIV] = &mst_a_lrclk_div.hw, 1163 + [AUD_CLKID_MST_B_LRCLK_DIV] = &mst_b_lrclk_div.hw, 1164 + [AUD_CLKID_MST_C_LRCLK_DIV] = &mst_c_lrclk_div.hw, 1165 + [AUD_CLKID_MST_D_LRCLK_DIV] = &mst_d_lrclk_div.hw, 1166 + [AUD_CLKID_MST_E_LRCLK_DIV] = &mst_e_lrclk_div.hw, 1167 + [AUD_CLKID_MST_F_LRCLK_DIV] = &mst_f_lrclk_div.hw, 1168 + [AUD_CLKID_MST_A_LRCLK] = &mst_a_lrclk.hw, 1169 + [AUD_CLKID_MST_B_LRCLK] = &mst_b_lrclk.hw, 1170 + [AUD_CLKID_MST_C_LRCLK] = &mst_c_lrclk.hw, 1171 + [AUD_CLKID_MST_D_LRCLK] = &mst_d_lrclk.hw, 1172 + [AUD_CLKID_MST_E_LRCLK] = &mst_e_lrclk.hw, 1173 + [AUD_CLKID_MST_F_LRCLK] = &mst_f_lrclk.hw, 1174 + [AUD_CLKID_TDMIN_A_SCLK_SEL] = &tdmin_a_sclk_sel.hw, 1175 + [AUD_CLKID_TDMIN_B_SCLK_SEL] = &tdmin_b_sclk_sel.hw, 1176 + [AUD_CLKID_TDMIN_C_SCLK_SEL] = &tdmin_c_sclk_sel.hw, 1177 + [AUD_CLKID_TDMIN_LB_SCLK_SEL] = &tdmin_lb_sclk_sel.hw, 1178 + [AUD_CLKID_TDMOUT_A_SCLK_SEL] = &tdmout_a_sclk_sel.hw, 1179 + [AUD_CLKID_TDMOUT_B_SCLK_SEL] = &tdmout_b_sclk_sel.hw, 1180 + [AUD_CLKID_TDMOUT_C_SCLK_SEL] = &tdmout_c_sclk_sel.hw, 1181 + [AUD_CLKID_TDMIN_A_SCLK_PRE_EN] = &tdmin_a_sclk_pre_en.hw, 1182 + [AUD_CLKID_TDMIN_B_SCLK_PRE_EN] = &tdmin_b_sclk_pre_en.hw, 1183 + [AUD_CLKID_TDMIN_C_SCLK_PRE_EN] = &tdmin_c_sclk_pre_en.hw, 1184 + [AUD_CLKID_TDMIN_LB_SCLK_PRE_EN] = &tdmin_lb_sclk_pre_en.hw, 1185 + [AUD_CLKID_TDMOUT_A_SCLK_PRE_EN] = &tdmout_a_sclk_pre_en.hw, 1186 + [AUD_CLKID_TDMOUT_B_SCLK_PRE_EN] = &tdmout_b_sclk_pre_en.hw, 1187 + [AUD_CLKID_TDMOUT_C_SCLK_PRE_EN] = &tdmout_c_sclk_pre_en.hw, 1188 + [AUD_CLKID_TDMIN_A_SCLK_POST_EN] = &tdmin_a_sclk_post_en.hw, 1189 + [AUD_CLKID_TDMIN_B_SCLK_POST_EN] = &tdmin_b_sclk_post_en.hw, 1190 + [AUD_CLKID_TDMIN_C_SCLK_POST_EN] = &tdmin_c_sclk_post_en.hw, 1191 + [AUD_CLKID_TDMIN_LB_SCLK_POST_EN] = &tdmin_lb_sclk_post_en.hw, 1192 + [AUD_CLKID_TDMOUT_A_SCLK_POST_EN] = &tdmout_a_sclk_post_en.hw, 1193 + [AUD_CLKID_TDMOUT_B_SCLK_POST_EN] = &tdmout_b_sclk_post_en.hw, 1194 + [AUD_CLKID_TDMOUT_C_SCLK_POST_EN] = &tdmout_c_sclk_post_en.hw, 1195 + [AUD_CLKID_TDMIN_A_SCLK] = &tdmin_a_sclk.hw, 1196 + [AUD_CLKID_TDMIN_B_SCLK] = &tdmin_b_sclk.hw, 1197 + [AUD_CLKID_TDMIN_C_SCLK] = &tdmin_c_sclk.hw, 1198 + [AUD_CLKID_TDMIN_LB_SCLK] = &tdmin_lb_sclk.hw, 1199 + [AUD_CLKID_TDMOUT_A_SCLK] = &g12a_tdmout_a_sclk.hw, 1200 + [AUD_CLKID_TDMOUT_B_SCLK] = &g12a_tdmout_b_sclk.hw, 1201 + [AUD_CLKID_TDMOUT_C_SCLK] = &g12a_tdmout_c_sclk.hw, 1202 + [AUD_CLKID_TDMIN_A_LRCLK] = &tdmin_a_lrclk.hw, 1203 + [AUD_CLKID_TDMIN_B_LRCLK] = &tdmin_b_lrclk.hw, 1204 + [AUD_CLKID_TDMIN_C_LRCLK] = &tdmin_c_lrclk.hw, 1205 + [AUD_CLKID_TDMIN_LB_LRCLK] = &tdmin_lb_lrclk.hw, 1206 + [AUD_CLKID_TDMOUT_A_LRCLK] = &tdmout_a_lrclk.hw, 1207 + [AUD_CLKID_TDMOUT_B_LRCLK] = &tdmout_b_lrclk.hw, 1208 + [AUD_CLKID_TDMOUT_C_LRCLK] = &tdmout_c_lrclk.hw, 1209 + [AUD_CLKID_TDM_MCLK_PAD0] = &sm1_tdm_mclk_pad_0.hw, 1210 + [AUD_CLKID_TDM_MCLK_PAD1] = &sm1_tdm_mclk_pad_1.hw, 1211 + [AUD_CLKID_TDM_LRCLK_PAD0] = &sm1_tdm_lrclk_pad_0.hw, 1212 + [AUD_CLKID_TDM_LRCLK_PAD1] = &sm1_tdm_lrclk_pad_1.hw, 1213 + [AUD_CLKID_TDM_LRCLK_PAD2] = &sm1_tdm_lrclk_pad_2.hw, 1214 + [AUD_CLKID_TDM_SCLK_PAD0] = &sm1_tdm_sclk_pad_0.hw, 1215 + [AUD_CLKID_TDM_SCLK_PAD1] = &sm1_tdm_sclk_pad_1.hw, 1216 + [AUD_CLKID_TDM_SCLK_PAD2] = &sm1_tdm_sclk_pad_2.hw, 1217 + [AUD_CLKID_TOP] = &sm1_aud_top.hw, 1218 + [AUD_CLKID_TORAM] = &toram.hw, 1219 + [AUD_CLKID_EQDRC] = &eqdrc.hw, 1220 + [AUD_CLKID_RESAMPLE_B] = &resample_b.hw, 1221 + [AUD_CLKID_TOVAD] = &tovad.hw, 1222 + [AUD_CLKID_LOCKER] = &locker.hw, 1223 + [AUD_CLKID_SPDIFIN_LB] = &spdifin_lb.hw, 1224 + [AUD_CLKID_FRDDR_D] = &frddr_d.hw, 1225 + [AUD_CLKID_TODDR_D] = &toddr_d.hw, 1226 + [AUD_CLKID_LOOPBACK_B] = &loopback_b.hw, 1227 + [AUD_CLKID_CLK81_EN] = &sm1_clk81_en.hw, 1228 + [AUD_CLKID_SYSCLK_A_DIV] = &sm1_sysclk_a_div.hw, 1229 + [AUD_CLKID_SYSCLK_A_EN] = &sm1_sysclk_a_en.hw, 1230 + [AUD_CLKID_SYSCLK_B_DIV] = &sm1_sysclk_b_div.hw, 1231 + [AUD_CLKID_SYSCLK_B_EN] = &sm1_sysclk_b_en.hw, 1247 1232 }; 1248 1233 1249 1234 ··· 1736 1745 struct audioclk_data { 1737 1746 struct clk_regmap *const *regmap_clks; 1738 1747 unsigned int regmap_clk_num; 1739 - struct clk_hw_onecell_data *hw_onecell_data; 1748 + struct meson_clk_hw_data hw_clks; 1740 1749 unsigned int reset_offset; 1741 1750 unsigned int reset_num; 1742 1751 }; ··· 1782 1791 data->regmap_clks[i]->map = map; 1783 1792 1784 1793 /* Take care to skip the registered input clocks */ 1785 - for (i = AUD_CLKID_DDR_ARB; i < data->hw_onecell_data->num; i++) { 1794 + for (i = AUD_CLKID_DDR_ARB; i < data->hw_clks.num; i++) { 1786 1795 const char *name; 1787 1796 1788 - hw = data->hw_onecell_data->hws[i]; 1797 + hw = data->hw_clks.hws[i]; 1789 1798 /* array might be sparse */ 1790 1799 if (!hw) 1791 1800 continue; ··· 1799 1808 } 1800 1809 } 1801 1810 1802 - ret = devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, 1803 - data->hw_onecell_data); 1811 + ret = devm_of_clk_add_hw_provider(dev, meson_clk_hw_get, (void *)&data->hw_clks); 1804 1812 if (ret) 1805 1813 return ret; 1806 1814 ··· 1824 1834 static const struct audioclk_data axg_audioclk_data = { 1825 1835 .regmap_clks = axg_clk_regmaps, 1826 1836 .regmap_clk_num = ARRAY_SIZE(axg_clk_regmaps), 1827 - .hw_onecell_data = &axg_audio_hw_onecell_data, 1837 + .hw_clks = { 1838 + .hws = axg_audio_hw_clks, 1839 + .num = ARRAY_SIZE(axg_audio_hw_clks), 1840 + }, 1828 1841 }; 1829 1842 1830 1843 static const struct audioclk_data g12a_audioclk_data = { 1831 1844 .regmap_clks = g12a_clk_regmaps, 1832 1845 .regmap_clk_num = ARRAY_SIZE(g12a_clk_regmaps), 1833 - .hw_onecell_data = &g12a_audio_hw_onecell_data, 1846 + .hw_clks = { 1847 + .hws = g12a_audio_hw_clks, 1848 + .num = ARRAY_SIZE(g12a_audio_hw_clks), 1849 + }, 1834 1850 .reset_offset = AUDIO_SW_RESET, 1835 1851 .reset_num = 26, 1836 1852 }; ··· 1844 1848 static const struct audioclk_data sm1_audioclk_data = { 1845 1849 .regmap_clks = sm1_clk_regmaps, 1846 1850 .regmap_clk_num = ARRAY_SIZE(sm1_clk_regmaps), 1847 - .hw_onecell_data = &sm1_audio_hw_onecell_data, 1851 + .hw_clks = { 1852 + .hws = sm1_audio_hw_clks, 1853 + .num = ARRAY_SIZE(sm1_audio_hw_clks), 1854 + }, 1848 1855 .reset_offset = AUDIO_SM1_SW_RESET0, 1849 1856 .reset_num = 39, 1850 1857 };
-75
drivers/clk/meson/axg-audio.h
··· 64 64 #define AUDIO_SM1_SW_RESET1 0x02C 65 65 #define AUDIO_CLK81_CTRL 0x030 66 66 #define AUDIO_CLK81_EN 0x034 67 - /* 68 - * CLKID index values 69 - * These indices are entirely contrived and do not map onto the hardware. 70 - */ 71 - 72 - #define AUD_CLKID_MST_A_MCLK_SEL 59 73 - #define AUD_CLKID_MST_B_MCLK_SEL 60 74 - #define AUD_CLKID_MST_C_MCLK_SEL 61 75 - #define AUD_CLKID_MST_D_MCLK_SEL 62 76 - #define AUD_CLKID_MST_E_MCLK_SEL 63 77 - #define AUD_CLKID_MST_F_MCLK_SEL 64 78 - #define AUD_CLKID_MST_A_MCLK_DIV 65 79 - #define AUD_CLKID_MST_B_MCLK_DIV 66 80 - #define AUD_CLKID_MST_C_MCLK_DIV 67 81 - #define AUD_CLKID_MST_D_MCLK_DIV 68 82 - #define AUD_CLKID_MST_E_MCLK_DIV 69 83 - #define AUD_CLKID_MST_F_MCLK_DIV 70 84 - #define AUD_CLKID_SPDIFOUT_CLK_SEL 71 85 - #define AUD_CLKID_SPDIFOUT_CLK_DIV 72 86 - #define AUD_CLKID_SPDIFIN_CLK_SEL 73 87 - #define AUD_CLKID_SPDIFIN_CLK_DIV 74 88 - #define AUD_CLKID_PDM_DCLK_SEL 75 89 - #define AUD_CLKID_PDM_DCLK_DIV 76 90 - #define AUD_CLKID_PDM_SYSCLK_SEL 77 91 - #define AUD_CLKID_PDM_SYSCLK_DIV 78 92 - #define AUD_CLKID_MST_A_SCLK_PRE_EN 92 93 - #define AUD_CLKID_MST_B_SCLK_PRE_EN 93 94 - #define AUD_CLKID_MST_C_SCLK_PRE_EN 94 95 - #define AUD_CLKID_MST_D_SCLK_PRE_EN 95 96 - #define AUD_CLKID_MST_E_SCLK_PRE_EN 96 97 - #define AUD_CLKID_MST_F_SCLK_PRE_EN 97 98 - #define AUD_CLKID_MST_A_SCLK_DIV 98 99 - #define AUD_CLKID_MST_B_SCLK_DIV 99 100 - #define AUD_CLKID_MST_C_SCLK_DIV 100 101 - #define AUD_CLKID_MST_D_SCLK_DIV 101 102 - #define AUD_CLKID_MST_E_SCLK_DIV 102 103 - #define AUD_CLKID_MST_F_SCLK_DIV 103 104 - #define AUD_CLKID_MST_A_SCLK_POST_EN 104 105 - #define AUD_CLKID_MST_B_SCLK_POST_EN 105 106 - #define AUD_CLKID_MST_C_SCLK_POST_EN 106 107 - #define AUD_CLKID_MST_D_SCLK_POST_EN 107 108 - #define AUD_CLKID_MST_E_SCLK_POST_EN 108 109 - #define AUD_CLKID_MST_F_SCLK_POST_EN 109 110 - #define AUD_CLKID_MST_A_LRCLK_DIV 110 111 - #define AUD_CLKID_MST_B_LRCLK_DIV 111 112 - #define AUD_CLKID_MST_C_LRCLK_DIV 112 113 - #define AUD_CLKID_MST_D_LRCLK_DIV 113 114 - #define AUD_CLKID_MST_E_LRCLK_DIV 114 115 - #define AUD_CLKID_MST_F_LRCLK_DIV 115 116 - #define AUD_CLKID_TDMIN_A_SCLK_PRE_EN 137 117 - #define AUD_CLKID_TDMIN_B_SCLK_PRE_EN 138 118 - #define AUD_CLKID_TDMIN_C_SCLK_PRE_EN 139 119 - #define AUD_CLKID_TDMIN_LB_SCLK_PRE_EN 140 120 - #define AUD_CLKID_TDMOUT_A_SCLK_PRE_EN 141 121 - #define AUD_CLKID_TDMOUT_B_SCLK_PRE_EN 142 122 - #define AUD_CLKID_TDMOUT_C_SCLK_PRE_EN 143 123 - #define AUD_CLKID_TDMIN_A_SCLK_POST_EN 144 124 - #define AUD_CLKID_TDMIN_B_SCLK_POST_EN 145 125 - #define AUD_CLKID_TDMIN_C_SCLK_POST_EN 146 126 - #define AUD_CLKID_TDMIN_LB_SCLK_POST_EN 147 127 - #define AUD_CLKID_TDMOUT_A_SCLK_POST_EN 148 128 - #define AUD_CLKID_TDMOUT_B_SCLK_POST_EN 149 129 - #define AUD_CLKID_TDMOUT_C_SCLK_POST_EN 150 130 - #define AUD_CLKID_SPDIFOUT_B_CLK_SEL 153 131 - #define AUD_CLKID_SPDIFOUT_B_CLK_DIV 154 132 - #define AUD_CLKID_CLK81_EN 173 133 - #define AUD_CLKID_SYSCLK_A_DIV 174 134 - #define AUD_CLKID_SYSCLK_B_DIV 175 135 - #define AUD_CLKID_SYSCLK_A_EN 176 136 - #define AUD_CLKID_SYSCLK_B_EN 177 137 - 138 - /* include the CLKIDs which are part of the DT bindings */ 139 - #include <dt-bindings/clock/axg-audio-clkc.h> 140 - 141 - #define NR_CLKS 178 142 67 143 68 #endif /*__AXG_AUDIO_CLKC_H */
+143 -142
drivers/clk/meson/axg.c
··· 21 21 #include "axg.h" 22 22 #include "meson-eeclk.h" 23 23 24 + #include <dt-bindings/clock/axg-clkc.h> 25 + 24 26 static DEFINE_SPINLOCK(meson_clk_lock); 25 27 26 28 static struct clk_regmap axg_fixed_pll_dco = { ··· 1892 1890 1893 1891 /* Array of all clocks provided by this provider */ 1894 1892 1895 - static struct clk_hw_onecell_data axg_hw_onecell_data = { 1896 - .hws = { 1897 - [CLKID_SYS_PLL] = &axg_sys_pll.hw, 1898 - [CLKID_FIXED_PLL] = &axg_fixed_pll.hw, 1899 - [CLKID_FCLK_DIV2] = &axg_fclk_div2.hw, 1900 - [CLKID_FCLK_DIV3] = &axg_fclk_div3.hw, 1901 - [CLKID_FCLK_DIV4] = &axg_fclk_div4.hw, 1902 - [CLKID_FCLK_DIV5] = &axg_fclk_div5.hw, 1903 - [CLKID_FCLK_DIV7] = &axg_fclk_div7.hw, 1904 - [CLKID_GP0_PLL] = &axg_gp0_pll.hw, 1905 - [CLKID_MPEG_SEL] = &axg_mpeg_clk_sel.hw, 1906 - [CLKID_MPEG_DIV] = &axg_mpeg_clk_div.hw, 1907 - [CLKID_CLK81] = &axg_clk81.hw, 1908 - [CLKID_MPLL0] = &axg_mpll0.hw, 1909 - [CLKID_MPLL1] = &axg_mpll1.hw, 1910 - [CLKID_MPLL2] = &axg_mpll2.hw, 1911 - [CLKID_MPLL3] = &axg_mpll3.hw, 1912 - [CLKID_DDR] = &axg_ddr.hw, 1913 - [CLKID_AUDIO_LOCKER] = &axg_audio_locker.hw, 1914 - [CLKID_MIPI_DSI_HOST] = &axg_mipi_dsi_host.hw, 1915 - [CLKID_ISA] = &axg_isa.hw, 1916 - [CLKID_PL301] = &axg_pl301.hw, 1917 - [CLKID_PERIPHS] = &axg_periphs.hw, 1918 - [CLKID_SPICC0] = &axg_spicc_0.hw, 1919 - [CLKID_I2C] = &axg_i2c.hw, 1920 - [CLKID_RNG0] = &axg_rng0.hw, 1921 - [CLKID_UART0] = &axg_uart0.hw, 1922 - [CLKID_MIPI_DSI_PHY] = &axg_mipi_dsi_phy.hw, 1923 - [CLKID_SPICC1] = &axg_spicc_1.hw, 1924 - [CLKID_PCIE_A] = &axg_pcie_a.hw, 1925 - [CLKID_PCIE_B] = &axg_pcie_b.hw, 1926 - [CLKID_HIU_IFACE] = &axg_hiu_reg.hw, 1927 - [CLKID_ASSIST_MISC] = &axg_assist_misc.hw, 1928 - [CLKID_SD_EMMC_B] = &axg_emmc_b.hw, 1929 - [CLKID_SD_EMMC_C] = &axg_emmc_c.hw, 1930 - [CLKID_DMA] = &axg_dma.hw, 1931 - [CLKID_SPI] = &axg_spi.hw, 1932 - [CLKID_AUDIO] = &axg_audio.hw, 1933 - [CLKID_ETH] = &axg_eth_core.hw, 1934 - [CLKID_UART1] = &axg_uart1.hw, 1935 - [CLKID_G2D] = &axg_g2d.hw, 1936 - [CLKID_USB0] = &axg_usb0.hw, 1937 - [CLKID_USB1] = &axg_usb1.hw, 1938 - [CLKID_RESET] = &axg_reset.hw, 1939 - [CLKID_USB] = &axg_usb_general.hw, 1940 - [CLKID_AHB_ARB0] = &axg_ahb_arb0.hw, 1941 - [CLKID_EFUSE] = &axg_efuse.hw, 1942 - [CLKID_BOOT_ROM] = &axg_boot_rom.hw, 1943 - [CLKID_AHB_DATA_BUS] = &axg_ahb_data_bus.hw, 1944 - [CLKID_AHB_CTRL_BUS] = &axg_ahb_ctrl_bus.hw, 1945 - [CLKID_USB1_DDR_BRIDGE] = &axg_usb1_to_ddr.hw, 1946 - [CLKID_USB0_DDR_BRIDGE] = &axg_usb0_to_ddr.hw, 1947 - [CLKID_MMC_PCLK] = &axg_mmc_pclk.hw, 1948 - [CLKID_VPU_INTR] = &axg_vpu_intr.hw, 1949 - [CLKID_SEC_AHB_AHB3_BRIDGE] = &axg_sec_ahb_ahb3_bridge.hw, 1950 - [CLKID_GIC] = &axg_gic.hw, 1951 - [CLKID_AO_MEDIA_CPU] = &axg_ao_media_cpu.hw, 1952 - [CLKID_AO_AHB_SRAM] = &axg_ao_ahb_sram.hw, 1953 - [CLKID_AO_AHB_BUS] = &axg_ao_ahb_bus.hw, 1954 - [CLKID_AO_IFACE] = &axg_ao_iface.hw, 1955 - [CLKID_AO_I2C] = &axg_ao_i2c.hw, 1956 - [CLKID_SD_EMMC_B_CLK0_SEL] = &axg_sd_emmc_b_clk0_sel.hw, 1957 - [CLKID_SD_EMMC_B_CLK0_DIV] = &axg_sd_emmc_b_clk0_div.hw, 1958 - [CLKID_SD_EMMC_B_CLK0] = &axg_sd_emmc_b_clk0.hw, 1959 - [CLKID_SD_EMMC_C_CLK0_SEL] = &axg_sd_emmc_c_clk0_sel.hw, 1960 - [CLKID_SD_EMMC_C_CLK0_DIV] = &axg_sd_emmc_c_clk0_div.hw, 1961 - [CLKID_SD_EMMC_C_CLK0] = &axg_sd_emmc_c_clk0.hw, 1962 - [CLKID_MPLL0_DIV] = &axg_mpll0_div.hw, 1963 - [CLKID_MPLL1_DIV] = &axg_mpll1_div.hw, 1964 - [CLKID_MPLL2_DIV] = &axg_mpll2_div.hw, 1965 - [CLKID_MPLL3_DIV] = &axg_mpll3_div.hw, 1966 - [CLKID_HIFI_PLL] = &axg_hifi_pll.hw, 1967 - [CLKID_MPLL_PREDIV] = &axg_mpll_prediv.hw, 1968 - [CLKID_FCLK_DIV2_DIV] = &axg_fclk_div2_div.hw, 1969 - [CLKID_FCLK_DIV3_DIV] = &axg_fclk_div3_div.hw, 1970 - [CLKID_FCLK_DIV4_DIV] = &axg_fclk_div4_div.hw, 1971 - [CLKID_FCLK_DIV5_DIV] = &axg_fclk_div5_div.hw, 1972 - [CLKID_FCLK_DIV7_DIV] = &axg_fclk_div7_div.hw, 1973 - [CLKID_PCIE_PLL] = &axg_pcie_pll.hw, 1974 - [CLKID_PCIE_MUX] = &axg_pcie_mux.hw, 1975 - [CLKID_PCIE_REF] = &axg_pcie_ref.hw, 1976 - [CLKID_PCIE_CML_EN0] = &axg_pcie_cml_en0.hw, 1977 - [CLKID_PCIE_CML_EN1] = &axg_pcie_cml_en1.hw, 1978 - [CLKID_GEN_CLK_SEL] = &axg_gen_clk_sel.hw, 1979 - [CLKID_GEN_CLK_DIV] = &axg_gen_clk_div.hw, 1980 - [CLKID_GEN_CLK] = &axg_gen_clk.hw, 1981 - [CLKID_SYS_PLL_DCO] = &axg_sys_pll_dco.hw, 1982 - [CLKID_FIXED_PLL_DCO] = &axg_fixed_pll_dco.hw, 1983 - [CLKID_GP0_PLL_DCO] = &axg_gp0_pll_dco.hw, 1984 - [CLKID_HIFI_PLL_DCO] = &axg_hifi_pll_dco.hw, 1985 - [CLKID_PCIE_PLL_DCO] = &axg_pcie_pll_dco.hw, 1986 - [CLKID_PCIE_PLL_OD] = &axg_pcie_pll_od.hw, 1987 - [CLKID_VPU_0_DIV] = &axg_vpu_0_div.hw, 1988 - [CLKID_VPU_0_SEL] = &axg_vpu_0_sel.hw, 1989 - [CLKID_VPU_0] = &axg_vpu_0.hw, 1990 - [CLKID_VPU_1_DIV] = &axg_vpu_1_div.hw, 1991 - [CLKID_VPU_1_SEL] = &axg_vpu_1_sel.hw, 1992 - [CLKID_VPU_1] = &axg_vpu_1.hw, 1993 - [CLKID_VPU] = &axg_vpu.hw, 1994 - [CLKID_VAPB_0_DIV] = &axg_vapb_0_div.hw, 1995 - [CLKID_VAPB_0_SEL] = &axg_vapb_0_sel.hw, 1996 - [CLKID_VAPB_0] = &axg_vapb_0.hw, 1997 - [CLKID_VAPB_1_DIV] = &axg_vapb_1_div.hw, 1998 - [CLKID_VAPB_1_SEL] = &axg_vapb_1_sel.hw, 1999 - [CLKID_VAPB_1] = &axg_vapb_1.hw, 2000 - [CLKID_VAPB_SEL] = &axg_vapb_sel.hw, 2001 - [CLKID_VAPB] = &axg_vapb.hw, 2002 - [CLKID_VCLK] = &axg_vclk.hw, 2003 - [CLKID_VCLK2] = &axg_vclk2.hw, 2004 - [CLKID_VCLK_SEL] = &axg_vclk_sel.hw, 2005 - [CLKID_VCLK2_SEL] = &axg_vclk2_sel.hw, 2006 - [CLKID_VCLK_INPUT] = &axg_vclk_input.hw, 2007 - [CLKID_VCLK2_INPUT] = &axg_vclk2_input.hw, 2008 - [CLKID_VCLK_DIV] = &axg_vclk_div.hw, 2009 - [CLKID_VCLK2_DIV] = &axg_vclk2_div.hw, 2010 - [CLKID_VCLK_DIV2_EN] = &axg_vclk_div2_en.hw, 2011 - [CLKID_VCLK_DIV4_EN] = &axg_vclk_div4_en.hw, 2012 - [CLKID_VCLK_DIV6_EN] = &axg_vclk_div6_en.hw, 2013 - [CLKID_VCLK_DIV12_EN] = &axg_vclk_div12_en.hw, 2014 - [CLKID_VCLK2_DIV2_EN] = &axg_vclk2_div2_en.hw, 2015 - [CLKID_VCLK2_DIV4_EN] = &axg_vclk2_div4_en.hw, 2016 - [CLKID_VCLK2_DIV6_EN] = &axg_vclk2_div6_en.hw, 2017 - [CLKID_VCLK2_DIV12_EN] = &axg_vclk2_div12_en.hw, 2018 - [CLKID_VCLK_DIV1] = &axg_vclk_div1.hw, 2019 - [CLKID_VCLK_DIV2] = &axg_vclk_div2.hw, 2020 - [CLKID_VCLK_DIV4] = &axg_vclk_div4.hw, 2021 - [CLKID_VCLK_DIV6] = &axg_vclk_div6.hw, 2022 - [CLKID_VCLK_DIV12] = &axg_vclk_div12.hw, 2023 - [CLKID_VCLK2_DIV1] = &axg_vclk2_div1.hw, 2024 - [CLKID_VCLK2_DIV2] = &axg_vclk2_div2.hw, 2025 - [CLKID_VCLK2_DIV4] = &axg_vclk2_div4.hw, 2026 - [CLKID_VCLK2_DIV6] = &axg_vclk2_div6.hw, 2027 - [CLKID_VCLK2_DIV12] = &axg_vclk2_div12.hw, 2028 - [CLKID_CTS_ENCL_SEL] = &axg_cts_encl_sel.hw, 2029 - [CLKID_CTS_ENCL] = &axg_cts_encl.hw, 2030 - [CLKID_VDIN_MEAS_SEL] = &axg_vdin_meas_sel.hw, 2031 - [CLKID_VDIN_MEAS_DIV] = &axg_vdin_meas_div.hw, 2032 - [CLKID_VDIN_MEAS] = &axg_vdin_meas.hw, 2033 - [NR_CLKS] = NULL, 2034 - }, 2035 - .num = NR_CLKS, 1893 + static struct clk_hw *axg_hw_clks[] = { 1894 + [CLKID_SYS_PLL] = &axg_sys_pll.hw, 1895 + [CLKID_FIXED_PLL] = &axg_fixed_pll.hw, 1896 + [CLKID_FCLK_DIV2] = &axg_fclk_div2.hw, 1897 + [CLKID_FCLK_DIV3] = &axg_fclk_div3.hw, 1898 + [CLKID_FCLK_DIV4] = &axg_fclk_div4.hw, 1899 + [CLKID_FCLK_DIV5] = &axg_fclk_div5.hw, 1900 + [CLKID_FCLK_DIV7] = &axg_fclk_div7.hw, 1901 + [CLKID_GP0_PLL] = &axg_gp0_pll.hw, 1902 + [CLKID_MPEG_SEL] = &axg_mpeg_clk_sel.hw, 1903 + [CLKID_MPEG_DIV] = &axg_mpeg_clk_div.hw, 1904 + [CLKID_CLK81] = &axg_clk81.hw, 1905 + [CLKID_MPLL0] = &axg_mpll0.hw, 1906 + [CLKID_MPLL1] = &axg_mpll1.hw, 1907 + [CLKID_MPLL2] = &axg_mpll2.hw, 1908 + [CLKID_MPLL3] = &axg_mpll3.hw, 1909 + [CLKID_DDR] = &axg_ddr.hw, 1910 + [CLKID_AUDIO_LOCKER] = &axg_audio_locker.hw, 1911 + [CLKID_MIPI_DSI_HOST] = &axg_mipi_dsi_host.hw, 1912 + [CLKID_ISA] = &axg_isa.hw, 1913 + [CLKID_PL301] = &axg_pl301.hw, 1914 + [CLKID_PERIPHS] = &axg_periphs.hw, 1915 + [CLKID_SPICC0] = &axg_spicc_0.hw, 1916 + [CLKID_I2C] = &axg_i2c.hw, 1917 + [CLKID_RNG0] = &axg_rng0.hw, 1918 + [CLKID_UART0] = &axg_uart0.hw, 1919 + [CLKID_MIPI_DSI_PHY] = &axg_mipi_dsi_phy.hw, 1920 + [CLKID_SPICC1] = &axg_spicc_1.hw, 1921 + [CLKID_PCIE_A] = &axg_pcie_a.hw, 1922 + [CLKID_PCIE_B] = &axg_pcie_b.hw, 1923 + [CLKID_HIU_IFACE] = &axg_hiu_reg.hw, 1924 + [CLKID_ASSIST_MISC] = &axg_assist_misc.hw, 1925 + [CLKID_SD_EMMC_B] = &axg_emmc_b.hw, 1926 + [CLKID_SD_EMMC_C] = &axg_emmc_c.hw, 1927 + [CLKID_DMA] = &axg_dma.hw, 1928 + [CLKID_SPI] = &axg_spi.hw, 1929 + [CLKID_AUDIO] = &axg_audio.hw, 1930 + [CLKID_ETH] = &axg_eth_core.hw, 1931 + [CLKID_UART1] = &axg_uart1.hw, 1932 + [CLKID_G2D] = &axg_g2d.hw, 1933 + [CLKID_USB0] = &axg_usb0.hw, 1934 + [CLKID_USB1] = &axg_usb1.hw, 1935 + [CLKID_RESET] = &axg_reset.hw, 1936 + [CLKID_USB] = &axg_usb_general.hw, 1937 + [CLKID_AHB_ARB0] = &axg_ahb_arb0.hw, 1938 + [CLKID_EFUSE] = &axg_efuse.hw, 1939 + [CLKID_BOOT_ROM] = &axg_boot_rom.hw, 1940 + [CLKID_AHB_DATA_BUS] = &axg_ahb_data_bus.hw, 1941 + [CLKID_AHB_CTRL_BUS] = &axg_ahb_ctrl_bus.hw, 1942 + [CLKID_USB1_DDR_BRIDGE] = &axg_usb1_to_ddr.hw, 1943 + [CLKID_USB0_DDR_BRIDGE] = &axg_usb0_to_ddr.hw, 1944 + [CLKID_MMC_PCLK] = &axg_mmc_pclk.hw, 1945 + [CLKID_VPU_INTR] = &axg_vpu_intr.hw, 1946 + [CLKID_SEC_AHB_AHB3_BRIDGE] = &axg_sec_ahb_ahb3_bridge.hw, 1947 + [CLKID_GIC] = &axg_gic.hw, 1948 + [CLKID_AO_MEDIA_CPU] = &axg_ao_media_cpu.hw, 1949 + [CLKID_AO_AHB_SRAM] = &axg_ao_ahb_sram.hw, 1950 + [CLKID_AO_AHB_BUS] = &axg_ao_ahb_bus.hw, 1951 + [CLKID_AO_IFACE] = &axg_ao_iface.hw, 1952 + [CLKID_AO_I2C] = &axg_ao_i2c.hw, 1953 + [CLKID_SD_EMMC_B_CLK0_SEL] = &axg_sd_emmc_b_clk0_sel.hw, 1954 + [CLKID_SD_EMMC_B_CLK0_DIV] = &axg_sd_emmc_b_clk0_div.hw, 1955 + [CLKID_SD_EMMC_B_CLK0] = &axg_sd_emmc_b_clk0.hw, 1956 + [CLKID_SD_EMMC_C_CLK0_SEL] = &axg_sd_emmc_c_clk0_sel.hw, 1957 + [CLKID_SD_EMMC_C_CLK0_DIV] = &axg_sd_emmc_c_clk0_div.hw, 1958 + [CLKID_SD_EMMC_C_CLK0] = &axg_sd_emmc_c_clk0.hw, 1959 + [CLKID_MPLL0_DIV] = &axg_mpll0_div.hw, 1960 + [CLKID_MPLL1_DIV] = &axg_mpll1_div.hw, 1961 + [CLKID_MPLL2_DIV] = &axg_mpll2_div.hw, 1962 + [CLKID_MPLL3_DIV] = &axg_mpll3_div.hw, 1963 + [CLKID_HIFI_PLL] = &axg_hifi_pll.hw, 1964 + [CLKID_MPLL_PREDIV] = &axg_mpll_prediv.hw, 1965 + [CLKID_FCLK_DIV2_DIV] = &axg_fclk_div2_div.hw, 1966 + [CLKID_FCLK_DIV3_DIV] = &axg_fclk_div3_div.hw, 1967 + [CLKID_FCLK_DIV4_DIV] = &axg_fclk_div4_div.hw, 1968 + [CLKID_FCLK_DIV5_DIV] = &axg_fclk_div5_div.hw, 1969 + [CLKID_FCLK_DIV7_DIV] = &axg_fclk_div7_div.hw, 1970 + [CLKID_PCIE_PLL] = &axg_pcie_pll.hw, 1971 + [CLKID_PCIE_MUX] = &axg_pcie_mux.hw, 1972 + [CLKID_PCIE_REF] = &axg_pcie_ref.hw, 1973 + [CLKID_PCIE_CML_EN0] = &axg_pcie_cml_en0.hw, 1974 + [CLKID_PCIE_CML_EN1] = &axg_pcie_cml_en1.hw, 1975 + [CLKID_GEN_CLK_SEL] = &axg_gen_clk_sel.hw, 1976 + [CLKID_GEN_CLK_DIV] = &axg_gen_clk_div.hw, 1977 + [CLKID_GEN_CLK] = &axg_gen_clk.hw, 1978 + [CLKID_SYS_PLL_DCO] = &axg_sys_pll_dco.hw, 1979 + [CLKID_FIXED_PLL_DCO] = &axg_fixed_pll_dco.hw, 1980 + [CLKID_GP0_PLL_DCO] = &axg_gp0_pll_dco.hw, 1981 + [CLKID_HIFI_PLL_DCO] = &axg_hifi_pll_dco.hw, 1982 + [CLKID_PCIE_PLL_DCO] = &axg_pcie_pll_dco.hw, 1983 + [CLKID_PCIE_PLL_OD] = &axg_pcie_pll_od.hw, 1984 + [CLKID_VPU_0_DIV] = &axg_vpu_0_div.hw, 1985 + [CLKID_VPU_0_SEL] = &axg_vpu_0_sel.hw, 1986 + [CLKID_VPU_0] = &axg_vpu_0.hw, 1987 + [CLKID_VPU_1_DIV] = &axg_vpu_1_div.hw, 1988 + [CLKID_VPU_1_SEL] = &axg_vpu_1_sel.hw, 1989 + [CLKID_VPU_1] = &axg_vpu_1.hw, 1990 + [CLKID_VPU] = &axg_vpu.hw, 1991 + [CLKID_VAPB_0_DIV] = &axg_vapb_0_div.hw, 1992 + [CLKID_VAPB_0_SEL] = &axg_vapb_0_sel.hw, 1993 + [CLKID_VAPB_0] = &axg_vapb_0.hw, 1994 + [CLKID_VAPB_1_DIV] = &axg_vapb_1_div.hw, 1995 + [CLKID_VAPB_1_SEL] = &axg_vapb_1_sel.hw, 1996 + [CLKID_VAPB_1] = &axg_vapb_1.hw, 1997 + [CLKID_VAPB_SEL] = &axg_vapb_sel.hw, 1998 + [CLKID_VAPB] = &axg_vapb.hw, 1999 + [CLKID_VCLK] = &axg_vclk.hw, 2000 + [CLKID_VCLK2] = &axg_vclk2.hw, 2001 + [CLKID_VCLK_SEL] = &axg_vclk_sel.hw, 2002 + [CLKID_VCLK2_SEL] = &axg_vclk2_sel.hw, 2003 + [CLKID_VCLK_INPUT] = &axg_vclk_input.hw, 2004 + [CLKID_VCLK2_INPUT] = &axg_vclk2_input.hw, 2005 + [CLKID_VCLK_DIV] = &axg_vclk_div.hw, 2006 + [CLKID_VCLK2_DIV] = &axg_vclk2_div.hw, 2007 + [CLKID_VCLK_DIV2_EN] = &axg_vclk_div2_en.hw, 2008 + [CLKID_VCLK_DIV4_EN] = &axg_vclk_div4_en.hw, 2009 + [CLKID_VCLK_DIV6_EN] = &axg_vclk_div6_en.hw, 2010 + [CLKID_VCLK_DIV12_EN] = &axg_vclk_div12_en.hw, 2011 + [CLKID_VCLK2_DIV2_EN] = &axg_vclk2_div2_en.hw, 2012 + [CLKID_VCLK2_DIV4_EN] = &axg_vclk2_div4_en.hw, 2013 + [CLKID_VCLK2_DIV6_EN] = &axg_vclk2_div6_en.hw, 2014 + [CLKID_VCLK2_DIV12_EN] = &axg_vclk2_div12_en.hw, 2015 + [CLKID_VCLK_DIV1] = &axg_vclk_div1.hw, 2016 + [CLKID_VCLK_DIV2] = &axg_vclk_div2.hw, 2017 + [CLKID_VCLK_DIV4] = &axg_vclk_div4.hw, 2018 + [CLKID_VCLK_DIV6] = &axg_vclk_div6.hw, 2019 + [CLKID_VCLK_DIV12] = &axg_vclk_div12.hw, 2020 + [CLKID_VCLK2_DIV1] = &axg_vclk2_div1.hw, 2021 + [CLKID_VCLK2_DIV2] = &axg_vclk2_div2.hw, 2022 + [CLKID_VCLK2_DIV4] = &axg_vclk2_div4.hw, 2023 + [CLKID_VCLK2_DIV6] = &axg_vclk2_div6.hw, 2024 + [CLKID_VCLK2_DIV12] = &axg_vclk2_div12.hw, 2025 + [CLKID_CTS_ENCL_SEL] = &axg_cts_encl_sel.hw, 2026 + [CLKID_CTS_ENCL] = &axg_cts_encl.hw, 2027 + [CLKID_VDIN_MEAS_SEL] = &axg_vdin_meas_sel.hw, 2028 + [CLKID_VDIN_MEAS_DIV] = &axg_vdin_meas_div.hw, 2029 + [CLKID_VDIN_MEAS] = &axg_vdin_meas.hw, 2036 2030 }; 2037 2031 2038 2032 /* Convenience table to populate regmap in .probe */ ··· 2161 2163 static const struct meson_eeclkc_data axg_clkc_data = { 2162 2164 .regmap_clks = axg_clk_regmaps, 2163 2165 .regmap_clk_num = ARRAY_SIZE(axg_clk_regmaps), 2164 - .hw_onecell_data = &axg_hw_onecell_data, 2166 + .hw_clks = { 2167 + .hws = axg_hw_clks, 2168 + .num = ARRAY_SIZE(axg_hw_clks), 2169 + }, 2165 2170 }; 2166 2171 2167 2172
-63
drivers/clk/meson/axg.h
··· 102 102 #define HHI_DPLL_TOP_I 0x318 103 103 #define HHI_DPLL_TOP2_I 0x31C 104 104 105 - /* 106 - * CLKID index values 107 - * 108 - * These indices are entirely contrived and do not map onto the hardware. 109 - * It has now been decided to expose everything by default in the DT header: 110 - * include/dt-bindings/clock/axg-clkc.h. Only the clocks ids we don't want 111 - * to expose, such as the internal muxes and dividers of composite clocks, 112 - * will remain defined here. 113 - */ 114 - #define CLKID_MPEG_SEL 8 115 - #define CLKID_MPEG_DIV 9 116 - #define CLKID_SD_EMMC_B_CLK0_SEL 61 117 - #define CLKID_SD_EMMC_B_CLK0_DIV 62 118 - #define CLKID_SD_EMMC_C_CLK0_SEL 63 119 - #define CLKID_SD_EMMC_C_CLK0_DIV 64 120 - #define CLKID_MPLL0_DIV 65 121 - #define CLKID_MPLL1_DIV 66 122 - #define CLKID_MPLL2_DIV 67 123 - #define CLKID_MPLL3_DIV 68 124 - #define CLKID_MPLL_PREDIV 70 125 - #define CLKID_FCLK_DIV2_DIV 71 126 - #define CLKID_FCLK_DIV3_DIV 72 127 - #define CLKID_FCLK_DIV4_DIV 73 128 - #define CLKID_FCLK_DIV5_DIV 74 129 - #define CLKID_FCLK_DIV7_DIV 75 130 - #define CLKID_PCIE_PLL 76 131 - #define CLKID_PCIE_MUX 77 132 - #define CLKID_PCIE_REF 78 133 - #define CLKID_GEN_CLK_SEL 82 134 - #define CLKID_GEN_CLK_DIV 83 135 - #define CLKID_SYS_PLL_DCO 85 136 - #define CLKID_FIXED_PLL_DCO 86 137 - #define CLKID_GP0_PLL_DCO 87 138 - #define CLKID_HIFI_PLL_DCO 88 139 - #define CLKID_PCIE_PLL_DCO 89 140 - #define CLKID_PCIE_PLL_OD 90 141 - #define CLKID_VPU_0_DIV 91 142 - #define CLKID_VPU_1_DIV 94 143 - #define CLKID_VAPB_0_DIV 98 144 - #define CLKID_VAPB_1_DIV 101 145 - #define CLKID_VCLK_SEL 108 146 - #define CLKID_VCLK2_SEL 109 147 - #define CLKID_VCLK_INPUT 110 148 - #define CLKID_VCLK2_INPUT 111 149 - #define CLKID_VCLK_DIV 112 150 - #define CLKID_VCLK2_DIV 113 151 - #define CLKID_VCLK_DIV2_EN 114 152 - #define CLKID_VCLK_DIV4_EN 115 153 - #define CLKID_VCLK_DIV6_EN 116 154 - #define CLKID_VCLK_DIV12_EN 117 155 - #define CLKID_VCLK2_DIV2_EN 118 156 - #define CLKID_VCLK2_DIV4_EN 119 157 - #define CLKID_VCLK2_DIV6_EN 120 158 - #define CLKID_VCLK2_DIV12_EN 121 159 - #define CLKID_CTS_ENCL_SEL 132 160 - #define CLKID_VDIN_MEAS_SEL 134 161 - #define CLKID_VDIN_MEAS_DIV 135 162 - 163 - #define NR_CLKS 137 164 - 165 - /* include the CLKIDs that have been made part of the DT binding */ 166 - #include <dt-bindings/clock/axg-clkc.h> 167 - 168 105 #endif /* __AXG_H */
+37 -35
drivers/clk/meson/g12a-aoclk.c
··· 14 14 #include <linux/mfd/syscon.h> 15 15 #include <linux/module.h> 16 16 #include "meson-aoclk.h" 17 - #include "g12a-aoclk.h" 18 17 19 18 #include "clk-regmap.h" 20 19 #include "clk-dualdiv.h" 20 + 21 + #include <dt-bindings/clock/g12a-aoclkc.h> 22 + #include <dt-bindings/reset/g12a-aoclkc.h> 21 23 22 24 /* 23 25 * AO Configuration Clock registers offsets ··· 413 411 &g12a_aoclk_saradc_gate, 414 412 }; 415 413 416 - static const struct clk_hw_onecell_data g12a_aoclk_onecell_data = { 417 - .hws = { 418 - [CLKID_AO_AHB] = &g12a_aoclk_ahb.hw, 419 - [CLKID_AO_IR_IN] = &g12a_aoclk_ir_in.hw, 420 - [CLKID_AO_I2C_M0] = &g12a_aoclk_i2c_m0.hw, 421 - [CLKID_AO_I2C_S0] = &g12a_aoclk_i2c_s0.hw, 422 - [CLKID_AO_UART] = &g12a_aoclk_uart.hw, 423 - [CLKID_AO_PROD_I2C] = &g12a_aoclk_prod_i2c.hw, 424 - [CLKID_AO_UART2] = &g12a_aoclk_uart2.hw, 425 - [CLKID_AO_IR_OUT] = &g12a_aoclk_ir_out.hw, 426 - [CLKID_AO_SAR_ADC] = &g12a_aoclk_saradc.hw, 427 - [CLKID_AO_MAILBOX] = &g12a_aoclk_mailbox.hw, 428 - [CLKID_AO_M3] = &g12a_aoclk_m3.hw, 429 - [CLKID_AO_AHB_SRAM] = &g12a_aoclk_ahb_sram.hw, 430 - [CLKID_AO_RTI] = &g12a_aoclk_rti.hw, 431 - [CLKID_AO_M4_FCLK] = &g12a_aoclk_m4_fclk.hw, 432 - [CLKID_AO_M4_HCLK] = &g12a_aoclk_m4_hclk.hw, 433 - [CLKID_AO_CLK81] = &g12a_aoclk_clk81.hw, 434 - [CLKID_AO_SAR_ADC_SEL] = &g12a_aoclk_saradc_mux.hw, 435 - [CLKID_AO_SAR_ADC_DIV] = &g12a_aoclk_saradc_div.hw, 436 - [CLKID_AO_SAR_ADC_CLK] = &g12a_aoclk_saradc_gate.hw, 437 - [CLKID_AO_CTS_OSCIN] = &g12a_aoclk_cts_oscin.hw, 438 - [CLKID_AO_32K_PRE] = &g12a_aoclk_32k_by_oscin_pre.hw, 439 - [CLKID_AO_32K_DIV] = &g12a_aoclk_32k_by_oscin_div.hw, 440 - [CLKID_AO_32K_SEL] = &g12a_aoclk_32k_by_oscin_sel.hw, 441 - [CLKID_AO_32K] = &g12a_aoclk_32k_by_oscin.hw, 442 - [CLKID_AO_CEC_PRE] = &g12a_aoclk_cec_pre.hw, 443 - [CLKID_AO_CEC_DIV] = &g12a_aoclk_cec_div.hw, 444 - [CLKID_AO_CEC_SEL] = &g12a_aoclk_cec_sel.hw, 445 - [CLKID_AO_CEC] = &g12a_aoclk_cec.hw, 446 - [CLKID_AO_CTS_RTC_OSCIN] = &g12a_aoclk_cts_rtc_oscin.hw, 447 - }, 448 - .num = NR_CLKS, 414 + static struct clk_hw *g12a_aoclk_hw_clks[] = { 415 + [CLKID_AO_AHB] = &g12a_aoclk_ahb.hw, 416 + [CLKID_AO_IR_IN] = &g12a_aoclk_ir_in.hw, 417 + [CLKID_AO_I2C_M0] = &g12a_aoclk_i2c_m0.hw, 418 + [CLKID_AO_I2C_S0] = &g12a_aoclk_i2c_s0.hw, 419 + [CLKID_AO_UART] = &g12a_aoclk_uart.hw, 420 + [CLKID_AO_PROD_I2C] = &g12a_aoclk_prod_i2c.hw, 421 + [CLKID_AO_UART2] = &g12a_aoclk_uart2.hw, 422 + [CLKID_AO_IR_OUT] = &g12a_aoclk_ir_out.hw, 423 + [CLKID_AO_SAR_ADC] = &g12a_aoclk_saradc.hw, 424 + [CLKID_AO_MAILBOX] = &g12a_aoclk_mailbox.hw, 425 + [CLKID_AO_M3] = &g12a_aoclk_m3.hw, 426 + [CLKID_AO_AHB_SRAM] = &g12a_aoclk_ahb_sram.hw, 427 + [CLKID_AO_RTI] = &g12a_aoclk_rti.hw, 428 + [CLKID_AO_M4_FCLK] = &g12a_aoclk_m4_fclk.hw, 429 + [CLKID_AO_M4_HCLK] = &g12a_aoclk_m4_hclk.hw, 430 + [CLKID_AO_CLK81] = &g12a_aoclk_clk81.hw, 431 + [CLKID_AO_SAR_ADC_SEL] = &g12a_aoclk_saradc_mux.hw, 432 + [CLKID_AO_SAR_ADC_DIV] = &g12a_aoclk_saradc_div.hw, 433 + [CLKID_AO_SAR_ADC_CLK] = &g12a_aoclk_saradc_gate.hw, 434 + [CLKID_AO_CTS_OSCIN] = &g12a_aoclk_cts_oscin.hw, 435 + [CLKID_AO_32K_PRE] = &g12a_aoclk_32k_by_oscin_pre.hw, 436 + [CLKID_AO_32K_DIV] = &g12a_aoclk_32k_by_oscin_div.hw, 437 + [CLKID_AO_32K_SEL] = &g12a_aoclk_32k_by_oscin_sel.hw, 438 + [CLKID_AO_32K] = &g12a_aoclk_32k_by_oscin.hw, 439 + [CLKID_AO_CEC_PRE] = &g12a_aoclk_cec_pre.hw, 440 + [CLKID_AO_CEC_DIV] = &g12a_aoclk_cec_div.hw, 441 + [CLKID_AO_CEC_SEL] = &g12a_aoclk_cec_sel.hw, 442 + [CLKID_AO_CEC] = &g12a_aoclk_cec.hw, 443 + [CLKID_AO_CTS_RTC_OSCIN] = &g12a_aoclk_cts_rtc_oscin.hw, 449 444 }; 450 445 451 446 static const struct meson_aoclk_data g12a_aoclkc_data = { ··· 451 452 .reset = g12a_aoclk_reset, 452 453 .num_clks = ARRAY_SIZE(g12a_aoclk_regmap), 453 454 .clks = g12a_aoclk_regmap, 454 - .hw_data = &g12a_aoclk_onecell_data, 455 + .hw_clks = { 456 + .hws = g12a_aoclk_hw_clks, 457 + .num = ARRAY_SIZE(g12a_aoclk_hw_clks), 458 + }, 455 459 }; 456 460 457 461 static const struct of_device_id g12a_aoclkc_match_table[] = {
-32
drivers/clk/meson/g12a-aoclk.h
··· 1 - /* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */ 2 - /* 3 - * Copyright (c) 2019 BayLibre, SAS 4 - * Author: Neil Armstrong <narmstrong@baylibre.com> 5 - */ 6 - 7 - #ifndef __G12A_AOCLKC_H 8 - #define __G12A_AOCLKC_H 9 - 10 - /* 11 - * CLKID index values 12 - * 13 - * These indices are entirely contrived and do not map onto the hardware. 14 - * It has now been decided to expose everything by default in the DT header: 15 - * include/dt-bindings/clock/g12a-aoclkc.h. Only the clocks ids we don't want 16 - * to expose, such as the internal muxes and dividers of composite clocks, 17 - * will remain defined here. 18 - */ 19 - #define CLKID_AO_SAR_ADC_DIV 17 20 - #define CLKID_AO_32K_PRE 20 21 - #define CLKID_AO_32K_DIV 21 22 - #define CLKID_AO_32K_SEL 22 23 - #define CLKID_AO_CEC_PRE 24 24 - #define CLKID_AO_CEC_DIV 25 25 - #define CLKID_AO_CEC_SEL 26 26 - 27 - #define NR_CLKS 29 28 - 29 - #include <dt-bindings/clock/g12a-aoclkc.h> 30 - #include <dt-bindings/reset/g12a-aoclkc.h> 31 - 32 - #endif /* __G12A_AOCLKC_H */
+740 -741
drivers/clk/meson/g12a.c
··· 25 25 #include "meson-eeclk.h" 26 26 #include "g12a.h" 27 27 28 + #include <dt-bindings/clock/g12a-clkc.h> 29 + 28 30 static DEFINE_SPINLOCK(meson_clk_lock); 29 31 30 32 static struct clk_regmap g12a_fixed_pll_dco = { ··· 4246 4244 static MESON_GATE_RO(g12a_sec_ahb_apb3, HHI_GCLK_OTHER2, 4); 4247 4245 4248 4246 /* Array of all clocks provided by this provider */ 4249 - static struct clk_hw_onecell_data g12a_hw_onecell_data = { 4250 - .hws = { 4251 - [CLKID_SYS_PLL] = &g12a_sys_pll.hw, 4252 - [CLKID_FIXED_PLL] = &g12a_fixed_pll.hw, 4253 - [CLKID_FCLK_DIV2] = &g12a_fclk_div2.hw, 4254 - [CLKID_FCLK_DIV3] = &g12a_fclk_div3.hw, 4255 - [CLKID_FCLK_DIV4] = &g12a_fclk_div4.hw, 4256 - [CLKID_FCLK_DIV5] = &g12a_fclk_div5.hw, 4257 - [CLKID_FCLK_DIV7] = &g12a_fclk_div7.hw, 4258 - [CLKID_FCLK_DIV2P5] = &g12a_fclk_div2p5.hw, 4259 - [CLKID_GP0_PLL] = &g12a_gp0_pll.hw, 4260 - [CLKID_MPEG_SEL] = &g12a_mpeg_clk_sel.hw, 4261 - [CLKID_MPEG_DIV] = &g12a_mpeg_clk_div.hw, 4262 - [CLKID_CLK81] = &g12a_clk81.hw, 4263 - [CLKID_MPLL0] = &g12a_mpll0.hw, 4264 - [CLKID_MPLL1] = &g12a_mpll1.hw, 4265 - [CLKID_MPLL2] = &g12a_mpll2.hw, 4266 - [CLKID_MPLL3] = &g12a_mpll3.hw, 4267 - [CLKID_DDR] = &g12a_ddr.hw, 4268 - [CLKID_DOS] = &g12a_dos.hw, 4269 - [CLKID_AUDIO_LOCKER] = &g12a_audio_locker.hw, 4270 - [CLKID_MIPI_DSI_HOST] = &g12a_mipi_dsi_host.hw, 4271 - [CLKID_ETH_PHY] = &g12a_eth_phy.hw, 4272 - [CLKID_ISA] = &g12a_isa.hw, 4273 - [CLKID_PL301] = &g12a_pl301.hw, 4274 - [CLKID_PERIPHS] = &g12a_periphs.hw, 4275 - [CLKID_SPICC0] = &g12a_spicc_0.hw, 4276 - [CLKID_I2C] = &g12a_i2c.hw, 4277 - [CLKID_SANA] = &g12a_sana.hw, 4278 - [CLKID_SD] = &g12a_sd.hw, 4279 - [CLKID_RNG0] = &g12a_rng0.hw, 4280 - [CLKID_UART0] = &g12a_uart0.hw, 4281 - [CLKID_SPICC1] = &g12a_spicc_1.hw, 4282 - [CLKID_HIU_IFACE] = &g12a_hiu_reg.hw, 4283 - [CLKID_MIPI_DSI_PHY] = &g12a_mipi_dsi_phy.hw, 4284 - [CLKID_ASSIST_MISC] = &g12a_assist_misc.hw, 4285 - [CLKID_SD_EMMC_A] = &g12a_emmc_a.hw, 4286 - [CLKID_SD_EMMC_B] = &g12a_emmc_b.hw, 4287 - [CLKID_SD_EMMC_C] = &g12a_emmc_c.hw, 4288 - [CLKID_AUDIO_CODEC] = &g12a_audio_codec.hw, 4289 - [CLKID_AUDIO] = &g12a_audio.hw, 4290 - [CLKID_ETH] = &g12a_eth_core.hw, 4291 - [CLKID_DEMUX] = &g12a_demux.hw, 4292 - [CLKID_AUDIO_IFIFO] = &g12a_audio_ififo.hw, 4293 - [CLKID_ADC] = &g12a_adc.hw, 4294 - [CLKID_UART1] = &g12a_uart1.hw, 4295 - [CLKID_G2D] = &g12a_g2d.hw, 4296 - [CLKID_RESET] = &g12a_reset.hw, 4297 - [CLKID_PCIE_COMB] = &g12a_pcie_comb.hw, 4298 - [CLKID_PARSER] = &g12a_parser.hw, 4299 - [CLKID_USB] = &g12a_usb_general.hw, 4300 - [CLKID_PCIE_PHY] = &g12a_pcie_phy.hw, 4301 - [CLKID_AHB_ARB0] = &g12a_ahb_arb0.hw, 4302 - [CLKID_AHB_DATA_BUS] = &g12a_ahb_data_bus.hw, 4303 - [CLKID_AHB_CTRL_BUS] = &g12a_ahb_ctrl_bus.hw, 4304 - [CLKID_HTX_HDCP22] = &g12a_htx_hdcp22.hw, 4305 - [CLKID_HTX_PCLK] = &g12a_htx_pclk.hw, 4306 - [CLKID_BT656] = &g12a_bt656.hw, 4307 - [CLKID_USB1_DDR_BRIDGE] = &g12a_usb1_to_ddr.hw, 4308 - [CLKID_MMC_PCLK] = &g12a_mmc_pclk.hw, 4309 - [CLKID_UART2] = &g12a_uart2.hw, 4310 - [CLKID_VPU_INTR] = &g12a_vpu_intr.hw, 4311 - [CLKID_GIC] = &g12a_gic.hw, 4312 - [CLKID_SD_EMMC_A_CLK0_SEL] = &g12a_sd_emmc_a_clk0_sel.hw, 4313 - [CLKID_SD_EMMC_A_CLK0_DIV] = &g12a_sd_emmc_a_clk0_div.hw, 4314 - [CLKID_SD_EMMC_A_CLK0] = &g12a_sd_emmc_a_clk0.hw, 4315 - [CLKID_SD_EMMC_B_CLK0_SEL] = &g12a_sd_emmc_b_clk0_sel.hw, 4316 - [CLKID_SD_EMMC_B_CLK0_DIV] = &g12a_sd_emmc_b_clk0_div.hw, 4317 - [CLKID_SD_EMMC_B_CLK0] = &g12a_sd_emmc_b_clk0.hw, 4318 - [CLKID_SD_EMMC_C_CLK0_SEL] = &g12a_sd_emmc_c_clk0_sel.hw, 4319 - [CLKID_SD_EMMC_C_CLK0_DIV] = &g12a_sd_emmc_c_clk0_div.hw, 4320 - [CLKID_SD_EMMC_C_CLK0] = &g12a_sd_emmc_c_clk0.hw, 4321 - [CLKID_MPLL0_DIV] = &g12a_mpll0_div.hw, 4322 - [CLKID_MPLL1_DIV] = &g12a_mpll1_div.hw, 4323 - [CLKID_MPLL2_DIV] = &g12a_mpll2_div.hw, 4324 - [CLKID_MPLL3_DIV] = &g12a_mpll3_div.hw, 4325 - [CLKID_FCLK_DIV2_DIV] = &g12a_fclk_div2_div.hw, 4326 - [CLKID_FCLK_DIV3_DIV] = &g12a_fclk_div3_div.hw, 4327 - [CLKID_FCLK_DIV4_DIV] = &g12a_fclk_div4_div.hw, 4328 - [CLKID_FCLK_DIV5_DIV] = &g12a_fclk_div5_div.hw, 4329 - [CLKID_FCLK_DIV7_DIV] = &g12a_fclk_div7_div.hw, 4330 - [CLKID_FCLK_DIV2P5_DIV] = &g12a_fclk_div2p5_div.hw, 4331 - [CLKID_HIFI_PLL] = &g12a_hifi_pll.hw, 4332 - [CLKID_VCLK2_VENCI0] = &g12a_vclk2_venci0.hw, 4333 - [CLKID_VCLK2_VENCI1] = &g12a_vclk2_venci1.hw, 4334 - [CLKID_VCLK2_VENCP0] = &g12a_vclk2_vencp0.hw, 4335 - [CLKID_VCLK2_VENCP1] = &g12a_vclk2_vencp1.hw, 4336 - [CLKID_VCLK2_VENCT0] = &g12a_vclk2_venct0.hw, 4337 - [CLKID_VCLK2_VENCT1] = &g12a_vclk2_venct1.hw, 4338 - [CLKID_VCLK2_OTHER] = &g12a_vclk2_other.hw, 4339 - [CLKID_VCLK2_ENCI] = &g12a_vclk2_enci.hw, 4340 - [CLKID_VCLK2_ENCP] = &g12a_vclk2_encp.hw, 4341 - [CLKID_DAC_CLK] = &g12a_dac_clk.hw, 4342 - [CLKID_AOCLK] = &g12a_aoclk_gate.hw, 4343 - [CLKID_IEC958] = &g12a_iec958_gate.hw, 4344 - [CLKID_ENC480P] = &g12a_enc480p.hw, 4345 - [CLKID_RNG1] = &g12a_rng1.hw, 4346 - [CLKID_VCLK2_ENCT] = &g12a_vclk2_enct.hw, 4347 - [CLKID_VCLK2_ENCL] = &g12a_vclk2_encl.hw, 4348 - [CLKID_VCLK2_VENCLMMC] = &g12a_vclk2_venclmmc.hw, 4349 - [CLKID_VCLK2_VENCL] = &g12a_vclk2_vencl.hw, 4350 - [CLKID_VCLK2_OTHER1] = &g12a_vclk2_other1.hw, 4351 - [CLKID_FIXED_PLL_DCO] = &g12a_fixed_pll_dco.hw, 4352 - [CLKID_SYS_PLL_DCO] = &g12a_sys_pll_dco.hw, 4353 - [CLKID_GP0_PLL_DCO] = &g12a_gp0_pll_dco.hw, 4354 - [CLKID_HIFI_PLL_DCO] = &g12a_hifi_pll_dco.hw, 4355 - [CLKID_DMA] = &g12a_dma.hw, 4356 - [CLKID_EFUSE] = &g12a_efuse.hw, 4357 - [CLKID_ROM_BOOT] = &g12a_rom_boot.hw, 4358 - [CLKID_RESET_SEC] = &g12a_reset_sec.hw, 4359 - [CLKID_SEC_AHB_APB3] = &g12a_sec_ahb_apb3.hw, 4360 - [CLKID_MPLL_PREDIV] = &g12a_mpll_prediv.hw, 4361 - [CLKID_VPU_0_SEL] = &g12a_vpu_0_sel.hw, 4362 - [CLKID_VPU_0_DIV] = &g12a_vpu_0_div.hw, 4363 - [CLKID_VPU_0] = &g12a_vpu_0.hw, 4364 - [CLKID_VPU_1_SEL] = &g12a_vpu_1_sel.hw, 4365 - [CLKID_VPU_1_DIV] = &g12a_vpu_1_div.hw, 4366 - [CLKID_VPU_1] = &g12a_vpu_1.hw, 4367 - [CLKID_VPU] = &g12a_vpu.hw, 4368 - [CLKID_VAPB_0_SEL] = &g12a_vapb_0_sel.hw, 4369 - [CLKID_VAPB_0_DIV] = &g12a_vapb_0_div.hw, 4370 - [CLKID_VAPB_0] = &g12a_vapb_0.hw, 4371 - [CLKID_VAPB_1_SEL] = &g12a_vapb_1_sel.hw, 4372 - [CLKID_VAPB_1_DIV] = &g12a_vapb_1_div.hw, 4373 - [CLKID_VAPB_1] = &g12a_vapb_1.hw, 4374 - [CLKID_VAPB_SEL] = &g12a_vapb_sel.hw, 4375 - [CLKID_VAPB] = &g12a_vapb.hw, 4376 - [CLKID_HDMI_PLL_DCO] = &g12a_hdmi_pll_dco.hw, 4377 - [CLKID_HDMI_PLL_OD] = &g12a_hdmi_pll_od.hw, 4378 - [CLKID_HDMI_PLL_OD2] = &g12a_hdmi_pll_od2.hw, 4379 - [CLKID_HDMI_PLL] = &g12a_hdmi_pll.hw, 4380 - [CLKID_VID_PLL] = &g12a_vid_pll_div.hw, 4381 - [CLKID_VID_PLL_SEL] = &g12a_vid_pll_sel.hw, 4382 - [CLKID_VID_PLL_DIV] = &g12a_vid_pll.hw, 4383 - [CLKID_VCLK_SEL] = &g12a_vclk_sel.hw, 4384 - [CLKID_VCLK2_SEL] = &g12a_vclk2_sel.hw, 4385 - [CLKID_VCLK_INPUT] = &g12a_vclk_input.hw, 4386 - [CLKID_VCLK2_INPUT] = &g12a_vclk2_input.hw, 4387 - [CLKID_VCLK_DIV] = &g12a_vclk_div.hw, 4388 - [CLKID_VCLK2_DIV] = &g12a_vclk2_div.hw, 4389 - [CLKID_VCLK] = &g12a_vclk.hw, 4390 - [CLKID_VCLK2] = &g12a_vclk2.hw, 4391 - [CLKID_VCLK_DIV1] = &g12a_vclk_div1.hw, 4392 - [CLKID_VCLK_DIV2_EN] = &g12a_vclk_div2_en.hw, 4393 - [CLKID_VCLK_DIV4_EN] = &g12a_vclk_div4_en.hw, 4394 - [CLKID_VCLK_DIV6_EN] = &g12a_vclk_div6_en.hw, 4395 - [CLKID_VCLK_DIV12_EN] = &g12a_vclk_div12_en.hw, 4396 - [CLKID_VCLK2_DIV1] = &g12a_vclk2_div1.hw, 4397 - [CLKID_VCLK2_DIV2_EN] = &g12a_vclk2_div2_en.hw, 4398 - [CLKID_VCLK2_DIV4_EN] = &g12a_vclk2_div4_en.hw, 4399 - [CLKID_VCLK2_DIV6_EN] = &g12a_vclk2_div6_en.hw, 4400 - [CLKID_VCLK2_DIV12_EN] = &g12a_vclk2_div12_en.hw, 4401 - [CLKID_VCLK_DIV2] = &g12a_vclk_div2.hw, 4402 - [CLKID_VCLK_DIV4] = &g12a_vclk_div4.hw, 4403 - [CLKID_VCLK_DIV6] = &g12a_vclk_div6.hw, 4404 - [CLKID_VCLK_DIV12] = &g12a_vclk_div12.hw, 4405 - [CLKID_VCLK2_DIV2] = &g12a_vclk2_div2.hw, 4406 - [CLKID_VCLK2_DIV4] = &g12a_vclk2_div4.hw, 4407 - [CLKID_VCLK2_DIV6] = &g12a_vclk2_div6.hw, 4408 - [CLKID_VCLK2_DIV12] = &g12a_vclk2_div12.hw, 4409 - [CLKID_CTS_ENCI_SEL] = &g12a_cts_enci_sel.hw, 4410 - [CLKID_CTS_ENCP_SEL] = &g12a_cts_encp_sel.hw, 4411 - [CLKID_CTS_VDAC_SEL] = &g12a_cts_vdac_sel.hw, 4412 - [CLKID_HDMI_TX_SEL] = &g12a_hdmi_tx_sel.hw, 4413 - [CLKID_CTS_ENCI] = &g12a_cts_enci.hw, 4414 - [CLKID_CTS_ENCP] = &g12a_cts_encp.hw, 4415 - [CLKID_CTS_VDAC] = &g12a_cts_vdac.hw, 4416 - [CLKID_HDMI_TX] = &g12a_hdmi_tx.hw, 4417 - [CLKID_HDMI_SEL] = &g12a_hdmi_sel.hw, 4418 - [CLKID_HDMI_DIV] = &g12a_hdmi_div.hw, 4419 - [CLKID_HDMI] = &g12a_hdmi.hw, 4420 - [CLKID_MALI_0_SEL] = &g12a_mali_0_sel.hw, 4421 - [CLKID_MALI_0_DIV] = &g12a_mali_0_div.hw, 4422 - [CLKID_MALI_0] = &g12a_mali_0.hw, 4423 - [CLKID_MALI_1_SEL] = &g12a_mali_1_sel.hw, 4424 - [CLKID_MALI_1_DIV] = &g12a_mali_1_div.hw, 4425 - [CLKID_MALI_1] = &g12a_mali_1.hw, 4426 - [CLKID_MALI] = &g12a_mali.hw, 4427 - [CLKID_MPLL_50M_DIV] = &g12a_mpll_50m_div.hw, 4428 - [CLKID_MPLL_50M] = &g12a_mpll_50m.hw, 4429 - [CLKID_SYS_PLL_DIV16_EN] = &g12a_sys_pll_div16_en.hw, 4430 - [CLKID_SYS_PLL_DIV16] = &g12a_sys_pll_div16.hw, 4431 - [CLKID_CPU_CLK_DYN0_SEL] = &g12a_cpu_clk_premux0.hw, 4432 - [CLKID_CPU_CLK_DYN0_DIV] = &g12a_cpu_clk_mux0_div.hw, 4433 - [CLKID_CPU_CLK_DYN0] = &g12a_cpu_clk_postmux0.hw, 4434 - [CLKID_CPU_CLK_DYN1_SEL] = &g12a_cpu_clk_premux1.hw, 4435 - [CLKID_CPU_CLK_DYN1_DIV] = &g12a_cpu_clk_mux1_div.hw, 4436 - [CLKID_CPU_CLK_DYN1] = &g12a_cpu_clk_postmux1.hw, 4437 - [CLKID_CPU_CLK_DYN] = &g12a_cpu_clk_dyn.hw, 4438 - [CLKID_CPU_CLK] = &g12a_cpu_clk.hw, 4439 - [CLKID_CPU_CLK_DIV16_EN] = &g12a_cpu_clk_div16_en.hw, 4440 - [CLKID_CPU_CLK_DIV16] = &g12a_cpu_clk_div16.hw, 4441 - [CLKID_CPU_CLK_APB_DIV] = &g12a_cpu_clk_apb_div.hw, 4442 - [CLKID_CPU_CLK_APB] = &g12a_cpu_clk_apb.hw, 4443 - [CLKID_CPU_CLK_ATB_DIV] = &g12a_cpu_clk_atb_div.hw, 4444 - [CLKID_CPU_CLK_ATB] = &g12a_cpu_clk_atb.hw, 4445 - [CLKID_CPU_CLK_AXI_DIV] = &g12a_cpu_clk_axi_div.hw, 4446 - [CLKID_CPU_CLK_AXI] = &g12a_cpu_clk_axi.hw, 4447 - [CLKID_CPU_CLK_TRACE_DIV] = &g12a_cpu_clk_trace_div.hw, 4448 - [CLKID_CPU_CLK_TRACE] = &g12a_cpu_clk_trace.hw, 4449 - [CLKID_PCIE_PLL_DCO] = &g12a_pcie_pll_dco.hw, 4450 - [CLKID_PCIE_PLL_DCO_DIV2] = &g12a_pcie_pll_dco_div2.hw, 4451 - [CLKID_PCIE_PLL_OD] = &g12a_pcie_pll_od.hw, 4452 - [CLKID_PCIE_PLL] = &g12a_pcie_pll.hw, 4453 - [CLKID_VDEC_1_SEL] = &g12a_vdec_1_sel.hw, 4454 - [CLKID_VDEC_1_DIV] = &g12a_vdec_1_div.hw, 4455 - [CLKID_VDEC_1] = &g12a_vdec_1.hw, 4456 - [CLKID_VDEC_HEVC_SEL] = &g12a_vdec_hevc_sel.hw, 4457 - [CLKID_VDEC_HEVC_DIV] = &g12a_vdec_hevc_div.hw, 4458 - [CLKID_VDEC_HEVC] = &g12a_vdec_hevc.hw, 4459 - [CLKID_VDEC_HEVCF_SEL] = &g12a_vdec_hevcf_sel.hw, 4460 - [CLKID_VDEC_HEVCF_DIV] = &g12a_vdec_hevcf_div.hw, 4461 - [CLKID_VDEC_HEVCF] = &g12a_vdec_hevcf.hw, 4462 - [CLKID_TS_DIV] = &g12a_ts_div.hw, 4463 - [CLKID_TS] = &g12a_ts.hw, 4464 - [CLKID_SPICC0_SCLK_SEL] = &g12a_spicc0_sclk_sel.hw, 4465 - [CLKID_SPICC0_SCLK_DIV] = &g12a_spicc0_sclk_div.hw, 4466 - [CLKID_SPICC0_SCLK] = &g12a_spicc0_sclk.hw, 4467 - [CLKID_SPICC1_SCLK_SEL] = &g12a_spicc1_sclk_sel.hw, 4468 - [CLKID_SPICC1_SCLK_DIV] = &g12a_spicc1_sclk_div.hw, 4469 - [CLKID_SPICC1_SCLK] = &g12a_spicc1_sclk.hw, 4470 - [CLKID_MIPI_DSI_PXCLK_SEL] = &g12a_mipi_dsi_pxclk_sel.hw, 4471 - [CLKID_MIPI_DSI_PXCLK_DIV] = &g12a_mipi_dsi_pxclk_div.hw, 4472 - [CLKID_MIPI_DSI_PXCLK] = &g12a_mipi_dsi_pxclk.hw, 4473 - [NR_CLKS] = NULL, 4474 - }, 4475 - .num = NR_CLKS, 4247 + static struct clk_hw *g12a_hw_clks[] = { 4248 + [CLKID_SYS_PLL] = &g12a_sys_pll.hw, 4249 + [CLKID_FIXED_PLL] = &g12a_fixed_pll.hw, 4250 + [CLKID_FCLK_DIV2] = &g12a_fclk_div2.hw, 4251 + [CLKID_FCLK_DIV3] = &g12a_fclk_div3.hw, 4252 + [CLKID_FCLK_DIV4] = &g12a_fclk_div4.hw, 4253 + [CLKID_FCLK_DIV5] = &g12a_fclk_div5.hw, 4254 + [CLKID_FCLK_DIV7] = &g12a_fclk_div7.hw, 4255 + [CLKID_FCLK_DIV2P5] = &g12a_fclk_div2p5.hw, 4256 + [CLKID_GP0_PLL] = &g12a_gp0_pll.hw, 4257 + [CLKID_MPEG_SEL] = &g12a_mpeg_clk_sel.hw, 4258 + [CLKID_MPEG_DIV] = &g12a_mpeg_clk_div.hw, 4259 + [CLKID_CLK81] = &g12a_clk81.hw, 4260 + [CLKID_MPLL0] = &g12a_mpll0.hw, 4261 + [CLKID_MPLL1] = &g12a_mpll1.hw, 4262 + [CLKID_MPLL2] = &g12a_mpll2.hw, 4263 + [CLKID_MPLL3] = &g12a_mpll3.hw, 4264 + [CLKID_DDR] = &g12a_ddr.hw, 4265 + [CLKID_DOS] = &g12a_dos.hw, 4266 + [CLKID_AUDIO_LOCKER] = &g12a_audio_locker.hw, 4267 + [CLKID_MIPI_DSI_HOST] = &g12a_mipi_dsi_host.hw, 4268 + [CLKID_ETH_PHY] = &g12a_eth_phy.hw, 4269 + [CLKID_ISA] = &g12a_isa.hw, 4270 + [CLKID_PL301] = &g12a_pl301.hw, 4271 + [CLKID_PERIPHS] = &g12a_periphs.hw, 4272 + [CLKID_SPICC0] = &g12a_spicc_0.hw, 4273 + [CLKID_I2C] = &g12a_i2c.hw, 4274 + [CLKID_SANA] = &g12a_sana.hw, 4275 + [CLKID_SD] = &g12a_sd.hw, 4276 + [CLKID_RNG0] = &g12a_rng0.hw, 4277 + [CLKID_UART0] = &g12a_uart0.hw, 4278 + [CLKID_SPICC1] = &g12a_spicc_1.hw, 4279 + [CLKID_HIU_IFACE] = &g12a_hiu_reg.hw, 4280 + [CLKID_MIPI_DSI_PHY] = &g12a_mipi_dsi_phy.hw, 4281 + [CLKID_ASSIST_MISC] = &g12a_assist_misc.hw, 4282 + [CLKID_SD_EMMC_A] = &g12a_emmc_a.hw, 4283 + [CLKID_SD_EMMC_B] = &g12a_emmc_b.hw, 4284 + [CLKID_SD_EMMC_C] = &g12a_emmc_c.hw, 4285 + [CLKID_AUDIO_CODEC] = &g12a_audio_codec.hw, 4286 + [CLKID_AUDIO] = &g12a_audio.hw, 4287 + [CLKID_ETH] = &g12a_eth_core.hw, 4288 + [CLKID_DEMUX] = &g12a_demux.hw, 4289 + [CLKID_AUDIO_IFIFO] = &g12a_audio_ififo.hw, 4290 + [CLKID_ADC] = &g12a_adc.hw, 4291 + [CLKID_UART1] = &g12a_uart1.hw, 4292 + [CLKID_G2D] = &g12a_g2d.hw, 4293 + [CLKID_RESET] = &g12a_reset.hw, 4294 + [CLKID_PCIE_COMB] = &g12a_pcie_comb.hw, 4295 + [CLKID_PARSER] = &g12a_parser.hw, 4296 + [CLKID_USB] = &g12a_usb_general.hw, 4297 + [CLKID_PCIE_PHY] = &g12a_pcie_phy.hw, 4298 + [CLKID_AHB_ARB0] = &g12a_ahb_arb0.hw, 4299 + [CLKID_AHB_DATA_BUS] = &g12a_ahb_data_bus.hw, 4300 + [CLKID_AHB_CTRL_BUS] = &g12a_ahb_ctrl_bus.hw, 4301 + [CLKID_HTX_HDCP22] = &g12a_htx_hdcp22.hw, 4302 + [CLKID_HTX_PCLK] = &g12a_htx_pclk.hw, 4303 + [CLKID_BT656] = &g12a_bt656.hw, 4304 + [CLKID_USB1_DDR_BRIDGE] = &g12a_usb1_to_ddr.hw, 4305 + [CLKID_MMC_PCLK] = &g12a_mmc_pclk.hw, 4306 + [CLKID_UART2] = &g12a_uart2.hw, 4307 + [CLKID_VPU_INTR] = &g12a_vpu_intr.hw, 4308 + [CLKID_GIC] = &g12a_gic.hw, 4309 + [CLKID_SD_EMMC_A_CLK0_SEL] = &g12a_sd_emmc_a_clk0_sel.hw, 4310 + [CLKID_SD_EMMC_A_CLK0_DIV] = &g12a_sd_emmc_a_clk0_div.hw, 4311 + [CLKID_SD_EMMC_A_CLK0] = &g12a_sd_emmc_a_clk0.hw, 4312 + [CLKID_SD_EMMC_B_CLK0_SEL] = &g12a_sd_emmc_b_clk0_sel.hw, 4313 + [CLKID_SD_EMMC_B_CLK0_DIV] = &g12a_sd_emmc_b_clk0_div.hw, 4314 + [CLKID_SD_EMMC_B_CLK0] = &g12a_sd_emmc_b_clk0.hw, 4315 + [CLKID_SD_EMMC_C_CLK0_SEL] = &g12a_sd_emmc_c_clk0_sel.hw, 4316 + [CLKID_SD_EMMC_C_CLK0_DIV] = &g12a_sd_emmc_c_clk0_div.hw, 4317 + [CLKID_SD_EMMC_C_CLK0] = &g12a_sd_emmc_c_clk0.hw, 4318 + [CLKID_MPLL0_DIV] = &g12a_mpll0_div.hw, 4319 + [CLKID_MPLL1_DIV] = &g12a_mpll1_div.hw, 4320 + [CLKID_MPLL2_DIV] = &g12a_mpll2_div.hw, 4321 + [CLKID_MPLL3_DIV] = &g12a_mpll3_div.hw, 4322 + [CLKID_FCLK_DIV2_DIV] = &g12a_fclk_div2_div.hw, 4323 + [CLKID_FCLK_DIV3_DIV] = &g12a_fclk_div3_div.hw, 4324 + [CLKID_FCLK_DIV4_DIV] = &g12a_fclk_div4_div.hw, 4325 + [CLKID_FCLK_DIV5_DIV] = &g12a_fclk_div5_div.hw, 4326 + [CLKID_FCLK_DIV7_DIV] = &g12a_fclk_div7_div.hw, 4327 + [CLKID_FCLK_DIV2P5_DIV] = &g12a_fclk_div2p5_div.hw, 4328 + [CLKID_HIFI_PLL] = &g12a_hifi_pll.hw, 4329 + [CLKID_VCLK2_VENCI0] = &g12a_vclk2_venci0.hw, 4330 + [CLKID_VCLK2_VENCI1] = &g12a_vclk2_venci1.hw, 4331 + [CLKID_VCLK2_VENCP0] = &g12a_vclk2_vencp0.hw, 4332 + [CLKID_VCLK2_VENCP1] = &g12a_vclk2_vencp1.hw, 4333 + [CLKID_VCLK2_VENCT0] = &g12a_vclk2_venct0.hw, 4334 + [CLKID_VCLK2_VENCT1] = &g12a_vclk2_venct1.hw, 4335 + [CLKID_VCLK2_OTHER] = &g12a_vclk2_other.hw, 4336 + [CLKID_VCLK2_ENCI] = &g12a_vclk2_enci.hw, 4337 + [CLKID_VCLK2_ENCP] = &g12a_vclk2_encp.hw, 4338 + [CLKID_DAC_CLK] = &g12a_dac_clk.hw, 4339 + [CLKID_AOCLK] = &g12a_aoclk_gate.hw, 4340 + [CLKID_IEC958] = &g12a_iec958_gate.hw, 4341 + [CLKID_ENC480P] = &g12a_enc480p.hw, 4342 + [CLKID_RNG1] = &g12a_rng1.hw, 4343 + [CLKID_VCLK2_ENCT] = &g12a_vclk2_enct.hw, 4344 + [CLKID_VCLK2_ENCL] = &g12a_vclk2_encl.hw, 4345 + [CLKID_VCLK2_VENCLMMC] = &g12a_vclk2_venclmmc.hw, 4346 + [CLKID_VCLK2_VENCL] = &g12a_vclk2_vencl.hw, 4347 + [CLKID_VCLK2_OTHER1] = &g12a_vclk2_other1.hw, 4348 + [CLKID_FIXED_PLL_DCO] = &g12a_fixed_pll_dco.hw, 4349 + [CLKID_SYS_PLL_DCO] = &g12a_sys_pll_dco.hw, 4350 + [CLKID_GP0_PLL_DCO] = &g12a_gp0_pll_dco.hw, 4351 + [CLKID_HIFI_PLL_DCO] = &g12a_hifi_pll_dco.hw, 4352 + [CLKID_DMA] = &g12a_dma.hw, 4353 + [CLKID_EFUSE] = &g12a_efuse.hw, 4354 + [CLKID_ROM_BOOT] = &g12a_rom_boot.hw, 4355 + [CLKID_RESET_SEC] = &g12a_reset_sec.hw, 4356 + [CLKID_SEC_AHB_APB3] = &g12a_sec_ahb_apb3.hw, 4357 + [CLKID_MPLL_PREDIV] = &g12a_mpll_prediv.hw, 4358 + [CLKID_VPU_0_SEL] = &g12a_vpu_0_sel.hw, 4359 + [CLKID_VPU_0_DIV] = &g12a_vpu_0_div.hw, 4360 + [CLKID_VPU_0] = &g12a_vpu_0.hw, 4361 + [CLKID_VPU_1_SEL] = &g12a_vpu_1_sel.hw, 4362 + [CLKID_VPU_1_DIV] = &g12a_vpu_1_div.hw, 4363 + [CLKID_VPU_1] = &g12a_vpu_1.hw, 4364 + [CLKID_VPU] = &g12a_vpu.hw, 4365 + [CLKID_VAPB_0_SEL] = &g12a_vapb_0_sel.hw, 4366 + [CLKID_VAPB_0_DIV] = &g12a_vapb_0_div.hw, 4367 + [CLKID_VAPB_0] = &g12a_vapb_0.hw, 4368 + [CLKID_VAPB_1_SEL] = &g12a_vapb_1_sel.hw, 4369 + [CLKID_VAPB_1_DIV] = &g12a_vapb_1_div.hw, 4370 + [CLKID_VAPB_1] = &g12a_vapb_1.hw, 4371 + [CLKID_VAPB_SEL] = &g12a_vapb_sel.hw, 4372 + [CLKID_VAPB] = &g12a_vapb.hw, 4373 + [CLKID_HDMI_PLL_DCO] = &g12a_hdmi_pll_dco.hw, 4374 + [CLKID_HDMI_PLL_OD] = &g12a_hdmi_pll_od.hw, 4375 + [CLKID_HDMI_PLL_OD2] = &g12a_hdmi_pll_od2.hw, 4376 + [CLKID_HDMI_PLL] = &g12a_hdmi_pll.hw, 4377 + [CLKID_VID_PLL] = &g12a_vid_pll_div.hw, 4378 + [CLKID_VID_PLL_SEL] = &g12a_vid_pll_sel.hw, 4379 + [CLKID_VID_PLL_DIV] = &g12a_vid_pll.hw, 4380 + [CLKID_VCLK_SEL] = &g12a_vclk_sel.hw, 4381 + [CLKID_VCLK2_SEL] = &g12a_vclk2_sel.hw, 4382 + [CLKID_VCLK_INPUT] = &g12a_vclk_input.hw, 4383 + [CLKID_VCLK2_INPUT] = &g12a_vclk2_input.hw, 4384 + [CLKID_VCLK_DIV] = &g12a_vclk_div.hw, 4385 + [CLKID_VCLK2_DIV] = &g12a_vclk2_div.hw, 4386 + [CLKID_VCLK] = &g12a_vclk.hw, 4387 + [CLKID_VCLK2] = &g12a_vclk2.hw, 4388 + [CLKID_VCLK_DIV1] = &g12a_vclk_div1.hw, 4389 + [CLKID_VCLK_DIV2_EN] = &g12a_vclk_div2_en.hw, 4390 + [CLKID_VCLK_DIV4_EN] = &g12a_vclk_div4_en.hw, 4391 + [CLKID_VCLK_DIV6_EN] = &g12a_vclk_div6_en.hw, 4392 + [CLKID_VCLK_DIV12_EN] = &g12a_vclk_div12_en.hw, 4393 + [CLKID_VCLK2_DIV1] = &g12a_vclk2_div1.hw, 4394 + [CLKID_VCLK2_DIV2_EN] = &g12a_vclk2_div2_en.hw, 4395 + [CLKID_VCLK2_DIV4_EN] = &g12a_vclk2_div4_en.hw, 4396 + [CLKID_VCLK2_DIV6_EN] = &g12a_vclk2_div6_en.hw, 4397 + [CLKID_VCLK2_DIV12_EN] = &g12a_vclk2_div12_en.hw, 4398 + [CLKID_VCLK_DIV2] = &g12a_vclk_div2.hw, 4399 + [CLKID_VCLK_DIV4] = &g12a_vclk_div4.hw, 4400 + [CLKID_VCLK_DIV6] = &g12a_vclk_div6.hw, 4401 + [CLKID_VCLK_DIV12] = &g12a_vclk_div12.hw, 4402 + [CLKID_VCLK2_DIV2] = &g12a_vclk2_div2.hw, 4403 + [CLKID_VCLK2_DIV4] = &g12a_vclk2_div4.hw, 4404 + [CLKID_VCLK2_DIV6] = &g12a_vclk2_div6.hw, 4405 + [CLKID_VCLK2_DIV12] = &g12a_vclk2_div12.hw, 4406 + [CLKID_CTS_ENCI_SEL] = &g12a_cts_enci_sel.hw, 4407 + [CLKID_CTS_ENCP_SEL] = &g12a_cts_encp_sel.hw, 4408 + [CLKID_CTS_VDAC_SEL] = &g12a_cts_vdac_sel.hw, 4409 + [CLKID_HDMI_TX_SEL] = &g12a_hdmi_tx_sel.hw, 4410 + [CLKID_CTS_ENCI] = &g12a_cts_enci.hw, 4411 + [CLKID_CTS_ENCP] = &g12a_cts_encp.hw, 4412 + [CLKID_CTS_VDAC] = &g12a_cts_vdac.hw, 4413 + [CLKID_HDMI_TX] = &g12a_hdmi_tx.hw, 4414 + [CLKID_HDMI_SEL] = &g12a_hdmi_sel.hw, 4415 + [CLKID_HDMI_DIV] = &g12a_hdmi_div.hw, 4416 + [CLKID_HDMI] = &g12a_hdmi.hw, 4417 + [CLKID_MALI_0_SEL] = &g12a_mali_0_sel.hw, 4418 + [CLKID_MALI_0_DIV] = &g12a_mali_0_div.hw, 4419 + [CLKID_MALI_0] = &g12a_mali_0.hw, 4420 + [CLKID_MALI_1_SEL] = &g12a_mali_1_sel.hw, 4421 + [CLKID_MALI_1_DIV] = &g12a_mali_1_div.hw, 4422 + [CLKID_MALI_1] = &g12a_mali_1.hw, 4423 + [CLKID_MALI] = &g12a_mali.hw, 4424 + [CLKID_MPLL_50M_DIV] = &g12a_mpll_50m_div.hw, 4425 + [CLKID_MPLL_50M] = &g12a_mpll_50m.hw, 4426 + [CLKID_SYS_PLL_DIV16_EN] = &g12a_sys_pll_div16_en.hw, 4427 + [CLKID_SYS_PLL_DIV16] = &g12a_sys_pll_div16.hw, 4428 + [CLKID_CPU_CLK_DYN0_SEL] = &g12a_cpu_clk_premux0.hw, 4429 + [CLKID_CPU_CLK_DYN0_DIV] = &g12a_cpu_clk_mux0_div.hw, 4430 + [CLKID_CPU_CLK_DYN0] = &g12a_cpu_clk_postmux0.hw, 4431 + [CLKID_CPU_CLK_DYN1_SEL] = &g12a_cpu_clk_premux1.hw, 4432 + [CLKID_CPU_CLK_DYN1_DIV] = &g12a_cpu_clk_mux1_div.hw, 4433 + [CLKID_CPU_CLK_DYN1] = &g12a_cpu_clk_postmux1.hw, 4434 + [CLKID_CPU_CLK_DYN] = &g12a_cpu_clk_dyn.hw, 4435 + [CLKID_CPU_CLK] = &g12a_cpu_clk.hw, 4436 + [CLKID_CPU_CLK_DIV16_EN] = &g12a_cpu_clk_div16_en.hw, 4437 + [CLKID_CPU_CLK_DIV16] = &g12a_cpu_clk_div16.hw, 4438 + [CLKID_CPU_CLK_APB_DIV] = &g12a_cpu_clk_apb_div.hw, 4439 + [CLKID_CPU_CLK_APB] = &g12a_cpu_clk_apb.hw, 4440 + [CLKID_CPU_CLK_ATB_DIV] = &g12a_cpu_clk_atb_div.hw, 4441 + [CLKID_CPU_CLK_ATB] = &g12a_cpu_clk_atb.hw, 4442 + [CLKID_CPU_CLK_AXI_DIV] = &g12a_cpu_clk_axi_div.hw, 4443 + [CLKID_CPU_CLK_AXI] = &g12a_cpu_clk_axi.hw, 4444 + [CLKID_CPU_CLK_TRACE_DIV] = &g12a_cpu_clk_trace_div.hw, 4445 + [CLKID_CPU_CLK_TRACE] = &g12a_cpu_clk_trace.hw, 4446 + [CLKID_PCIE_PLL_DCO] = &g12a_pcie_pll_dco.hw, 4447 + [CLKID_PCIE_PLL_DCO_DIV2] = &g12a_pcie_pll_dco_div2.hw, 4448 + [CLKID_PCIE_PLL_OD] = &g12a_pcie_pll_od.hw, 4449 + [CLKID_PCIE_PLL] = &g12a_pcie_pll.hw, 4450 + [CLKID_VDEC_1_SEL] = &g12a_vdec_1_sel.hw, 4451 + [CLKID_VDEC_1_DIV] = &g12a_vdec_1_div.hw, 4452 + [CLKID_VDEC_1] = &g12a_vdec_1.hw, 4453 + [CLKID_VDEC_HEVC_SEL] = &g12a_vdec_hevc_sel.hw, 4454 + [CLKID_VDEC_HEVC_DIV] = &g12a_vdec_hevc_div.hw, 4455 + [CLKID_VDEC_HEVC] = &g12a_vdec_hevc.hw, 4456 + [CLKID_VDEC_HEVCF_SEL] = &g12a_vdec_hevcf_sel.hw, 4457 + [CLKID_VDEC_HEVCF_DIV] = &g12a_vdec_hevcf_div.hw, 4458 + [CLKID_VDEC_HEVCF] = &g12a_vdec_hevcf.hw, 4459 + [CLKID_TS_DIV] = &g12a_ts_div.hw, 4460 + [CLKID_TS] = &g12a_ts.hw, 4461 + [CLKID_SPICC0_SCLK_SEL] = &g12a_spicc0_sclk_sel.hw, 4462 + [CLKID_SPICC0_SCLK_DIV] = &g12a_spicc0_sclk_div.hw, 4463 + [CLKID_SPICC0_SCLK] = &g12a_spicc0_sclk.hw, 4464 + [CLKID_SPICC1_SCLK_SEL] = &g12a_spicc1_sclk_sel.hw, 4465 + [CLKID_SPICC1_SCLK_DIV] = &g12a_spicc1_sclk_div.hw, 4466 + [CLKID_SPICC1_SCLK] = &g12a_spicc1_sclk.hw, 4467 + [CLKID_MIPI_DSI_PXCLK_SEL] = &g12a_mipi_dsi_pxclk_sel.hw, 4468 + [CLKID_MIPI_DSI_PXCLK_DIV] = &g12a_mipi_dsi_pxclk_div.hw, 4469 + [CLKID_MIPI_DSI_PXCLK] = &g12a_mipi_dsi_pxclk.hw, 4476 4470 }; 4477 4471 4478 - static struct clk_hw_onecell_data g12b_hw_onecell_data = { 4479 - .hws = { 4480 - [CLKID_SYS_PLL] = &g12a_sys_pll.hw, 4481 - [CLKID_FIXED_PLL] = &g12a_fixed_pll.hw, 4482 - [CLKID_FCLK_DIV2] = &g12a_fclk_div2.hw, 4483 - [CLKID_FCLK_DIV3] = &g12a_fclk_div3.hw, 4484 - [CLKID_FCLK_DIV4] = &g12a_fclk_div4.hw, 4485 - [CLKID_FCLK_DIV5] = &g12a_fclk_div5.hw, 4486 - [CLKID_FCLK_DIV7] = &g12a_fclk_div7.hw, 4487 - [CLKID_FCLK_DIV2P5] = &g12a_fclk_div2p5.hw, 4488 - [CLKID_GP0_PLL] = &g12a_gp0_pll.hw, 4489 - [CLKID_MPEG_SEL] = &g12a_mpeg_clk_sel.hw, 4490 - [CLKID_MPEG_DIV] = &g12a_mpeg_clk_div.hw, 4491 - [CLKID_CLK81] = &g12a_clk81.hw, 4492 - [CLKID_MPLL0] = &g12a_mpll0.hw, 4493 - [CLKID_MPLL1] = &g12a_mpll1.hw, 4494 - [CLKID_MPLL2] = &g12a_mpll2.hw, 4495 - [CLKID_MPLL3] = &g12a_mpll3.hw, 4496 - [CLKID_DDR] = &g12a_ddr.hw, 4497 - [CLKID_DOS] = &g12a_dos.hw, 4498 - [CLKID_AUDIO_LOCKER] = &g12a_audio_locker.hw, 4499 - [CLKID_MIPI_DSI_HOST] = &g12a_mipi_dsi_host.hw, 4500 - [CLKID_ETH_PHY] = &g12a_eth_phy.hw, 4501 - [CLKID_ISA] = &g12a_isa.hw, 4502 - [CLKID_PL301] = &g12a_pl301.hw, 4503 - [CLKID_PERIPHS] = &g12a_periphs.hw, 4504 - [CLKID_SPICC0] = &g12a_spicc_0.hw, 4505 - [CLKID_I2C] = &g12a_i2c.hw, 4506 - [CLKID_SANA] = &g12a_sana.hw, 4507 - [CLKID_SD] = &g12a_sd.hw, 4508 - [CLKID_RNG0] = &g12a_rng0.hw, 4509 - [CLKID_UART0] = &g12a_uart0.hw, 4510 - [CLKID_SPICC1] = &g12a_spicc_1.hw, 4511 - [CLKID_HIU_IFACE] = &g12a_hiu_reg.hw, 4512 - [CLKID_MIPI_DSI_PHY] = &g12a_mipi_dsi_phy.hw, 4513 - [CLKID_ASSIST_MISC] = &g12a_assist_misc.hw, 4514 - [CLKID_SD_EMMC_A] = &g12a_emmc_a.hw, 4515 - [CLKID_SD_EMMC_B] = &g12a_emmc_b.hw, 4516 - [CLKID_SD_EMMC_C] = &g12a_emmc_c.hw, 4517 - [CLKID_AUDIO_CODEC] = &g12a_audio_codec.hw, 4518 - [CLKID_AUDIO] = &g12a_audio.hw, 4519 - [CLKID_ETH] = &g12a_eth_core.hw, 4520 - [CLKID_DEMUX] = &g12a_demux.hw, 4521 - [CLKID_AUDIO_IFIFO] = &g12a_audio_ififo.hw, 4522 - [CLKID_ADC] = &g12a_adc.hw, 4523 - [CLKID_UART1] = &g12a_uart1.hw, 4524 - [CLKID_G2D] = &g12a_g2d.hw, 4525 - [CLKID_RESET] = &g12a_reset.hw, 4526 - [CLKID_PCIE_COMB] = &g12a_pcie_comb.hw, 4527 - [CLKID_PARSER] = &g12a_parser.hw, 4528 - [CLKID_USB] = &g12a_usb_general.hw, 4529 - [CLKID_PCIE_PHY] = &g12a_pcie_phy.hw, 4530 - [CLKID_AHB_ARB0] = &g12a_ahb_arb0.hw, 4531 - [CLKID_AHB_DATA_BUS] = &g12a_ahb_data_bus.hw, 4532 - [CLKID_AHB_CTRL_BUS] = &g12a_ahb_ctrl_bus.hw, 4533 - [CLKID_HTX_HDCP22] = &g12a_htx_hdcp22.hw, 4534 - [CLKID_HTX_PCLK] = &g12a_htx_pclk.hw, 4535 - [CLKID_BT656] = &g12a_bt656.hw, 4536 - [CLKID_USB1_DDR_BRIDGE] = &g12a_usb1_to_ddr.hw, 4537 - [CLKID_MMC_PCLK] = &g12a_mmc_pclk.hw, 4538 - [CLKID_UART2] = &g12a_uart2.hw, 4539 - [CLKID_VPU_INTR] = &g12a_vpu_intr.hw, 4540 - [CLKID_GIC] = &g12a_gic.hw, 4541 - [CLKID_SD_EMMC_A_CLK0_SEL] = &g12a_sd_emmc_a_clk0_sel.hw, 4542 - [CLKID_SD_EMMC_A_CLK0_DIV] = &g12a_sd_emmc_a_clk0_div.hw, 4543 - [CLKID_SD_EMMC_A_CLK0] = &g12a_sd_emmc_a_clk0.hw, 4544 - [CLKID_SD_EMMC_B_CLK0_SEL] = &g12a_sd_emmc_b_clk0_sel.hw, 4545 - [CLKID_SD_EMMC_B_CLK0_DIV] = &g12a_sd_emmc_b_clk0_div.hw, 4546 - [CLKID_SD_EMMC_B_CLK0] = &g12a_sd_emmc_b_clk0.hw, 4547 - [CLKID_SD_EMMC_C_CLK0_SEL] = &g12a_sd_emmc_c_clk0_sel.hw, 4548 - [CLKID_SD_EMMC_C_CLK0_DIV] = &g12a_sd_emmc_c_clk0_div.hw, 4549 - [CLKID_SD_EMMC_C_CLK0] = &g12a_sd_emmc_c_clk0.hw, 4550 - [CLKID_MPLL0_DIV] = &g12a_mpll0_div.hw, 4551 - [CLKID_MPLL1_DIV] = &g12a_mpll1_div.hw, 4552 - [CLKID_MPLL2_DIV] = &g12a_mpll2_div.hw, 4553 - [CLKID_MPLL3_DIV] = &g12a_mpll3_div.hw, 4554 - [CLKID_FCLK_DIV2_DIV] = &g12a_fclk_div2_div.hw, 4555 - [CLKID_FCLK_DIV3_DIV] = &g12a_fclk_div3_div.hw, 4556 - [CLKID_FCLK_DIV4_DIV] = &g12a_fclk_div4_div.hw, 4557 - [CLKID_FCLK_DIV5_DIV] = &g12a_fclk_div5_div.hw, 4558 - [CLKID_FCLK_DIV7_DIV] = &g12a_fclk_div7_div.hw, 4559 - [CLKID_FCLK_DIV2P5_DIV] = &g12a_fclk_div2p5_div.hw, 4560 - [CLKID_HIFI_PLL] = &g12a_hifi_pll.hw, 4561 - [CLKID_VCLK2_VENCI0] = &g12a_vclk2_venci0.hw, 4562 - [CLKID_VCLK2_VENCI1] = &g12a_vclk2_venci1.hw, 4563 - [CLKID_VCLK2_VENCP0] = &g12a_vclk2_vencp0.hw, 4564 - [CLKID_VCLK2_VENCP1] = &g12a_vclk2_vencp1.hw, 4565 - [CLKID_VCLK2_VENCT0] = &g12a_vclk2_venct0.hw, 4566 - [CLKID_VCLK2_VENCT1] = &g12a_vclk2_venct1.hw, 4567 - [CLKID_VCLK2_OTHER] = &g12a_vclk2_other.hw, 4568 - [CLKID_VCLK2_ENCI] = &g12a_vclk2_enci.hw, 4569 - [CLKID_VCLK2_ENCP] = &g12a_vclk2_encp.hw, 4570 - [CLKID_DAC_CLK] = &g12a_dac_clk.hw, 4571 - [CLKID_AOCLK] = &g12a_aoclk_gate.hw, 4572 - [CLKID_IEC958] = &g12a_iec958_gate.hw, 4573 - [CLKID_ENC480P] = &g12a_enc480p.hw, 4574 - [CLKID_RNG1] = &g12a_rng1.hw, 4575 - [CLKID_VCLK2_ENCT] = &g12a_vclk2_enct.hw, 4576 - [CLKID_VCLK2_ENCL] = &g12a_vclk2_encl.hw, 4577 - [CLKID_VCLK2_VENCLMMC] = &g12a_vclk2_venclmmc.hw, 4578 - [CLKID_VCLK2_VENCL] = &g12a_vclk2_vencl.hw, 4579 - [CLKID_VCLK2_OTHER1] = &g12a_vclk2_other1.hw, 4580 - [CLKID_FIXED_PLL_DCO] = &g12a_fixed_pll_dco.hw, 4581 - [CLKID_SYS_PLL_DCO] = &g12a_sys_pll_dco.hw, 4582 - [CLKID_GP0_PLL_DCO] = &g12a_gp0_pll_dco.hw, 4583 - [CLKID_HIFI_PLL_DCO] = &g12a_hifi_pll_dco.hw, 4584 - [CLKID_DMA] = &g12a_dma.hw, 4585 - [CLKID_EFUSE] = &g12a_efuse.hw, 4586 - [CLKID_ROM_BOOT] = &g12a_rom_boot.hw, 4587 - [CLKID_RESET_SEC] = &g12a_reset_sec.hw, 4588 - [CLKID_SEC_AHB_APB3] = &g12a_sec_ahb_apb3.hw, 4589 - [CLKID_MPLL_PREDIV] = &g12a_mpll_prediv.hw, 4590 - [CLKID_VPU_0_SEL] = &g12a_vpu_0_sel.hw, 4591 - [CLKID_VPU_0_DIV] = &g12a_vpu_0_div.hw, 4592 - [CLKID_VPU_0] = &g12a_vpu_0.hw, 4593 - [CLKID_VPU_1_SEL] = &g12a_vpu_1_sel.hw, 4594 - [CLKID_VPU_1_DIV] = &g12a_vpu_1_div.hw, 4595 - [CLKID_VPU_1] = &g12a_vpu_1.hw, 4596 - [CLKID_VPU] = &g12a_vpu.hw, 4597 - [CLKID_VAPB_0_SEL] = &g12a_vapb_0_sel.hw, 4598 - [CLKID_VAPB_0_DIV] = &g12a_vapb_0_div.hw, 4599 - [CLKID_VAPB_0] = &g12a_vapb_0.hw, 4600 - [CLKID_VAPB_1_SEL] = &g12a_vapb_1_sel.hw, 4601 - [CLKID_VAPB_1_DIV] = &g12a_vapb_1_div.hw, 4602 - [CLKID_VAPB_1] = &g12a_vapb_1.hw, 4603 - [CLKID_VAPB_SEL] = &g12a_vapb_sel.hw, 4604 - [CLKID_VAPB] = &g12a_vapb.hw, 4605 - [CLKID_HDMI_PLL_DCO] = &g12a_hdmi_pll_dco.hw, 4606 - [CLKID_HDMI_PLL_OD] = &g12a_hdmi_pll_od.hw, 4607 - [CLKID_HDMI_PLL_OD2] = &g12a_hdmi_pll_od2.hw, 4608 - [CLKID_HDMI_PLL] = &g12a_hdmi_pll.hw, 4609 - [CLKID_VID_PLL] = &g12a_vid_pll_div.hw, 4610 - [CLKID_VID_PLL_SEL] = &g12a_vid_pll_sel.hw, 4611 - [CLKID_VID_PLL_DIV] = &g12a_vid_pll.hw, 4612 - [CLKID_VCLK_SEL] = &g12a_vclk_sel.hw, 4613 - [CLKID_VCLK2_SEL] = &g12a_vclk2_sel.hw, 4614 - [CLKID_VCLK_INPUT] = &g12a_vclk_input.hw, 4615 - [CLKID_VCLK2_INPUT] = &g12a_vclk2_input.hw, 4616 - [CLKID_VCLK_DIV] = &g12a_vclk_div.hw, 4617 - [CLKID_VCLK2_DIV] = &g12a_vclk2_div.hw, 4618 - [CLKID_VCLK] = &g12a_vclk.hw, 4619 - [CLKID_VCLK2] = &g12a_vclk2.hw, 4620 - [CLKID_VCLK_DIV1] = &g12a_vclk_div1.hw, 4621 - [CLKID_VCLK_DIV2_EN] = &g12a_vclk_div2_en.hw, 4622 - [CLKID_VCLK_DIV4_EN] = &g12a_vclk_div4_en.hw, 4623 - [CLKID_VCLK_DIV6_EN] = &g12a_vclk_div6_en.hw, 4624 - [CLKID_VCLK_DIV12_EN] = &g12a_vclk_div12_en.hw, 4625 - [CLKID_VCLK2_DIV1] = &g12a_vclk2_div1.hw, 4626 - [CLKID_VCLK2_DIV2_EN] = &g12a_vclk2_div2_en.hw, 4627 - [CLKID_VCLK2_DIV4_EN] = &g12a_vclk2_div4_en.hw, 4628 - [CLKID_VCLK2_DIV6_EN] = &g12a_vclk2_div6_en.hw, 4629 - [CLKID_VCLK2_DIV12_EN] = &g12a_vclk2_div12_en.hw, 4630 - [CLKID_VCLK_DIV2] = &g12a_vclk_div2.hw, 4631 - [CLKID_VCLK_DIV4] = &g12a_vclk_div4.hw, 4632 - [CLKID_VCLK_DIV6] = &g12a_vclk_div6.hw, 4633 - [CLKID_VCLK_DIV12] = &g12a_vclk_div12.hw, 4634 - [CLKID_VCLK2_DIV2] = &g12a_vclk2_div2.hw, 4635 - [CLKID_VCLK2_DIV4] = &g12a_vclk2_div4.hw, 4636 - [CLKID_VCLK2_DIV6] = &g12a_vclk2_div6.hw, 4637 - [CLKID_VCLK2_DIV12] = &g12a_vclk2_div12.hw, 4638 - [CLKID_CTS_ENCI_SEL] = &g12a_cts_enci_sel.hw, 4639 - [CLKID_CTS_ENCP_SEL] = &g12a_cts_encp_sel.hw, 4640 - [CLKID_CTS_VDAC_SEL] = &g12a_cts_vdac_sel.hw, 4641 - [CLKID_HDMI_TX_SEL] = &g12a_hdmi_tx_sel.hw, 4642 - [CLKID_CTS_ENCI] = &g12a_cts_enci.hw, 4643 - [CLKID_CTS_ENCP] = &g12a_cts_encp.hw, 4644 - [CLKID_CTS_VDAC] = &g12a_cts_vdac.hw, 4645 - [CLKID_HDMI_TX] = &g12a_hdmi_tx.hw, 4646 - [CLKID_HDMI_SEL] = &g12a_hdmi_sel.hw, 4647 - [CLKID_HDMI_DIV] = &g12a_hdmi_div.hw, 4648 - [CLKID_HDMI] = &g12a_hdmi.hw, 4649 - [CLKID_MALI_0_SEL] = &g12a_mali_0_sel.hw, 4650 - [CLKID_MALI_0_DIV] = &g12a_mali_0_div.hw, 4651 - [CLKID_MALI_0] = &g12a_mali_0.hw, 4652 - [CLKID_MALI_1_SEL] = &g12a_mali_1_sel.hw, 4653 - [CLKID_MALI_1_DIV] = &g12a_mali_1_div.hw, 4654 - [CLKID_MALI_1] = &g12a_mali_1.hw, 4655 - [CLKID_MALI] = &g12a_mali.hw, 4656 - [CLKID_MPLL_50M_DIV] = &g12a_mpll_50m_div.hw, 4657 - [CLKID_MPLL_50M] = &g12a_mpll_50m.hw, 4658 - [CLKID_SYS_PLL_DIV16_EN] = &g12a_sys_pll_div16_en.hw, 4659 - [CLKID_SYS_PLL_DIV16] = &g12a_sys_pll_div16.hw, 4660 - [CLKID_CPU_CLK_DYN0_SEL] = &g12a_cpu_clk_premux0.hw, 4661 - [CLKID_CPU_CLK_DYN0_DIV] = &g12a_cpu_clk_mux0_div.hw, 4662 - [CLKID_CPU_CLK_DYN0] = &g12a_cpu_clk_postmux0.hw, 4663 - [CLKID_CPU_CLK_DYN1_SEL] = &g12a_cpu_clk_premux1.hw, 4664 - [CLKID_CPU_CLK_DYN1_DIV] = &g12a_cpu_clk_mux1_div.hw, 4665 - [CLKID_CPU_CLK_DYN1] = &g12a_cpu_clk_postmux1.hw, 4666 - [CLKID_CPU_CLK_DYN] = &g12a_cpu_clk_dyn.hw, 4667 - [CLKID_CPU_CLK] = &g12b_cpu_clk.hw, 4668 - [CLKID_CPU_CLK_DIV16_EN] = &g12a_cpu_clk_div16_en.hw, 4669 - [CLKID_CPU_CLK_DIV16] = &g12a_cpu_clk_div16.hw, 4670 - [CLKID_CPU_CLK_APB_DIV] = &g12a_cpu_clk_apb_div.hw, 4671 - [CLKID_CPU_CLK_APB] = &g12a_cpu_clk_apb.hw, 4672 - [CLKID_CPU_CLK_ATB_DIV] = &g12a_cpu_clk_atb_div.hw, 4673 - [CLKID_CPU_CLK_ATB] = &g12a_cpu_clk_atb.hw, 4674 - [CLKID_CPU_CLK_AXI_DIV] = &g12a_cpu_clk_axi_div.hw, 4675 - [CLKID_CPU_CLK_AXI] = &g12a_cpu_clk_axi.hw, 4676 - [CLKID_CPU_CLK_TRACE_DIV] = &g12a_cpu_clk_trace_div.hw, 4677 - [CLKID_CPU_CLK_TRACE] = &g12a_cpu_clk_trace.hw, 4678 - [CLKID_PCIE_PLL_DCO] = &g12a_pcie_pll_dco.hw, 4679 - [CLKID_PCIE_PLL_DCO_DIV2] = &g12a_pcie_pll_dco_div2.hw, 4680 - [CLKID_PCIE_PLL_OD] = &g12a_pcie_pll_od.hw, 4681 - [CLKID_PCIE_PLL] = &g12a_pcie_pll.hw, 4682 - [CLKID_VDEC_1_SEL] = &g12a_vdec_1_sel.hw, 4683 - [CLKID_VDEC_1_DIV] = &g12a_vdec_1_div.hw, 4684 - [CLKID_VDEC_1] = &g12a_vdec_1.hw, 4685 - [CLKID_VDEC_HEVC_SEL] = &g12a_vdec_hevc_sel.hw, 4686 - [CLKID_VDEC_HEVC_DIV] = &g12a_vdec_hevc_div.hw, 4687 - [CLKID_VDEC_HEVC] = &g12a_vdec_hevc.hw, 4688 - [CLKID_VDEC_HEVCF_SEL] = &g12a_vdec_hevcf_sel.hw, 4689 - [CLKID_VDEC_HEVCF_DIV] = &g12a_vdec_hevcf_div.hw, 4690 - [CLKID_VDEC_HEVCF] = &g12a_vdec_hevcf.hw, 4691 - [CLKID_TS_DIV] = &g12a_ts_div.hw, 4692 - [CLKID_TS] = &g12a_ts.hw, 4693 - [CLKID_SYS1_PLL_DCO] = &g12b_sys1_pll_dco.hw, 4694 - [CLKID_SYS1_PLL] = &g12b_sys1_pll.hw, 4695 - [CLKID_SYS1_PLL_DIV16_EN] = &g12b_sys1_pll_div16_en.hw, 4696 - [CLKID_SYS1_PLL_DIV16] = &g12b_sys1_pll_div16.hw, 4697 - [CLKID_CPUB_CLK_DYN0_SEL] = &g12b_cpub_clk_premux0.hw, 4698 - [CLKID_CPUB_CLK_DYN0_DIV] = &g12b_cpub_clk_mux0_div.hw, 4699 - [CLKID_CPUB_CLK_DYN0] = &g12b_cpub_clk_postmux0.hw, 4700 - [CLKID_CPUB_CLK_DYN1_SEL] = &g12b_cpub_clk_premux1.hw, 4701 - [CLKID_CPUB_CLK_DYN1_DIV] = &g12b_cpub_clk_mux1_div.hw, 4702 - [CLKID_CPUB_CLK_DYN1] = &g12b_cpub_clk_postmux1.hw, 4703 - [CLKID_CPUB_CLK_DYN] = &g12b_cpub_clk_dyn.hw, 4704 - [CLKID_CPUB_CLK] = &g12b_cpub_clk.hw, 4705 - [CLKID_CPUB_CLK_DIV16_EN] = &g12b_cpub_clk_div16_en.hw, 4706 - [CLKID_CPUB_CLK_DIV16] = &g12b_cpub_clk_div16.hw, 4707 - [CLKID_CPUB_CLK_DIV2] = &g12b_cpub_clk_div2.hw, 4708 - [CLKID_CPUB_CLK_DIV3] = &g12b_cpub_clk_div3.hw, 4709 - [CLKID_CPUB_CLK_DIV4] = &g12b_cpub_clk_div4.hw, 4710 - [CLKID_CPUB_CLK_DIV5] = &g12b_cpub_clk_div5.hw, 4711 - [CLKID_CPUB_CLK_DIV6] = &g12b_cpub_clk_div6.hw, 4712 - [CLKID_CPUB_CLK_DIV7] = &g12b_cpub_clk_div7.hw, 4713 - [CLKID_CPUB_CLK_DIV8] = &g12b_cpub_clk_div8.hw, 4714 - [CLKID_CPUB_CLK_APB_SEL] = &g12b_cpub_clk_apb_sel.hw, 4715 - [CLKID_CPUB_CLK_APB] = &g12b_cpub_clk_apb.hw, 4716 - [CLKID_CPUB_CLK_ATB_SEL] = &g12b_cpub_clk_atb_sel.hw, 4717 - [CLKID_CPUB_CLK_ATB] = &g12b_cpub_clk_atb.hw, 4718 - [CLKID_CPUB_CLK_AXI_SEL] = &g12b_cpub_clk_axi_sel.hw, 4719 - [CLKID_CPUB_CLK_AXI] = &g12b_cpub_clk_axi.hw, 4720 - [CLKID_CPUB_CLK_TRACE_SEL] = &g12b_cpub_clk_trace_sel.hw, 4721 - [CLKID_CPUB_CLK_TRACE] = &g12b_cpub_clk_trace.hw, 4722 - [CLKID_SPICC0_SCLK_SEL] = &g12a_spicc0_sclk_sel.hw, 4723 - [CLKID_SPICC0_SCLK_DIV] = &g12a_spicc0_sclk_div.hw, 4724 - [CLKID_SPICC0_SCLK] = &g12a_spicc0_sclk.hw, 4725 - [CLKID_SPICC1_SCLK_SEL] = &g12a_spicc1_sclk_sel.hw, 4726 - [CLKID_SPICC1_SCLK_DIV] = &g12a_spicc1_sclk_div.hw, 4727 - [CLKID_SPICC1_SCLK] = &g12a_spicc1_sclk.hw, 4728 - [CLKID_NNA_AXI_CLK_SEL] = &sm1_nna_axi_clk_sel.hw, 4729 - [CLKID_NNA_AXI_CLK_DIV] = &sm1_nna_axi_clk_div.hw, 4730 - [CLKID_NNA_AXI_CLK] = &sm1_nna_axi_clk.hw, 4731 - [CLKID_NNA_CORE_CLK_SEL] = &sm1_nna_core_clk_sel.hw, 4732 - [CLKID_NNA_CORE_CLK_DIV] = &sm1_nna_core_clk_div.hw, 4733 - [CLKID_NNA_CORE_CLK] = &sm1_nna_core_clk.hw, 4734 - [CLKID_MIPI_DSI_PXCLK_SEL] = &g12a_mipi_dsi_pxclk_sel.hw, 4735 - [CLKID_MIPI_DSI_PXCLK_DIV] = &g12a_mipi_dsi_pxclk_div.hw, 4736 - [CLKID_MIPI_DSI_PXCLK] = &g12a_mipi_dsi_pxclk.hw, 4737 - [NR_CLKS] = NULL, 4738 - }, 4739 - .num = NR_CLKS, 4472 + static struct clk_hw *g12b_hw_clks[] = { 4473 + [CLKID_SYS_PLL] = &g12a_sys_pll.hw, 4474 + [CLKID_FIXED_PLL] = &g12a_fixed_pll.hw, 4475 + [CLKID_FCLK_DIV2] = &g12a_fclk_div2.hw, 4476 + [CLKID_FCLK_DIV3] = &g12a_fclk_div3.hw, 4477 + [CLKID_FCLK_DIV4] = &g12a_fclk_div4.hw, 4478 + [CLKID_FCLK_DIV5] = &g12a_fclk_div5.hw, 4479 + [CLKID_FCLK_DIV7] = &g12a_fclk_div7.hw, 4480 + [CLKID_FCLK_DIV2P5] = &g12a_fclk_div2p5.hw, 4481 + [CLKID_GP0_PLL] = &g12a_gp0_pll.hw, 4482 + [CLKID_MPEG_SEL] = &g12a_mpeg_clk_sel.hw, 4483 + [CLKID_MPEG_DIV] = &g12a_mpeg_clk_div.hw, 4484 + [CLKID_CLK81] = &g12a_clk81.hw, 4485 + [CLKID_MPLL0] = &g12a_mpll0.hw, 4486 + [CLKID_MPLL1] = &g12a_mpll1.hw, 4487 + [CLKID_MPLL2] = &g12a_mpll2.hw, 4488 + [CLKID_MPLL3] = &g12a_mpll3.hw, 4489 + [CLKID_DDR] = &g12a_ddr.hw, 4490 + [CLKID_DOS] = &g12a_dos.hw, 4491 + [CLKID_AUDIO_LOCKER] = &g12a_audio_locker.hw, 4492 + [CLKID_MIPI_DSI_HOST] = &g12a_mipi_dsi_host.hw, 4493 + [CLKID_ETH_PHY] = &g12a_eth_phy.hw, 4494 + [CLKID_ISA] = &g12a_isa.hw, 4495 + [CLKID_PL301] = &g12a_pl301.hw, 4496 + [CLKID_PERIPHS] = &g12a_periphs.hw, 4497 + [CLKID_SPICC0] = &g12a_spicc_0.hw, 4498 + [CLKID_I2C] = &g12a_i2c.hw, 4499 + [CLKID_SANA] = &g12a_sana.hw, 4500 + [CLKID_SD] = &g12a_sd.hw, 4501 + [CLKID_RNG0] = &g12a_rng0.hw, 4502 + [CLKID_UART0] = &g12a_uart0.hw, 4503 + [CLKID_SPICC1] = &g12a_spicc_1.hw, 4504 + [CLKID_HIU_IFACE] = &g12a_hiu_reg.hw, 4505 + [CLKID_MIPI_DSI_PHY] = &g12a_mipi_dsi_phy.hw, 4506 + [CLKID_ASSIST_MISC] = &g12a_assist_misc.hw, 4507 + [CLKID_SD_EMMC_A] = &g12a_emmc_a.hw, 4508 + [CLKID_SD_EMMC_B] = &g12a_emmc_b.hw, 4509 + [CLKID_SD_EMMC_C] = &g12a_emmc_c.hw, 4510 + [CLKID_AUDIO_CODEC] = &g12a_audio_codec.hw, 4511 + [CLKID_AUDIO] = &g12a_audio.hw, 4512 + [CLKID_ETH] = &g12a_eth_core.hw, 4513 + [CLKID_DEMUX] = &g12a_demux.hw, 4514 + [CLKID_AUDIO_IFIFO] = &g12a_audio_ififo.hw, 4515 + [CLKID_ADC] = &g12a_adc.hw, 4516 + [CLKID_UART1] = &g12a_uart1.hw, 4517 + [CLKID_G2D] = &g12a_g2d.hw, 4518 + [CLKID_RESET] = &g12a_reset.hw, 4519 + [CLKID_PCIE_COMB] = &g12a_pcie_comb.hw, 4520 + [CLKID_PARSER] = &g12a_parser.hw, 4521 + [CLKID_USB] = &g12a_usb_general.hw, 4522 + [CLKID_PCIE_PHY] = &g12a_pcie_phy.hw, 4523 + [CLKID_AHB_ARB0] = &g12a_ahb_arb0.hw, 4524 + [CLKID_AHB_DATA_BUS] = &g12a_ahb_data_bus.hw, 4525 + [CLKID_AHB_CTRL_BUS] = &g12a_ahb_ctrl_bus.hw, 4526 + [CLKID_HTX_HDCP22] = &g12a_htx_hdcp22.hw, 4527 + [CLKID_HTX_PCLK] = &g12a_htx_pclk.hw, 4528 + [CLKID_BT656] = &g12a_bt656.hw, 4529 + [CLKID_USB1_DDR_BRIDGE] = &g12a_usb1_to_ddr.hw, 4530 + [CLKID_MMC_PCLK] = &g12a_mmc_pclk.hw, 4531 + [CLKID_UART2] = &g12a_uart2.hw, 4532 + [CLKID_VPU_INTR] = &g12a_vpu_intr.hw, 4533 + [CLKID_GIC] = &g12a_gic.hw, 4534 + [CLKID_SD_EMMC_A_CLK0_SEL] = &g12a_sd_emmc_a_clk0_sel.hw, 4535 + [CLKID_SD_EMMC_A_CLK0_DIV] = &g12a_sd_emmc_a_clk0_div.hw, 4536 + [CLKID_SD_EMMC_A_CLK0] = &g12a_sd_emmc_a_clk0.hw, 4537 + [CLKID_SD_EMMC_B_CLK0_SEL] = &g12a_sd_emmc_b_clk0_sel.hw, 4538 + [CLKID_SD_EMMC_B_CLK0_DIV] = &g12a_sd_emmc_b_clk0_div.hw, 4539 + [CLKID_SD_EMMC_B_CLK0] = &g12a_sd_emmc_b_clk0.hw, 4540 + [CLKID_SD_EMMC_C_CLK0_SEL] = &g12a_sd_emmc_c_clk0_sel.hw, 4541 + [CLKID_SD_EMMC_C_CLK0_DIV] = &g12a_sd_emmc_c_clk0_div.hw, 4542 + [CLKID_SD_EMMC_C_CLK0] = &g12a_sd_emmc_c_clk0.hw, 4543 + [CLKID_MPLL0_DIV] = &g12a_mpll0_div.hw, 4544 + [CLKID_MPLL1_DIV] = &g12a_mpll1_div.hw, 4545 + [CLKID_MPLL2_DIV] = &g12a_mpll2_div.hw, 4546 + [CLKID_MPLL3_DIV] = &g12a_mpll3_div.hw, 4547 + [CLKID_FCLK_DIV2_DIV] = &g12a_fclk_div2_div.hw, 4548 + [CLKID_FCLK_DIV3_DIV] = &g12a_fclk_div3_div.hw, 4549 + [CLKID_FCLK_DIV4_DIV] = &g12a_fclk_div4_div.hw, 4550 + [CLKID_FCLK_DIV5_DIV] = &g12a_fclk_div5_div.hw, 4551 + [CLKID_FCLK_DIV7_DIV] = &g12a_fclk_div7_div.hw, 4552 + [CLKID_FCLK_DIV2P5_DIV] = &g12a_fclk_div2p5_div.hw, 4553 + [CLKID_HIFI_PLL] = &g12a_hifi_pll.hw, 4554 + [CLKID_VCLK2_VENCI0] = &g12a_vclk2_venci0.hw, 4555 + [CLKID_VCLK2_VENCI1] = &g12a_vclk2_venci1.hw, 4556 + [CLKID_VCLK2_VENCP0] = &g12a_vclk2_vencp0.hw, 4557 + [CLKID_VCLK2_VENCP1] = &g12a_vclk2_vencp1.hw, 4558 + [CLKID_VCLK2_VENCT0] = &g12a_vclk2_venct0.hw, 4559 + [CLKID_VCLK2_VENCT1] = &g12a_vclk2_venct1.hw, 4560 + [CLKID_VCLK2_OTHER] = &g12a_vclk2_other.hw, 4561 + [CLKID_VCLK2_ENCI] = &g12a_vclk2_enci.hw, 4562 + [CLKID_VCLK2_ENCP] = &g12a_vclk2_encp.hw, 4563 + [CLKID_DAC_CLK] = &g12a_dac_clk.hw, 4564 + [CLKID_AOCLK] = &g12a_aoclk_gate.hw, 4565 + [CLKID_IEC958] = &g12a_iec958_gate.hw, 4566 + [CLKID_ENC480P] = &g12a_enc480p.hw, 4567 + [CLKID_RNG1] = &g12a_rng1.hw, 4568 + [CLKID_VCLK2_ENCT] = &g12a_vclk2_enct.hw, 4569 + [CLKID_VCLK2_ENCL] = &g12a_vclk2_encl.hw, 4570 + [CLKID_VCLK2_VENCLMMC] = &g12a_vclk2_venclmmc.hw, 4571 + [CLKID_VCLK2_VENCL] = &g12a_vclk2_vencl.hw, 4572 + [CLKID_VCLK2_OTHER1] = &g12a_vclk2_other1.hw, 4573 + [CLKID_FIXED_PLL_DCO] = &g12a_fixed_pll_dco.hw, 4574 + [CLKID_SYS_PLL_DCO] = &g12a_sys_pll_dco.hw, 4575 + [CLKID_GP0_PLL_DCO] = &g12a_gp0_pll_dco.hw, 4576 + [CLKID_HIFI_PLL_DCO] = &g12a_hifi_pll_dco.hw, 4577 + [CLKID_DMA] = &g12a_dma.hw, 4578 + [CLKID_EFUSE] = &g12a_efuse.hw, 4579 + [CLKID_ROM_BOOT] = &g12a_rom_boot.hw, 4580 + [CLKID_RESET_SEC] = &g12a_reset_sec.hw, 4581 + [CLKID_SEC_AHB_APB3] = &g12a_sec_ahb_apb3.hw, 4582 + [CLKID_MPLL_PREDIV] = &g12a_mpll_prediv.hw, 4583 + [CLKID_VPU_0_SEL] = &g12a_vpu_0_sel.hw, 4584 + [CLKID_VPU_0_DIV] = &g12a_vpu_0_div.hw, 4585 + [CLKID_VPU_0] = &g12a_vpu_0.hw, 4586 + [CLKID_VPU_1_SEL] = &g12a_vpu_1_sel.hw, 4587 + [CLKID_VPU_1_DIV] = &g12a_vpu_1_div.hw, 4588 + [CLKID_VPU_1] = &g12a_vpu_1.hw, 4589 + [CLKID_VPU] = &g12a_vpu.hw, 4590 + [CLKID_VAPB_0_SEL] = &g12a_vapb_0_sel.hw, 4591 + [CLKID_VAPB_0_DIV] = &g12a_vapb_0_div.hw, 4592 + [CLKID_VAPB_0] = &g12a_vapb_0.hw, 4593 + [CLKID_VAPB_1_SEL] = &g12a_vapb_1_sel.hw, 4594 + [CLKID_VAPB_1_DIV] = &g12a_vapb_1_div.hw, 4595 + [CLKID_VAPB_1] = &g12a_vapb_1.hw, 4596 + [CLKID_VAPB_SEL] = &g12a_vapb_sel.hw, 4597 + [CLKID_VAPB] = &g12a_vapb.hw, 4598 + [CLKID_HDMI_PLL_DCO] = &g12a_hdmi_pll_dco.hw, 4599 + [CLKID_HDMI_PLL_OD] = &g12a_hdmi_pll_od.hw, 4600 + [CLKID_HDMI_PLL_OD2] = &g12a_hdmi_pll_od2.hw, 4601 + [CLKID_HDMI_PLL] = &g12a_hdmi_pll.hw, 4602 + [CLKID_VID_PLL] = &g12a_vid_pll_div.hw, 4603 + [CLKID_VID_PLL_SEL] = &g12a_vid_pll_sel.hw, 4604 + [CLKID_VID_PLL_DIV] = &g12a_vid_pll.hw, 4605 + [CLKID_VCLK_SEL] = &g12a_vclk_sel.hw, 4606 + [CLKID_VCLK2_SEL] = &g12a_vclk2_sel.hw, 4607 + [CLKID_VCLK_INPUT] = &g12a_vclk_input.hw, 4608 + [CLKID_VCLK2_INPUT] = &g12a_vclk2_input.hw, 4609 + [CLKID_VCLK_DIV] = &g12a_vclk_div.hw, 4610 + [CLKID_VCLK2_DIV] = &g12a_vclk2_div.hw, 4611 + [CLKID_VCLK] = &g12a_vclk.hw, 4612 + [CLKID_VCLK2] = &g12a_vclk2.hw, 4613 + [CLKID_VCLK_DIV1] = &g12a_vclk_div1.hw, 4614 + [CLKID_VCLK_DIV2_EN] = &g12a_vclk_div2_en.hw, 4615 + [CLKID_VCLK_DIV4_EN] = &g12a_vclk_div4_en.hw, 4616 + [CLKID_VCLK_DIV6_EN] = &g12a_vclk_div6_en.hw, 4617 + [CLKID_VCLK_DIV12_EN] = &g12a_vclk_div12_en.hw, 4618 + [CLKID_VCLK2_DIV1] = &g12a_vclk2_div1.hw, 4619 + [CLKID_VCLK2_DIV2_EN] = &g12a_vclk2_div2_en.hw, 4620 + [CLKID_VCLK2_DIV4_EN] = &g12a_vclk2_div4_en.hw, 4621 + [CLKID_VCLK2_DIV6_EN] = &g12a_vclk2_div6_en.hw, 4622 + [CLKID_VCLK2_DIV12_EN] = &g12a_vclk2_div12_en.hw, 4623 + [CLKID_VCLK_DIV2] = &g12a_vclk_div2.hw, 4624 + [CLKID_VCLK_DIV4] = &g12a_vclk_div4.hw, 4625 + [CLKID_VCLK_DIV6] = &g12a_vclk_div6.hw, 4626 + [CLKID_VCLK_DIV12] = &g12a_vclk_div12.hw, 4627 + [CLKID_VCLK2_DIV2] = &g12a_vclk2_div2.hw, 4628 + [CLKID_VCLK2_DIV4] = &g12a_vclk2_div4.hw, 4629 + [CLKID_VCLK2_DIV6] = &g12a_vclk2_div6.hw, 4630 + [CLKID_VCLK2_DIV12] = &g12a_vclk2_div12.hw, 4631 + [CLKID_CTS_ENCI_SEL] = &g12a_cts_enci_sel.hw, 4632 + [CLKID_CTS_ENCP_SEL] = &g12a_cts_encp_sel.hw, 4633 + [CLKID_CTS_VDAC_SEL] = &g12a_cts_vdac_sel.hw, 4634 + [CLKID_HDMI_TX_SEL] = &g12a_hdmi_tx_sel.hw, 4635 + [CLKID_CTS_ENCI] = &g12a_cts_enci.hw, 4636 + [CLKID_CTS_ENCP] = &g12a_cts_encp.hw, 4637 + [CLKID_CTS_VDAC] = &g12a_cts_vdac.hw, 4638 + [CLKID_HDMI_TX] = &g12a_hdmi_tx.hw, 4639 + [CLKID_HDMI_SEL] = &g12a_hdmi_sel.hw, 4640 + [CLKID_HDMI_DIV] = &g12a_hdmi_div.hw, 4641 + [CLKID_HDMI] = &g12a_hdmi.hw, 4642 + [CLKID_MALI_0_SEL] = &g12a_mali_0_sel.hw, 4643 + [CLKID_MALI_0_DIV] = &g12a_mali_0_div.hw, 4644 + [CLKID_MALI_0] = &g12a_mali_0.hw, 4645 + [CLKID_MALI_1_SEL] = &g12a_mali_1_sel.hw, 4646 + [CLKID_MALI_1_DIV] = &g12a_mali_1_div.hw, 4647 + [CLKID_MALI_1] = &g12a_mali_1.hw, 4648 + [CLKID_MALI] = &g12a_mali.hw, 4649 + [CLKID_MPLL_50M_DIV] = &g12a_mpll_50m_div.hw, 4650 + [CLKID_MPLL_50M] = &g12a_mpll_50m.hw, 4651 + [CLKID_SYS_PLL_DIV16_EN] = &g12a_sys_pll_div16_en.hw, 4652 + [CLKID_SYS_PLL_DIV16] = &g12a_sys_pll_div16.hw, 4653 + [CLKID_CPU_CLK_DYN0_SEL] = &g12a_cpu_clk_premux0.hw, 4654 + [CLKID_CPU_CLK_DYN0_DIV] = &g12a_cpu_clk_mux0_div.hw, 4655 + [CLKID_CPU_CLK_DYN0] = &g12a_cpu_clk_postmux0.hw, 4656 + [CLKID_CPU_CLK_DYN1_SEL] = &g12a_cpu_clk_premux1.hw, 4657 + [CLKID_CPU_CLK_DYN1_DIV] = &g12a_cpu_clk_mux1_div.hw, 4658 + [CLKID_CPU_CLK_DYN1] = &g12a_cpu_clk_postmux1.hw, 4659 + [CLKID_CPU_CLK_DYN] = &g12a_cpu_clk_dyn.hw, 4660 + [CLKID_CPU_CLK] = &g12b_cpu_clk.hw, 4661 + [CLKID_CPU_CLK_DIV16_EN] = &g12a_cpu_clk_div16_en.hw, 4662 + [CLKID_CPU_CLK_DIV16] = &g12a_cpu_clk_div16.hw, 4663 + [CLKID_CPU_CLK_APB_DIV] = &g12a_cpu_clk_apb_div.hw, 4664 + [CLKID_CPU_CLK_APB] = &g12a_cpu_clk_apb.hw, 4665 + [CLKID_CPU_CLK_ATB_DIV] = &g12a_cpu_clk_atb_div.hw, 4666 + [CLKID_CPU_CLK_ATB] = &g12a_cpu_clk_atb.hw, 4667 + [CLKID_CPU_CLK_AXI_DIV] = &g12a_cpu_clk_axi_div.hw, 4668 + [CLKID_CPU_CLK_AXI] = &g12a_cpu_clk_axi.hw, 4669 + [CLKID_CPU_CLK_TRACE_DIV] = &g12a_cpu_clk_trace_div.hw, 4670 + [CLKID_CPU_CLK_TRACE] = &g12a_cpu_clk_trace.hw, 4671 + [CLKID_PCIE_PLL_DCO] = &g12a_pcie_pll_dco.hw, 4672 + [CLKID_PCIE_PLL_DCO_DIV2] = &g12a_pcie_pll_dco_div2.hw, 4673 + [CLKID_PCIE_PLL_OD] = &g12a_pcie_pll_od.hw, 4674 + [CLKID_PCIE_PLL] = &g12a_pcie_pll.hw, 4675 + [CLKID_VDEC_1_SEL] = &g12a_vdec_1_sel.hw, 4676 + [CLKID_VDEC_1_DIV] = &g12a_vdec_1_div.hw, 4677 + [CLKID_VDEC_1] = &g12a_vdec_1.hw, 4678 + [CLKID_VDEC_HEVC_SEL] = &g12a_vdec_hevc_sel.hw, 4679 + [CLKID_VDEC_HEVC_DIV] = &g12a_vdec_hevc_div.hw, 4680 + [CLKID_VDEC_HEVC] = &g12a_vdec_hevc.hw, 4681 + [CLKID_VDEC_HEVCF_SEL] = &g12a_vdec_hevcf_sel.hw, 4682 + [CLKID_VDEC_HEVCF_DIV] = &g12a_vdec_hevcf_div.hw, 4683 + [CLKID_VDEC_HEVCF] = &g12a_vdec_hevcf.hw, 4684 + [CLKID_TS_DIV] = &g12a_ts_div.hw, 4685 + [CLKID_TS] = &g12a_ts.hw, 4686 + [CLKID_SYS1_PLL_DCO] = &g12b_sys1_pll_dco.hw, 4687 + [CLKID_SYS1_PLL] = &g12b_sys1_pll.hw, 4688 + [CLKID_SYS1_PLL_DIV16_EN] = &g12b_sys1_pll_div16_en.hw, 4689 + [CLKID_SYS1_PLL_DIV16] = &g12b_sys1_pll_div16.hw, 4690 + [CLKID_CPUB_CLK_DYN0_SEL] = &g12b_cpub_clk_premux0.hw, 4691 + [CLKID_CPUB_CLK_DYN0_DIV] = &g12b_cpub_clk_mux0_div.hw, 4692 + [CLKID_CPUB_CLK_DYN0] = &g12b_cpub_clk_postmux0.hw, 4693 + [CLKID_CPUB_CLK_DYN1_SEL] = &g12b_cpub_clk_premux1.hw, 4694 + [CLKID_CPUB_CLK_DYN1_DIV] = &g12b_cpub_clk_mux1_div.hw, 4695 + [CLKID_CPUB_CLK_DYN1] = &g12b_cpub_clk_postmux1.hw, 4696 + [CLKID_CPUB_CLK_DYN] = &g12b_cpub_clk_dyn.hw, 4697 + [CLKID_CPUB_CLK] = &g12b_cpub_clk.hw, 4698 + [CLKID_CPUB_CLK_DIV16_EN] = &g12b_cpub_clk_div16_en.hw, 4699 + [CLKID_CPUB_CLK_DIV16] = &g12b_cpub_clk_div16.hw, 4700 + [CLKID_CPUB_CLK_DIV2] = &g12b_cpub_clk_div2.hw, 4701 + [CLKID_CPUB_CLK_DIV3] = &g12b_cpub_clk_div3.hw, 4702 + [CLKID_CPUB_CLK_DIV4] = &g12b_cpub_clk_div4.hw, 4703 + [CLKID_CPUB_CLK_DIV5] = &g12b_cpub_clk_div5.hw, 4704 + [CLKID_CPUB_CLK_DIV6] = &g12b_cpub_clk_div6.hw, 4705 + [CLKID_CPUB_CLK_DIV7] = &g12b_cpub_clk_div7.hw, 4706 + [CLKID_CPUB_CLK_DIV8] = &g12b_cpub_clk_div8.hw, 4707 + [CLKID_CPUB_CLK_APB_SEL] = &g12b_cpub_clk_apb_sel.hw, 4708 + [CLKID_CPUB_CLK_APB] = &g12b_cpub_clk_apb.hw, 4709 + [CLKID_CPUB_CLK_ATB_SEL] = &g12b_cpub_clk_atb_sel.hw, 4710 + [CLKID_CPUB_CLK_ATB] = &g12b_cpub_clk_atb.hw, 4711 + [CLKID_CPUB_CLK_AXI_SEL] = &g12b_cpub_clk_axi_sel.hw, 4712 + [CLKID_CPUB_CLK_AXI] = &g12b_cpub_clk_axi.hw, 4713 + [CLKID_CPUB_CLK_TRACE_SEL] = &g12b_cpub_clk_trace_sel.hw, 4714 + [CLKID_CPUB_CLK_TRACE] = &g12b_cpub_clk_trace.hw, 4715 + [CLKID_SPICC0_SCLK_SEL] = &g12a_spicc0_sclk_sel.hw, 4716 + [CLKID_SPICC0_SCLK_DIV] = &g12a_spicc0_sclk_div.hw, 4717 + [CLKID_SPICC0_SCLK] = &g12a_spicc0_sclk.hw, 4718 + [CLKID_SPICC1_SCLK_SEL] = &g12a_spicc1_sclk_sel.hw, 4719 + [CLKID_SPICC1_SCLK_DIV] = &g12a_spicc1_sclk_div.hw, 4720 + [CLKID_SPICC1_SCLK] = &g12a_spicc1_sclk.hw, 4721 + [CLKID_NNA_AXI_CLK_SEL] = &sm1_nna_axi_clk_sel.hw, 4722 + [CLKID_NNA_AXI_CLK_DIV] = &sm1_nna_axi_clk_div.hw, 4723 + [CLKID_NNA_AXI_CLK] = &sm1_nna_axi_clk.hw, 4724 + [CLKID_NNA_CORE_CLK_SEL] = &sm1_nna_core_clk_sel.hw, 4725 + [CLKID_NNA_CORE_CLK_DIV] = &sm1_nna_core_clk_div.hw, 4726 + [CLKID_NNA_CORE_CLK] = &sm1_nna_core_clk.hw, 4727 + [CLKID_MIPI_DSI_PXCLK_SEL] = &g12a_mipi_dsi_pxclk_sel.hw, 4728 + [CLKID_MIPI_DSI_PXCLK_DIV] = &g12a_mipi_dsi_pxclk_div.hw, 4729 + [CLKID_MIPI_DSI_PXCLK] = &g12a_mipi_dsi_pxclk.hw, 4740 4730 }; 4741 4731 4742 - static struct clk_hw_onecell_data sm1_hw_onecell_data = { 4743 - .hws = { 4744 - [CLKID_SYS_PLL] = &g12a_sys_pll.hw, 4745 - [CLKID_FIXED_PLL] = &g12a_fixed_pll.hw, 4746 - [CLKID_FCLK_DIV2] = &g12a_fclk_div2.hw, 4747 - [CLKID_FCLK_DIV3] = &g12a_fclk_div3.hw, 4748 - [CLKID_FCLK_DIV4] = &g12a_fclk_div4.hw, 4749 - [CLKID_FCLK_DIV5] = &g12a_fclk_div5.hw, 4750 - [CLKID_FCLK_DIV7] = &g12a_fclk_div7.hw, 4751 - [CLKID_FCLK_DIV2P5] = &g12a_fclk_div2p5.hw, 4752 - [CLKID_GP0_PLL] = &g12a_gp0_pll.hw, 4753 - [CLKID_MPEG_SEL] = &g12a_mpeg_clk_sel.hw, 4754 - [CLKID_MPEG_DIV] = &g12a_mpeg_clk_div.hw, 4755 - [CLKID_CLK81] = &g12a_clk81.hw, 4756 - [CLKID_MPLL0] = &g12a_mpll0.hw, 4757 - [CLKID_MPLL1] = &g12a_mpll1.hw, 4758 - [CLKID_MPLL2] = &g12a_mpll2.hw, 4759 - [CLKID_MPLL3] = &g12a_mpll3.hw, 4760 - [CLKID_DDR] = &g12a_ddr.hw, 4761 - [CLKID_DOS] = &g12a_dos.hw, 4762 - [CLKID_AUDIO_LOCKER] = &g12a_audio_locker.hw, 4763 - [CLKID_MIPI_DSI_HOST] = &g12a_mipi_dsi_host.hw, 4764 - [CLKID_ETH_PHY] = &g12a_eth_phy.hw, 4765 - [CLKID_ISA] = &g12a_isa.hw, 4766 - [CLKID_PL301] = &g12a_pl301.hw, 4767 - [CLKID_PERIPHS] = &g12a_periphs.hw, 4768 - [CLKID_SPICC0] = &g12a_spicc_0.hw, 4769 - [CLKID_I2C] = &g12a_i2c.hw, 4770 - [CLKID_SANA] = &g12a_sana.hw, 4771 - [CLKID_SD] = &g12a_sd.hw, 4772 - [CLKID_RNG0] = &g12a_rng0.hw, 4773 - [CLKID_UART0] = &g12a_uart0.hw, 4774 - [CLKID_SPICC1] = &g12a_spicc_1.hw, 4775 - [CLKID_HIU_IFACE] = &g12a_hiu_reg.hw, 4776 - [CLKID_MIPI_DSI_PHY] = &g12a_mipi_dsi_phy.hw, 4777 - [CLKID_ASSIST_MISC] = &g12a_assist_misc.hw, 4778 - [CLKID_SD_EMMC_A] = &g12a_emmc_a.hw, 4779 - [CLKID_SD_EMMC_B] = &g12a_emmc_b.hw, 4780 - [CLKID_SD_EMMC_C] = &g12a_emmc_c.hw, 4781 - [CLKID_AUDIO_CODEC] = &g12a_audio_codec.hw, 4782 - [CLKID_AUDIO] = &g12a_audio.hw, 4783 - [CLKID_ETH] = &g12a_eth_core.hw, 4784 - [CLKID_DEMUX] = &g12a_demux.hw, 4785 - [CLKID_AUDIO_IFIFO] = &g12a_audio_ififo.hw, 4786 - [CLKID_ADC] = &g12a_adc.hw, 4787 - [CLKID_UART1] = &g12a_uart1.hw, 4788 - [CLKID_G2D] = &g12a_g2d.hw, 4789 - [CLKID_RESET] = &g12a_reset.hw, 4790 - [CLKID_PCIE_COMB] = &g12a_pcie_comb.hw, 4791 - [CLKID_PARSER] = &g12a_parser.hw, 4792 - [CLKID_USB] = &g12a_usb_general.hw, 4793 - [CLKID_PCIE_PHY] = &g12a_pcie_phy.hw, 4794 - [CLKID_AHB_ARB0] = &g12a_ahb_arb0.hw, 4795 - [CLKID_AHB_DATA_BUS] = &g12a_ahb_data_bus.hw, 4796 - [CLKID_AHB_CTRL_BUS] = &g12a_ahb_ctrl_bus.hw, 4797 - [CLKID_HTX_HDCP22] = &g12a_htx_hdcp22.hw, 4798 - [CLKID_HTX_PCLK] = &g12a_htx_pclk.hw, 4799 - [CLKID_BT656] = &g12a_bt656.hw, 4800 - [CLKID_USB1_DDR_BRIDGE] = &g12a_usb1_to_ddr.hw, 4801 - [CLKID_MMC_PCLK] = &g12a_mmc_pclk.hw, 4802 - [CLKID_UART2] = &g12a_uart2.hw, 4803 - [CLKID_VPU_INTR] = &g12a_vpu_intr.hw, 4804 - [CLKID_GIC] = &g12a_gic.hw, 4805 - [CLKID_SD_EMMC_A_CLK0_SEL] = &g12a_sd_emmc_a_clk0_sel.hw, 4806 - [CLKID_SD_EMMC_A_CLK0_DIV] = &g12a_sd_emmc_a_clk0_div.hw, 4807 - [CLKID_SD_EMMC_A_CLK0] = &g12a_sd_emmc_a_clk0.hw, 4808 - [CLKID_SD_EMMC_B_CLK0_SEL] = &g12a_sd_emmc_b_clk0_sel.hw, 4809 - [CLKID_SD_EMMC_B_CLK0_DIV] = &g12a_sd_emmc_b_clk0_div.hw, 4810 - [CLKID_SD_EMMC_B_CLK0] = &g12a_sd_emmc_b_clk0.hw, 4811 - [CLKID_SD_EMMC_C_CLK0_SEL] = &g12a_sd_emmc_c_clk0_sel.hw, 4812 - [CLKID_SD_EMMC_C_CLK0_DIV] = &g12a_sd_emmc_c_clk0_div.hw, 4813 - [CLKID_SD_EMMC_C_CLK0] = &g12a_sd_emmc_c_clk0.hw, 4814 - [CLKID_MPLL0_DIV] = &g12a_mpll0_div.hw, 4815 - [CLKID_MPLL1_DIV] = &g12a_mpll1_div.hw, 4816 - [CLKID_MPLL2_DIV] = &g12a_mpll2_div.hw, 4817 - [CLKID_MPLL3_DIV] = &g12a_mpll3_div.hw, 4818 - [CLKID_FCLK_DIV2_DIV] = &g12a_fclk_div2_div.hw, 4819 - [CLKID_FCLK_DIV3_DIV] = &g12a_fclk_div3_div.hw, 4820 - [CLKID_FCLK_DIV4_DIV] = &g12a_fclk_div4_div.hw, 4821 - [CLKID_FCLK_DIV5_DIV] = &g12a_fclk_div5_div.hw, 4822 - [CLKID_FCLK_DIV7_DIV] = &g12a_fclk_div7_div.hw, 4823 - [CLKID_FCLK_DIV2P5_DIV] = &g12a_fclk_div2p5_div.hw, 4824 - [CLKID_HIFI_PLL] = &g12a_hifi_pll.hw, 4825 - [CLKID_VCLK2_VENCI0] = &g12a_vclk2_venci0.hw, 4826 - [CLKID_VCLK2_VENCI1] = &g12a_vclk2_venci1.hw, 4827 - [CLKID_VCLK2_VENCP0] = &g12a_vclk2_vencp0.hw, 4828 - [CLKID_VCLK2_VENCP1] = &g12a_vclk2_vencp1.hw, 4829 - [CLKID_VCLK2_VENCT0] = &g12a_vclk2_venct0.hw, 4830 - [CLKID_VCLK2_VENCT1] = &g12a_vclk2_venct1.hw, 4831 - [CLKID_VCLK2_OTHER] = &g12a_vclk2_other.hw, 4832 - [CLKID_VCLK2_ENCI] = &g12a_vclk2_enci.hw, 4833 - [CLKID_VCLK2_ENCP] = &g12a_vclk2_encp.hw, 4834 - [CLKID_DAC_CLK] = &g12a_dac_clk.hw, 4835 - [CLKID_AOCLK] = &g12a_aoclk_gate.hw, 4836 - [CLKID_IEC958] = &g12a_iec958_gate.hw, 4837 - [CLKID_ENC480P] = &g12a_enc480p.hw, 4838 - [CLKID_RNG1] = &g12a_rng1.hw, 4839 - [CLKID_VCLK2_ENCT] = &g12a_vclk2_enct.hw, 4840 - [CLKID_VCLK2_ENCL] = &g12a_vclk2_encl.hw, 4841 - [CLKID_VCLK2_VENCLMMC] = &g12a_vclk2_venclmmc.hw, 4842 - [CLKID_VCLK2_VENCL] = &g12a_vclk2_vencl.hw, 4843 - [CLKID_VCLK2_OTHER1] = &g12a_vclk2_other1.hw, 4844 - [CLKID_FIXED_PLL_DCO] = &g12a_fixed_pll_dco.hw, 4845 - [CLKID_SYS_PLL_DCO] = &g12a_sys_pll_dco.hw, 4846 - [CLKID_GP0_PLL_DCO] = &g12a_gp0_pll_dco.hw, 4847 - [CLKID_HIFI_PLL_DCO] = &g12a_hifi_pll_dco.hw, 4848 - [CLKID_DMA] = &g12a_dma.hw, 4849 - [CLKID_EFUSE] = &g12a_efuse.hw, 4850 - [CLKID_ROM_BOOT] = &g12a_rom_boot.hw, 4851 - [CLKID_RESET_SEC] = &g12a_reset_sec.hw, 4852 - [CLKID_SEC_AHB_APB3] = &g12a_sec_ahb_apb3.hw, 4853 - [CLKID_MPLL_PREDIV] = &g12a_mpll_prediv.hw, 4854 - [CLKID_VPU_0_SEL] = &g12a_vpu_0_sel.hw, 4855 - [CLKID_VPU_0_DIV] = &g12a_vpu_0_div.hw, 4856 - [CLKID_VPU_0] = &g12a_vpu_0.hw, 4857 - [CLKID_VPU_1_SEL] = &g12a_vpu_1_sel.hw, 4858 - [CLKID_VPU_1_DIV] = &g12a_vpu_1_div.hw, 4859 - [CLKID_VPU_1] = &g12a_vpu_1.hw, 4860 - [CLKID_VPU] = &g12a_vpu.hw, 4861 - [CLKID_VAPB_0_SEL] = &g12a_vapb_0_sel.hw, 4862 - [CLKID_VAPB_0_DIV] = &g12a_vapb_0_div.hw, 4863 - [CLKID_VAPB_0] = &g12a_vapb_0.hw, 4864 - [CLKID_VAPB_1_SEL] = &g12a_vapb_1_sel.hw, 4865 - [CLKID_VAPB_1_DIV] = &g12a_vapb_1_div.hw, 4866 - [CLKID_VAPB_1] = &g12a_vapb_1.hw, 4867 - [CLKID_VAPB_SEL] = &g12a_vapb_sel.hw, 4868 - [CLKID_VAPB] = &g12a_vapb.hw, 4869 - [CLKID_HDMI_PLL_DCO] = &g12a_hdmi_pll_dco.hw, 4870 - [CLKID_HDMI_PLL_OD] = &g12a_hdmi_pll_od.hw, 4871 - [CLKID_HDMI_PLL_OD2] = &g12a_hdmi_pll_od2.hw, 4872 - [CLKID_HDMI_PLL] = &g12a_hdmi_pll.hw, 4873 - [CLKID_VID_PLL] = &g12a_vid_pll_div.hw, 4874 - [CLKID_VID_PLL_SEL] = &g12a_vid_pll_sel.hw, 4875 - [CLKID_VID_PLL_DIV] = &g12a_vid_pll.hw, 4876 - [CLKID_VCLK_SEL] = &g12a_vclk_sel.hw, 4877 - [CLKID_VCLK2_SEL] = &g12a_vclk2_sel.hw, 4878 - [CLKID_VCLK_INPUT] = &g12a_vclk_input.hw, 4879 - [CLKID_VCLK2_INPUT] = &g12a_vclk2_input.hw, 4880 - [CLKID_VCLK_DIV] = &g12a_vclk_div.hw, 4881 - [CLKID_VCLK2_DIV] = &g12a_vclk2_div.hw, 4882 - [CLKID_VCLK] = &g12a_vclk.hw, 4883 - [CLKID_VCLK2] = &g12a_vclk2.hw, 4884 - [CLKID_VCLK_DIV1] = &g12a_vclk_div1.hw, 4885 - [CLKID_VCLK_DIV2_EN] = &g12a_vclk_div2_en.hw, 4886 - [CLKID_VCLK_DIV4_EN] = &g12a_vclk_div4_en.hw, 4887 - [CLKID_VCLK_DIV6_EN] = &g12a_vclk_div6_en.hw, 4888 - [CLKID_VCLK_DIV12_EN] = &g12a_vclk_div12_en.hw, 4889 - [CLKID_VCLK2_DIV1] = &g12a_vclk2_div1.hw, 4890 - [CLKID_VCLK2_DIV2_EN] = &g12a_vclk2_div2_en.hw, 4891 - [CLKID_VCLK2_DIV4_EN] = &g12a_vclk2_div4_en.hw, 4892 - [CLKID_VCLK2_DIV6_EN] = &g12a_vclk2_div6_en.hw, 4893 - [CLKID_VCLK2_DIV12_EN] = &g12a_vclk2_div12_en.hw, 4894 - [CLKID_VCLK_DIV2] = &g12a_vclk_div2.hw, 4895 - [CLKID_VCLK_DIV4] = &g12a_vclk_div4.hw, 4896 - [CLKID_VCLK_DIV6] = &g12a_vclk_div6.hw, 4897 - [CLKID_VCLK_DIV12] = &g12a_vclk_div12.hw, 4898 - [CLKID_VCLK2_DIV2] = &g12a_vclk2_div2.hw, 4899 - [CLKID_VCLK2_DIV4] = &g12a_vclk2_div4.hw, 4900 - [CLKID_VCLK2_DIV6] = &g12a_vclk2_div6.hw, 4901 - [CLKID_VCLK2_DIV12] = &g12a_vclk2_div12.hw, 4902 - [CLKID_CTS_ENCI_SEL] = &g12a_cts_enci_sel.hw, 4903 - [CLKID_CTS_ENCP_SEL] = &g12a_cts_encp_sel.hw, 4904 - [CLKID_CTS_VDAC_SEL] = &g12a_cts_vdac_sel.hw, 4905 - [CLKID_HDMI_TX_SEL] = &g12a_hdmi_tx_sel.hw, 4906 - [CLKID_CTS_ENCI] = &g12a_cts_enci.hw, 4907 - [CLKID_CTS_ENCP] = &g12a_cts_encp.hw, 4908 - [CLKID_CTS_VDAC] = &g12a_cts_vdac.hw, 4909 - [CLKID_HDMI_TX] = &g12a_hdmi_tx.hw, 4910 - [CLKID_HDMI_SEL] = &g12a_hdmi_sel.hw, 4911 - [CLKID_HDMI_DIV] = &g12a_hdmi_div.hw, 4912 - [CLKID_HDMI] = &g12a_hdmi.hw, 4913 - [CLKID_MALI_0_SEL] = &g12a_mali_0_sel.hw, 4914 - [CLKID_MALI_0_DIV] = &g12a_mali_0_div.hw, 4915 - [CLKID_MALI_0] = &g12a_mali_0.hw, 4916 - [CLKID_MALI_1_SEL] = &g12a_mali_1_sel.hw, 4917 - [CLKID_MALI_1_DIV] = &g12a_mali_1_div.hw, 4918 - [CLKID_MALI_1] = &g12a_mali_1.hw, 4919 - [CLKID_MALI] = &g12a_mali.hw, 4920 - [CLKID_MPLL_50M_DIV] = &g12a_mpll_50m_div.hw, 4921 - [CLKID_MPLL_50M] = &g12a_mpll_50m.hw, 4922 - [CLKID_SYS_PLL_DIV16_EN] = &g12a_sys_pll_div16_en.hw, 4923 - [CLKID_SYS_PLL_DIV16] = &g12a_sys_pll_div16.hw, 4924 - [CLKID_CPU_CLK_DYN0_SEL] = &g12a_cpu_clk_premux0.hw, 4925 - [CLKID_CPU_CLK_DYN0_DIV] = &g12a_cpu_clk_mux0_div.hw, 4926 - [CLKID_CPU_CLK_DYN0] = &g12a_cpu_clk_postmux0.hw, 4927 - [CLKID_CPU_CLK_DYN1_SEL] = &g12a_cpu_clk_premux1.hw, 4928 - [CLKID_CPU_CLK_DYN1_DIV] = &g12a_cpu_clk_mux1_div.hw, 4929 - [CLKID_CPU_CLK_DYN1] = &g12a_cpu_clk_postmux1.hw, 4930 - [CLKID_CPU_CLK_DYN] = &g12a_cpu_clk_dyn.hw, 4931 - [CLKID_CPU_CLK] = &g12a_cpu_clk.hw, 4932 - [CLKID_CPU_CLK_DIV16_EN] = &g12a_cpu_clk_div16_en.hw, 4933 - [CLKID_CPU_CLK_DIV16] = &g12a_cpu_clk_div16.hw, 4934 - [CLKID_CPU_CLK_APB_DIV] = &g12a_cpu_clk_apb_div.hw, 4935 - [CLKID_CPU_CLK_APB] = &g12a_cpu_clk_apb.hw, 4936 - [CLKID_CPU_CLK_ATB_DIV] = &g12a_cpu_clk_atb_div.hw, 4937 - [CLKID_CPU_CLK_ATB] = &g12a_cpu_clk_atb.hw, 4938 - [CLKID_CPU_CLK_AXI_DIV] = &g12a_cpu_clk_axi_div.hw, 4939 - [CLKID_CPU_CLK_AXI] = &g12a_cpu_clk_axi.hw, 4940 - [CLKID_CPU_CLK_TRACE_DIV] = &g12a_cpu_clk_trace_div.hw, 4941 - [CLKID_CPU_CLK_TRACE] = &g12a_cpu_clk_trace.hw, 4942 - [CLKID_PCIE_PLL_DCO] = &g12a_pcie_pll_dco.hw, 4943 - [CLKID_PCIE_PLL_DCO_DIV2] = &g12a_pcie_pll_dco_div2.hw, 4944 - [CLKID_PCIE_PLL_OD] = &g12a_pcie_pll_od.hw, 4945 - [CLKID_PCIE_PLL] = &g12a_pcie_pll.hw, 4946 - [CLKID_VDEC_1_SEL] = &g12a_vdec_1_sel.hw, 4947 - [CLKID_VDEC_1_DIV] = &g12a_vdec_1_div.hw, 4948 - [CLKID_VDEC_1] = &g12a_vdec_1.hw, 4949 - [CLKID_VDEC_HEVC_SEL] = &g12a_vdec_hevc_sel.hw, 4950 - [CLKID_VDEC_HEVC_DIV] = &g12a_vdec_hevc_div.hw, 4951 - [CLKID_VDEC_HEVC] = &g12a_vdec_hevc.hw, 4952 - [CLKID_VDEC_HEVCF_SEL] = &g12a_vdec_hevcf_sel.hw, 4953 - [CLKID_VDEC_HEVCF_DIV] = &g12a_vdec_hevcf_div.hw, 4954 - [CLKID_VDEC_HEVCF] = &g12a_vdec_hevcf.hw, 4955 - [CLKID_TS_DIV] = &g12a_ts_div.hw, 4956 - [CLKID_TS] = &g12a_ts.hw, 4957 - [CLKID_GP1_PLL_DCO] = &sm1_gp1_pll_dco.hw, 4958 - [CLKID_GP1_PLL] = &sm1_gp1_pll.hw, 4959 - [CLKID_DSU_CLK_DYN0_SEL] = &sm1_dsu_clk_premux0.hw, 4960 - [CLKID_DSU_CLK_DYN0_DIV] = &sm1_dsu_clk_premux1.hw, 4961 - [CLKID_DSU_CLK_DYN0] = &sm1_dsu_clk_mux0_div.hw, 4962 - [CLKID_DSU_CLK_DYN1_SEL] = &sm1_dsu_clk_postmux0.hw, 4963 - [CLKID_DSU_CLK_DYN1_DIV] = &sm1_dsu_clk_mux1_div.hw, 4964 - [CLKID_DSU_CLK_DYN1] = &sm1_dsu_clk_postmux1.hw, 4965 - [CLKID_DSU_CLK_DYN] = &sm1_dsu_clk_dyn.hw, 4966 - [CLKID_DSU_CLK_FINAL] = &sm1_dsu_final_clk.hw, 4967 - [CLKID_DSU_CLK] = &sm1_dsu_clk.hw, 4968 - [CLKID_CPU1_CLK] = &sm1_cpu1_clk.hw, 4969 - [CLKID_CPU2_CLK] = &sm1_cpu2_clk.hw, 4970 - [CLKID_CPU3_CLK] = &sm1_cpu3_clk.hw, 4971 - [CLKID_SPICC0_SCLK_SEL] = &g12a_spicc0_sclk_sel.hw, 4972 - [CLKID_SPICC0_SCLK_DIV] = &g12a_spicc0_sclk_div.hw, 4973 - [CLKID_SPICC0_SCLK] = &g12a_spicc0_sclk.hw, 4974 - [CLKID_SPICC1_SCLK_SEL] = &g12a_spicc1_sclk_sel.hw, 4975 - [CLKID_SPICC1_SCLK_DIV] = &g12a_spicc1_sclk_div.hw, 4976 - [CLKID_SPICC1_SCLK] = &g12a_spicc1_sclk.hw, 4977 - [CLKID_NNA_AXI_CLK_SEL] = &sm1_nna_axi_clk_sel.hw, 4978 - [CLKID_NNA_AXI_CLK_DIV] = &sm1_nna_axi_clk_div.hw, 4979 - [CLKID_NNA_AXI_CLK] = &sm1_nna_axi_clk.hw, 4980 - [CLKID_NNA_CORE_CLK_SEL] = &sm1_nna_core_clk_sel.hw, 4981 - [CLKID_NNA_CORE_CLK_DIV] = &sm1_nna_core_clk_div.hw, 4982 - [CLKID_NNA_CORE_CLK] = &sm1_nna_core_clk.hw, 4983 - [CLKID_MIPI_DSI_PXCLK_SEL] = &g12a_mipi_dsi_pxclk_sel.hw, 4984 - [CLKID_MIPI_DSI_PXCLK_DIV] = &g12a_mipi_dsi_pxclk_div.hw, 4985 - [CLKID_MIPI_DSI_PXCLK] = &g12a_mipi_dsi_pxclk.hw, 4986 - [NR_CLKS] = NULL, 4987 - }, 4988 - .num = NR_CLKS, 4732 + static struct clk_hw *sm1_hw_clks[] = { 4733 + [CLKID_SYS_PLL] = &g12a_sys_pll.hw, 4734 + [CLKID_FIXED_PLL] = &g12a_fixed_pll.hw, 4735 + [CLKID_FCLK_DIV2] = &g12a_fclk_div2.hw, 4736 + [CLKID_FCLK_DIV3] = &g12a_fclk_div3.hw, 4737 + [CLKID_FCLK_DIV4] = &g12a_fclk_div4.hw, 4738 + [CLKID_FCLK_DIV5] = &g12a_fclk_div5.hw, 4739 + [CLKID_FCLK_DIV7] = &g12a_fclk_div7.hw, 4740 + [CLKID_FCLK_DIV2P5] = &g12a_fclk_div2p5.hw, 4741 + [CLKID_GP0_PLL] = &g12a_gp0_pll.hw, 4742 + [CLKID_MPEG_SEL] = &g12a_mpeg_clk_sel.hw, 4743 + [CLKID_MPEG_DIV] = &g12a_mpeg_clk_div.hw, 4744 + [CLKID_CLK81] = &g12a_clk81.hw, 4745 + [CLKID_MPLL0] = &g12a_mpll0.hw, 4746 + [CLKID_MPLL1] = &g12a_mpll1.hw, 4747 + [CLKID_MPLL2] = &g12a_mpll2.hw, 4748 + [CLKID_MPLL3] = &g12a_mpll3.hw, 4749 + [CLKID_DDR] = &g12a_ddr.hw, 4750 + [CLKID_DOS] = &g12a_dos.hw, 4751 + [CLKID_AUDIO_LOCKER] = &g12a_audio_locker.hw, 4752 + [CLKID_MIPI_DSI_HOST] = &g12a_mipi_dsi_host.hw, 4753 + [CLKID_ETH_PHY] = &g12a_eth_phy.hw, 4754 + [CLKID_ISA] = &g12a_isa.hw, 4755 + [CLKID_PL301] = &g12a_pl301.hw, 4756 + [CLKID_PERIPHS] = &g12a_periphs.hw, 4757 + [CLKID_SPICC0] = &g12a_spicc_0.hw, 4758 + [CLKID_I2C] = &g12a_i2c.hw, 4759 + [CLKID_SANA] = &g12a_sana.hw, 4760 + [CLKID_SD] = &g12a_sd.hw, 4761 + [CLKID_RNG0] = &g12a_rng0.hw, 4762 + [CLKID_UART0] = &g12a_uart0.hw, 4763 + [CLKID_SPICC1] = &g12a_spicc_1.hw, 4764 + [CLKID_HIU_IFACE] = &g12a_hiu_reg.hw, 4765 + [CLKID_MIPI_DSI_PHY] = &g12a_mipi_dsi_phy.hw, 4766 + [CLKID_ASSIST_MISC] = &g12a_assist_misc.hw, 4767 + [CLKID_SD_EMMC_A] = &g12a_emmc_a.hw, 4768 + [CLKID_SD_EMMC_B] = &g12a_emmc_b.hw, 4769 + [CLKID_SD_EMMC_C] = &g12a_emmc_c.hw, 4770 + [CLKID_AUDIO_CODEC] = &g12a_audio_codec.hw, 4771 + [CLKID_AUDIO] = &g12a_audio.hw, 4772 + [CLKID_ETH] = &g12a_eth_core.hw, 4773 + [CLKID_DEMUX] = &g12a_demux.hw, 4774 + [CLKID_AUDIO_IFIFO] = &g12a_audio_ififo.hw, 4775 + [CLKID_ADC] = &g12a_adc.hw, 4776 + [CLKID_UART1] = &g12a_uart1.hw, 4777 + [CLKID_G2D] = &g12a_g2d.hw, 4778 + [CLKID_RESET] = &g12a_reset.hw, 4779 + [CLKID_PCIE_COMB] = &g12a_pcie_comb.hw, 4780 + [CLKID_PARSER] = &g12a_parser.hw, 4781 + [CLKID_USB] = &g12a_usb_general.hw, 4782 + [CLKID_PCIE_PHY] = &g12a_pcie_phy.hw, 4783 + [CLKID_AHB_ARB0] = &g12a_ahb_arb0.hw, 4784 + [CLKID_AHB_DATA_BUS] = &g12a_ahb_data_bus.hw, 4785 + [CLKID_AHB_CTRL_BUS] = &g12a_ahb_ctrl_bus.hw, 4786 + [CLKID_HTX_HDCP22] = &g12a_htx_hdcp22.hw, 4787 + [CLKID_HTX_PCLK] = &g12a_htx_pclk.hw, 4788 + [CLKID_BT656] = &g12a_bt656.hw, 4789 + [CLKID_USB1_DDR_BRIDGE] = &g12a_usb1_to_ddr.hw, 4790 + [CLKID_MMC_PCLK] = &g12a_mmc_pclk.hw, 4791 + [CLKID_UART2] = &g12a_uart2.hw, 4792 + [CLKID_VPU_INTR] = &g12a_vpu_intr.hw, 4793 + [CLKID_GIC] = &g12a_gic.hw, 4794 + [CLKID_SD_EMMC_A_CLK0_SEL] = &g12a_sd_emmc_a_clk0_sel.hw, 4795 + [CLKID_SD_EMMC_A_CLK0_DIV] = &g12a_sd_emmc_a_clk0_div.hw, 4796 + [CLKID_SD_EMMC_A_CLK0] = &g12a_sd_emmc_a_clk0.hw, 4797 + [CLKID_SD_EMMC_B_CLK0_SEL] = &g12a_sd_emmc_b_clk0_sel.hw, 4798 + [CLKID_SD_EMMC_B_CLK0_DIV] = &g12a_sd_emmc_b_clk0_div.hw, 4799 + [CLKID_SD_EMMC_B_CLK0] = &g12a_sd_emmc_b_clk0.hw, 4800 + [CLKID_SD_EMMC_C_CLK0_SEL] = &g12a_sd_emmc_c_clk0_sel.hw, 4801 + [CLKID_SD_EMMC_C_CLK0_DIV] = &g12a_sd_emmc_c_clk0_div.hw, 4802 + [CLKID_SD_EMMC_C_CLK0] = &g12a_sd_emmc_c_clk0.hw, 4803 + [CLKID_MPLL0_DIV] = &g12a_mpll0_div.hw, 4804 + [CLKID_MPLL1_DIV] = &g12a_mpll1_div.hw, 4805 + [CLKID_MPLL2_DIV] = &g12a_mpll2_div.hw, 4806 + [CLKID_MPLL3_DIV] = &g12a_mpll3_div.hw, 4807 + [CLKID_FCLK_DIV2_DIV] = &g12a_fclk_div2_div.hw, 4808 + [CLKID_FCLK_DIV3_DIV] = &g12a_fclk_div3_div.hw, 4809 + [CLKID_FCLK_DIV4_DIV] = &g12a_fclk_div4_div.hw, 4810 + [CLKID_FCLK_DIV5_DIV] = &g12a_fclk_div5_div.hw, 4811 + [CLKID_FCLK_DIV7_DIV] = &g12a_fclk_div7_div.hw, 4812 + [CLKID_FCLK_DIV2P5_DIV] = &g12a_fclk_div2p5_div.hw, 4813 + [CLKID_HIFI_PLL] = &g12a_hifi_pll.hw, 4814 + [CLKID_VCLK2_VENCI0] = &g12a_vclk2_venci0.hw, 4815 + [CLKID_VCLK2_VENCI1] = &g12a_vclk2_venci1.hw, 4816 + [CLKID_VCLK2_VENCP0] = &g12a_vclk2_vencp0.hw, 4817 + [CLKID_VCLK2_VENCP1] = &g12a_vclk2_vencp1.hw, 4818 + [CLKID_VCLK2_VENCT0] = &g12a_vclk2_venct0.hw, 4819 + [CLKID_VCLK2_VENCT1] = &g12a_vclk2_venct1.hw, 4820 + [CLKID_VCLK2_OTHER] = &g12a_vclk2_other.hw, 4821 + [CLKID_VCLK2_ENCI] = &g12a_vclk2_enci.hw, 4822 + [CLKID_VCLK2_ENCP] = &g12a_vclk2_encp.hw, 4823 + [CLKID_DAC_CLK] = &g12a_dac_clk.hw, 4824 + [CLKID_AOCLK] = &g12a_aoclk_gate.hw, 4825 + [CLKID_IEC958] = &g12a_iec958_gate.hw, 4826 + [CLKID_ENC480P] = &g12a_enc480p.hw, 4827 + [CLKID_RNG1] = &g12a_rng1.hw, 4828 + [CLKID_VCLK2_ENCT] = &g12a_vclk2_enct.hw, 4829 + [CLKID_VCLK2_ENCL] = &g12a_vclk2_encl.hw, 4830 + [CLKID_VCLK2_VENCLMMC] = &g12a_vclk2_venclmmc.hw, 4831 + [CLKID_VCLK2_VENCL] = &g12a_vclk2_vencl.hw, 4832 + [CLKID_VCLK2_OTHER1] = &g12a_vclk2_other1.hw, 4833 + [CLKID_FIXED_PLL_DCO] = &g12a_fixed_pll_dco.hw, 4834 + [CLKID_SYS_PLL_DCO] = &g12a_sys_pll_dco.hw, 4835 + [CLKID_GP0_PLL_DCO] = &g12a_gp0_pll_dco.hw, 4836 + [CLKID_HIFI_PLL_DCO] = &g12a_hifi_pll_dco.hw, 4837 + [CLKID_DMA] = &g12a_dma.hw, 4838 + [CLKID_EFUSE] = &g12a_efuse.hw, 4839 + [CLKID_ROM_BOOT] = &g12a_rom_boot.hw, 4840 + [CLKID_RESET_SEC] = &g12a_reset_sec.hw, 4841 + [CLKID_SEC_AHB_APB3] = &g12a_sec_ahb_apb3.hw, 4842 + [CLKID_MPLL_PREDIV] = &g12a_mpll_prediv.hw, 4843 + [CLKID_VPU_0_SEL] = &g12a_vpu_0_sel.hw, 4844 + [CLKID_VPU_0_DIV] = &g12a_vpu_0_div.hw, 4845 + [CLKID_VPU_0] = &g12a_vpu_0.hw, 4846 + [CLKID_VPU_1_SEL] = &g12a_vpu_1_sel.hw, 4847 + [CLKID_VPU_1_DIV] = &g12a_vpu_1_div.hw, 4848 + [CLKID_VPU_1] = &g12a_vpu_1.hw, 4849 + [CLKID_VPU] = &g12a_vpu.hw, 4850 + [CLKID_VAPB_0_SEL] = &g12a_vapb_0_sel.hw, 4851 + [CLKID_VAPB_0_DIV] = &g12a_vapb_0_div.hw, 4852 + [CLKID_VAPB_0] = &g12a_vapb_0.hw, 4853 + [CLKID_VAPB_1_SEL] = &g12a_vapb_1_sel.hw, 4854 + [CLKID_VAPB_1_DIV] = &g12a_vapb_1_div.hw, 4855 + [CLKID_VAPB_1] = &g12a_vapb_1.hw, 4856 + [CLKID_VAPB_SEL] = &g12a_vapb_sel.hw, 4857 + [CLKID_VAPB] = &g12a_vapb.hw, 4858 + [CLKID_HDMI_PLL_DCO] = &g12a_hdmi_pll_dco.hw, 4859 + [CLKID_HDMI_PLL_OD] = &g12a_hdmi_pll_od.hw, 4860 + [CLKID_HDMI_PLL_OD2] = &g12a_hdmi_pll_od2.hw, 4861 + [CLKID_HDMI_PLL] = &g12a_hdmi_pll.hw, 4862 + [CLKID_VID_PLL] = &g12a_vid_pll_div.hw, 4863 + [CLKID_VID_PLL_SEL] = &g12a_vid_pll_sel.hw, 4864 + [CLKID_VID_PLL_DIV] = &g12a_vid_pll.hw, 4865 + [CLKID_VCLK_SEL] = &g12a_vclk_sel.hw, 4866 + [CLKID_VCLK2_SEL] = &g12a_vclk2_sel.hw, 4867 + [CLKID_VCLK_INPUT] = &g12a_vclk_input.hw, 4868 + [CLKID_VCLK2_INPUT] = &g12a_vclk2_input.hw, 4869 + [CLKID_VCLK_DIV] = &g12a_vclk_div.hw, 4870 + [CLKID_VCLK2_DIV] = &g12a_vclk2_div.hw, 4871 + [CLKID_VCLK] = &g12a_vclk.hw, 4872 + [CLKID_VCLK2] = &g12a_vclk2.hw, 4873 + [CLKID_VCLK_DIV1] = &g12a_vclk_div1.hw, 4874 + [CLKID_VCLK_DIV2_EN] = &g12a_vclk_div2_en.hw, 4875 + [CLKID_VCLK_DIV4_EN] = &g12a_vclk_div4_en.hw, 4876 + [CLKID_VCLK_DIV6_EN] = &g12a_vclk_div6_en.hw, 4877 + [CLKID_VCLK_DIV12_EN] = &g12a_vclk_div12_en.hw, 4878 + [CLKID_VCLK2_DIV1] = &g12a_vclk2_div1.hw, 4879 + [CLKID_VCLK2_DIV2_EN] = &g12a_vclk2_div2_en.hw, 4880 + [CLKID_VCLK2_DIV4_EN] = &g12a_vclk2_div4_en.hw, 4881 + [CLKID_VCLK2_DIV6_EN] = &g12a_vclk2_div6_en.hw, 4882 + [CLKID_VCLK2_DIV12_EN] = &g12a_vclk2_div12_en.hw, 4883 + [CLKID_VCLK_DIV2] = &g12a_vclk_div2.hw, 4884 + [CLKID_VCLK_DIV4] = &g12a_vclk_div4.hw, 4885 + [CLKID_VCLK_DIV6] = &g12a_vclk_div6.hw, 4886 + [CLKID_VCLK_DIV12] = &g12a_vclk_div12.hw, 4887 + [CLKID_VCLK2_DIV2] = &g12a_vclk2_div2.hw, 4888 + [CLKID_VCLK2_DIV4] = &g12a_vclk2_div4.hw, 4889 + [CLKID_VCLK2_DIV6] = &g12a_vclk2_div6.hw, 4890 + [CLKID_VCLK2_DIV12] = &g12a_vclk2_div12.hw, 4891 + [CLKID_CTS_ENCI_SEL] = &g12a_cts_enci_sel.hw, 4892 + [CLKID_CTS_ENCP_SEL] = &g12a_cts_encp_sel.hw, 4893 + [CLKID_CTS_VDAC_SEL] = &g12a_cts_vdac_sel.hw, 4894 + [CLKID_HDMI_TX_SEL] = &g12a_hdmi_tx_sel.hw, 4895 + [CLKID_CTS_ENCI] = &g12a_cts_enci.hw, 4896 + [CLKID_CTS_ENCP] = &g12a_cts_encp.hw, 4897 + [CLKID_CTS_VDAC] = &g12a_cts_vdac.hw, 4898 + [CLKID_HDMI_TX] = &g12a_hdmi_tx.hw, 4899 + [CLKID_HDMI_SEL] = &g12a_hdmi_sel.hw, 4900 + [CLKID_HDMI_DIV] = &g12a_hdmi_div.hw, 4901 + [CLKID_HDMI] = &g12a_hdmi.hw, 4902 + [CLKID_MALI_0_SEL] = &g12a_mali_0_sel.hw, 4903 + [CLKID_MALI_0_DIV] = &g12a_mali_0_div.hw, 4904 + [CLKID_MALI_0] = &g12a_mali_0.hw, 4905 + [CLKID_MALI_1_SEL] = &g12a_mali_1_sel.hw, 4906 + [CLKID_MALI_1_DIV] = &g12a_mali_1_div.hw, 4907 + [CLKID_MALI_1] = &g12a_mali_1.hw, 4908 + [CLKID_MALI] = &g12a_mali.hw, 4909 + [CLKID_MPLL_50M_DIV] = &g12a_mpll_50m_div.hw, 4910 + [CLKID_MPLL_50M] = &g12a_mpll_50m.hw, 4911 + [CLKID_SYS_PLL_DIV16_EN] = &g12a_sys_pll_div16_en.hw, 4912 + [CLKID_SYS_PLL_DIV16] = &g12a_sys_pll_div16.hw, 4913 + [CLKID_CPU_CLK_DYN0_SEL] = &g12a_cpu_clk_premux0.hw, 4914 + [CLKID_CPU_CLK_DYN0_DIV] = &g12a_cpu_clk_mux0_div.hw, 4915 + [CLKID_CPU_CLK_DYN0] = &g12a_cpu_clk_postmux0.hw, 4916 + [CLKID_CPU_CLK_DYN1_SEL] = &g12a_cpu_clk_premux1.hw, 4917 + [CLKID_CPU_CLK_DYN1_DIV] = &g12a_cpu_clk_mux1_div.hw, 4918 + [CLKID_CPU_CLK_DYN1] = &g12a_cpu_clk_postmux1.hw, 4919 + [CLKID_CPU_CLK_DYN] = &g12a_cpu_clk_dyn.hw, 4920 + [CLKID_CPU_CLK] = &g12a_cpu_clk.hw, 4921 + [CLKID_CPU_CLK_DIV16_EN] = &g12a_cpu_clk_div16_en.hw, 4922 + [CLKID_CPU_CLK_DIV16] = &g12a_cpu_clk_div16.hw, 4923 + [CLKID_CPU_CLK_APB_DIV] = &g12a_cpu_clk_apb_div.hw, 4924 + [CLKID_CPU_CLK_APB] = &g12a_cpu_clk_apb.hw, 4925 + [CLKID_CPU_CLK_ATB_DIV] = &g12a_cpu_clk_atb_div.hw, 4926 + [CLKID_CPU_CLK_ATB] = &g12a_cpu_clk_atb.hw, 4927 + [CLKID_CPU_CLK_AXI_DIV] = &g12a_cpu_clk_axi_div.hw, 4928 + [CLKID_CPU_CLK_AXI] = &g12a_cpu_clk_axi.hw, 4929 + [CLKID_CPU_CLK_TRACE_DIV] = &g12a_cpu_clk_trace_div.hw, 4930 + [CLKID_CPU_CLK_TRACE] = &g12a_cpu_clk_trace.hw, 4931 + [CLKID_PCIE_PLL_DCO] = &g12a_pcie_pll_dco.hw, 4932 + [CLKID_PCIE_PLL_DCO_DIV2] = &g12a_pcie_pll_dco_div2.hw, 4933 + [CLKID_PCIE_PLL_OD] = &g12a_pcie_pll_od.hw, 4934 + [CLKID_PCIE_PLL] = &g12a_pcie_pll.hw, 4935 + [CLKID_VDEC_1_SEL] = &g12a_vdec_1_sel.hw, 4936 + [CLKID_VDEC_1_DIV] = &g12a_vdec_1_div.hw, 4937 + [CLKID_VDEC_1] = &g12a_vdec_1.hw, 4938 + [CLKID_VDEC_HEVC_SEL] = &g12a_vdec_hevc_sel.hw, 4939 + [CLKID_VDEC_HEVC_DIV] = &g12a_vdec_hevc_div.hw, 4940 + [CLKID_VDEC_HEVC] = &g12a_vdec_hevc.hw, 4941 + [CLKID_VDEC_HEVCF_SEL] = &g12a_vdec_hevcf_sel.hw, 4942 + [CLKID_VDEC_HEVCF_DIV] = &g12a_vdec_hevcf_div.hw, 4943 + [CLKID_VDEC_HEVCF] = &g12a_vdec_hevcf.hw, 4944 + [CLKID_TS_DIV] = &g12a_ts_div.hw, 4945 + [CLKID_TS] = &g12a_ts.hw, 4946 + [CLKID_GP1_PLL_DCO] = &sm1_gp1_pll_dco.hw, 4947 + [CLKID_GP1_PLL] = &sm1_gp1_pll.hw, 4948 + [CLKID_DSU_CLK_DYN0_SEL] = &sm1_dsu_clk_premux0.hw, 4949 + [CLKID_DSU_CLK_DYN0_DIV] = &sm1_dsu_clk_premux1.hw, 4950 + [CLKID_DSU_CLK_DYN0] = &sm1_dsu_clk_mux0_div.hw, 4951 + [CLKID_DSU_CLK_DYN1_SEL] = &sm1_dsu_clk_postmux0.hw, 4952 + [CLKID_DSU_CLK_DYN1_DIV] = &sm1_dsu_clk_mux1_div.hw, 4953 + [CLKID_DSU_CLK_DYN1] = &sm1_dsu_clk_postmux1.hw, 4954 + [CLKID_DSU_CLK_DYN] = &sm1_dsu_clk_dyn.hw, 4955 + [CLKID_DSU_CLK_FINAL] = &sm1_dsu_final_clk.hw, 4956 + [CLKID_DSU_CLK] = &sm1_dsu_clk.hw, 4957 + [CLKID_CPU1_CLK] = &sm1_cpu1_clk.hw, 4958 + [CLKID_CPU2_CLK] = &sm1_cpu2_clk.hw, 4959 + [CLKID_CPU3_CLK] = &sm1_cpu3_clk.hw, 4960 + [CLKID_SPICC0_SCLK_SEL] = &g12a_spicc0_sclk_sel.hw, 4961 + [CLKID_SPICC0_SCLK_DIV] = &g12a_spicc0_sclk_div.hw, 4962 + [CLKID_SPICC0_SCLK] = &g12a_spicc0_sclk.hw, 4963 + [CLKID_SPICC1_SCLK_SEL] = &g12a_spicc1_sclk_sel.hw, 4964 + [CLKID_SPICC1_SCLK_DIV] = &g12a_spicc1_sclk_div.hw, 4965 + [CLKID_SPICC1_SCLK] = &g12a_spicc1_sclk.hw, 4966 + [CLKID_NNA_AXI_CLK_SEL] = &sm1_nna_axi_clk_sel.hw, 4967 + [CLKID_NNA_AXI_CLK_DIV] = &sm1_nna_axi_clk_div.hw, 4968 + [CLKID_NNA_AXI_CLK] = &sm1_nna_axi_clk.hw, 4969 + [CLKID_NNA_CORE_CLK_SEL] = &sm1_nna_core_clk_sel.hw, 4970 + [CLKID_NNA_CORE_CLK_DIV] = &sm1_nna_core_clk_div.hw, 4971 + [CLKID_NNA_CORE_CLK] = &sm1_nna_core_clk.hw, 4972 + [CLKID_MIPI_DSI_PXCLK_SEL] = &g12a_mipi_dsi_pxclk_sel.hw, 4973 + [CLKID_MIPI_DSI_PXCLK_DIV] = &g12a_mipi_dsi_pxclk_div.hw, 4974 + [CLKID_MIPI_DSI_PXCLK] = &g12a_mipi_dsi_pxclk.hw, 4989 4975 }; 4990 4976 4991 4977 /* Convenience table to populate regmap in .probe */ ··· 5264 5274 5265 5275 static int meson_g12b_dvfs_setup(struct platform_device *pdev) 5266 5276 { 5267 - struct clk_hw **hws = g12b_hw_onecell_data.hws; 5277 + struct clk_hw **hws = g12b_hw_clks; 5268 5278 struct device *dev = &pdev->dev; 5269 5279 struct clk *notifier_clk; 5270 5280 struct clk_hw *xtal; ··· 5341 5351 5342 5352 static int meson_g12a_dvfs_setup(struct platform_device *pdev) 5343 5353 { 5344 - struct clk_hw **hws = g12a_hw_onecell_data.hws; 5354 + struct clk_hw **hws = g12a_hw_clks; 5345 5355 struct device *dev = &pdev->dev; 5346 5356 struct clk *notifier_clk; 5347 5357 int ret; ··· 5403 5413 .eeclkc_data = { 5404 5414 .regmap_clks = g12a_clk_regmaps, 5405 5415 .regmap_clk_num = ARRAY_SIZE(g12a_clk_regmaps), 5406 - .hw_onecell_data = &g12a_hw_onecell_data, 5416 + .hw_clks = { 5417 + .hws = g12a_hw_clks, 5418 + .num = ARRAY_SIZE(g12a_hw_clks), 5419 + }, 5407 5420 .init_regs = g12a_init_regs, 5408 5421 .init_count = ARRAY_SIZE(g12a_init_regs), 5409 5422 }, ··· 5417 5424 .eeclkc_data = { 5418 5425 .regmap_clks = g12a_clk_regmaps, 5419 5426 .regmap_clk_num = ARRAY_SIZE(g12a_clk_regmaps), 5420 - .hw_onecell_data = &g12b_hw_onecell_data, 5427 + .hw_clks = { 5428 + .hws = g12b_hw_clks, 5429 + .num = ARRAY_SIZE(g12b_hw_clks), 5430 + }, 5421 5431 }, 5422 5432 .dvfs_setup = meson_g12b_dvfs_setup, 5423 5433 }; ··· 5429 5433 .eeclkc_data = { 5430 5434 .regmap_clks = g12a_clk_regmaps, 5431 5435 .regmap_clk_num = ARRAY_SIZE(g12a_clk_regmaps), 5432 - .hw_onecell_data = &sm1_hw_onecell_data, 5436 + .hw_clks = { 5437 + .hws = sm1_hw_clks, 5438 + .num = ARRAY_SIZE(sm1_hw_clks), 5439 + }, 5433 5440 }, 5434 5441 .dvfs_setup = meson_g12a_dvfs_setup, 5435 5442 };
-145
drivers/clk/meson/g12a.h
··· 126 126 #define HHI_SYS1_PLL_CNTL5 0x394 127 127 #define HHI_SYS1_PLL_CNTL6 0x398 128 128 129 - /* 130 - * CLKID index values 131 - * 132 - * These indices are entirely contrived and do not map onto the hardware. 133 - * It has now been decided to expose everything by default in the DT header: 134 - * include/dt-bindings/clock/g12a-clkc.h. Only the clocks ids we don't want 135 - * to expose, such as the internal muxes and dividers of composite clocks, 136 - * will remain defined here. 137 - */ 138 - #define CLKID_MPEG_SEL 8 139 - #define CLKID_MPEG_DIV 9 140 - #define CLKID_SD_EMMC_A_CLK0_SEL 63 141 - #define CLKID_SD_EMMC_A_CLK0_DIV 64 142 - #define CLKID_SD_EMMC_B_CLK0_SEL 65 143 - #define CLKID_SD_EMMC_B_CLK0_DIV 66 144 - #define CLKID_SD_EMMC_C_CLK0_SEL 67 145 - #define CLKID_SD_EMMC_C_CLK0_DIV 68 146 - #define CLKID_MPLL0_DIV 69 147 - #define CLKID_MPLL1_DIV 70 148 - #define CLKID_MPLL2_DIV 71 149 - #define CLKID_MPLL3_DIV 72 150 - #define CLKID_MPLL_PREDIV 73 151 - #define CLKID_FCLK_DIV2_DIV 75 152 - #define CLKID_FCLK_DIV3_DIV 76 153 - #define CLKID_FCLK_DIV4_DIV 77 154 - #define CLKID_FCLK_DIV5_DIV 78 155 - #define CLKID_FCLK_DIV7_DIV 79 156 - #define CLKID_FCLK_DIV2P5_DIV 100 157 - #define CLKID_FIXED_PLL_DCO 101 158 - #define CLKID_SYS_PLL_DCO 102 159 - #define CLKID_GP0_PLL_DCO 103 160 - #define CLKID_HIFI_PLL_DCO 104 161 - #define CLKID_VPU_0_DIV 111 162 - #define CLKID_VPU_1_DIV 114 163 - #define CLKID_VAPB_0_DIV 118 164 - #define CLKID_VAPB_1_DIV 121 165 - #define CLKID_HDMI_PLL_DCO 125 166 - #define CLKID_HDMI_PLL_OD 126 167 - #define CLKID_HDMI_PLL_OD2 127 168 - #define CLKID_VID_PLL_SEL 130 169 - #define CLKID_VID_PLL_DIV 131 170 - #define CLKID_VCLK_SEL 132 171 - #define CLKID_VCLK2_SEL 133 172 - #define CLKID_VCLK_INPUT 134 173 - #define CLKID_VCLK2_INPUT 135 174 - #define CLKID_VCLK_DIV 136 175 - #define CLKID_VCLK2_DIV 137 176 - #define CLKID_VCLK_DIV2_EN 140 177 - #define CLKID_VCLK_DIV4_EN 141 178 - #define CLKID_VCLK_DIV6_EN 142 179 - #define CLKID_VCLK_DIV12_EN 143 180 - #define CLKID_VCLK2_DIV2_EN 144 181 - #define CLKID_VCLK2_DIV4_EN 145 182 - #define CLKID_VCLK2_DIV6_EN 146 183 - #define CLKID_VCLK2_DIV12_EN 147 184 - #define CLKID_CTS_ENCI_SEL 158 185 - #define CLKID_CTS_ENCP_SEL 159 186 - #define CLKID_CTS_VDAC_SEL 160 187 - #define CLKID_HDMI_TX_SEL 161 188 - #define CLKID_HDMI_SEL 166 189 - #define CLKID_HDMI_DIV 167 190 - #define CLKID_MALI_0_DIV 170 191 - #define CLKID_MALI_1_DIV 173 192 - #define CLKID_MPLL_50M_DIV 176 193 - #define CLKID_SYS_PLL_DIV16_EN 178 194 - #define CLKID_SYS_PLL_DIV16 179 195 - #define CLKID_CPU_CLK_DYN0_SEL 180 196 - #define CLKID_CPU_CLK_DYN0_DIV 181 197 - #define CLKID_CPU_CLK_DYN0 182 198 - #define CLKID_CPU_CLK_DYN1_SEL 183 199 - #define CLKID_CPU_CLK_DYN1_DIV 184 200 - #define CLKID_CPU_CLK_DYN1 185 201 - #define CLKID_CPU_CLK_DYN 186 202 - #define CLKID_CPU_CLK_DIV16_EN 188 203 - #define CLKID_CPU_CLK_DIV16 189 204 - #define CLKID_CPU_CLK_APB_DIV 190 205 - #define CLKID_CPU_CLK_APB 191 206 - #define CLKID_CPU_CLK_ATB_DIV 192 207 - #define CLKID_CPU_CLK_ATB 193 208 - #define CLKID_CPU_CLK_AXI_DIV 194 209 - #define CLKID_CPU_CLK_AXI 195 210 - #define CLKID_CPU_CLK_TRACE_DIV 196 211 - #define CLKID_CPU_CLK_TRACE 197 212 - #define CLKID_PCIE_PLL_DCO 198 213 - #define CLKID_PCIE_PLL_DCO_DIV2 199 214 - #define CLKID_PCIE_PLL_OD 200 215 - #define CLKID_VDEC_1_SEL 202 216 - #define CLKID_VDEC_1_DIV 203 217 - #define CLKID_VDEC_HEVC_SEL 205 218 - #define CLKID_VDEC_HEVC_DIV 206 219 - #define CLKID_VDEC_HEVCF_SEL 208 220 - #define CLKID_VDEC_HEVCF_DIV 209 221 - #define CLKID_TS_DIV 211 222 - #define CLKID_SYS1_PLL_DCO 213 223 - #define CLKID_SYS1_PLL 214 224 - #define CLKID_SYS1_PLL_DIV16_EN 215 225 - #define CLKID_SYS1_PLL_DIV16 216 226 - #define CLKID_CPUB_CLK_DYN0_SEL 217 227 - #define CLKID_CPUB_CLK_DYN0_DIV 218 228 - #define CLKID_CPUB_CLK_DYN0 219 229 - #define CLKID_CPUB_CLK_DYN1_SEL 220 230 - #define CLKID_CPUB_CLK_DYN1_DIV 221 231 - #define CLKID_CPUB_CLK_DYN1 222 232 - #define CLKID_CPUB_CLK_DYN 223 233 - #define CLKID_CPUB_CLK_DIV16_EN 225 234 - #define CLKID_CPUB_CLK_DIV16 226 235 - #define CLKID_CPUB_CLK_DIV2 227 236 - #define CLKID_CPUB_CLK_DIV3 228 237 - #define CLKID_CPUB_CLK_DIV4 229 238 - #define CLKID_CPUB_CLK_DIV5 230 239 - #define CLKID_CPUB_CLK_DIV6 231 240 - #define CLKID_CPUB_CLK_DIV7 232 241 - #define CLKID_CPUB_CLK_DIV8 233 242 - #define CLKID_CPUB_CLK_APB_SEL 234 243 - #define CLKID_CPUB_CLK_APB 235 244 - #define CLKID_CPUB_CLK_ATB_SEL 236 245 - #define CLKID_CPUB_CLK_ATB 237 246 - #define CLKID_CPUB_CLK_AXI_SEL 238 247 - #define CLKID_CPUB_CLK_AXI 239 248 - #define CLKID_CPUB_CLK_TRACE_SEL 240 249 - #define CLKID_CPUB_CLK_TRACE 241 250 - #define CLKID_GP1_PLL_DCO 242 251 - #define CLKID_DSU_CLK_DYN0_SEL 244 252 - #define CLKID_DSU_CLK_DYN0_DIV 245 253 - #define CLKID_DSU_CLK_DYN0 246 254 - #define CLKID_DSU_CLK_DYN1_SEL 247 255 - #define CLKID_DSU_CLK_DYN1_DIV 248 256 - #define CLKID_DSU_CLK_DYN1 249 257 - #define CLKID_DSU_CLK_DYN 250 258 - #define CLKID_DSU_CLK_FINAL 251 259 - #define CLKID_SPICC0_SCLK_SEL 256 260 - #define CLKID_SPICC0_SCLK_DIV 257 261 - #define CLKID_SPICC1_SCLK_SEL 259 262 - #define CLKID_SPICC1_SCLK_DIV 260 263 - #define CLKID_NNA_AXI_CLK_SEL 262 264 - #define CLKID_NNA_AXI_CLK_DIV 263 265 - #define CLKID_NNA_CORE_CLK_SEL 265 266 - #define CLKID_NNA_CORE_CLK_DIV 266 267 - #define CLKID_MIPI_DSI_PXCLK_DIV 268 268 - 269 - #define NR_CLKS 271 270 - 271 - /* include the CLKIDs that have been made part of the DT binding */ 272 - #include <dt-bindings/clock/g12a-clkc.h> 273 - 274 129 #endif /* __G12A_H */
+8 -6
drivers/clk/meson/gxbb-aoclk.c
··· 7 7 #include <linux/mfd/syscon.h> 8 8 #include <linux/module.h> 9 9 #include "meson-aoclk.h" 10 - #include "gxbb-aoclk.h" 11 10 12 11 #include "clk-regmap.h" 13 12 #include "clk-dualdiv.h" 13 + 14 + #include <dt-bindings/clock/gxbb-aoclkc.h> 15 + #include <dt-bindings/reset/gxbb-aoclkc.h> 14 16 15 17 /* AO Configuration Clock registers offsets */ 16 18 #define AO_RTI_PWR_CNTL_REG1 0x0c ··· 254 252 &ao_cts_cec, 255 253 }; 256 254 257 - static const struct clk_hw_onecell_data gxbb_aoclk_onecell_data = { 258 - .hws = { 255 + static struct clk_hw *gxbb_aoclk_hw_clks[] = { 259 256 [CLKID_AO_REMOTE] = &remote_ao.hw, 260 257 [CLKID_AO_I2C_MASTER] = &i2c_master_ao.hw, 261 258 [CLKID_AO_I2C_SLAVE] = &i2c_slave_ao.hw, ··· 269 268 [CLKID_AO_32K] = &ao_32k.hw, 270 269 [CLKID_AO_CTS_RTC_OSCIN] = &ao_cts_rtc_oscin.hw, 271 270 [CLKID_AO_CLK81] = &ao_clk81.hw, 272 - }, 273 - .num = NR_CLKS, 274 271 }; 275 272 276 273 static const struct meson_aoclk_data gxbb_aoclkc_data = { ··· 277 278 .reset = gxbb_aoclk_reset, 278 279 .num_clks = ARRAY_SIZE(gxbb_aoclk), 279 280 .clks = gxbb_aoclk, 280 - .hw_data = &gxbb_aoclk_onecell_data, 281 + .hw_clks = { 282 + .hws = gxbb_aoclk_hw_clks, 283 + .num = ARRAY_SIZE(gxbb_aoclk_hw_clks), 284 + }, 281 285 }; 282 286 283 287 static const struct of_device_id gxbb_aoclkc_match_table[] = {
-15
drivers/clk/meson/gxbb-aoclk.h
··· 1 - /* SPDX-License-Identifier: GPL-2.0+ */ 2 - /* 3 - * Copyright (c) 2017 BayLibre, SAS 4 - * Author: Neil Armstrong <narmstrong@baylibre.com> 5 - */ 6 - 7 - #ifndef __GXBB_AOCLKC_H 8 - #define __GXBB_AOCLKC_H 9 - 10 - #define NR_CLKS 14 11 - 12 - #include <dt-bindings/clock/gxbb-aoclkc.h> 13 - #include <dt-bindings/reset/gxbb-aoclkc.h> 14 - 15 - #endif /* __GXBB_AOCLKC_H */
+422 -422
drivers/clk/meson/gxbb.c
··· 17 17 #include "meson-eeclk.h" 18 18 #include "vid-pll-div.h" 19 19 20 + #include <dt-bindings/clock/gxbb-clkc.h> 21 + 20 22 static DEFINE_SPINLOCK(meson_clk_lock); 21 23 22 24 static const struct pll_params_table gxbb_gp0_pll_params_table[] = { ··· 2730 2728 2731 2729 /* Array of all clocks provided by this provider */ 2732 2730 2733 - static struct clk_hw_onecell_data gxbb_hw_onecell_data = { 2734 - .hws = { 2735 - [CLKID_SYS_PLL] = &gxbb_sys_pll.hw, 2736 - [CLKID_HDMI_PLL] = &gxbb_hdmi_pll.hw, 2737 - [CLKID_FIXED_PLL] = &gxbb_fixed_pll.hw, 2738 - [CLKID_FCLK_DIV2] = &gxbb_fclk_div2.hw, 2739 - [CLKID_FCLK_DIV3] = &gxbb_fclk_div3.hw, 2740 - [CLKID_FCLK_DIV4] = &gxbb_fclk_div4.hw, 2741 - [CLKID_FCLK_DIV5] = &gxbb_fclk_div5.hw, 2742 - [CLKID_FCLK_DIV7] = &gxbb_fclk_div7.hw, 2743 - [CLKID_GP0_PLL] = &gxbb_gp0_pll.hw, 2744 - [CLKID_MPEG_SEL] = &gxbb_mpeg_clk_sel.hw, 2745 - [CLKID_MPEG_DIV] = &gxbb_mpeg_clk_div.hw, 2746 - [CLKID_CLK81] = &gxbb_clk81.hw, 2747 - [CLKID_MPLL0] = &gxbb_mpll0.hw, 2748 - [CLKID_MPLL1] = &gxbb_mpll1.hw, 2749 - [CLKID_MPLL2] = &gxbb_mpll2.hw, 2750 - [CLKID_DDR] = &gxbb_ddr.hw, 2751 - [CLKID_DOS] = &gxbb_dos.hw, 2752 - [CLKID_ISA] = &gxbb_isa.hw, 2753 - [CLKID_PL301] = &gxbb_pl301.hw, 2754 - [CLKID_PERIPHS] = &gxbb_periphs.hw, 2755 - [CLKID_SPICC] = &gxbb_spicc.hw, 2756 - [CLKID_I2C] = &gxbb_i2c.hw, 2757 - [CLKID_SAR_ADC] = &gxbb_sar_adc.hw, 2758 - [CLKID_SMART_CARD] = &gxbb_smart_card.hw, 2759 - [CLKID_RNG0] = &gxbb_rng0.hw, 2760 - [CLKID_UART0] = &gxbb_uart0.hw, 2761 - [CLKID_SDHC] = &gxbb_sdhc.hw, 2762 - [CLKID_STREAM] = &gxbb_stream.hw, 2763 - [CLKID_ASYNC_FIFO] = &gxbb_async_fifo.hw, 2764 - [CLKID_SDIO] = &gxbb_sdio.hw, 2765 - [CLKID_ABUF] = &gxbb_abuf.hw, 2766 - [CLKID_HIU_IFACE] = &gxbb_hiu_iface.hw, 2767 - [CLKID_ASSIST_MISC] = &gxbb_assist_misc.hw, 2768 - [CLKID_SPI] = &gxbb_spi.hw, 2769 - [CLKID_I2S_SPDIF] = &gxbb_i2s_spdif.hw, 2770 - [CLKID_ETH] = &gxbb_eth.hw, 2771 - [CLKID_DEMUX] = &gxbb_demux.hw, 2772 - [CLKID_AIU_GLUE] = &gxbb_aiu_glue.hw, 2773 - [CLKID_IEC958] = &gxbb_iec958.hw, 2774 - [CLKID_I2S_OUT] = &gxbb_i2s_out.hw, 2775 - [CLKID_AMCLK] = &gxbb_amclk.hw, 2776 - [CLKID_AIFIFO2] = &gxbb_aififo2.hw, 2777 - [CLKID_MIXER] = &gxbb_mixer.hw, 2778 - [CLKID_MIXER_IFACE] = &gxbb_mixer_iface.hw, 2779 - [CLKID_ADC] = &gxbb_adc.hw, 2780 - [CLKID_BLKMV] = &gxbb_blkmv.hw, 2781 - [CLKID_AIU] = &gxbb_aiu.hw, 2782 - [CLKID_UART1] = &gxbb_uart1.hw, 2783 - [CLKID_G2D] = &gxbb_g2d.hw, 2784 - [CLKID_USB0] = &gxbb_usb0.hw, 2785 - [CLKID_USB1] = &gxbb_usb1.hw, 2786 - [CLKID_RESET] = &gxbb_reset.hw, 2787 - [CLKID_NAND] = &gxbb_nand.hw, 2788 - [CLKID_DOS_PARSER] = &gxbb_dos_parser.hw, 2789 - [CLKID_USB] = &gxbb_usb.hw, 2790 - [CLKID_VDIN1] = &gxbb_vdin1.hw, 2791 - [CLKID_AHB_ARB0] = &gxbb_ahb_arb0.hw, 2792 - [CLKID_EFUSE] = &gxbb_efuse.hw, 2793 - [CLKID_BOOT_ROM] = &gxbb_boot_rom.hw, 2794 - [CLKID_AHB_DATA_BUS] = &gxbb_ahb_data_bus.hw, 2795 - [CLKID_AHB_CTRL_BUS] = &gxbb_ahb_ctrl_bus.hw, 2796 - [CLKID_HDMI_INTR_SYNC] = &gxbb_hdmi_intr_sync.hw, 2797 - [CLKID_HDMI_PCLK] = &gxbb_hdmi_pclk.hw, 2798 - [CLKID_USB1_DDR_BRIDGE] = &gxbb_usb1_ddr_bridge.hw, 2799 - [CLKID_USB0_DDR_BRIDGE] = &gxbb_usb0_ddr_bridge.hw, 2800 - [CLKID_MMC_PCLK] = &gxbb_mmc_pclk.hw, 2801 - [CLKID_DVIN] = &gxbb_dvin.hw, 2802 - [CLKID_UART2] = &gxbb_uart2.hw, 2803 - [CLKID_SANA] = &gxbb_sana.hw, 2804 - [CLKID_VPU_INTR] = &gxbb_vpu_intr.hw, 2805 - [CLKID_SEC_AHB_AHB3_BRIDGE] = &gxbb_sec_ahb_ahb3_bridge.hw, 2806 - [CLKID_CLK81_A53] = &gxbb_clk81_a53.hw, 2807 - [CLKID_VCLK2_VENCI0] = &gxbb_vclk2_venci0.hw, 2808 - [CLKID_VCLK2_VENCI1] = &gxbb_vclk2_venci1.hw, 2809 - [CLKID_VCLK2_VENCP0] = &gxbb_vclk2_vencp0.hw, 2810 - [CLKID_VCLK2_VENCP1] = &gxbb_vclk2_vencp1.hw, 2811 - [CLKID_GCLK_VENCI_INT0] = &gxbb_gclk_venci_int0.hw, 2812 - [CLKID_GCLK_VENCI_INT] = &gxbb_gclk_vencp_int.hw, 2813 - [CLKID_DAC_CLK] = &gxbb_dac_clk.hw, 2814 - [CLKID_AOCLK_GATE] = &gxbb_aoclk_gate.hw, 2815 - [CLKID_IEC958_GATE] = &gxbb_iec958_gate.hw, 2816 - [CLKID_ENC480P] = &gxbb_enc480p.hw, 2817 - [CLKID_RNG1] = &gxbb_rng1.hw, 2818 - [CLKID_GCLK_VENCI_INT1] = &gxbb_gclk_venci_int1.hw, 2819 - [CLKID_VCLK2_VENCLMCC] = &gxbb_vclk2_venclmcc.hw, 2820 - [CLKID_VCLK2_VENCL] = &gxbb_vclk2_vencl.hw, 2821 - [CLKID_VCLK_OTHER] = &gxbb_vclk_other.hw, 2822 - [CLKID_EDP] = &gxbb_edp.hw, 2823 - [CLKID_AO_MEDIA_CPU] = &gxbb_ao_media_cpu.hw, 2824 - [CLKID_AO_AHB_SRAM] = &gxbb_ao_ahb_sram.hw, 2825 - [CLKID_AO_AHB_BUS] = &gxbb_ao_ahb_bus.hw, 2826 - [CLKID_AO_IFACE] = &gxbb_ao_iface.hw, 2827 - [CLKID_AO_I2C] = &gxbb_ao_i2c.hw, 2828 - [CLKID_SD_EMMC_A] = &gxbb_emmc_a.hw, 2829 - [CLKID_SD_EMMC_B] = &gxbb_emmc_b.hw, 2830 - [CLKID_SD_EMMC_C] = &gxbb_emmc_c.hw, 2831 - [CLKID_SAR_ADC_CLK] = &gxbb_sar_adc_clk.hw, 2832 - [CLKID_SAR_ADC_SEL] = &gxbb_sar_adc_clk_sel.hw, 2833 - [CLKID_SAR_ADC_DIV] = &gxbb_sar_adc_clk_div.hw, 2834 - [CLKID_MALI_0_SEL] = &gxbb_mali_0_sel.hw, 2835 - [CLKID_MALI_0_DIV] = &gxbb_mali_0_div.hw, 2836 - [CLKID_MALI_0] = &gxbb_mali_0.hw, 2837 - [CLKID_MALI_1_SEL] = &gxbb_mali_1_sel.hw, 2838 - [CLKID_MALI_1_DIV] = &gxbb_mali_1_div.hw, 2839 - [CLKID_MALI_1] = &gxbb_mali_1.hw, 2840 - [CLKID_MALI] = &gxbb_mali.hw, 2841 - [CLKID_CTS_AMCLK] = &gxbb_cts_amclk.hw, 2842 - [CLKID_CTS_AMCLK_SEL] = &gxbb_cts_amclk_sel.hw, 2843 - [CLKID_CTS_AMCLK_DIV] = &gxbb_cts_amclk_div.hw, 2844 - [CLKID_CTS_MCLK_I958] = &gxbb_cts_mclk_i958.hw, 2845 - [CLKID_CTS_MCLK_I958_SEL] = &gxbb_cts_mclk_i958_sel.hw, 2846 - [CLKID_CTS_MCLK_I958_DIV] = &gxbb_cts_mclk_i958_div.hw, 2847 - [CLKID_CTS_I958] = &gxbb_cts_i958.hw, 2848 - [CLKID_32K_CLK] = &gxbb_32k_clk.hw, 2849 - [CLKID_32K_CLK_SEL] = &gxbb_32k_clk_sel.hw, 2850 - [CLKID_32K_CLK_DIV] = &gxbb_32k_clk_div.hw, 2851 - [CLKID_SD_EMMC_A_CLK0_SEL] = &gxbb_sd_emmc_a_clk0_sel.hw, 2852 - [CLKID_SD_EMMC_A_CLK0_DIV] = &gxbb_sd_emmc_a_clk0_div.hw, 2853 - [CLKID_SD_EMMC_A_CLK0] = &gxbb_sd_emmc_a_clk0.hw, 2854 - [CLKID_SD_EMMC_B_CLK0_SEL] = &gxbb_sd_emmc_b_clk0_sel.hw, 2855 - [CLKID_SD_EMMC_B_CLK0_DIV] = &gxbb_sd_emmc_b_clk0_div.hw, 2856 - [CLKID_SD_EMMC_B_CLK0] = &gxbb_sd_emmc_b_clk0.hw, 2857 - [CLKID_SD_EMMC_C_CLK0_SEL] = &gxbb_sd_emmc_c_clk0_sel.hw, 2858 - [CLKID_SD_EMMC_C_CLK0_DIV] = &gxbb_sd_emmc_c_clk0_div.hw, 2859 - [CLKID_SD_EMMC_C_CLK0] = &gxbb_sd_emmc_c_clk0.hw, 2860 - [CLKID_VPU_0_SEL] = &gxbb_vpu_0_sel.hw, 2861 - [CLKID_VPU_0_DIV] = &gxbb_vpu_0_div.hw, 2862 - [CLKID_VPU_0] = &gxbb_vpu_0.hw, 2863 - [CLKID_VPU_1_SEL] = &gxbb_vpu_1_sel.hw, 2864 - [CLKID_VPU_1_DIV] = &gxbb_vpu_1_div.hw, 2865 - [CLKID_VPU_1] = &gxbb_vpu_1.hw, 2866 - [CLKID_VPU] = &gxbb_vpu.hw, 2867 - [CLKID_VAPB_0_SEL] = &gxbb_vapb_0_sel.hw, 2868 - [CLKID_VAPB_0_DIV] = &gxbb_vapb_0_div.hw, 2869 - [CLKID_VAPB_0] = &gxbb_vapb_0.hw, 2870 - [CLKID_VAPB_1_SEL] = &gxbb_vapb_1_sel.hw, 2871 - [CLKID_VAPB_1_DIV] = &gxbb_vapb_1_div.hw, 2872 - [CLKID_VAPB_1] = &gxbb_vapb_1.hw, 2873 - [CLKID_VAPB_SEL] = &gxbb_vapb_sel.hw, 2874 - [CLKID_VAPB] = &gxbb_vapb.hw, 2875 - [CLKID_HDMI_PLL_PRE_MULT] = &gxbb_hdmi_pll_pre_mult.hw, 2876 - [CLKID_MPLL0_DIV] = &gxbb_mpll0_div.hw, 2877 - [CLKID_MPLL1_DIV] = &gxbb_mpll1_div.hw, 2878 - [CLKID_MPLL2_DIV] = &gxbb_mpll2_div.hw, 2879 - [CLKID_MPLL_PREDIV] = &gxbb_mpll_prediv.hw, 2880 - [CLKID_FCLK_DIV2_DIV] = &gxbb_fclk_div2_div.hw, 2881 - [CLKID_FCLK_DIV3_DIV] = &gxbb_fclk_div3_div.hw, 2882 - [CLKID_FCLK_DIV4_DIV] = &gxbb_fclk_div4_div.hw, 2883 - [CLKID_FCLK_DIV5_DIV] = &gxbb_fclk_div5_div.hw, 2884 - [CLKID_FCLK_DIV7_DIV] = &gxbb_fclk_div7_div.hw, 2885 - [CLKID_VDEC_1_SEL] = &gxbb_vdec_1_sel.hw, 2886 - [CLKID_VDEC_1_DIV] = &gxbb_vdec_1_div.hw, 2887 - [CLKID_VDEC_1] = &gxbb_vdec_1.hw, 2888 - [CLKID_VDEC_HEVC_SEL] = &gxbb_vdec_hevc_sel.hw, 2889 - [CLKID_VDEC_HEVC_DIV] = &gxbb_vdec_hevc_div.hw, 2890 - [CLKID_VDEC_HEVC] = &gxbb_vdec_hevc.hw, 2891 - [CLKID_GEN_CLK_SEL] = &gxbb_gen_clk_sel.hw, 2892 - [CLKID_GEN_CLK_DIV] = &gxbb_gen_clk_div.hw, 2893 - [CLKID_GEN_CLK] = &gxbb_gen_clk.hw, 2894 - [CLKID_FIXED_PLL_DCO] = &gxbb_fixed_pll_dco.hw, 2895 - [CLKID_HDMI_PLL_DCO] = &gxbb_hdmi_pll_dco.hw, 2896 - [CLKID_HDMI_PLL_OD] = &gxbb_hdmi_pll_od.hw, 2897 - [CLKID_HDMI_PLL_OD2] = &gxbb_hdmi_pll_od2.hw, 2898 - [CLKID_SYS_PLL_DCO] = &gxbb_sys_pll_dco.hw, 2899 - [CLKID_GP0_PLL_DCO] = &gxbb_gp0_pll_dco.hw, 2900 - [CLKID_VID_PLL_DIV] = &gxbb_vid_pll_div.hw, 2901 - [CLKID_VID_PLL_SEL] = &gxbb_vid_pll_sel.hw, 2902 - [CLKID_VID_PLL] = &gxbb_vid_pll.hw, 2903 - [CLKID_VCLK_SEL] = &gxbb_vclk_sel.hw, 2904 - [CLKID_VCLK2_SEL] = &gxbb_vclk2_sel.hw, 2905 - [CLKID_VCLK_INPUT] = &gxbb_vclk_input.hw, 2906 - [CLKID_VCLK2_INPUT] = &gxbb_vclk2_input.hw, 2907 - [CLKID_VCLK_DIV] = &gxbb_vclk_div.hw, 2908 - [CLKID_VCLK2_DIV] = &gxbb_vclk2_div.hw, 2909 - [CLKID_VCLK] = &gxbb_vclk.hw, 2910 - [CLKID_VCLK2] = &gxbb_vclk2.hw, 2911 - [CLKID_VCLK_DIV1] = &gxbb_vclk_div1.hw, 2912 - [CLKID_VCLK_DIV2_EN] = &gxbb_vclk_div2_en.hw, 2913 - [CLKID_VCLK_DIV2] = &gxbb_vclk_div2.hw, 2914 - [CLKID_VCLK_DIV4_EN] = &gxbb_vclk_div4_en.hw, 2915 - [CLKID_VCLK_DIV4] = &gxbb_vclk_div4.hw, 2916 - [CLKID_VCLK_DIV6_EN] = &gxbb_vclk_div6_en.hw, 2917 - [CLKID_VCLK_DIV6] = &gxbb_vclk_div6.hw, 2918 - [CLKID_VCLK_DIV12_EN] = &gxbb_vclk_div12_en.hw, 2919 - [CLKID_VCLK_DIV12] = &gxbb_vclk_div12.hw, 2920 - [CLKID_VCLK2_DIV1] = &gxbb_vclk2_div1.hw, 2921 - [CLKID_VCLK2_DIV2_EN] = &gxbb_vclk2_div2_en.hw, 2922 - [CLKID_VCLK2_DIV2] = &gxbb_vclk2_div2.hw, 2923 - [CLKID_VCLK2_DIV4_EN] = &gxbb_vclk2_div4_en.hw, 2924 - [CLKID_VCLK2_DIV4] = &gxbb_vclk2_div4.hw, 2925 - [CLKID_VCLK2_DIV6_EN] = &gxbb_vclk2_div6_en.hw, 2926 - [CLKID_VCLK2_DIV6] = &gxbb_vclk2_div6.hw, 2927 - [CLKID_VCLK2_DIV12_EN] = &gxbb_vclk2_div12_en.hw, 2928 - [CLKID_VCLK2_DIV12] = &gxbb_vclk2_div12.hw, 2929 - [CLKID_CTS_ENCI_SEL] = &gxbb_cts_enci_sel.hw, 2930 - [CLKID_CTS_ENCP_SEL] = &gxbb_cts_encp_sel.hw, 2931 - [CLKID_CTS_VDAC_SEL] = &gxbb_cts_vdac_sel.hw, 2932 - [CLKID_HDMI_TX_SEL] = &gxbb_hdmi_tx_sel.hw, 2933 - [CLKID_CTS_ENCI] = &gxbb_cts_enci.hw, 2934 - [CLKID_CTS_ENCP] = &gxbb_cts_encp.hw, 2935 - [CLKID_CTS_VDAC] = &gxbb_cts_vdac.hw, 2936 - [CLKID_HDMI_TX] = &gxbb_hdmi_tx.hw, 2937 - [CLKID_HDMI_SEL] = &gxbb_hdmi_sel.hw, 2938 - [CLKID_HDMI_DIV] = &gxbb_hdmi_div.hw, 2939 - [CLKID_HDMI] = &gxbb_hdmi.hw, 2940 - [NR_CLKS] = NULL, 2941 - }, 2942 - .num = NR_CLKS, 2731 + static struct clk_hw *gxbb_hw_clks[] = { 2732 + [CLKID_SYS_PLL] = &gxbb_sys_pll.hw, 2733 + [CLKID_HDMI_PLL] = &gxbb_hdmi_pll.hw, 2734 + [CLKID_FIXED_PLL] = &gxbb_fixed_pll.hw, 2735 + [CLKID_FCLK_DIV2] = &gxbb_fclk_div2.hw, 2736 + [CLKID_FCLK_DIV3] = &gxbb_fclk_div3.hw, 2737 + [CLKID_FCLK_DIV4] = &gxbb_fclk_div4.hw, 2738 + [CLKID_FCLK_DIV5] = &gxbb_fclk_div5.hw, 2739 + [CLKID_FCLK_DIV7] = &gxbb_fclk_div7.hw, 2740 + [CLKID_GP0_PLL] = &gxbb_gp0_pll.hw, 2741 + [CLKID_MPEG_SEL] = &gxbb_mpeg_clk_sel.hw, 2742 + [CLKID_MPEG_DIV] = &gxbb_mpeg_clk_div.hw, 2743 + [CLKID_CLK81] = &gxbb_clk81.hw, 2744 + [CLKID_MPLL0] = &gxbb_mpll0.hw, 2745 + [CLKID_MPLL1] = &gxbb_mpll1.hw, 2746 + [CLKID_MPLL2] = &gxbb_mpll2.hw, 2747 + [CLKID_DDR] = &gxbb_ddr.hw, 2748 + [CLKID_DOS] = &gxbb_dos.hw, 2749 + [CLKID_ISA] = &gxbb_isa.hw, 2750 + [CLKID_PL301] = &gxbb_pl301.hw, 2751 + [CLKID_PERIPHS] = &gxbb_periphs.hw, 2752 + [CLKID_SPICC] = &gxbb_spicc.hw, 2753 + [CLKID_I2C] = &gxbb_i2c.hw, 2754 + [CLKID_SAR_ADC] = &gxbb_sar_adc.hw, 2755 + [CLKID_SMART_CARD] = &gxbb_smart_card.hw, 2756 + [CLKID_RNG0] = &gxbb_rng0.hw, 2757 + [CLKID_UART0] = &gxbb_uart0.hw, 2758 + [CLKID_SDHC] = &gxbb_sdhc.hw, 2759 + [CLKID_STREAM] = &gxbb_stream.hw, 2760 + [CLKID_ASYNC_FIFO] = &gxbb_async_fifo.hw, 2761 + [CLKID_SDIO] = &gxbb_sdio.hw, 2762 + [CLKID_ABUF] = &gxbb_abuf.hw, 2763 + [CLKID_HIU_IFACE] = &gxbb_hiu_iface.hw, 2764 + [CLKID_ASSIST_MISC] = &gxbb_assist_misc.hw, 2765 + [CLKID_SPI] = &gxbb_spi.hw, 2766 + [CLKID_I2S_SPDIF] = &gxbb_i2s_spdif.hw, 2767 + [CLKID_ETH] = &gxbb_eth.hw, 2768 + [CLKID_DEMUX] = &gxbb_demux.hw, 2769 + [CLKID_AIU_GLUE] = &gxbb_aiu_glue.hw, 2770 + [CLKID_IEC958] = &gxbb_iec958.hw, 2771 + [CLKID_I2S_OUT] = &gxbb_i2s_out.hw, 2772 + [CLKID_AMCLK] = &gxbb_amclk.hw, 2773 + [CLKID_AIFIFO2] = &gxbb_aififo2.hw, 2774 + [CLKID_MIXER] = &gxbb_mixer.hw, 2775 + [CLKID_MIXER_IFACE] = &gxbb_mixer_iface.hw, 2776 + [CLKID_ADC] = &gxbb_adc.hw, 2777 + [CLKID_BLKMV] = &gxbb_blkmv.hw, 2778 + [CLKID_AIU] = &gxbb_aiu.hw, 2779 + [CLKID_UART1] = &gxbb_uart1.hw, 2780 + [CLKID_G2D] = &gxbb_g2d.hw, 2781 + [CLKID_USB0] = &gxbb_usb0.hw, 2782 + [CLKID_USB1] = &gxbb_usb1.hw, 2783 + [CLKID_RESET] = &gxbb_reset.hw, 2784 + [CLKID_NAND] = &gxbb_nand.hw, 2785 + [CLKID_DOS_PARSER] = &gxbb_dos_parser.hw, 2786 + [CLKID_USB] = &gxbb_usb.hw, 2787 + [CLKID_VDIN1] = &gxbb_vdin1.hw, 2788 + [CLKID_AHB_ARB0] = &gxbb_ahb_arb0.hw, 2789 + [CLKID_EFUSE] = &gxbb_efuse.hw, 2790 + [CLKID_BOOT_ROM] = &gxbb_boot_rom.hw, 2791 + [CLKID_AHB_DATA_BUS] = &gxbb_ahb_data_bus.hw, 2792 + [CLKID_AHB_CTRL_BUS] = &gxbb_ahb_ctrl_bus.hw, 2793 + [CLKID_HDMI_INTR_SYNC] = &gxbb_hdmi_intr_sync.hw, 2794 + [CLKID_HDMI_PCLK] = &gxbb_hdmi_pclk.hw, 2795 + [CLKID_USB1_DDR_BRIDGE] = &gxbb_usb1_ddr_bridge.hw, 2796 + [CLKID_USB0_DDR_BRIDGE] = &gxbb_usb0_ddr_bridge.hw, 2797 + [CLKID_MMC_PCLK] = &gxbb_mmc_pclk.hw, 2798 + [CLKID_DVIN] = &gxbb_dvin.hw, 2799 + [CLKID_UART2] = &gxbb_uart2.hw, 2800 + [CLKID_SANA] = &gxbb_sana.hw, 2801 + [CLKID_VPU_INTR] = &gxbb_vpu_intr.hw, 2802 + [CLKID_SEC_AHB_AHB3_BRIDGE] = &gxbb_sec_ahb_ahb3_bridge.hw, 2803 + [CLKID_CLK81_A53] = &gxbb_clk81_a53.hw, 2804 + [CLKID_VCLK2_VENCI0] = &gxbb_vclk2_venci0.hw, 2805 + [CLKID_VCLK2_VENCI1] = &gxbb_vclk2_venci1.hw, 2806 + [CLKID_VCLK2_VENCP0] = &gxbb_vclk2_vencp0.hw, 2807 + [CLKID_VCLK2_VENCP1] = &gxbb_vclk2_vencp1.hw, 2808 + [CLKID_GCLK_VENCI_INT0] = &gxbb_gclk_venci_int0.hw, 2809 + [CLKID_GCLK_VENCI_INT] = &gxbb_gclk_vencp_int.hw, 2810 + [CLKID_DAC_CLK] = &gxbb_dac_clk.hw, 2811 + [CLKID_AOCLK_GATE] = &gxbb_aoclk_gate.hw, 2812 + [CLKID_IEC958_GATE] = &gxbb_iec958_gate.hw, 2813 + [CLKID_ENC480P] = &gxbb_enc480p.hw, 2814 + [CLKID_RNG1] = &gxbb_rng1.hw, 2815 + [CLKID_GCLK_VENCI_INT1] = &gxbb_gclk_venci_int1.hw, 2816 + [CLKID_VCLK2_VENCLMCC] = &gxbb_vclk2_venclmcc.hw, 2817 + [CLKID_VCLK2_VENCL] = &gxbb_vclk2_vencl.hw, 2818 + [CLKID_VCLK_OTHER] = &gxbb_vclk_other.hw, 2819 + [CLKID_EDP] = &gxbb_edp.hw, 2820 + [CLKID_AO_MEDIA_CPU] = &gxbb_ao_media_cpu.hw, 2821 + [CLKID_AO_AHB_SRAM] = &gxbb_ao_ahb_sram.hw, 2822 + [CLKID_AO_AHB_BUS] = &gxbb_ao_ahb_bus.hw, 2823 + [CLKID_AO_IFACE] = &gxbb_ao_iface.hw, 2824 + [CLKID_AO_I2C] = &gxbb_ao_i2c.hw, 2825 + [CLKID_SD_EMMC_A] = &gxbb_emmc_a.hw, 2826 + [CLKID_SD_EMMC_B] = &gxbb_emmc_b.hw, 2827 + [CLKID_SD_EMMC_C] = &gxbb_emmc_c.hw, 2828 + [CLKID_SAR_ADC_CLK] = &gxbb_sar_adc_clk.hw, 2829 + [CLKID_SAR_ADC_SEL] = &gxbb_sar_adc_clk_sel.hw, 2830 + [CLKID_SAR_ADC_DIV] = &gxbb_sar_adc_clk_div.hw, 2831 + [CLKID_MALI_0_SEL] = &gxbb_mali_0_sel.hw, 2832 + [CLKID_MALI_0_DIV] = &gxbb_mali_0_div.hw, 2833 + [CLKID_MALI_0] = &gxbb_mali_0.hw, 2834 + [CLKID_MALI_1_SEL] = &gxbb_mali_1_sel.hw, 2835 + [CLKID_MALI_1_DIV] = &gxbb_mali_1_div.hw, 2836 + [CLKID_MALI_1] = &gxbb_mali_1.hw, 2837 + [CLKID_MALI] = &gxbb_mali.hw, 2838 + [CLKID_CTS_AMCLK] = &gxbb_cts_amclk.hw, 2839 + [CLKID_CTS_AMCLK_SEL] = &gxbb_cts_amclk_sel.hw, 2840 + [CLKID_CTS_AMCLK_DIV] = &gxbb_cts_amclk_div.hw, 2841 + [CLKID_CTS_MCLK_I958] = &gxbb_cts_mclk_i958.hw, 2842 + [CLKID_CTS_MCLK_I958_SEL] = &gxbb_cts_mclk_i958_sel.hw, 2843 + [CLKID_CTS_MCLK_I958_DIV] = &gxbb_cts_mclk_i958_div.hw, 2844 + [CLKID_CTS_I958] = &gxbb_cts_i958.hw, 2845 + [CLKID_32K_CLK] = &gxbb_32k_clk.hw, 2846 + [CLKID_32K_CLK_SEL] = &gxbb_32k_clk_sel.hw, 2847 + [CLKID_32K_CLK_DIV] = &gxbb_32k_clk_div.hw, 2848 + [CLKID_SD_EMMC_A_CLK0_SEL] = &gxbb_sd_emmc_a_clk0_sel.hw, 2849 + [CLKID_SD_EMMC_A_CLK0_DIV] = &gxbb_sd_emmc_a_clk0_div.hw, 2850 + [CLKID_SD_EMMC_A_CLK0] = &gxbb_sd_emmc_a_clk0.hw, 2851 + [CLKID_SD_EMMC_B_CLK0_SEL] = &gxbb_sd_emmc_b_clk0_sel.hw, 2852 + [CLKID_SD_EMMC_B_CLK0_DIV] = &gxbb_sd_emmc_b_clk0_div.hw, 2853 + [CLKID_SD_EMMC_B_CLK0] = &gxbb_sd_emmc_b_clk0.hw, 2854 + [CLKID_SD_EMMC_C_CLK0_SEL] = &gxbb_sd_emmc_c_clk0_sel.hw, 2855 + [CLKID_SD_EMMC_C_CLK0_DIV] = &gxbb_sd_emmc_c_clk0_div.hw, 2856 + [CLKID_SD_EMMC_C_CLK0] = &gxbb_sd_emmc_c_clk0.hw, 2857 + [CLKID_VPU_0_SEL] = &gxbb_vpu_0_sel.hw, 2858 + [CLKID_VPU_0_DIV] = &gxbb_vpu_0_div.hw, 2859 + [CLKID_VPU_0] = &gxbb_vpu_0.hw, 2860 + [CLKID_VPU_1_SEL] = &gxbb_vpu_1_sel.hw, 2861 + [CLKID_VPU_1_DIV] = &gxbb_vpu_1_div.hw, 2862 + [CLKID_VPU_1] = &gxbb_vpu_1.hw, 2863 + [CLKID_VPU] = &gxbb_vpu.hw, 2864 + [CLKID_VAPB_0_SEL] = &gxbb_vapb_0_sel.hw, 2865 + [CLKID_VAPB_0_DIV] = &gxbb_vapb_0_div.hw, 2866 + [CLKID_VAPB_0] = &gxbb_vapb_0.hw, 2867 + [CLKID_VAPB_1_SEL] = &gxbb_vapb_1_sel.hw, 2868 + [CLKID_VAPB_1_DIV] = &gxbb_vapb_1_div.hw, 2869 + [CLKID_VAPB_1] = &gxbb_vapb_1.hw, 2870 + [CLKID_VAPB_SEL] = &gxbb_vapb_sel.hw, 2871 + [CLKID_VAPB] = &gxbb_vapb.hw, 2872 + [CLKID_HDMI_PLL_PRE_MULT] = &gxbb_hdmi_pll_pre_mult.hw, 2873 + [CLKID_MPLL0_DIV] = &gxbb_mpll0_div.hw, 2874 + [CLKID_MPLL1_DIV] = &gxbb_mpll1_div.hw, 2875 + [CLKID_MPLL2_DIV] = &gxbb_mpll2_div.hw, 2876 + [CLKID_MPLL_PREDIV] = &gxbb_mpll_prediv.hw, 2877 + [CLKID_FCLK_DIV2_DIV] = &gxbb_fclk_div2_div.hw, 2878 + [CLKID_FCLK_DIV3_DIV] = &gxbb_fclk_div3_div.hw, 2879 + [CLKID_FCLK_DIV4_DIV] = &gxbb_fclk_div4_div.hw, 2880 + [CLKID_FCLK_DIV5_DIV] = &gxbb_fclk_div5_div.hw, 2881 + [CLKID_FCLK_DIV7_DIV] = &gxbb_fclk_div7_div.hw, 2882 + [CLKID_VDEC_1_SEL] = &gxbb_vdec_1_sel.hw, 2883 + [CLKID_VDEC_1_DIV] = &gxbb_vdec_1_div.hw, 2884 + [CLKID_VDEC_1] = &gxbb_vdec_1.hw, 2885 + [CLKID_VDEC_HEVC_SEL] = &gxbb_vdec_hevc_sel.hw, 2886 + [CLKID_VDEC_HEVC_DIV] = &gxbb_vdec_hevc_div.hw, 2887 + [CLKID_VDEC_HEVC] = &gxbb_vdec_hevc.hw, 2888 + [CLKID_GEN_CLK_SEL] = &gxbb_gen_clk_sel.hw, 2889 + [CLKID_GEN_CLK_DIV] = &gxbb_gen_clk_div.hw, 2890 + [CLKID_GEN_CLK] = &gxbb_gen_clk.hw, 2891 + [CLKID_FIXED_PLL_DCO] = &gxbb_fixed_pll_dco.hw, 2892 + [CLKID_HDMI_PLL_DCO] = &gxbb_hdmi_pll_dco.hw, 2893 + [CLKID_HDMI_PLL_OD] = &gxbb_hdmi_pll_od.hw, 2894 + [CLKID_HDMI_PLL_OD2] = &gxbb_hdmi_pll_od2.hw, 2895 + [CLKID_SYS_PLL_DCO] = &gxbb_sys_pll_dco.hw, 2896 + [CLKID_GP0_PLL_DCO] = &gxbb_gp0_pll_dco.hw, 2897 + [CLKID_VID_PLL_DIV] = &gxbb_vid_pll_div.hw, 2898 + [CLKID_VID_PLL_SEL] = &gxbb_vid_pll_sel.hw, 2899 + [CLKID_VID_PLL] = &gxbb_vid_pll.hw, 2900 + [CLKID_VCLK_SEL] = &gxbb_vclk_sel.hw, 2901 + [CLKID_VCLK2_SEL] = &gxbb_vclk2_sel.hw, 2902 + [CLKID_VCLK_INPUT] = &gxbb_vclk_input.hw, 2903 + [CLKID_VCLK2_INPUT] = &gxbb_vclk2_input.hw, 2904 + [CLKID_VCLK_DIV] = &gxbb_vclk_div.hw, 2905 + [CLKID_VCLK2_DIV] = &gxbb_vclk2_div.hw, 2906 + [CLKID_VCLK] = &gxbb_vclk.hw, 2907 + [CLKID_VCLK2] = &gxbb_vclk2.hw, 2908 + [CLKID_VCLK_DIV1] = &gxbb_vclk_div1.hw, 2909 + [CLKID_VCLK_DIV2_EN] = &gxbb_vclk_div2_en.hw, 2910 + [CLKID_VCLK_DIV2] = &gxbb_vclk_div2.hw, 2911 + [CLKID_VCLK_DIV4_EN] = &gxbb_vclk_div4_en.hw, 2912 + [CLKID_VCLK_DIV4] = &gxbb_vclk_div4.hw, 2913 + [CLKID_VCLK_DIV6_EN] = &gxbb_vclk_div6_en.hw, 2914 + [CLKID_VCLK_DIV6] = &gxbb_vclk_div6.hw, 2915 + [CLKID_VCLK_DIV12_EN] = &gxbb_vclk_div12_en.hw, 2916 + [CLKID_VCLK_DIV12] = &gxbb_vclk_div12.hw, 2917 + [CLKID_VCLK2_DIV1] = &gxbb_vclk2_div1.hw, 2918 + [CLKID_VCLK2_DIV2_EN] = &gxbb_vclk2_div2_en.hw, 2919 + [CLKID_VCLK2_DIV2] = &gxbb_vclk2_div2.hw, 2920 + [CLKID_VCLK2_DIV4_EN] = &gxbb_vclk2_div4_en.hw, 2921 + [CLKID_VCLK2_DIV4] = &gxbb_vclk2_div4.hw, 2922 + [CLKID_VCLK2_DIV6_EN] = &gxbb_vclk2_div6_en.hw, 2923 + [CLKID_VCLK2_DIV6] = &gxbb_vclk2_div6.hw, 2924 + [CLKID_VCLK2_DIV12_EN] = &gxbb_vclk2_div12_en.hw, 2925 + [CLKID_VCLK2_DIV12] = &gxbb_vclk2_div12.hw, 2926 + [CLKID_CTS_ENCI_SEL] = &gxbb_cts_enci_sel.hw, 2927 + [CLKID_CTS_ENCP_SEL] = &gxbb_cts_encp_sel.hw, 2928 + [CLKID_CTS_VDAC_SEL] = &gxbb_cts_vdac_sel.hw, 2929 + [CLKID_HDMI_TX_SEL] = &gxbb_hdmi_tx_sel.hw, 2930 + [CLKID_CTS_ENCI] = &gxbb_cts_enci.hw, 2931 + [CLKID_CTS_ENCP] = &gxbb_cts_encp.hw, 2932 + [CLKID_CTS_VDAC] = &gxbb_cts_vdac.hw, 2933 + [CLKID_HDMI_TX] = &gxbb_hdmi_tx.hw, 2934 + [CLKID_HDMI_SEL] = &gxbb_hdmi_sel.hw, 2935 + [CLKID_HDMI_DIV] = &gxbb_hdmi_div.hw, 2936 + [CLKID_HDMI] = &gxbb_hdmi.hw, 2943 2937 }; 2944 2938 2945 - static struct clk_hw_onecell_data gxl_hw_onecell_data = { 2946 - .hws = { 2947 - [CLKID_SYS_PLL] = &gxbb_sys_pll.hw, 2948 - [CLKID_HDMI_PLL] = &gxl_hdmi_pll.hw, 2949 - [CLKID_FIXED_PLL] = &gxbb_fixed_pll.hw, 2950 - [CLKID_FCLK_DIV2] = &gxbb_fclk_div2.hw, 2951 - [CLKID_FCLK_DIV3] = &gxbb_fclk_div3.hw, 2952 - [CLKID_FCLK_DIV4] = &gxbb_fclk_div4.hw, 2953 - [CLKID_FCLK_DIV5] = &gxbb_fclk_div5.hw, 2954 - [CLKID_FCLK_DIV7] = &gxbb_fclk_div7.hw, 2955 - [CLKID_GP0_PLL] = &gxbb_gp0_pll.hw, 2956 - [CLKID_MPEG_SEL] = &gxbb_mpeg_clk_sel.hw, 2957 - [CLKID_MPEG_DIV] = &gxbb_mpeg_clk_div.hw, 2958 - [CLKID_CLK81] = &gxbb_clk81.hw, 2959 - [CLKID_MPLL0] = &gxbb_mpll0.hw, 2960 - [CLKID_MPLL1] = &gxbb_mpll1.hw, 2961 - [CLKID_MPLL2] = &gxbb_mpll2.hw, 2962 - [CLKID_DDR] = &gxbb_ddr.hw, 2963 - [CLKID_DOS] = &gxbb_dos.hw, 2964 - [CLKID_ISA] = &gxbb_isa.hw, 2965 - [CLKID_PL301] = &gxbb_pl301.hw, 2966 - [CLKID_PERIPHS] = &gxbb_periphs.hw, 2967 - [CLKID_SPICC] = &gxbb_spicc.hw, 2968 - [CLKID_I2C] = &gxbb_i2c.hw, 2969 - [CLKID_SAR_ADC] = &gxbb_sar_adc.hw, 2970 - [CLKID_SMART_CARD] = &gxbb_smart_card.hw, 2971 - [CLKID_RNG0] = &gxbb_rng0.hw, 2972 - [CLKID_UART0] = &gxbb_uart0.hw, 2973 - [CLKID_SDHC] = &gxbb_sdhc.hw, 2974 - [CLKID_STREAM] = &gxbb_stream.hw, 2975 - [CLKID_ASYNC_FIFO] = &gxbb_async_fifo.hw, 2976 - [CLKID_SDIO] = &gxbb_sdio.hw, 2977 - [CLKID_ABUF] = &gxbb_abuf.hw, 2978 - [CLKID_HIU_IFACE] = &gxbb_hiu_iface.hw, 2979 - [CLKID_ASSIST_MISC] = &gxbb_assist_misc.hw, 2980 - [CLKID_SPI] = &gxbb_spi.hw, 2981 - [CLKID_I2S_SPDIF] = &gxbb_i2s_spdif.hw, 2982 - [CLKID_ETH] = &gxbb_eth.hw, 2983 - [CLKID_DEMUX] = &gxbb_demux.hw, 2984 - [CLKID_AIU_GLUE] = &gxbb_aiu_glue.hw, 2985 - [CLKID_IEC958] = &gxbb_iec958.hw, 2986 - [CLKID_I2S_OUT] = &gxbb_i2s_out.hw, 2987 - [CLKID_AMCLK] = &gxbb_amclk.hw, 2988 - [CLKID_AIFIFO2] = &gxbb_aififo2.hw, 2989 - [CLKID_MIXER] = &gxbb_mixer.hw, 2990 - [CLKID_MIXER_IFACE] = &gxbb_mixer_iface.hw, 2991 - [CLKID_ADC] = &gxbb_adc.hw, 2992 - [CLKID_BLKMV] = &gxbb_blkmv.hw, 2993 - [CLKID_AIU] = &gxbb_aiu.hw, 2994 - [CLKID_UART1] = &gxbb_uart1.hw, 2995 - [CLKID_G2D] = &gxbb_g2d.hw, 2996 - [CLKID_USB0] = &gxbb_usb0.hw, 2997 - [CLKID_USB1] = &gxbb_usb1.hw, 2998 - [CLKID_RESET] = &gxbb_reset.hw, 2999 - [CLKID_NAND] = &gxbb_nand.hw, 3000 - [CLKID_DOS_PARSER] = &gxbb_dos_parser.hw, 3001 - [CLKID_USB] = &gxbb_usb.hw, 3002 - [CLKID_VDIN1] = &gxbb_vdin1.hw, 3003 - [CLKID_AHB_ARB0] = &gxbb_ahb_arb0.hw, 3004 - [CLKID_EFUSE] = &gxbb_efuse.hw, 3005 - [CLKID_BOOT_ROM] = &gxbb_boot_rom.hw, 3006 - [CLKID_AHB_DATA_BUS] = &gxbb_ahb_data_bus.hw, 3007 - [CLKID_AHB_CTRL_BUS] = &gxbb_ahb_ctrl_bus.hw, 3008 - [CLKID_HDMI_INTR_SYNC] = &gxbb_hdmi_intr_sync.hw, 3009 - [CLKID_HDMI_PCLK] = &gxbb_hdmi_pclk.hw, 3010 - [CLKID_USB1_DDR_BRIDGE] = &gxbb_usb1_ddr_bridge.hw, 3011 - [CLKID_USB0_DDR_BRIDGE] = &gxbb_usb0_ddr_bridge.hw, 3012 - [CLKID_MMC_PCLK] = &gxbb_mmc_pclk.hw, 3013 - [CLKID_DVIN] = &gxbb_dvin.hw, 3014 - [CLKID_UART2] = &gxbb_uart2.hw, 3015 - [CLKID_SANA] = &gxbb_sana.hw, 3016 - [CLKID_VPU_INTR] = &gxbb_vpu_intr.hw, 3017 - [CLKID_SEC_AHB_AHB3_BRIDGE] = &gxbb_sec_ahb_ahb3_bridge.hw, 3018 - [CLKID_CLK81_A53] = &gxbb_clk81_a53.hw, 3019 - [CLKID_VCLK2_VENCI0] = &gxbb_vclk2_venci0.hw, 3020 - [CLKID_VCLK2_VENCI1] = &gxbb_vclk2_venci1.hw, 3021 - [CLKID_VCLK2_VENCP0] = &gxbb_vclk2_vencp0.hw, 3022 - [CLKID_VCLK2_VENCP1] = &gxbb_vclk2_vencp1.hw, 3023 - [CLKID_GCLK_VENCI_INT0] = &gxbb_gclk_venci_int0.hw, 3024 - [CLKID_GCLK_VENCI_INT] = &gxbb_gclk_vencp_int.hw, 3025 - [CLKID_DAC_CLK] = &gxbb_dac_clk.hw, 3026 - [CLKID_AOCLK_GATE] = &gxbb_aoclk_gate.hw, 3027 - [CLKID_IEC958_GATE] = &gxbb_iec958_gate.hw, 3028 - [CLKID_ENC480P] = &gxbb_enc480p.hw, 3029 - [CLKID_RNG1] = &gxbb_rng1.hw, 3030 - [CLKID_GCLK_VENCI_INT1] = &gxbb_gclk_venci_int1.hw, 3031 - [CLKID_VCLK2_VENCLMCC] = &gxbb_vclk2_venclmcc.hw, 3032 - [CLKID_VCLK2_VENCL] = &gxbb_vclk2_vencl.hw, 3033 - [CLKID_VCLK_OTHER] = &gxbb_vclk_other.hw, 3034 - [CLKID_EDP] = &gxbb_edp.hw, 3035 - [CLKID_AO_MEDIA_CPU] = &gxbb_ao_media_cpu.hw, 3036 - [CLKID_AO_AHB_SRAM] = &gxbb_ao_ahb_sram.hw, 3037 - [CLKID_AO_AHB_BUS] = &gxbb_ao_ahb_bus.hw, 3038 - [CLKID_AO_IFACE] = &gxbb_ao_iface.hw, 3039 - [CLKID_AO_I2C] = &gxbb_ao_i2c.hw, 3040 - [CLKID_SD_EMMC_A] = &gxbb_emmc_a.hw, 3041 - [CLKID_SD_EMMC_B] = &gxbb_emmc_b.hw, 3042 - [CLKID_SD_EMMC_C] = &gxbb_emmc_c.hw, 3043 - [CLKID_SAR_ADC_CLK] = &gxbb_sar_adc_clk.hw, 3044 - [CLKID_SAR_ADC_SEL] = &gxbb_sar_adc_clk_sel.hw, 3045 - [CLKID_SAR_ADC_DIV] = &gxbb_sar_adc_clk_div.hw, 3046 - [CLKID_MALI_0_SEL] = &gxbb_mali_0_sel.hw, 3047 - [CLKID_MALI_0_DIV] = &gxbb_mali_0_div.hw, 3048 - [CLKID_MALI_0] = &gxbb_mali_0.hw, 3049 - [CLKID_MALI_1_SEL] = &gxbb_mali_1_sel.hw, 3050 - [CLKID_MALI_1_DIV] = &gxbb_mali_1_div.hw, 3051 - [CLKID_MALI_1] = &gxbb_mali_1.hw, 3052 - [CLKID_MALI] = &gxbb_mali.hw, 3053 - [CLKID_CTS_AMCLK] = &gxbb_cts_amclk.hw, 3054 - [CLKID_CTS_AMCLK_SEL] = &gxbb_cts_amclk_sel.hw, 3055 - [CLKID_CTS_AMCLK_DIV] = &gxbb_cts_amclk_div.hw, 3056 - [CLKID_CTS_MCLK_I958] = &gxbb_cts_mclk_i958.hw, 3057 - [CLKID_CTS_MCLK_I958_SEL] = &gxbb_cts_mclk_i958_sel.hw, 3058 - [CLKID_CTS_MCLK_I958_DIV] = &gxbb_cts_mclk_i958_div.hw, 3059 - [CLKID_CTS_I958] = &gxbb_cts_i958.hw, 3060 - [CLKID_32K_CLK] = &gxbb_32k_clk.hw, 3061 - [CLKID_32K_CLK_SEL] = &gxbb_32k_clk_sel.hw, 3062 - [CLKID_32K_CLK_DIV] = &gxbb_32k_clk_div.hw, 3063 - [CLKID_SD_EMMC_A_CLK0_SEL] = &gxbb_sd_emmc_a_clk0_sel.hw, 3064 - [CLKID_SD_EMMC_A_CLK0_DIV] = &gxbb_sd_emmc_a_clk0_div.hw, 3065 - [CLKID_SD_EMMC_A_CLK0] = &gxbb_sd_emmc_a_clk0.hw, 3066 - [CLKID_SD_EMMC_B_CLK0_SEL] = &gxbb_sd_emmc_b_clk0_sel.hw, 3067 - [CLKID_SD_EMMC_B_CLK0_DIV] = &gxbb_sd_emmc_b_clk0_div.hw, 3068 - [CLKID_SD_EMMC_B_CLK0] = &gxbb_sd_emmc_b_clk0.hw, 3069 - [CLKID_SD_EMMC_C_CLK0_SEL] = &gxbb_sd_emmc_c_clk0_sel.hw, 3070 - [CLKID_SD_EMMC_C_CLK0_DIV] = &gxbb_sd_emmc_c_clk0_div.hw, 3071 - [CLKID_SD_EMMC_C_CLK0] = &gxbb_sd_emmc_c_clk0.hw, 3072 - [CLKID_VPU_0_SEL] = &gxbb_vpu_0_sel.hw, 3073 - [CLKID_VPU_0_DIV] = &gxbb_vpu_0_div.hw, 3074 - [CLKID_VPU_0] = &gxbb_vpu_0.hw, 3075 - [CLKID_VPU_1_SEL] = &gxbb_vpu_1_sel.hw, 3076 - [CLKID_VPU_1_DIV] = &gxbb_vpu_1_div.hw, 3077 - [CLKID_VPU_1] = &gxbb_vpu_1.hw, 3078 - [CLKID_VPU] = &gxbb_vpu.hw, 3079 - [CLKID_VAPB_0_SEL] = &gxbb_vapb_0_sel.hw, 3080 - [CLKID_VAPB_0_DIV] = &gxbb_vapb_0_div.hw, 3081 - [CLKID_VAPB_0] = &gxbb_vapb_0.hw, 3082 - [CLKID_VAPB_1_SEL] = &gxbb_vapb_1_sel.hw, 3083 - [CLKID_VAPB_1_DIV] = &gxbb_vapb_1_div.hw, 3084 - [CLKID_VAPB_1] = &gxbb_vapb_1.hw, 3085 - [CLKID_VAPB_SEL] = &gxbb_vapb_sel.hw, 3086 - [CLKID_VAPB] = &gxbb_vapb.hw, 3087 - [CLKID_MPLL0_DIV] = &gxl_mpll0_div.hw, 3088 - [CLKID_MPLL1_DIV] = &gxbb_mpll1_div.hw, 3089 - [CLKID_MPLL2_DIV] = &gxbb_mpll2_div.hw, 3090 - [CLKID_MPLL_PREDIV] = &gxbb_mpll_prediv.hw, 3091 - [CLKID_FCLK_DIV2_DIV] = &gxbb_fclk_div2_div.hw, 3092 - [CLKID_FCLK_DIV3_DIV] = &gxbb_fclk_div3_div.hw, 3093 - [CLKID_FCLK_DIV4_DIV] = &gxbb_fclk_div4_div.hw, 3094 - [CLKID_FCLK_DIV5_DIV] = &gxbb_fclk_div5_div.hw, 3095 - [CLKID_FCLK_DIV7_DIV] = &gxbb_fclk_div7_div.hw, 3096 - [CLKID_VDEC_1_SEL] = &gxbb_vdec_1_sel.hw, 3097 - [CLKID_VDEC_1_DIV] = &gxbb_vdec_1_div.hw, 3098 - [CLKID_VDEC_1] = &gxbb_vdec_1.hw, 3099 - [CLKID_VDEC_HEVC_SEL] = &gxbb_vdec_hevc_sel.hw, 3100 - [CLKID_VDEC_HEVC_DIV] = &gxbb_vdec_hevc_div.hw, 3101 - [CLKID_VDEC_HEVC] = &gxbb_vdec_hevc.hw, 3102 - [CLKID_GEN_CLK_SEL] = &gxbb_gen_clk_sel.hw, 3103 - [CLKID_GEN_CLK_DIV] = &gxbb_gen_clk_div.hw, 3104 - [CLKID_GEN_CLK] = &gxbb_gen_clk.hw, 3105 - [CLKID_FIXED_PLL_DCO] = &gxbb_fixed_pll_dco.hw, 3106 - [CLKID_HDMI_PLL_DCO] = &gxl_hdmi_pll_dco.hw, 3107 - [CLKID_HDMI_PLL_OD] = &gxl_hdmi_pll_od.hw, 3108 - [CLKID_HDMI_PLL_OD2] = &gxl_hdmi_pll_od2.hw, 3109 - [CLKID_SYS_PLL_DCO] = &gxbb_sys_pll_dco.hw, 3110 - [CLKID_GP0_PLL_DCO] = &gxl_gp0_pll_dco.hw, 3111 - [CLKID_VID_PLL_DIV] = &gxbb_vid_pll_div.hw, 3112 - [CLKID_VID_PLL_SEL] = &gxbb_vid_pll_sel.hw, 3113 - [CLKID_VID_PLL] = &gxbb_vid_pll.hw, 3114 - [CLKID_VCLK_SEL] = &gxbb_vclk_sel.hw, 3115 - [CLKID_VCLK2_SEL] = &gxbb_vclk2_sel.hw, 3116 - [CLKID_VCLK_INPUT] = &gxbb_vclk_input.hw, 3117 - [CLKID_VCLK2_INPUT] = &gxbb_vclk2_input.hw, 3118 - [CLKID_VCLK_DIV] = &gxbb_vclk_div.hw, 3119 - [CLKID_VCLK2_DIV] = &gxbb_vclk2_div.hw, 3120 - [CLKID_VCLK] = &gxbb_vclk.hw, 3121 - [CLKID_VCLK2] = &gxbb_vclk2.hw, 3122 - [CLKID_VCLK_DIV1] = &gxbb_vclk_div1.hw, 3123 - [CLKID_VCLK_DIV2_EN] = &gxbb_vclk_div2_en.hw, 3124 - [CLKID_VCLK_DIV2] = &gxbb_vclk_div2.hw, 3125 - [CLKID_VCLK_DIV4_EN] = &gxbb_vclk_div4_en.hw, 3126 - [CLKID_VCLK_DIV4] = &gxbb_vclk_div4.hw, 3127 - [CLKID_VCLK_DIV6_EN] = &gxbb_vclk_div6_en.hw, 3128 - [CLKID_VCLK_DIV6] = &gxbb_vclk_div6.hw, 3129 - [CLKID_VCLK_DIV12_EN] = &gxbb_vclk_div12_en.hw, 3130 - [CLKID_VCLK_DIV12] = &gxbb_vclk_div12.hw, 3131 - [CLKID_VCLK2_DIV1] = &gxbb_vclk2_div1.hw, 3132 - [CLKID_VCLK2_DIV2_EN] = &gxbb_vclk2_div2_en.hw, 3133 - [CLKID_VCLK2_DIV2] = &gxbb_vclk2_div2.hw, 3134 - [CLKID_VCLK2_DIV4_EN] = &gxbb_vclk2_div4_en.hw, 3135 - [CLKID_VCLK2_DIV4] = &gxbb_vclk2_div4.hw, 3136 - [CLKID_VCLK2_DIV6_EN] = &gxbb_vclk2_div6_en.hw, 3137 - [CLKID_VCLK2_DIV6] = &gxbb_vclk2_div6.hw, 3138 - [CLKID_VCLK2_DIV12_EN] = &gxbb_vclk2_div12_en.hw, 3139 - [CLKID_VCLK2_DIV12] = &gxbb_vclk2_div12.hw, 3140 - [CLKID_CTS_ENCI_SEL] = &gxbb_cts_enci_sel.hw, 3141 - [CLKID_CTS_ENCP_SEL] = &gxbb_cts_encp_sel.hw, 3142 - [CLKID_CTS_VDAC_SEL] = &gxbb_cts_vdac_sel.hw, 3143 - [CLKID_HDMI_TX_SEL] = &gxbb_hdmi_tx_sel.hw, 3144 - [CLKID_CTS_ENCI] = &gxbb_cts_enci.hw, 3145 - [CLKID_CTS_ENCP] = &gxbb_cts_encp.hw, 3146 - [CLKID_CTS_VDAC] = &gxbb_cts_vdac.hw, 3147 - [CLKID_HDMI_TX] = &gxbb_hdmi_tx.hw, 3148 - [CLKID_HDMI_SEL] = &gxbb_hdmi_sel.hw, 3149 - [CLKID_HDMI_DIV] = &gxbb_hdmi_div.hw, 3150 - [CLKID_HDMI] = &gxbb_hdmi.hw, 3151 - [CLKID_ACODEC] = &gxl_acodec.hw, 3152 - [NR_CLKS] = NULL, 3153 - }, 3154 - .num = NR_CLKS, 2939 + static struct clk_hw *gxl_hw_clks[] = { 2940 + [CLKID_SYS_PLL] = &gxbb_sys_pll.hw, 2941 + [CLKID_HDMI_PLL] = &gxl_hdmi_pll.hw, 2942 + [CLKID_FIXED_PLL] = &gxbb_fixed_pll.hw, 2943 + [CLKID_FCLK_DIV2] = &gxbb_fclk_div2.hw, 2944 + [CLKID_FCLK_DIV3] = &gxbb_fclk_div3.hw, 2945 + [CLKID_FCLK_DIV4] = &gxbb_fclk_div4.hw, 2946 + [CLKID_FCLK_DIV5] = &gxbb_fclk_div5.hw, 2947 + [CLKID_FCLK_DIV7] = &gxbb_fclk_div7.hw, 2948 + [CLKID_GP0_PLL] = &gxbb_gp0_pll.hw, 2949 + [CLKID_MPEG_SEL] = &gxbb_mpeg_clk_sel.hw, 2950 + [CLKID_MPEG_DIV] = &gxbb_mpeg_clk_div.hw, 2951 + [CLKID_CLK81] = &gxbb_clk81.hw, 2952 + [CLKID_MPLL0] = &gxbb_mpll0.hw, 2953 + [CLKID_MPLL1] = &gxbb_mpll1.hw, 2954 + [CLKID_MPLL2] = &gxbb_mpll2.hw, 2955 + [CLKID_DDR] = &gxbb_ddr.hw, 2956 + [CLKID_DOS] = &gxbb_dos.hw, 2957 + [CLKID_ISA] = &gxbb_isa.hw, 2958 + [CLKID_PL301] = &gxbb_pl301.hw, 2959 + [CLKID_PERIPHS] = &gxbb_periphs.hw, 2960 + [CLKID_SPICC] = &gxbb_spicc.hw, 2961 + [CLKID_I2C] = &gxbb_i2c.hw, 2962 + [CLKID_SAR_ADC] = &gxbb_sar_adc.hw, 2963 + [CLKID_SMART_CARD] = &gxbb_smart_card.hw, 2964 + [CLKID_RNG0] = &gxbb_rng0.hw, 2965 + [CLKID_UART0] = &gxbb_uart0.hw, 2966 + [CLKID_SDHC] = &gxbb_sdhc.hw, 2967 + [CLKID_STREAM] = &gxbb_stream.hw, 2968 + [CLKID_ASYNC_FIFO] = &gxbb_async_fifo.hw, 2969 + [CLKID_SDIO] = &gxbb_sdio.hw, 2970 + [CLKID_ABUF] = &gxbb_abuf.hw, 2971 + [CLKID_HIU_IFACE] = &gxbb_hiu_iface.hw, 2972 + [CLKID_ASSIST_MISC] = &gxbb_assist_misc.hw, 2973 + [CLKID_SPI] = &gxbb_spi.hw, 2974 + [CLKID_I2S_SPDIF] = &gxbb_i2s_spdif.hw, 2975 + [CLKID_ETH] = &gxbb_eth.hw, 2976 + [CLKID_DEMUX] = &gxbb_demux.hw, 2977 + [CLKID_AIU_GLUE] = &gxbb_aiu_glue.hw, 2978 + [CLKID_IEC958] = &gxbb_iec958.hw, 2979 + [CLKID_I2S_OUT] = &gxbb_i2s_out.hw, 2980 + [CLKID_AMCLK] = &gxbb_amclk.hw, 2981 + [CLKID_AIFIFO2] = &gxbb_aififo2.hw, 2982 + [CLKID_MIXER] = &gxbb_mixer.hw, 2983 + [CLKID_MIXER_IFACE] = &gxbb_mixer_iface.hw, 2984 + [CLKID_ADC] = &gxbb_adc.hw, 2985 + [CLKID_BLKMV] = &gxbb_blkmv.hw, 2986 + [CLKID_AIU] = &gxbb_aiu.hw, 2987 + [CLKID_UART1] = &gxbb_uart1.hw, 2988 + [CLKID_G2D] = &gxbb_g2d.hw, 2989 + [CLKID_USB0] = &gxbb_usb0.hw, 2990 + [CLKID_USB1] = &gxbb_usb1.hw, 2991 + [CLKID_RESET] = &gxbb_reset.hw, 2992 + [CLKID_NAND] = &gxbb_nand.hw, 2993 + [CLKID_DOS_PARSER] = &gxbb_dos_parser.hw, 2994 + [CLKID_USB] = &gxbb_usb.hw, 2995 + [CLKID_VDIN1] = &gxbb_vdin1.hw, 2996 + [CLKID_AHB_ARB0] = &gxbb_ahb_arb0.hw, 2997 + [CLKID_EFUSE] = &gxbb_efuse.hw, 2998 + [CLKID_BOOT_ROM] = &gxbb_boot_rom.hw, 2999 + [CLKID_AHB_DATA_BUS] = &gxbb_ahb_data_bus.hw, 3000 + [CLKID_AHB_CTRL_BUS] = &gxbb_ahb_ctrl_bus.hw, 3001 + [CLKID_HDMI_INTR_SYNC] = &gxbb_hdmi_intr_sync.hw, 3002 + [CLKID_HDMI_PCLK] = &gxbb_hdmi_pclk.hw, 3003 + [CLKID_USB1_DDR_BRIDGE] = &gxbb_usb1_ddr_bridge.hw, 3004 + [CLKID_USB0_DDR_BRIDGE] = &gxbb_usb0_ddr_bridge.hw, 3005 + [CLKID_MMC_PCLK] = &gxbb_mmc_pclk.hw, 3006 + [CLKID_DVIN] = &gxbb_dvin.hw, 3007 + [CLKID_UART2] = &gxbb_uart2.hw, 3008 + [CLKID_SANA] = &gxbb_sana.hw, 3009 + [CLKID_VPU_INTR] = &gxbb_vpu_intr.hw, 3010 + [CLKID_SEC_AHB_AHB3_BRIDGE] = &gxbb_sec_ahb_ahb3_bridge.hw, 3011 + [CLKID_CLK81_A53] = &gxbb_clk81_a53.hw, 3012 + [CLKID_VCLK2_VENCI0] = &gxbb_vclk2_venci0.hw, 3013 + [CLKID_VCLK2_VENCI1] = &gxbb_vclk2_venci1.hw, 3014 + [CLKID_VCLK2_VENCP0] = &gxbb_vclk2_vencp0.hw, 3015 + [CLKID_VCLK2_VENCP1] = &gxbb_vclk2_vencp1.hw, 3016 + [CLKID_GCLK_VENCI_INT0] = &gxbb_gclk_venci_int0.hw, 3017 + [CLKID_GCLK_VENCI_INT] = &gxbb_gclk_vencp_int.hw, 3018 + [CLKID_DAC_CLK] = &gxbb_dac_clk.hw, 3019 + [CLKID_AOCLK_GATE] = &gxbb_aoclk_gate.hw, 3020 + [CLKID_IEC958_GATE] = &gxbb_iec958_gate.hw, 3021 + [CLKID_ENC480P] = &gxbb_enc480p.hw, 3022 + [CLKID_RNG1] = &gxbb_rng1.hw, 3023 + [CLKID_GCLK_VENCI_INT1] = &gxbb_gclk_venci_int1.hw, 3024 + [CLKID_VCLK2_VENCLMCC] = &gxbb_vclk2_venclmcc.hw, 3025 + [CLKID_VCLK2_VENCL] = &gxbb_vclk2_vencl.hw, 3026 + [CLKID_VCLK_OTHER] = &gxbb_vclk_other.hw, 3027 + [CLKID_EDP] = &gxbb_edp.hw, 3028 + [CLKID_AO_MEDIA_CPU] = &gxbb_ao_media_cpu.hw, 3029 + [CLKID_AO_AHB_SRAM] = &gxbb_ao_ahb_sram.hw, 3030 + [CLKID_AO_AHB_BUS] = &gxbb_ao_ahb_bus.hw, 3031 + [CLKID_AO_IFACE] = &gxbb_ao_iface.hw, 3032 + [CLKID_AO_I2C] = &gxbb_ao_i2c.hw, 3033 + [CLKID_SD_EMMC_A] = &gxbb_emmc_a.hw, 3034 + [CLKID_SD_EMMC_B] = &gxbb_emmc_b.hw, 3035 + [CLKID_SD_EMMC_C] = &gxbb_emmc_c.hw, 3036 + [CLKID_SAR_ADC_CLK] = &gxbb_sar_adc_clk.hw, 3037 + [CLKID_SAR_ADC_SEL] = &gxbb_sar_adc_clk_sel.hw, 3038 + [CLKID_SAR_ADC_DIV] = &gxbb_sar_adc_clk_div.hw, 3039 + [CLKID_MALI_0_SEL] = &gxbb_mali_0_sel.hw, 3040 + [CLKID_MALI_0_DIV] = &gxbb_mali_0_div.hw, 3041 + [CLKID_MALI_0] = &gxbb_mali_0.hw, 3042 + [CLKID_MALI_1_SEL] = &gxbb_mali_1_sel.hw, 3043 + [CLKID_MALI_1_DIV] = &gxbb_mali_1_div.hw, 3044 + [CLKID_MALI_1] = &gxbb_mali_1.hw, 3045 + [CLKID_MALI] = &gxbb_mali.hw, 3046 + [CLKID_CTS_AMCLK] = &gxbb_cts_amclk.hw, 3047 + [CLKID_CTS_AMCLK_SEL] = &gxbb_cts_amclk_sel.hw, 3048 + [CLKID_CTS_AMCLK_DIV] = &gxbb_cts_amclk_div.hw, 3049 + [CLKID_CTS_MCLK_I958] = &gxbb_cts_mclk_i958.hw, 3050 + [CLKID_CTS_MCLK_I958_SEL] = &gxbb_cts_mclk_i958_sel.hw, 3051 + [CLKID_CTS_MCLK_I958_DIV] = &gxbb_cts_mclk_i958_div.hw, 3052 + [CLKID_CTS_I958] = &gxbb_cts_i958.hw, 3053 + [CLKID_32K_CLK] = &gxbb_32k_clk.hw, 3054 + [CLKID_32K_CLK_SEL] = &gxbb_32k_clk_sel.hw, 3055 + [CLKID_32K_CLK_DIV] = &gxbb_32k_clk_div.hw, 3056 + [CLKID_SD_EMMC_A_CLK0_SEL] = &gxbb_sd_emmc_a_clk0_sel.hw, 3057 + [CLKID_SD_EMMC_A_CLK0_DIV] = &gxbb_sd_emmc_a_clk0_div.hw, 3058 + [CLKID_SD_EMMC_A_CLK0] = &gxbb_sd_emmc_a_clk0.hw, 3059 + [CLKID_SD_EMMC_B_CLK0_SEL] = &gxbb_sd_emmc_b_clk0_sel.hw, 3060 + [CLKID_SD_EMMC_B_CLK0_DIV] = &gxbb_sd_emmc_b_clk0_div.hw, 3061 + [CLKID_SD_EMMC_B_CLK0] = &gxbb_sd_emmc_b_clk0.hw, 3062 + [CLKID_SD_EMMC_C_CLK0_SEL] = &gxbb_sd_emmc_c_clk0_sel.hw, 3063 + [CLKID_SD_EMMC_C_CLK0_DIV] = &gxbb_sd_emmc_c_clk0_div.hw, 3064 + [CLKID_SD_EMMC_C_CLK0] = &gxbb_sd_emmc_c_clk0.hw, 3065 + [CLKID_VPU_0_SEL] = &gxbb_vpu_0_sel.hw, 3066 + [CLKID_VPU_0_DIV] = &gxbb_vpu_0_div.hw, 3067 + [CLKID_VPU_0] = &gxbb_vpu_0.hw, 3068 + [CLKID_VPU_1_SEL] = &gxbb_vpu_1_sel.hw, 3069 + [CLKID_VPU_1_DIV] = &gxbb_vpu_1_div.hw, 3070 + [CLKID_VPU_1] = &gxbb_vpu_1.hw, 3071 + [CLKID_VPU] = &gxbb_vpu.hw, 3072 + [CLKID_VAPB_0_SEL] = &gxbb_vapb_0_sel.hw, 3073 + [CLKID_VAPB_0_DIV] = &gxbb_vapb_0_div.hw, 3074 + [CLKID_VAPB_0] = &gxbb_vapb_0.hw, 3075 + [CLKID_VAPB_1_SEL] = &gxbb_vapb_1_sel.hw, 3076 + [CLKID_VAPB_1_DIV] = &gxbb_vapb_1_div.hw, 3077 + [CLKID_VAPB_1] = &gxbb_vapb_1.hw, 3078 + [CLKID_VAPB_SEL] = &gxbb_vapb_sel.hw, 3079 + [CLKID_VAPB] = &gxbb_vapb.hw, 3080 + [CLKID_MPLL0_DIV] = &gxl_mpll0_div.hw, 3081 + [CLKID_MPLL1_DIV] = &gxbb_mpll1_div.hw, 3082 + [CLKID_MPLL2_DIV] = &gxbb_mpll2_div.hw, 3083 + [CLKID_MPLL_PREDIV] = &gxbb_mpll_prediv.hw, 3084 + [CLKID_FCLK_DIV2_DIV] = &gxbb_fclk_div2_div.hw, 3085 + [CLKID_FCLK_DIV3_DIV] = &gxbb_fclk_div3_div.hw, 3086 + [CLKID_FCLK_DIV4_DIV] = &gxbb_fclk_div4_div.hw, 3087 + [CLKID_FCLK_DIV5_DIV] = &gxbb_fclk_div5_div.hw, 3088 + [CLKID_FCLK_DIV7_DIV] = &gxbb_fclk_div7_div.hw, 3089 + [CLKID_VDEC_1_SEL] = &gxbb_vdec_1_sel.hw, 3090 + [CLKID_VDEC_1_DIV] = &gxbb_vdec_1_div.hw, 3091 + [CLKID_VDEC_1] = &gxbb_vdec_1.hw, 3092 + [CLKID_VDEC_HEVC_SEL] = &gxbb_vdec_hevc_sel.hw, 3093 + [CLKID_VDEC_HEVC_DIV] = &gxbb_vdec_hevc_div.hw, 3094 + [CLKID_VDEC_HEVC] = &gxbb_vdec_hevc.hw, 3095 + [CLKID_GEN_CLK_SEL] = &gxbb_gen_clk_sel.hw, 3096 + [CLKID_GEN_CLK_DIV] = &gxbb_gen_clk_div.hw, 3097 + [CLKID_GEN_CLK] = &gxbb_gen_clk.hw, 3098 + [CLKID_FIXED_PLL_DCO] = &gxbb_fixed_pll_dco.hw, 3099 + [CLKID_HDMI_PLL_DCO] = &gxl_hdmi_pll_dco.hw, 3100 + [CLKID_HDMI_PLL_OD] = &gxl_hdmi_pll_od.hw, 3101 + [CLKID_HDMI_PLL_OD2] = &gxl_hdmi_pll_od2.hw, 3102 + [CLKID_SYS_PLL_DCO] = &gxbb_sys_pll_dco.hw, 3103 + [CLKID_GP0_PLL_DCO] = &gxl_gp0_pll_dco.hw, 3104 + [CLKID_VID_PLL_DIV] = &gxbb_vid_pll_div.hw, 3105 + [CLKID_VID_PLL_SEL] = &gxbb_vid_pll_sel.hw, 3106 + [CLKID_VID_PLL] = &gxbb_vid_pll.hw, 3107 + [CLKID_VCLK_SEL] = &gxbb_vclk_sel.hw, 3108 + [CLKID_VCLK2_SEL] = &gxbb_vclk2_sel.hw, 3109 + [CLKID_VCLK_INPUT] = &gxbb_vclk_input.hw, 3110 + [CLKID_VCLK2_INPUT] = &gxbb_vclk2_input.hw, 3111 + [CLKID_VCLK_DIV] = &gxbb_vclk_div.hw, 3112 + [CLKID_VCLK2_DIV] = &gxbb_vclk2_div.hw, 3113 + [CLKID_VCLK] = &gxbb_vclk.hw, 3114 + [CLKID_VCLK2] = &gxbb_vclk2.hw, 3115 + [CLKID_VCLK_DIV1] = &gxbb_vclk_div1.hw, 3116 + [CLKID_VCLK_DIV2_EN] = &gxbb_vclk_div2_en.hw, 3117 + [CLKID_VCLK_DIV2] = &gxbb_vclk_div2.hw, 3118 + [CLKID_VCLK_DIV4_EN] = &gxbb_vclk_div4_en.hw, 3119 + [CLKID_VCLK_DIV4] = &gxbb_vclk_div4.hw, 3120 + [CLKID_VCLK_DIV6_EN] = &gxbb_vclk_div6_en.hw, 3121 + [CLKID_VCLK_DIV6] = &gxbb_vclk_div6.hw, 3122 + [CLKID_VCLK_DIV12_EN] = &gxbb_vclk_div12_en.hw, 3123 + [CLKID_VCLK_DIV12] = &gxbb_vclk_div12.hw, 3124 + [CLKID_VCLK2_DIV1] = &gxbb_vclk2_div1.hw, 3125 + [CLKID_VCLK2_DIV2_EN] = &gxbb_vclk2_div2_en.hw, 3126 + [CLKID_VCLK2_DIV2] = &gxbb_vclk2_div2.hw, 3127 + [CLKID_VCLK2_DIV4_EN] = &gxbb_vclk2_div4_en.hw, 3128 + [CLKID_VCLK2_DIV4] = &gxbb_vclk2_div4.hw, 3129 + [CLKID_VCLK2_DIV6_EN] = &gxbb_vclk2_div6_en.hw, 3130 + [CLKID_VCLK2_DIV6] = &gxbb_vclk2_div6.hw, 3131 + [CLKID_VCLK2_DIV12_EN] = &gxbb_vclk2_div12_en.hw, 3132 + [CLKID_VCLK2_DIV12] = &gxbb_vclk2_div12.hw, 3133 + [CLKID_CTS_ENCI_SEL] = &gxbb_cts_enci_sel.hw, 3134 + [CLKID_CTS_ENCP_SEL] = &gxbb_cts_encp_sel.hw, 3135 + [CLKID_CTS_VDAC_SEL] = &gxbb_cts_vdac_sel.hw, 3136 + [CLKID_HDMI_TX_SEL] = &gxbb_hdmi_tx_sel.hw, 3137 + [CLKID_CTS_ENCI] = &gxbb_cts_enci.hw, 3138 + [CLKID_CTS_ENCP] = &gxbb_cts_encp.hw, 3139 + [CLKID_CTS_VDAC] = &gxbb_cts_vdac.hw, 3140 + [CLKID_HDMI_TX] = &gxbb_hdmi_tx.hw, 3141 + [CLKID_HDMI_SEL] = &gxbb_hdmi_sel.hw, 3142 + [CLKID_HDMI_DIV] = &gxbb_hdmi_div.hw, 3143 + [CLKID_HDMI] = &gxbb_hdmi.hw, 3144 + [CLKID_ACODEC] = &gxl_acodec.hw, 3155 3145 }; 3156 3146 3157 3147 static struct clk_regmap *const gxbb_clk_regmaps[] = { ··· 3538 3544 static const struct meson_eeclkc_data gxbb_clkc_data = { 3539 3545 .regmap_clks = gxbb_clk_regmaps, 3540 3546 .regmap_clk_num = ARRAY_SIZE(gxbb_clk_regmaps), 3541 - .hw_onecell_data = &gxbb_hw_onecell_data, 3547 + .hw_clks = { 3548 + .hws = gxbb_hw_clks, 3549 + .num = ARRAY_SIZE(gxbb_hw_clks), 3550 + }, 3542 3551 }; 3543 3552 3544 3553 static const struct meson_eeclkc_data gxl_clkc_data = { 3545 3554 .regmap_clks = gxl_clk_regmaps, 3546 3555 .regmap_clk_num = ARRAY_SIZE(gxl_clk_regmaps), 3547 - .hw_onecell_data = &gxl_hw_onecell_data, 3556 + .hw_clks = { 3557 + .hws = gxl_hw_clks, 3558 + .num = ARRAY_SIZE(gxl_hw_clks), 3559 + }, 3548 3560 }; 3549 3561 3550 3562 static const struct of_device_id clkc_match_table[] = {
-81
drivers/clk/meson/gxbb.h
··· 112 112 #define HHI_BT656_CLK_CNTL 0x3D4 /* 0xf5 offset in data sheet */ 113 113 #define HHI_SAR_CLK_CNTL 0x3D8 /* 0xf6 offset in data sheet */ 114 114 115 - /* 116 - * CLKID index values 117 - * 118 - * These indices are entirely contrived and do not map onto the hardware. 119 - * It has now been decided to expose everything by default in the DT header: 120 - * include/dt-bindings/clock/gxbb-clkc.h. Only the clocks ids we don't want 121 - * to expose, such as the internal muxes and dividers of composite clocks, 122 - * will remain defined here. 123 - */ 124 - /* ID 1 is unused (it was used by the non-existing CLKID_CPUCLK before) */ 125 - #define CLKID_MPEG_SEL 10 126 - #define CLKID_MPEG_DIV 11 127 - #define CLKID_SAR_ADC_DIV 99 128 - #define CLKID_MALI_0_DIV 101 129 - #define CLKID_MALI_1_DIV 104 130 - #define CLKID_CTS_AMCLK_SEL 108 131 - #define CLKID_CTS_AMCLK_DIV 109 132 - #define CLKID_CTS_MCLK_I958_SEL 111 133 - #define CLKID_CTS_MCLK_I958_DIV 112 134 - #define CLKID_32K_CLK_SEL 115 135 - #define CLKID_32K_CLK_DIV 116 136 - #define CLKID_SD_EMMC_A_CLK0_SEL 117 137 - #define CLKID_SD_EMMC_A_CLK0_DIV 118 138 - #define CLKID_SD_EMMC_B_CLK0_SEL 120 139 - #define CLKID_SD_EMMC_B_CLK0_DIV 121 140 - #define CLKID_SD_EMMC_C_CLK0_SEL 123 141 - #define CLKID_SD_EMMC_C_CLK0_DIV 124 142 - #define CLKID_VPU_0_DIV 127 143 - #define CLKID_VPU_1_DIV 130 144 - #define CLKID_VAPB_0_DIV 134 145 - #define CLKID_VAPB_1_DIV 137 146 - #define CLKID_HDMI_PLL_PRE_MULT 141 147 - #define CLKID_MPLL0_DIV 142 148 - #define CLKID_MPLL1_DIV 143 149 - #define CLKID_MPLL2_DIV 144 150 - #define CLKID_MPLL_PREDIV 145 151 - #define CLKID_FCLK_DIV2_DIV 146 152 - #define CLKID_FCLK_DIV3_DIV 147 153 - #define CLKID_FCLK_DIV4_DIV 148 154 - #define CLKID_FCLK_DIV5_DIV 149 155 - #define CLKID_FCLK_DIV7_DIV 150 156 - #define CLKID_VDEC_1_SEL 151 157 - #define CLKID_VDEC_1_DIV 152 158 - #define CLKID_VDEC_HEVC_SEL 154 159 - #define CLKID_VDEC_HEVC_DIV 155 160 - #define CLKID_GEN_CLK_SEL 157 161 - #define CLKID_GEN_CLK_DIV 158 162 - #define CLKID_FIXED_PLL_DCO 160 163 - #define CLKID_HDMI_PLL_DCO 161 164 - #define CLKID_HDMI_PLL_OD 162 165 - #define CLKID_HDMI_PLL_OD2 163 166 - #define CLKID_SYS_PLL_DCO 164 167 - #define CLKID_GP0_PLL_DCO 165 168 - #define CLKID_VID_PLL_SEL 167 169 - #define CLKID_VID_PLL_DIV 168 170 - #define CLKID_VCLK_SEL 169 171 - #define CLKID_VCLK2_SEL 170 172 - #define CLKID_VCLK_INPUT 171 173 - #define CLKID_VCLK2_INPUT 172 174 - #define CLKID_VCLK_DIV 173 175 - #define CLKID_VCLK2_DIV 174 176 - #define CLKID_VCLK_DIV2_EN 177 177 - #define CLKID_VCLK_DIV4_EN 178 178 - #define CLKID_VCLK_DIV6_EN 179 179 - #define CLKID_VCLK_DIV12_EN 180 180 - #define CLKID_VCLK2_DIV2_EN 181 181 - #define CLKID_VCLK2_DIV4_EN 182 182 - #define CLKID_VCLK2_DIV6_EN 183 183 - #define CLKID_VCLK2_DIV12_EN 184 184 - #define CLKID_CTS_ENCI_SEL 195 185 - #define CLKID_CTS_ENCP_SEL 196 186 - #define CLKID_CTS_VDAC_SEL 197 187 - #define CLKID_HDMI_TX_SEL 198 188 - #define CLKID_HDMI_SEL 203 189 - #define CLKID_HDMI_DIV 204 190 - 191 - #define NR_CLKS 207 192 - 193 - /* include the CLKIDs that have been made part of the DT binding */ 194 - #include <dt-bindings/clock/gxbb-clkc.h> 195 - 196 115 #endif /* __GXBB_H */
+4 -5
drivers/clk/meson/meson-aoclk.c
··· 75 75 data->clks[clkid]->map = regmap; 76 76 77 77 /* Register all clks */ 78 - for (clkid = 0; clkid < data->hw_data->num; clkid++) { 79 - if (!data->hw_data->hws[clkid]) 78 + for (clkid = 0; clkid < data->hw_clks.num; clkid++) { 79 + if (!data->hw_clks.hws[clkid]) 80 80 continue; 81 81 82 - ret = devm_clk_hw_register(dev, data->hw_data->hws[clkid]); 82 + ret = devm_clk_hw_register(dev, data->hw_clks.hws[clkid]); 83 83 if (ret) { 84 84 dev_err(dev, "Clock registration failed\n"); 85 85 return ret; 86 86 } 87 87 } 88 88 89 - return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, 90 - (void *) data->hw_data); 89 + return devm_of_clk_add_hw_provider(dev, meson_clk_hw_get, (void *)&data->hw_clks); 91 90 } 92 91 EXPORT_SYMBOL_GPL(meson_aoclkc_probe); 93 92 MODULE_LICENSE("GPL v2");
+2 -1
drivers/clk/meson/meson-aoclk.h
··· 17 17 #include <linux/reset-controller.h> 18 18 19 19 #include "clk-regmap.h" 20 + #include "meson-clkc-utils.h" 20 21 21 22 struct meson_aoclk_data { 22 23 const unsigned int reset_reg; ··· 25 24 const unsigned int *reset; 26 25 const int num_clks; 27 26 struct clk_regmap **clks; 28 - const struct clk_hw_onecell_data *hw_data; 27 + struct meson_clk_hw_data hw_clks; 29 28 }; 30 29 31 30 struct meson_aoclk_reset_controller {
+25
drivers/clk/meson/meson-clkc-utils.c
··· 1 + // SPDX-License-Identifier: GPL-2.0+ 2 + /* 3 + * Copyright (c) 2023 Neil Armstrong <neil.armstrong@linaro.org> 4 + */ 5 + 6 + #include <linux/of_device.h> 7 + #include <linux/clk-provider.h> 8 + #include <linux/module.h> 9 + #include "meson-clkc-utils.h" 10 + 11 + struct clk_hw *meson_clk_hw_get(struct of_phandle_args *clkspec, void *clk_hw_data) 12 + { 13 + const struct meson_clk_hw_data *data = clk_hw_data; 14 + unsigned int idx = clkspec->args[0]; 15 + 16 + if (idx >= data->num) { 17 + pr_err("%s: invalid index %u\n", __func__, idx); 18 + return ERR_PTR(-EINVAL); 19 + } 20 + 21 + return data->hws[idx]; 22 + } 23 + EXPORT_SYMBOL_GPL(meson_clk_hw_get); 24 + 25 + MODULE_LICENSE("GPL");
+19
drivers/clk/meson/meson-clkc-utils.h
··· 1 + /* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */ 2 + /* 3 + * Copyright (c) 2023 Neil Armstrong <neil.armstrong@linaro.org> 4 + */ 5 + 6 + #ifndef __MESON_CLKC_UTILS_H__ 7 + #define __MESON_CLKC_UTILS_H__ 8 + 9 + #include <linux/of_device.h> 10 + #include <linux/clk-provider.h> 11 + 12 + struct meson_clk_hw_data { 13 + struct clk_hw **hws; 14 + unsigned int num; 15 + }; 16 + 17 + struct clk_hw *meson_clk_hw_get(struct of_phandle_args *clkspec, void *clk_hw_data); 18 + 19 + #endif
+4 -5
drivers/clk/meson/meson-eeclk.c
··· 43 43 for (i = 0; i < data->regmap_clk_num; i++) 44 44 data->regmap_clks[i]->map = map; 45 45 46 - for (i = 0; i < data->hw_onecell_data->num; i++) { 46 + for (i = 0; i < data->hw_clks.num; i++) { 47 47 /* array might be sparse */ 48 - if (!data->hw_onecell_data->hws[i]) 48 + if (!data->hw_clks.hws[i]) 49 49 continue; 50 50 51 - ret = devm_clk_hw_register(dev, data->hw_onecell_data->hws[i]); 51 + ret = devm_clk_hw_register(dev, data->hw_clks.hws[i]); 52 52 if (ret) { 53 53 dev_err(dev, "Clock registration failed\n"); 54 54 return ret; 55 55 } 56 56 } 57 57 58 - return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, 59 - data->hw_onecell_data); 58 + return devm_of_clk_add_hw_provider(dev, meson_clk_hw_get, (void *)&data->hw_clks); 60 59 } 61 60 EXPORT_SYMBOL_GPL(meson_eeclkc_probe); 62 61 MODULE_LICENSE("GPL v2");
+2 -1
drivers/clk/meson/meson-eeclk.h
··· 9 9 10 10 #include <linux/clk-provider.h> 11 11 #include "clk-regmap.h" 12 + #include "meson-clkc-utils.h" 12 13 13 14 struct platform_device; 14 15 ··· 18 17 unsigned int regmap_clk_num; 19 18 const struct reg_sequence *init_regs; 20 19 unsigned int init_count; 21 - struct clk_hw_onecell_data *hw_onecell_data; 20 + struct meson_clk_hw_data hw_clks; 22 21 }; 23 22 24 23 int meson_eeclkc_probe(struct platform_device *pdev);
+658 -652
drivers/clk/meson/meson8b.c
··· 18 18 19 19 #include "meson8b.h" 20 20 #include "clk-regmap.h" 21 + #include "meson-clkc-utils.h" 21 22 #include "clk-pll.h" 22 23 #include "clk-mpll.h" 24 + 25 + #include <dt-bindings/clock/meson8b-clkc.h> 26 + #include <dt-bindings/reset/amlogic,meson8b-clkc-reset.h> 23 27 24 28 static DEFINE_SPINLOCK(meson_clk_lock); 25 29 ··· 2776 2772 static MESON_GATE(meson8b_ao_ahb_bus, HHI_GCLK_AO, 2); 2777 2773 static MESON_GATE(meson8b_ao_iface, HHI_GCLK_AO, 3); 2778 2774 2779 - static struct clk_hw_onecell_data meson8_hw_onecell_data = { 2780 - .hws = { 2781 - [CLKID_PLL_FIXED] = &meson8b_fixed_pll.hw, 2782 - [CLKID_PLL_VID] = &meson8b_vid_pll.hw, 2783 - [CLKID_PLL_SYS] = &meson8b_sys_pll.hw, 2784 - [CLKID_FCLK_DIV2] = &meson8b_fclk_div2.hw, 2785 - [CLKID_FCLK_DIV3] = &meson8b_fclk_div3.hw, 2786 - [CLKID_FCLK_DIV4] = &meson8b_fclk_div4.hw, 2787 - [CLKID_FCLK_DIV5] = &meson8b_fclk_div5.hw, 2788 - [CLKID_FCLK_DIV7] = &meson8b_fclk_div7.hw, 2789 - [CLKID_CPUCLK] = &meson8b_cpu_clk.hw, 2790 - [CLKID_MPEG_SEL] = &meson8b_mpeg_clk_sel.hw, 2791 - [CLKID_MPEG_DIV] = &meson8b_mpeg_clk_div.hw, 2792 - [CLKID_CLK81] = &meson8b_clk81.hw, 2793 - [CLKID_DDR] = &meson8b_ddr.hw, 2794 - [CLKID_DOS] = &meson8b_dos.hw, 2795 - [CLKID_ISA] = &meson8b_isa.hw, 2796 - [CLKID_PL301] = &meson8b_pl301.hw, 2797 - [CLKID_PERIPHS] = &meson8b_periphs.hw, 2798 - [CLKID_SPICC] = &meson8b_spicc.hw, 2799 - [CLKID_I2C] = &meson8b_i2c.hw, 2800 - [CLKID_SAR_ADC] = &meson8b_sar_adc.hw, 2801 - [CLKID_SMART_CARD] = &meson8b_smart_card.hw, 2802 - [CLKID_RNG0] = &meson8b_rng0.hw, 2803 - [CLKID_UART0] = &meson8b_uart0.hw, 2804 - [CLKID_SDHC] = &meson8b_sdhc.hw, 2805 - [CLKID_STREAM] = &meson8b_stream.hw, 2806 - [CLKID_ASYNC_FIFO] = &meson8b_async_fifo.hw, 2807 - [CLKID_SDIO] = &meson8b_sdio.hw, 2808 - [CLKID_ABUF] = &meson8b_abuf.hw, 2809 - [CLKID_HIU_IFACE] = &meson8b_hiu_iface.hw, 2810 - [CLKID_ASSIST_MISC] = &meson8b_assist_misc.hw, 2811 - [CLKID_SPI] = &meson8b_spi.hw, 2812 - [CLKID_I2S_SPDIF] = &meson8b_i2s_spdif.hw, 2813 - [CLKID_ETH] = &meson8b_eth.hw, 2814 - [CLKID_DEMUX] = &meson8b_demux.hw, 2815 - [CLKID_AIU_GLUE] = &meson8b_aiu_glue.hw, 2816 - [CLKID_IEC958] = &meson8b_iec958.hw, 2817 - [CLKID_I2S_OUT] = &meson8b_i2s_out.hw, 2818 - [CLKID_AMCLK] = &meson8b_amclk.hw, 2819 - [CLKID_AIFIFO2] = &meson8b_aififo2.hw, 2820 - [CLKID_MIXER] = &meson8b_mixer.hw, 2821 - [CLKID_MIXER_IFACE] = &meson8b_mixer_iface.hw, 2822 - [CLKID_ADC] = &meson8b_adc.hw, 2823 - [CLKID_BLKMV] = &meson8b_blkmv.hw, 2824 - [CLKID_AIU] = &meson8b_aiu.hw, 2825 - [CLKID_UART1] = &meson8b_uart1.hw, 2826 - [CLKID_G2D] = &meson8b_g2d.hw, 2827 - [CLKID_USB0] = &meson8b_usb0.hw, 2828 - [CLKID_USB1] = &meson8b_usb1.hw, 2829 - [CLKID_RESET] = &meson8b_reset.hw, 2830 - [CLKID_NAND] = &meson8b_nand.hw, 2831 - [CLKID_DOS_PARSER] = &meson8b_dos_parser.hw, 2832 - [CLKID_USB] = &meson8b_usb.hw, 2833 - [CLKID_VDIN1] = &meson8b_vdin1.hw, 2834 - [CLKID_AHB_ARB0] = &meson8b_ahb_arb0.hw, 2835 - [CLKID_EFUSE] = &meson8b_efuse.hw, 2836 - [CLKID_BOOT_ROM] = &meson8b_boot_rom.hw, 2837 - [CLKID_AHB_DATA_BUS] = &meson8b_ahb_data_bus.hw, 2838 - [CLKID_AHB_CTRL_BUS] = &meson8b_ahb_ctrl_bus.hw, 2839 - [CLKID_HDMI_INTR_SYNC] = &meson8b_hdmi_intr_sync.hw, 2840 - [CLKID_HDMI_PCLK] = &meson8b_hdmi_pclk.hw, 2841 - [CLKID_USB1_DDR_BRIDGE] = &meson8b_usb1_ddr_bridge.hw, 2842 - [CLKID_USB0_DDR_BRIDGE] = &meson8b_usb0_ddr_bridge.hw, 2843 - [CLKID_MMC_PCLK] = &meson8b_mmc_pclk.hw, 2844 - [CLKID_DVIN] = &meson8b_dvin.hw, 2845 - [CLKID_UART2] = &meson8b_uart2.hw, 2846 - [CLKID_SANA] = &meson8b_sana.hw, 2847 - [CLKID_VPU_INTR] = &meson8b_vpu_intr.hw, 2848 - [CLKID_SEC_AHB_AHB3_BRIDGE] = &meson8b_sec_ahb_ahb3_bridge.hw, 2849 - [CLKID_CLK81_A9] = &meson8b_clk81_a9.hw, 2850 - [CLKID_VCLK2_VENCI0] = &meson8b_vclk2_venci0.hw, 2851 - [CLKID_VCLK2_VENCI1] = &meson8b_vclk2_venci1.hw, 2852 - [CLKID_VCLK2_VENCP0] = &meson8b_vclk2_vencp0.hw, 2853 - [CLKID_VCLK2_VENCP1] = &meson8b_vclk2_vencp1.hw, 2854 - [CLKID_GCLK_VENCI_INT] = &meson8b_gclk_venci_int.hw, 2855 - [CLKID_GCLK_VENCP_INT] = &meson8b_gclk_vencp_int.hw, 2856 - [CLKID_DAC_CLK] = &meson8b_dac_clk.hw, 2857 - [CLKID_AOCLK_GATE] = &meson8b_aoclk_gate.hw, 2858 - [CLKID_IEC958_GATE] = &meson8b_iec958_gate.hw, 2859 - [CLKID_ENC480P] = &meson8b_enc480p.hw, 2860 - [CLKID_RNG1] = &meson8b_rng1.hw, 2861 - [CLKID_GCLK_VENCL_INT] = &meson8b_gclk_vencl_int.hw, 2862 - [CLKID_VCLK2_VENCLMCC] = &meson8b_vclk2_venclmcc.hw, 2863 - [CLKID_VCLK2_VENCL] = &meson8b_vclk2_vencl.hw, 2864 - [CLKID_VCLK2_OTHER] = &meson8b_vclk2_other.hw, 2865 - [CLKID_EDP] = &meson8b_edp.hw, 2866 - [CLKID_AO_MEDIA_CPU] = &meson8b_ao_media_cpu.hw, 2867 - [CLKID_AO_AHB_SRAM] = &meson8b_ao_ahb_sram.hw, 2868 - [CLKID_AO_AHB_BUS] = &meson8b_ao_ahb_bus.hw, 2869 - [CLKID_AO_IFACE] = &meson8b_ao_iface.hw, 2870 - [CLKID_MPLL0] = &meson8b_mpll0.hw, 2871 - [CLKID_MPLL1] = &meson8b_mpll1.hw, 2872 - [CLKID_MPLL2] = &meson8b_mpll2.hw, 2873 - [CLKID_MPLL0_DIV] = &meson8b_mpll0_div.hw, 2874 - [CLKID_MPLL1_DIV] = &meson8b_mpll1_div.hw, 2875 - [CLKID_MPLL2_DIV] = &meson8b_mpll2_div.hw, 2876 - [CLKID_CPU_IN_SEL] = &meson8b_cpu_in_sel.hw, 2877 - [CLKID_CPU_IN_DIV2] = &meson8b_cpu_in_div2.hw, 2878 - [CLKID_CPU_IN_DIV3] = &meson8b_cpu_in_div3.hw, 2879 - [CLKID_CPU_SCALE_DIV] = &meson8b_cpu_scale_div.hw, 2880 - [CLKID_CPU_SCALE_OUT_SEL] = &meson8b_cpu_scale_out_sel.hw, 2881 - [CLKID_MPLL_PREDIV] = &meson8b_mpll_prediv.hw, 2882 - [CLKID_FCLK_DIV2_DIV] = &meson8b_fclk_div2_div.hw, 2883 - [CLKID_FCLK_DIV3_DIV] = &meson8b_fclk_div3_div.hw, 2884 - [CLKID_FCLK_DIV4_DIV] = &meson8b_fclk_div4_div.hw, 2885 - [CLKID_FCLK_DIV5_DIV] = &meson8b_fclk_div5_div.hw, 2886 - [CLKID_FCLK_DIV7_DIV] = &meson8b_fclk_div7_div.hw, 2887 - [CLKID_NAND_SEL] = &meson8b_nand_clk_sel.hw, 2888 - [CLKID_NAND_DIV] = &meson8b_nand_clk_div.hw, 2889 - [CLKID_NAND_CLK] = &meson8b_nand_clk_gate.hw, 2890 - [CLKID_PLL_FIXED_DCO] = &meson8b_fixed_pll_dco.hw, 2891 - [CLKID_HDMI_PLL_DCO] = &meson8b_hdmi_pll_dco.hw, 2892 - [CLKID_PLL_SYS_DCO] = &meson8b_sys_pll_dco.hw, 2893 - [CLKID_CPU_CLK_DIV2] = &meson8b_cpu_clk_div2.hw, 2894 - [CLKID_CPU_CLK_DIV3] = &meson8b_cpu_clk_div3.hw, 2895 - [CLKID_CPU_CLK_DIV4] = &meson8b_cpu_clk_div4.hw, 2896 - [CLKID_CPU_CLK_DIV5] = &meson8b_cpu_clk_div5.hw, 2897 - [CLKID_CPU_CLK_DIV6] = &meson8b_cpu_clk_div6.hw, 2898 - [CLKID_CPU_CLK_DIV7] = &meson8b_cpu_clk_div7.hw, 2899 - [CLKID_CPU_CLK_DIV8] = &meson8b_cpu_clk_div8.hw, 2900 - [CLKID_APB_SEL] = &meson8b_apb_clk_sel.hw, 2901 - [CLKID_APB] = &meson8b_apb_clk_gate.hw, 2902 - [CLKID_PERIPH_SEL] = &meson8b_periph_clk_sel.hw, 2903 - [CLKID_PERIPH] = &meson8b_periph_clk_gate.hw, 2904 - [CLKID_AXI_SEL] = &meson8b_axi_clk_sel.hw, 2905 - [CLKID_AXI] = &meson8b_axi_clk_gate.hw, 2906 - [CLKID_L2_DRAM_SEL] = &meson8b_l2_dram_clk_sel.hw, 2907 - [CLKID_L2_DRAM] = &meson8b_l2_dram_clk_gate.hw, 2908 - [CLKID_HDMI_PLL_LVDS_OUT] = &meson8b_hdmi_pll_lvds_out.hw, 2909 - [CLKID_HDMI_PLL_HDMI_OUT] = &meson8b_hdmi_pll_hdmi_out.hw, 2910 - [CLKID_VID_PLL_IN_SEL] = &meson8b_vid_pll_in_sel.hw, 2911 - [CLKID_VID_PLL_IN_EN] = &meson8b_vid_pll_in_en.hw, 2912 - [CLKID_VID_PLL_PRE_DIV] = &meson8b_vid_pll_pre_div.hw, 2913 - [CLKID_VID_PLL_POST_DIV] = &meson8b_vid_pll_post_div.hw, 2914 - [CLKID_VID_PLL_FINAL_DIV] = &meson8b_vid_pll_final_div.hw, 2915 - [CLKID_VCLK_IN_SEL] = &meson8b_vclk_in_sel.hw, 2916 - [CLKID_VCLK_IN_EN] = &meson8b_vclk_in_en.hw, 2917 - [CLKID_VCLK_EN] = &meson8b_vclk_en.hw, 2918 - [CLKID_VCLK_DIV1] = &meson8b_vclk_div1_gate.hw, 2919 - [CLKID_VCLK_DIV2_DIV] = &meson8b_vclk_div2_div.hw, 2920 - [CLKID_VCLK_DIV2] = &meson8b_vclk_div2_div_gate.hw, 2921 - [CLKID_VCLK_DIV4_DIV] = &meson8b_vclk_div4_div.hw, 2922 - [CLKID_VCLK_DIV4] = &meson8b_vclk_div4_div_gate.hw, 2923 - [CLKID_VCLK_DIV6_DIV] = &meson8b_vclk_div6_div.hw, 2924 - [CLKID_VCLK_DIV6] = &meson8b_vclk_div6_div_gate.hw, 2925 - [CLKID_VCLK_DIV12_DIV] = &meson8b_vclk_div12_div.hw, 2926 - [CLKID_VCLK_DIV12] = &meson8b_vclk_div12_div_gate.hw, 2927 - [CLKID_VCLK2_IN_SEL] = &meson8b_vclk2_in_sel.hw, 2928 - [CLKID_VCLK2_IN_EN] = &meson8b_vclk2_clk_in_en.hw, 2929 - [CLKID_VCLK2_EN] = &meson8b_vclk2_clk_en.hw, 2930 - [CLKID_VCLK2_DIV1] = &meson8b_vclk2_div1_gate.hw, 2931 - [CLKID_VCLK2_DIV2_DIV] = &meson8b_vclk2_div2_div.hw, 2932 - [CLKID_VCLK2_DIV2] = &meson8b_vclk2_div2_div_gate.hw, 2933 - [CLKID_VCLK2_DIV4_DIV] = &meson8b_vclk2_div4_div.hw, 2934 - [CLKID_VCLK2_DIV4] = &meson8b_vclk2_div4_div_gate.hw, 2935 - [CLKID_VCLK2_DIV6_DIV] = &meson8b_vclk2_div6_div.hw, 2936 - [CLKID_VCLK2_DIV6] = &meson8b_vclk2_div6_div_gate.hw, 2937 - [CLKID_VCLK2_DIV12_DIV] = &meson8b_vclk2_div12_div.hw, 2938 - [CLKID_VCLK2_DIV12] = &meson8b_vclk2_div12_div_gate.hw, 2939 - [CLKID_CTS_ENCT_SEL] = &meson8b_cts_enct_sel.hw, 2940 - [CLKID_CTS_ENCT] = &meson8b_cts_enct.hw, 2941 - [CLKID_CTS_ENCP_SEL] = &meson8b_cts_encp_sel.hw, 2942 - [CLKID_CTS_ENCP] = &meson8b_cts_encp.hw, 2943 - [CLKID_CTS_ENCI_SEL] = &meson8b_cts_enci_sel.hw, 2944 - [CLKID_CTS_ENCI] = &meson8b_cts_enci.hw, 2945 - [CLKID_HDMI_TX_PIXEL_SEL] = &meson8b_hdmi_tx_pixel_sel.hw, 2946 - [CLKID_HDMI_TX_PIXEL] = &meson8b_hdmi_tx_pixel.hw, 2947 - [CLKID_CTS_ENCL_SEL] = &meson8b_cts_encl_sel.hw, 2948 - [CLKID_CTS_ENCL] = &meson8b_cts_encl.hw, 2949 - [CLKID_CTS_VDAC0_SEL] = &meson8b_cts_vdac0_sel.hw, 2950 - [CLKID_CTS_VDAC0] = &meson8b_cts_vdac0.hw, 2951 - [CLKID_HDMI_SYS_SEL] = &meson8b_hdmi_sys_sel.hw, 2952 - [CLKID_HDMI_SYS_DIV] = &meson8b_hdmi_sys_div.hw, 2953 - [CLKID_HDMI_SYS] = &meson8b_hdmi_sys.hw, 2954 - [CLKID_MALI_0_SEL] = &meson8b_mali_0_sel.hw, 2955 - [CLKID_MALI_0_DIV] = &meson8b_mali_0_div.hw, 2956 - [CLKID_MALI] = &meson8b_mali_0.hw, 2957 - [CLKID_VPU_0_SEL] = &meson8b_vpu_0_sel.hw, 2958 - [CLKID_VPU_0_DIV] = &meson8b_vpu_0_div.hw, 2959 - [CLKID_VPU] = &meson8b_vpu_0.hw, 2960 - [CLKID_VDEC_1_SEL] = &meson8b_vdec_1_sel.hw, 2961 - [CLKID_VDEC_1_1_DIV] = &meson8b_vdec_1_1_div.hw, 2962 - [CLKID_VDEC_1] = &meson8b_vdec_1_1.hw, 2963 - [CLKID_VDEC_HCODEC_SEL] = &meson8b_vdec_hcodec_sel.hw, 2964 - [CLKID_VDEC_HCODEC_DIV] = &meson8b_vdec_hcodec_div.hw, 2965 - [CLKID_VDEC_HCODEC] = &meson8b_vdec_hcodec.hw, 2966 - [CLKID_VDEC_2_SEL] = &meson8b_vdec_2_sel.hw, 2967 - [CLKID_VDEC_2_DIV] = &meson8b_vdec_2_div.hw, 2968 - [CLKID_VDEC_2] = &meson8b_vdec_2.hw, 2969 - [CLKID_VDEC_HEVC_SEL] = &meson8b_vdec_hevc_sel.hw, 2970 - [CLKID_VDEC_HEVC_DIV] = &meson8b_vdec_hevc_div.hw, 2971 - [CLKID_VDEC_HEVC_EN] = &meson8b_vdec_hevc_en.hw, 2972 - [CLKID_VDEC_HEVC] = &meson8b_vdec_hevc.hw, 2973 - [CLKID_CTS_AMCLK_SEL] = &meson8b_cts_amclk_sel.hw, 2974 - [CLKID_CTS_AMCLK_DIV] = &meson8b_cts_amclk_div.hw, 2975 - [CLKID_CTS_AMCLK] = &meson8b_cts_amclk.hw, 2976 - [CLKID_CTS_MCLK_I958_SEL] = &meson8b_cts_mclk_i958_sel.hw, 2977 - [CLKID_CTS_MCLK_I958_DIV] = &meson8b_cts_mclk_i958_div.hw, 2978 - [CLKID_CTS_MCLK_I958] = &meson8b_cts_mclk_i958.hw, 2979 - [CLKID_CTS_I958] = &meson8b_cts_i958.hw, 2980 - [CLKID_VID_PLL_LVDS_EN] = &meson8b_vid_pll_lvds_en.hw, 2981 - [CLKID_HDMI_PLL_DCO_IN] = &hdmi_pll_dco_in.hw, 2982 - [CLK_NR_CLKS] = NULL, 2983 - }, 2984 - .num = CLK_NR_CLKS, 2775 + static struct clk_hw *meson8_hw_clks[] = { 2776 + [CLKID_PLL_FIXED] = &meson8b_fixed_pll.hw, 2777 + [CLKID_PLL_VID] = &meson8b_vid_pll.hw, 2778 + [CLKID_PLL_SYS] = &meson8b_sys_pll.hw, 2779 + [CLKID_FCLK_DIV2] = &meson8b_fclk_div2.hw, 2780 + [CLKID_FCLK_DIV3] = &meson8b_fclk_div3.hw, 2781 + [CLKID_FCLK_DIV4] = &meson8b_fclk_div4.hw, 2782 + [CLKID_FCLK_DIV5] = &meson8b_fclk_div5.hw, 2783 + [CLKID_FCLK_DIV7] = &meson8b_fclk_div7.hw, 2784 + [CLKID_CPUCLK] = &meson8b_cpu_clk.hw, 2785 + [CLKID_MPEG_SEL] = &meson8b_mpeg_clk_sel.hw, 2786 + [CLKID_MPEG_DIV] = &meson8b_mpeg_clk_div.hw, 2787 + [CLKID_CLK81] = &meson8b_clk81.hw, 2788 + [CLKID_DDR] = &meson8b_ddr.hw, 2789 + [CLKID_DOS] = &meson8b_dos.hw, 2790 + [CLKID_ISA] = &meson8b_isa.hw, 2791 + [CLKID_PL301] = &meson8b_pl301.hw, 2792 + [CLKID_PERIPHS] = &meson8b_periphs.hw, 2793 + [CLKID_SPICC] = &meson8b_spicc.hw, 2794 + [CLKID_I2C] = &meson8b_i2c.hw, 2795 + [CLKID_SAR_ADC] = &meson8b_sar_adc.hw, 2796 + [CLKID_SMART_CARD] = &meson8b_smart_card.hw, 2797 + [CLKID_RNG0] = &meson8b_rng0.hw, 2798 + [CLKID_UART0] = &meson8b_uart0.hw, 2799 + [CLKID_SDHC] = &meson8b_sdhc.hw, 2800 + [CLKID_STREAM] = &meson8b_stream.hw, 2801 + [CLKID_ASYNC_FIFO] = &meson8b_async_fifo.hw, 2802 + [CLKID_SDIO] = &meson8b_sdio.hw, 2803 + [CLKID_ABUF] = &meson8b_abuf.hw, 2804 + [CLKID_HIU_IFACE] = &meson8b_hiu_iface.hw, 2805 + [CLKID_ASSIST_MISC] = &meson8b_assist_misc.hw, 2806 + [CLKID_SPI] = &meson8b_spi.hw, 2807 + [CLKID_I2S_SPDIF] = &meson8b_i2s_spdif.hw, 2808 + [CLKID_ETH] = &meson8b_eth.hw, 2809 + [CLKID_DEMUX] = &meson8b_demux.hw, 2810 + [CLKID_AIU_GLUE] = &meson8b_aiu_glue.hw, 2811 + [CLKID_IEC958] = &meson8b_iec958.hw, 2812 + [CLKID_I2S_OUT] = &meson8b_i2s_out.hw, 2813 + [CLKID_AMCLK] = &meson8b_amclk.hw, 2814 + [CLKID_AIFIFO2] = &meson8b_aififo2.hw, 2815 + [CLKID_MIXER] = &meson8b_mixer.hw, 2816 + [CLKID_MIXER_IFACE] = &meson8b_mixer_iface.hw, 2817 + [CLKID_ADC] = &meson8b_adc.hw, 2818 + [CLKID_BLKMV] = &meson8b_blkmv.hw, 2819 + [CLKID_AIU] = &meson8b_aiu.hw, 2820 + [CLKID_UART1] = &meson8b_uart1.hw, 2821 + [CLKID_G2D] = &meson8b_g2d.hw, 2822 + [CLKID_USB0] = &meson8b_usb0.hw, 2823 + [CLKID_USB1] = &meson8b_usb1.hw, 2824 + [CLKID_RESET] = &meson8b_reset.hw, 2825 + [CLKID_NAND] = &meson8b_nand.hw, 2826 + [CLKID_DOS_PARSER] = &meson8b_dos_parser.hw, 2827 + [CLKID_USB] = &meson8b_usb.hw, 2828 + [CLKID_VDIN1] = &meson8b_vdin1.hw, 2829 + [CLKID_AHB_ARB0] = &meson8b_ahb_arb0.hw, 2830 + [CLKID_EFUSE] = &meson8b_efuse.hw, 2831 + [CLKID_BOOT_ROM] = &meson8b_boot_rom.hw, 2832 + [CLKID_AHB_DATA_BUS] = &meson8b_ahb_data_bus.hw, 2833 + [CLKID_AHB_CTRL_BUS] = &meson8b_ahb_ctrl_bus.hw, 2834 + [CLKID_HDMI_INTR_SYNC] = &meson8b_hdmi_intr_sync.hw, 2835 + [CLKID_HDMI_PCLK] = &meson8b_hdmi_pclk.hw, 2836 + [CLKID_USB1_DDR_BRIDGE] = &meson8b_usb1_ddr_bridge.hw, 2837 + [CLKID_USB0_DDR_BRIDGE] = &meson8b_usb0_ddr_bridge.hw, 2838 + [CLKID_MMC_PCLK] = &meson8b_mmc_pclk.hw, 2839 + [CLKID_DVIN] = &meson8b_dvin.hw, 2840 + [CLKID_UART2] = &meson8b_uart2.hw, 2841 + [CLKID_SANA] = &meson8b_sana.hw, 2842 + [CLKID_VPU_INTR] = &meson8b_vpu_intr.hw, 2843 + [CLKID_SEC_AHB_AHB3_BRIDGE] = &meson8b_sec_ahb_ahb3_bridge.hw, 2844 + [CLKID_CLK81_A9] = &meson8b_clk81_a9.hw, 2845 + [CLKID_VCLK2_VENCI0] = &meson8b_vclk2_venci0.hw, 2846 + [CLKID_VCLK2_VENCI1] = &meson8b_vclk2_venci1.hw, 2847 + [CLKID_VCLK2_VENCP0] = &meson8b_vclk2_vencp0.hw, 2848 + [CLKID_VCLK2_VENCP1] = &meson8b_vclk2_vencp1.hw, 2849 + [CLKID_GCLK_VENCI_INT] = &meson8b_gclk_venci_int.hw, 2850 + [CLKID_GCLK_VENCP_INT] = &meson8b_gclk_vencp_int.hw, 2851 + [CLKID_DAC_CLK] = &meson8b_dac_clk.hw, 2852 + [CLKID_AOCLK_GATE] = &meson8b_aoclk_gate.hw, 2853 + [CLKID_IEC958_GATE] = &meson8b_iec958_gate.hw, 2854 + [CLKID_ENC480P] = &meson8b_enc480p.hw, 2855 + [CLKID_RNG1] = &meson8b_rng1.hw, 2856 + [CLKID_GCLK_VENCL_INT] = &meson8b_gclk_vencl_int.hw, 2857 + [CLKID_VCLK2_VENCLMCC] = &meson8b_vclk2_venclmcc.hw, 2858 + [CLKID_VCLK2_VENCL] = &meson8b_vclk2_vencl.hw, 2859 + [CLKID_VCLK2_OTHER] = &meson8b_vclk2_other.hw, 2860 + [CLKID_EDP] = &meson8b_edp.hw, 2861 + [CLKID_AO_MEDIA_CPU] = &meson8b_ao_media_cpu.hw, 2862 + [CLKID_AO_AHB_SRAM] = &meson8b_ao_ahb_sram.hw, 2863 + [CLKID_AO_AHB_BUS] = &meson8b_ao_ahb_bus.hw, 2864 + [CLKID_AO_IFACE] = &meson8b_ao_iface.hw, 2865 + [CLKID_MPLL0] = &meson8b_mpll0.hw, 2866 + [CLKID_MPLL1] = &meson8b_mpll1.hw, 2867 + [CLKID_MPLL2] = &meson8b_mpll2.hw, 2868 + [CLKID_MPLL0_DIV] = &meson8b_mpll0_div.hw, 2869 + [CLKID_MPLL1_DIV] = &meson8b_mpll1_div.hw, 2870 + [CLKID_MPLL2_DIV] = &meson8b_mpll2_div.hw, 2871 + [CLKID_CPU_IN_SEL] = &meson8b_cpu_in_sel.hw, 2872 + [CLKID_CPU_IN_DIV2] = &meson8b_cpu_in_div2.hw, 2873 + [CLKID_CPU_IN_DIV3] = &meson8b_cpu_in_div3.hw, 2874 + [CLKID_CPU_SCALE_DIV] = &meson8b_cpu_scale_div.hw, 2875 + [CLKID_CPU_SCALE_OUT_SEL] = &meson8b_cpu_scale_out_sel.hw, 2876 + [CLKID_MPLL_PREDIV] = &meson8b_mpll_prediv.hw, 2877 + [CLKID_FCLK_DIV2_DIV] = &meson8b_fclk_div2_div.hw, 2878 + [CLKID_FCLK_DIV3_DIV] = &meson8b_fclk_div3_div.hw, 2879 + [CLKID_FCLK_DIV4_DIV] = &meson8b_fclk_div4_div.hw, 2880 + [CLKID_FCLK_DIV5_DIV] = &meson8b_fclk_div5_div.hw, 2881 + [CLKID_FCLK_DIV7_DIV] = &meson8b_fclk_div7_div.hw, 2882 + [CLKID_NAND_SEL] = &meson8b_nand_clk_sel.hw, 2883 + [CLKID_NAND_DIV] = &meson8b_nand_clk_div.hw, 2884 + [CLKID_NAND_CLK] = &meson8b_nand_clk_gate.hw, 2885 + [CLKID_PLL_FIXED_DCO] = &meson8b_fixed_pll_dco.hw, 2886 + [CLKID_HDMI_PLL_DCO] = &meson8b_hdmi_pll_dco.hw, 2887 + [CLKID_PLL_SYS_DCO] = &meson8b_sys_pll_dco.hw, 2888 + [CLKID_CPU_CLK_DIV2] = &meson8b_cpu_clk_div2.hw, 2889 + [CLKID_CPU_CLK_DIV3] = &meson8b_cpu_clk_div3.hw, 2890 + [CLKID_CPU_CLK_DIV4] = &meson8b_cpu_clk_div4.hw, 2891 + [CLKID_CPU_CLK_DIV5] = &meson8b_cpu_clk_div5.hw, 2892 + [CLKID_CPU_CLK_DIV6] = &meson8b_cpu_clk_div6.hw, 2893 + [CLKID_CPU_CLK_DIV7] = &meson8b_cpu_clk_div7.hw, 2894 + [CLKID_CPU_CLK_DIV8] = &meson8b_cpu_clk_div8.hw, 2895 + [CLKID_APB_SEL] = &meson8b_apb_clk_sel.hw, 2896 + [CLKID_APB] = &meson8b_apb_clk_gate.hw, 2897 + [CLKID_PERIPH_SEL] = &meson8b_periph_clk_sel.hw, 2898 + [CLKID_PERIPH] = &meson8b_periph_clk_gate.hw, 2899 + [CLKID_AXI_SEL] = &meson8b_axi_clk_sel.hw, 2900 + [CLKID_AXI] = &meson8b_axi_clk_gate.hw, 2901 + [CLKID_L2_DRAM_SEL] = &meson8b_l2_dram_clk_sel.hw, 2902 + [CLKID_L2_DRAM] = &meson8b_l2_dram_clk_gate.hw, 2903 + [CLKID_HDMI_PLL_LVDS_OUT] = &meson8b_hdmi_pll_lvds_out.hw, 2904 + [CLKID_HDMI_PLL_HDMI_OUT] = &meson8b_hdmi_pll_hdmi_out.hw, 2905 + [CLKID_VID_PLL_IN_SEL] = &meson8b_vid_pll_in_sel.hw, 2906 + [CLKID_VID_PLL_IN_EN] = &meson8b_vid_pll_in_en.hw, 2907 + [CLKID_VID_PLL_PRE_DIV] = &meson8b_vid_pll_pre_div.hw, 2908 + [CLKID_VID_PLL_POST_DIV] = &meson8b_vid_pll_post_div.hw, 2909 + [CLKID_VID_PLL_FINAL_DIV] = &meson8b_vid_pll_final_div.hw, 2910 + [CLKID_VCLK_IN_SEL] = &meson8b_vclk_in_sel.hw, 2911 + [CLKID_VCLK_IN_EN] = &meson8b_vclk_in_en.hw, 2912 + [CLKID_VCLK_EN] = &meson8b_vclk_en.hw, 2913 + [CLKID_VCLK_DIV1] = &meson8b_vclk_div1_gate.hw, 2914 + [CLKID_VCLK_DIV2_DIV] = &meson8b_vclk_div2_div.hw, 2915 + [CLKID_VCLK_DIV2] = &meson8b_vclk_div2_div_gate.hw, 2916 + [CLKID_VCLK_DIV4_DIV] = &meson8b_vclk_div4_div.hw, 2917 + [CLKID_VCLK_DIV4] = &meson8b_vclk_div4_div_gate.hw, 2918 + [CLKID_VCLK_DIV6_DIV] = &meson8b_vclk_div6_div.hw, 2919 + [CLKID_VCLK_DIV6] = &meson8b_vclk_div6_div_gate.hw, 2920 + [CLKID_VCLK_DIV12_DIV] = &meson8b_vclk_div12_div.hw, 2921 + [CLKID_VCLK_DIV12] = &meson8b_vclk_div12_div_gate.hw, 2922 + [CLKID_VCLK2_IN_SEL] = &meson8b_vclk2_in_sel.hw, 2923 + [CLKID_VCLK2_IN_EN] = &meson8b_vclk2_clk_in_en.hw, 2924 + [CLKID_VCLK2_EN] = &meson8b_vclk2_clk_en.hw, 2925 + [CLKID_VCLK2_DIV1] = &meson8b_vclk2_div1_gate.hw, 2926 + [CLKID_VCLK2_DIV2_DIV] = &meson8b_vclk2_div2_div.hw, 2927 + [CLKID_VCLK2_DIV2] = &meson8b_vclk2_div2_div_gate.hw, 2928 + [CLKID_VCLK2_DIV4_DIV] = &meson8b_vclk2_div4_div.hw, 2929 + [CLKID_VCLK2_DIV4] = &meson8b_vclk2_div4_div_gate.hw, 2930 + [CLKID_VCLK2_DIV6_DIV] = &meson8b_vclk2_div6_div.hw, 2931 + [CLKID_VCLK2_DIV6] = &meson8b_vclk2_div6_div_gate.hw, 2932 + [CLKID_VCLK2_DIV12_DIV] = &meson8b_vclk2_div12_div.hw, 2933 + [CLKID_VCLK2_DIV12] = &meson8b_vclk2_div12_div_gate.hw, 2934 + [CLKID_CTS_ENCT_SEL] = &meson8b_cts_enct_sel.hw, 2935 + [CLKID_CTS_ENCT] = &meson8b_cts_enct.hw, 2936 + [CLKID_CTS_ENCP_SEL] = &meson8b_cts_encp_sel.hw, 2937 + [CLKID_CTS_ENCP] = &meson8b_cts_encp.hw, 2938 + [CLKID_CTS_ENCI_SEL] = &meson8b_cts_enci_sel.hw, 2939 + [CLKID_CTS_ENCI] = &meson8b_cts_enci.hw, 2940 + [CLKID_HDMI_TX_PIXEL_SEL] = &meson8b_hdmi_tx_pixel_sel.hw, 2941 + [CLKID_HDMI_TX_PIXEL] = &meson8b_hdmi_tx_pixel.hw, 2942 + [CLKID_CTS_ENCL_SEL] = &meson8b_cts_encl_sel.hw, 2943 + [CLKID_CTS_ENCL] = &meson8b_cts_encl.hw, 2944 + [CLKID_CTS_VDAC0_SEL] = &meson8b_cts_vdac0_sel.hw, 2945 + [CLKID_CTS_VDAC0] = &meson8b_cts_vdac0.hw, 2946 + [CLKID_HDMI_SYS_SEL] = &meson8b_hdmi_sys_sel.hw, 2947 + [CLKID_HDMI_SYS_DIV] = &meson8b_hdmi_sys_div.hw, 2948 + [CLKID_HDMI_SYS] = &meson8b_hdmi_sys.hw, 2949 + [CLKID_MALI_0_SEL] = &meson8b_mali_0_sel.hw, 2950 + [CLKID_MALI_0_DIV] = &meson8b_mali_0_div.hw, 2951 + [CLKID_MALI] = &meson8b_mali_0.hw, 2952 + [CLKID_VPU_0_SEL] = &meson8b_vpu_0_sel.hw, 2953 + [CLKID_VPU_0_DIV] = &meson8b_vpu_0_div.hw, 2954 + [CLKID_VPU] = &meson8b_vpu_0.hw, 2955 + [CLKID_VDEC_1_SEL] = &meson8b_vdec_1_sel.hw, 2956 + [CLKID_VDEC_1_1_DIV] = &meson8b_vdec_1_1_div.hw, 2957 + [CLKID_VDEC_1] = &meson8b_vdec_1_1.hw, 2958 + [CLKID_VDEC_HCODEC_SEL] = &meson8b_vdec_hcodec_sel.hw, 2959 + [CLKID_VDEC_HCODEC_DIV] = &meson8b_vdec_hcodec_div.hw, 2960 + [CLKID_VDEC_HCODEC] = &meson8b_vdec_hcodec.hw, 2961 + [CLKID_VDEC_2_SEL] = &meson8b_vdec_2_sel.hw, 2962 + [CLKID_VDEC_2_DIV] = &meson8b_vdec_2_div.hw, 2963 + [CLKID_VDEC_2] = &meson8b_vdec_2.hw, 2964 + [CLKID_VDEC_HEVC_SEL] = &meson8b_vdec_hevc_sel.hw, 2965 + [CLKID_VDEC_HEVC_DIV] = &meson8b_vdec_hevc_div.hw, 2966 + [CLKID_VDEC_HEVC_EN] = &meson8b_vdec_hevc_en.hw, 2967 + [CLKID_VDEC_HEVC] = &meson8b_vdec_hevc.hw, 2968 + [CLKID_CTS_AMCLK_SEL] = &meson8b_cts_amclk_sel.hw, 2969 + [CLKID_CTS_AMCLK_DIV] = &meson8b_cts_amclk_div.hw, 2970 + [CLKID_CTS_AMCLK] = &meson8b_cts_amclk.hw, 2971 + [CLKID_CTS_MCLK_I958_SEL] = &meson8b_cts_mclk_i958_sel.hw, 2972 + [CLKID_CTS_MCLK_I958_DIV] = &meson8b_cts_mclk_i958_div.hw, 2973 + [CLKID_CTS_MCLK_I958] = &meson8b_cts_mclk_i958.hw, 2974 + [CLKID_CTS_I958] = &meson8b_cts_i958.hw, 2975 + [CLKID_VID_PLL_LVDS_EN] = &meson8b_vid_pll_lvds_en.hw, 2976 + [CLKID_HDMI_PLL_DCO_IN] = &hdmi_pll_dco_in.hw, 2985 2977 }; 2986 2978 2987 - static struct clk_hw_onecell_data meson8b_hw_onecell_data = { 2988 - .hws = { 2989 - [CLKID_PLL_FIXED] = &meson8b_fixed_pll.hw, 2990 - [CLKID_PLL_VID] = &meson8b_vid_pll.hw, 2991 - [CLKID_PLL_SYS] = &meson8b_sys_pll.hw, 2992 - [CLKID_FCLK_DIV2] = &meson8b_fclk_div2.hw, 2993 - [CLKID_FCLK_DIV3] = &meson8b_fclk_div3.hw, 2994 - [CLKID_FCLK_DIV4] = &meson8b_fclk_div4.hw, 2995 - [CLKID_FCLK_DIV5] = &meson8b_fclk_div5.hw, 2996 - [CLKID_FCLK_DIV7] = &meson8b_fclk_div7.hw, 2997 - [CLKID_CPUCLK] = &meson8b_cpu_clk.hw, 2998 - [CLKID_MPEG_SEL] = &meson8b_mpeg_clk_sel.hw, 2999 - [CLKID_MPEG_DIV] = &meson8b_mpeg_clk_div.hw, 3000 - [CLKID_CLK81] = &meson8b_clk81.hw, 3001 - [CLKID_DDR] = &meson8b_ddr.hw, 3002 - [CLKID_DOS] = &meson8b_dos.hw, 3003 - [CLKID_ISA] = &meson8b_isa.hw, 3004 - [CLKID_PL301] = &meson8b_pl301.hw, 3005 - [CLKID_PERIPHS] = &meson8b_periphs.hw, 3006 - [CLKID_SPICC] = &meson8b_spicc.hw, 3007 - [CLKID_I2C] = &meson8b_i2c.hw, 3008 - [CLKID_SAR_ADC] = &meson8b_sar_adc.hw, 3009 - [CLKID_SMART_CARD] = &meson8b_smart_card.hw, 3010 - [CLKID_RNG0] = &meson8b_rng0.hw, 3011 - [CLKID_UART0] = &meson8b_uart0.hw, 3012 - [CLKID_SDHC] = &meson8b_sdhc.hw, 3013 - [CLKID_STREAM] = &meson8b_stream.hw, 3014 - [CLKID_ASYNC_FIFO] = &meson8b_async_fifo.hw, 3015 - [CLKID_SDIO] = &meson8b_sdio.hw, 3016 - [CLKID_ABUF] = &meson8b_abuf.hw, 3017 - [CLKID_HIU_IFACE] = &meson8b_hiu_iface.hw, 3018 - [CLKID_ASSIST_MISC] = &meson8b_assist_misc.hw, 3019 - [CLKID_SPI] = &meson8b_spi.hw, 3020 - [CLKID_I2S_SPDIF] = &meson8b_i2s_spdif.hw, 3021 - [CLKID_ETH] = &meson8b_eth.hw, 3022 - [CLKID_DEMUX] = &meson8b_demux.hw, 3023 - [CLKID_AIU_GLUE] = &meson8b_aiu_glue.hw, 3024 - [CLKID_IEC958] = &meson8b_iec958.hw, 3025 - [CLKID_I2S_OUT] = &meson8b_i2s_out.hw, 3026 - [CLKID_AMCLK] = &meson8b_amclk.hw, 3027 - [CLKID_AIFIFO2] = &meson8b_aififo2.hw, 3028 - [CLKID_MIXER] = &meson8b_mixer.hw, 3029 - [CLKID_MIXER_IFACE] = &meson8b_mixer_iface.hw, 3030 - [CLKID_ADC] = &meson8b_adc.hw, 3031 - [CLKID_BLKMV] = &meson8b_blkmv.hw, 3032 - [CLKID_AIU] = &meson8b_aiu.hw, 3033 - [CLKID_UART1] = &meson8b_uart1.hw, 3034 - [CLKID_G2D] = &meson8b_g2d.hw, 3035 - [CLKID_USB0] = &meson8b_usb0.hw, 3036 - [CLKID_USB1] = &meson8b_usb1.hw, 3037 - [CLKID_RESET] = &meson8b_reset.hw, 3038 - [CLKID_NAND] = &meson8b_nand.hw, 3039 - [CLKID_DOS_PARSER] = &meson8b_dos_parser.hw, 3040 - [CLKID_USB] = &meson8b_usb.hw, 3041 - [CLKID_VDIN1] = &meson8b_vdin1.hw, 3042 - [CLKID_AHB_ARB0] = &meson8b_ahb_arb0.hw, 3043 - [CLKID_EFUSE] = &meson8b_efuse.hw, 3044 - [CLKID_BOOT_ROM] = &meson8b_boot_rom.hw, 3045 - [CLKID_AHB_DATA_BUS] = &meson8b_ahb_data_bus.hw, 3046 - [CLKID_AHB_CTRL_BUS] = &meson8b_ahb_ctrl_bus.hw, 3047 - [CLKID_HDMI_INTR_SYNC] = &meson8b_hdmi_intr_sync.hw, 3048 - [CLKID_HDMI_PCLK] = &meson8b_hdmi_pclk.hw, 3049 - [CLKID_USB1_DDR_BRIDGE] = &meson8b_usb1_ddr_bridge.hw, 3050 - [CLKID_USB0_DDR_BRIDGE] = &meson8b_usb0_ddr_bridge.hw, 3051 - [CLKID_MMC_PCLK] = &meson8b_mmc_pclk.hw, 3052 - [CLKID_DVIN] = &meson8b_dvin.hw, 3053 - [CLKID_UART2] = &meson8b_uart2.hw, 3054 - [CLKID_SANA] = &meson8b_sana.hw, 3055 - [CLKID_VPU_INTR] = &meson8b_vpu_intr.hw, 3056 - [CLKID_SEC_AHB_AHB3_BRIDGE] = &meson8b_sec_ahb_ahb3_bridge.hw, 3057 - [CLKID_CLK81_A9] = &meson8b_clk81_a9.hw, 3058 - [CLKID_VCLK2_VENCI0] = &meson8b_vclk2_venci0.hw, 3059 - [CLKID_VCLK2_VENCI1] = &meson8b_vclk2_venci1.hw, 3060 - [CLKID_VCLK2_VENCP0] = &meson8b_vclk2_vencp0.hw, 3061 - [CLKID_VCLK2_VENCP1] = &meson8b_vclk2_vencp1.hw, 3062 - [CLKID_GCLK_VENCI_INT] = &meson8b_gclk_venci_int.hw, 3063 - [CLKID_GCLK_VENCP_INT] = &meson8b_gclk_vencp_int.hw, 3064 - [CLKID_DAC_CLK] = &meson8b_dac_clk.hw, 3065 - [CLKID_AOCLK_GATE] = &meson8b_aoclk_gate.hw, 3066 - [CLKID_IEC958_GATE] = &meson8b_iec958_gate.hw, 3067 - [CLKID_ENC480P] = &meson8b_enc480p.hw, 3068 - [CLKID_RNG1] = &meson8b_rng1.hw, 3069 - [CLKID_GCLK_VENCL_INT] = &meson8b_gclk_vencl_int.hw, 3070 - [CLKID_VCLK2_VENCLMCC] = &meson8b_vclk2_venclmcc.hw, 3071 - [CLKID_VCLK2_VENCL] = &meson8b_vclk2_vencl.hw, 3072 - [CLKID_VCLK2_OTHER] = &meson8b_vclk2_other.hw, 3073 - [CLKID_EDP] = &meson8b_edp.hw, 3074 - [CLKID_AO_MEDIA_CPU] = &meson8b_ao_media_cpu.hw, 3075 - [CLKID_AO_AHB_SRAM] = &meson8b_ao_ahb_sram.hw, 3076 - [CLKID_AO_AHB_BUS] = &meson8b_ao_ahb_bus.hw, 3077 - [CLKID_AO_IFACE] = &meson8b_ao_iface.hw, 3078 - [CLKID_MPLL0] = &meson8b_mpll0.hw, 3079 - [CLKID_MPLL1] = &meson8b_mpll1.hw, 3080 - [CLKID_MPLL2] = &meson8b_mpll2.hw, 3081 - [CLKID_MPLL0_DIV] = &meson8b_mpll0_div.hw, 3082 - [CLKID_MPLL1_DIV] = &meson8b_mpll1_div.hw, 3083 - [CLKID_MPLL2_DIV] = &meson8b_mpll2_div.hw, 3084 - [CLKID_CPU_IN_SEL] = &meson8b_cpu_in_sel.hw, 3085 - [CLKID_CPU_IN_DIV2] = &meson8b_cpu_in_div2.hw, 3086 - [CLKID_CPU_IN_DIV3] = &meson8b_cpu_in_div3.hw, 3087 - [CLKID_CPU_SCALE_DIV] = &meson8b_cpu_scale_div.hw, 3088 - [CLKID_CPU_SCALE_OUT_SEL] = &meson8b_cpu_scale_out_sel.hw, 3089 - [CLKID_MPLL_PREDIV] = &meson8b_mpll_prediv.hw, 3090 - [CLKID_FCLK_DIV2_DIV] = &meson8b_fclk_div2_div.hw, 3091 - [CLKID_FCLK_DIV3_DIV] = &meson8b_fclk_div3_div.hw, 3092 - [CLKID_FCLK_DIV4_DIV] = &meson8b_fclk_div4_div.hw, 3093 - [CLKID_FCLK_DIV5_DIV] = &meson8b_fclk_div5_div.hw, 3094 - [CLKID_FCLK_DIV7_DIV] = &meson8b_fclk_div7_div.hw, 3095 - [CLKID_NAND_SEL] = &meson8b_nand_clk_sel.hw, 3096 - [CLKID_NAND_DIV] = &meson8b_nand_clk_div.hw, 3097 - [CLKID_NAND_CLK] = &meson8b_nand_clk_gate.hw, 3098 - [CLKID_PLL_FIXED_DCO] = &meson8b_fixed_pll_dco.hw, 3099 - [CLKID_HDMI_PLL_DCO] = &meson8b_hdmi_pll_dco.hw, 3100 - [CLKID_PLL_SYS_DCO] = &meson8b_sys_pll_dco.hw, 3101 - [CLKID_CPU_CLK_DIV2] = &meson8b_cpu_clk_div2.hw, 3102 - [CLKID_CPU_CLK_DIV3] = &meson8b_cpu_clk_div3.hw, 3103 - [CLKID_CPU_CLK_DIV4] = &meson8b_cpu_clk_div4.hw, 3104 - [CLKID_CPU_CLK_DIV5] = &meson8b_cpu_clk_div5.hw, 3105 - [CLKID_CPU_CLK_DIV6] = &meson8b_cpu_clk_div6.hw, 3106 - [CLKID_CPU_CLK_DIV7] = &meson8b_cpu_clk_div7.hw, 3107 - [CLKID_CPU_CLK_DIV8] = &meson8b_cpu_clk_div8.hw, 3108 - [CLKID_APB_SEL] = &meson8b_apb_clk_sel.hw, 3109 - [CLKID_APB] = &meson8b_apb_clk_gate.hw, 3110 - [CLKID_PERIPH_SEL] = &meson8b_periph_clk_sel.hw, 3111 - [CLKID_PERIPH] = &meson8b_periph_clk_gate.hw, 3112 - [CLKID_AXI_SEL] = &meson8b_axi_clk_sel.hw, 3113 - [CLKID_AXI] = &meson8b_axi_clk_gate.hw, 3114 - [CLKID_L2_DRAM_SEL] = &meson8b_l2_dram_clk_sel.hw, 3115 - [CLKID_L2_DRAM] = &meson8b_l2_dram_clk_gate.hw, 3116 - [CLKID_HDMI_PLL_LVDS_OUT] = &meson8b_hdmi_pll_lvds_out.hw, 3117 - [CLKID_HDMI_PLL_HDMI_OUT] = &meson8b_hdmi_pll_hdmi_out.hw, 3118 - [CLKID_VID_PLL_IN_SEL] = &meson8b_vid_pll_in_sel.hw, 3119 - [CLKID_VID_PLL_IN_EN] = &meson8b_vid_pll_in_en.hw, 3120 - [CLKID_VID_PLL_PRE_DIV] = &meson8b_vid_pll_pre_div.hw, 3121 - [CLKID_VID_PLL_POST_DIV] = &meson8b_vid_pll_post_div.hw, 3122 - [CLKID_VID_PLL_FINAL_DIV] = &meson8b_vid_pll_final_div.hw, 3123 - [CLKID_VCLK_IN_SEL] = &meson8b_vclk_in_sel.hw, 3124 - [CLKID_VCLK_IN_EN] = &meson8b_vclk_in_en.hw, 3125 - [CLKID_VCLK_EN] = &meson8b_vclk_en.hw, 3126 - [CLKID_VCLK_DIV1] = &meson8b_vclk_div1_gate.hw, 3127 - [CLKID_VCLK_DIV2_DIV] = &meson8b_vclk_div2_div.hw, 3128 - [CLKID_VCLK_DIV2] = &meson8b_vclk_div2_div_gate.hw, 3129 - [CLKID_VCLK_DIV4_DIV] = &meson8b_vclk_div4_div.hw, 3130 - [CLKID_VCLK_DIV4] = &meson8b_vclk_div4_div_gate.hw, 3131 - [CLKID_VCLK_DIV6_DIV] = &meson8b_vclk_div6_div.hw, 3132 - [CLKID_VCLK_DIV6] = &meson8b_vclk_div6_div_gate.hw, 3133 - [CLKID_VCLK_DIV12_DIV] = &meson8b_vclk_div12_div.hw, 3134 - [CLKID_VCLK_DIV12] = &meson8b_vclk_div12_div_gate.hw, 3135 - [CLKID_VCLK2_IN_SEL] = &meson8b_vclk2_in_sel.hw, 3136 - [CLKID_VCLK2_IN_EN] = &meson8b_vclk2_clk_in_en.hw, 3137 - [CLKID_VCLK2_EN] = &meson8b_vclk2_clk_en.hw, 3138 - [CLKID_VCLK2_DIV1] = &meson8b_vclk2_div1_gate.hw, 3139 - [CLKID_VCLK2_DIV2_DIV] = &meson8b_vclk2_div2_div.hw, 3140 - [CLKID_VCLK2_DIV2] = &meson8b_vclk2_div2_div_gate.hw, 3141 - [CLKID_VCLK2_DIV4_DIV] = &meson8b_vclk2_div4_div.hw, 3142 - [CLKID_VCLK2_DIV4] = &meson8b_vclk2_div4_div_gate.hw, 3143 - [CLKID_VCLK2_DIV6_DIV] = &meson8b_vclk2_div6_div.hw, 3144 - [CLKID_VCLK2_DIV6] = &meson8b_vclk2_div6_div_gate.hw, 3145 - [CLKID_VCLK2_DIV12_DIV] = &meson8b_vclk2_div12_div.hw, 3146 - [CLKID_VCLK2_DIV12] = &meson8b_vclk2_div12_div_gate.hw, 3147 - [CLKID_CTS_ENCT_SEL] = &meson8b_cts_enct_sel.hw, 3148 - [CLKID_CTS_ENCT] = &meson8b_cts_enct.hw, 3149 - [CLKID_CTS_ENCP_SEL] = &meson8b_cts_encp_sel.hw, 3150 - [CLKID_CTS_ENCP] = &meson8b_cts_encp.hw, 3151 - [CLKID_CTS_ENCI_SEL] = &meson8b_cts_enci_sel.hw, 3152 - [CLKID_CTS_ENCI] = &meson8b_cts_enci.hw, 3153 - [CLKID_HDMI_TX_PIXEL_SEL] = &meson8b_hdmi_tx_pixel_sel.hw, 3154 - [CLKID_HDMI_TX_PIXEL] = &meson8b_hdmi_tx_pixel.hw, 3155 - [CLKID_CTS_ENCL_SEL] = &meson8b_cts_encl_sel.hw, 3156 - [CLKID_CTS_ENCL] = &meson8b_cts_encl.hw, 3157 - [CLKID_CTS_VDAC0_SEL] = &meson8b_cts_vdac0_sel.hw, 3158 - [CLKID_CTS_VDAC0] = &meson8b_cts_vdac0.hw, 3159 - [CLKID_HDMI_SYS_SEL] = &meson8b_hdmi_sys_sel.hw, 3160 - [CLKID_HDMI_SYS_DIV] = &meson8b_hdmi_sys_div.hw, 3161 - [CLKID_HDMI_SYS] = &meson8b_hdmi_sys.hw, 3162 - [CLKID_MALI_0_SEL] = &meson8b_mali_0_sel.hw, 3163 - [CLKID_MALI_0_DIV] = &meson8b_mali_0_div.hw, 3164 - [CLKID_MALI_0] = &meson8b_mali_0.hw, 3165 - [CLKID_MALI_1_SEL] = &meson8b_mali_1_sel.hw, 3166 - [CLKID_MALI_1_DIV] = &meson8b_mali_1_div.hw, 3167 - [CLKID_MALI_1] = &meson8b_mali_1.hw, 3168 - [CLKID_MALI] = &meson8b_mali.hw, 3169 - [CLKID_VPU_0_SEL] = &meson8b_vpu_0_sel.hw, 3170 - [CLKID_VPU_0_DIV] = &meson8b_vpu_0_div.hw, 3171 - [CLKID_VPU_0] = &meson8b_vpu_0.hw, 3172 - [CLKID_VPU_1_SEL] = &meson8b_vpu_1_sel.hw, 3173 - [CLKID_VPU_1_DIV] = &meson8b_vpu_1_div.hw, 3174 - [CLKID_VPU_1] = &meson8b_vpu_1.hw, 3175 - [CLKID_VPU] = &meson8b_vpu.hw, 3176 - [CLKID_VDEC_1_SEL] = &meson8b_vdec_1_sel.hw, 3177 - [CLKID_VDEC_1_1_DIV] = &meson8b_vdec_1_1_div.hw, 3178 - [CLKID_VDEC_1_1] = &meson8b_vdec_1_1.hw, 3179 - [CLKID_VDEC_1_2_DIV] = &meson8b_vdec_1_2_div.hw, 3180 - [CLKID_VDEC_1_2] = &meson8b_vdec_1_2.hw, 3181 - [CLKID_VDEC_1] = &meson8b_vdec_1.hw, 3182 - [CLKID_VDEC_HCODEC_SEL] = &meson8b_vdec_hcodec_sel.hw, 3183 - [CLKID_VDEC_HCODEC_DIV] = &meson8b_vdec_hcodec_div.hw, 3184 - [CLKID_VDEC_HCODEC] = &meson8b_vdec_hcodec.hw, 3185 - [CLKID_VDEC_2_SEL] = &meson8b_vdec_2_sel.hw, 3186 - [CLKID_VDEC_2_DIV] = &meson8b_vdec_2_div.hw, 3187 - [CLKID_VDEC_2] = &meson8b_vdec_2.hw, 3188 - [CLKID_VDEC_HEVC_SEL] = &meson8b_vdec_hevc_sel.hw, 3189 - [CLKID_VDEC_HEVC_DIV] = &meson8b_vdec_hevc_div.hw, 3190 - [CLKID_VDEC_HEVC_EN] = &meson8b_vdec_hevc_en.hw, 3191 - [CLKID_VDEC_HEVC] = &meson8b_vdec_hevc.hw, 3192 - [CLKID_CTS_AMCLK_SEL] = &meson8b_cts_amclk_sel.hw, 3193 - [CLKID_CTS_AMCLK_DIV] = &meson8b_cts_amclk_div.hw, 3194 - [CLKID_CTS_AMCLK] = &meson8b_cts_amclk.hw, 3195 - [CLKID_CTS_MCLK_I958_SEL] = &meson8b_cts_mclk_i958_sel.hw, 3196 - [CLKID_CTS_MCLK_I958_DIV] = &meson8b_cts_mclk_i958_div.hw, 3197 - [CLKID_CTS_MCLK_I958] = &meson8b_cts_mclk_i958.hw, 3198 - [CLKID_CTS_I958] = &meson8b_cts_i958.hw, 3199 - [CLKID_VID_PLL_LVDS_EN] = &meson8b_vid_pll_lvds_en.hw, 3200 - [CLKID_HDMI_PLL_DCO_IN] = &hdmi_pll_dco_in.hw, 3201 - [CLK_NR_CLKS] = NULL, 3202 - }, 3203 - .num = CLK_NR_CLKS, 2979 + static struct clk_hw *meson8b_hw_clks[] = { 2980 + [CLKID_PLL_FIXED] = &meson8b_fixed_pll.hw, 2981 + [CLKID_PLL_VID] = &meson8b_vid_pll.hw, 2982 + [CLKID_PLL_SYS] = &meson8b_sys_pll.hw, 2983 + [CLKID_FCLK_DIV2] = &meson8b_fclk_div2.hw, 2984 + [CLKID_FCLK_DIV3] = &meson8b_fclk_div3.hw, 2985 + [CLKID_FCLK_DIV4] = &meson8b_fclk_div4.hw, 2986 + [CLKID_FCLK_DIV5] = &meson8b_fclk_div5.hw, 2987 + [CLKID_FCLK_DIV7] = &meson8b_fclk_div7.hw, 2988 + [CLKID_CPUCLK] = &meson8b_cpu_clk.hw, 2989 + [CLKID_MPEG_SEL] = &meson8b_mpeg_clk_sel.hw, 2990 + [CLKID_MPEG_DIV] = &meson8b_mpeg_clk_div.hw, 2991 + [CLKID_CLK81] = &meson8b_clk81.hw, 2992 + [CLKID_DDR] = &meson8b_ddr.hw, 2993 + [CLKID_DOS] = &meson8b_dos.hw, 2994 + [CLKID_ISA] = &meson8b_isa.hw, 2995 + [CLKID_PL301] = &meson8b_pl301.hw, 2996 + [CLKID_PERIPHS] = &meson8b_periphs.hw, 2997 + [CLKID_SPICC] = &meson8b_spicc.hw, 2998 + [CLKID_I2C] = &meson8b_i2c.hw, 2999 + [CLKID_SAR_ADC] = &meson8b_sar_adc.hw, 3000 + [CLKID_SMART_CARD] = &meson8b_smart_card.hw, 3001 + [CLKID_RNG0] = &meson8b_rng0.hw, 3002 + [CLKID_UART0] = &meson8b_uart0.hw, 3003 + [CLKID_SDHC] = &meson8b_sdhc.hw, 3004 + [CLKID_STREAM] = &meson8b_stream.hw, 3005 + [CLKID_ASYNC_FIFO] = &meson8b_async_fifo.hw, 3006 + [CLKID_SDIO] = &meson8b_sdio.hw, 3007 + [CLKID_ABUF] = &meson8b_abuf.hw, 3008 + [CLKID_HIU_IFACE] = &meson8b_hiu_iface.hw, 3009 + [CLKID_ASSIST_MISC] = &meson8b_assist_misc.hw, 3010 + [CLKID_SPI] = &meson8b_spi.hw, 3011 + [CLKID_I2S_SPDIF] = &meson8b_i2s_spdif.hw, 3012 + [CLKID_ETH] = &meson8b_eth.hw, 3013 + [CLKID_DEMUX] = &meson8b_demux.hw, 3014 + [CLKID_AIU_GLUE] = &meson8b_aiu_glue.hw, 3015 + [CLKID_IEC958] = &meson8b_iec958.hw, 3016 + [CLKID_I2S_OUT] = &meson8b_i2s_out.hw, 3017 + [CLKID_AMCLK] = &meson8b_amclk.hw, 3018 + [CLKID_AIFIFO2] = &meson8b_aififo2.hw, 3019 + [CLKID_MIXER] = &meson8b_mixer.hw, 3020 + [CLKID_MIXER_IFACE] = &meson8b_mixer_iface.hw, 3021 + [CLKID_ADC] = &meson8b_adc.hw, 3022 + [CLKID_BLKMV] = &meson8b_blkmv.hw, 3023 + [CLKID_AIU] = &meson8b_aiu.hw, 3024 + [CLKID_UART1] = &meson8b_uart1.hw, 3025 + [CLKID_G2D] = &meson8b_g2d.hw, 3026 + [CLKID_USB0] = &meson8b_usb0.hw, 3027 + [CLKID_USB1] = &meson8b_usb1.hw, 3028 + [CLKID_RESET] = &meson8b_reset.hw, 3029 + [CLKID_NAND] = &meson8b_nand.hw, 3030 + [CLKID_DOS_PARSER] = &meson8b_dos_parser.hw, 3031 + [CLKID_USB] = &meson8b_usb.hw, 3032 + [CLKID_VDIN1] = &meson8b_vdin1.hw, 3033 + [CLKID_AHB_ARB0] = &meson8b_ahb_arb0.hw, 3034 + [CLKID_EFUSE] = &meson8b_efuse.hw, 3035 + [CLKID_BOOT_ROM] = &meson8b_boot_rom.hw, 3036 + [CLKID_AHB_DATA_BUS] = &meson8b_ahb_data_bus.hw, 3037 + [CLKID_AHB_CTRL_BUS] = &meson8b_ahb_ctrl_bus.hw, 3038 + [CLKID_HDMI_INTR_SYNC] = &meson8b_hdmi_intr_sync.hw, 3039 + [CLKID_HDMI_PCLK] = &meson8b_hdmi_pclk.hw, 3040 + [CLKID_USB1_DDR_BRIDGE] = &meson8b_usb1_ddr_bridge.hw, 3041 + [CLKID_USB0_DDR_BRIDGE] = &meson8b_usb0_ddr_bridge.hw, 3042 + [CLKID_MMC_PCLK] = &meson8b_mmc_pclk.hw, 3043 + [CLKID_DVIN] = &meson8b_dvin.hw, 3044 + [CLKID_UART2] = &meson8b_uart2.hw, 3045 + [CLKID_SANA] = &meson8b_sana.hw, 3046 + [CLKID_VPU_INTR] = &meson8b_vpu_intr.hw, 3047 + [CLKID_SEC_AHB_AHB3_BRIDGE] = &meson8b_sec_ahb_ahb3_bridge.hw, 3048 + [CLKID_CLK81_A9] = &meson8b_clk81_a9.hw, 3049 + [CLKID_VCLK2_VENCI0] = &meson8b_vclk2_venci0.hw, 3050 + [CLKID_VCLK2_VENCI1] = &meson8b_vclk2_venci1.hw, 3051 + [CLKID_VCLK2_VENCP0] = &meson8b_vclk2_vencp0.hw, 3052 + [CLKID_VCLK2_VENCP1] = &meson8b_vclk2_vencp1.hw, 3053 + [CLKID_GCLK_VENCI_INT] = &meson8b_gclk_venci_int.hw, 3054 + [CLKID_GCLK_VENCP_INT] = &meson8b_gclk_vencp_int.hw, 3055 + [CLKID_DAC_CLK] = &meson8b_dac_clk.hw, 3056 + [CLKID_AOCLK_GATE] = &meson8b_aoclk_gate.hw, 3057 + [CLKID_IEC958_GATE] = &meson8b_iec958_gate.hw, 3058 + [CLKID_ENC480P] = &meson8b_enc480p.hw, 3059 + [CLKID_RNG1] = &meson8b_rng1.hw, 3060 + [CLKID_GCLK_VENCL_INT] = &meson8b_gclk_vencl_int.hw, 3061 + [CLKID_VCLK2_VENCLMCC] = &meson8b_vclk2_venclmcc.hw, 3062 + [CLKID_VCLK2_VENCL] = &meson8b_vclk2_vencl.hw, 3063 + [CLKID_VCLK2_OTHER] = &meson8b_vclk2_other.hw, 3064 + [CLKID_EDP] = &meson8b_edp.hw, 3065 + [CLKID_AO_MEDIA_CPU] = &meson8b_ao_media_cpu.hw, 3066 + [CLKID_AO_AHB_SRAM] = &meson8b_ao_ahb_sram.hw, 3067 + [CLKID_AO_AHB_BUS] = &meson8b_ao_ahb_bus.hw, 3068 + [CLKID_AO_IFACE] = &meson8b_ao_iface.hw, 3069 + [CLKID_MPLL0] = &meson8b_mpll0.hw, 3070 + [CLKID_MPLL1] = &meson8b_mpll1.hw, 3071 + [CLKID_MPLL2] = &meson8b_mpll2.hw, 3072 + [CLKID_MPLL0_DIV] = &meson8b_mpll0_div.hw, 3073 + [CLKID_MPLL1_DIV] = &meson8b_mpll1_div.hw, 3074 + [CLKID_MPLL2_DIV] = &meson8b_mpll2_div.hw, 3075 + [CLKID_CPU_IN_SEL] = &meson8b_cpu_in_sel.hw, 3076 + [CLKID_CPU_IN_DIV2] = &meson8b_cpu_in_div2.hw, 3077 + [CLKID_CPU_IN_DIV3] = &meson8b_cpu_in_div3.hw, 3078 + [CLKID_CPU_SCALE_DIV] = &meson8b_cpu_scale_div.hw, 3079 + [CLKID_CPU_SCALE_OUT_SEL] = &meson8b_cpu_scale_out_sel.hw, 3080 + [CLKID_MPLL_PREDIV] = &meson8b_mpll_prediv.hw, 3081 + [CLKID_FCLK_DIV2_DIV] = &meson8b_fclk_div2_div.hw, 3082 + [CLKID_FCLK_DIV3_DIV] = &meson8b_fclk_div3_div.hw, 3083 + [CLKID_FCLK_DIV4_DIV] = &meson8b_fclk_div4_div.hw, 3084 + [CLKID_FCLK_DIV5_DIV] = &meson8b_fclk_div5_div.hw, 3085 + [CLKID_FCLK_DIV7_DIV] = &meson8b_fclk_div7_div.hw, 3086 + [CLKID_NAND_SEL] = &meson8b_nand_clk_sel.hw, 3087 + [CLKID_NAND_DIV] = &meson8b_nand_clk_div.hw, 3088 + [CLKID_NAND_CLK] = &meson8b_nand_clk_gate.hw, 3089 + [CLKID_PLL_FIXED_DCO] = &meson8b_fixed_pll_dco.hw, 3090 + [CLKID_HDMI_PLL_DCO] = &meson8b_hdmi_pll_dco.hw, 3091 + [CLKID_PLL_SYS_DCO] = &meson8b_sys_pll_dco.hw, 3092 + [CLKID_CPU_CLK_DIV2] = &meson8b_cpu_clk_div2.hw, 3093 + [CLKID_CPU_CLK_DIV3] = &meson8b_cpu_clk_div3.hw, 3094 + [CLKID_CPU_CLK_DIV4] = &meson8b_cpu_clk_div4.hw, 3095 + [CLKID_CPU_CLK_DIV5] = &meson8b_cpu_clk_div5.hw, 3096 + [CLKID_CPU_CLK_DIV6] = &meson8b_cpu_clk_div6.hw, 3097 + [CLKID_CPU_CLK_DIV7] = &meson8b_cpu_clk_div7.hw, 3098 + [CLKID_CPU_CLK_DIV8] = &meson8b_cpu_clk_div8.hw, 3099 + [CLKID_APB_SEL] = &meson8b_apb_clk_sel.hw, 3100 + [CLKID_APB] = &meson8b_apb_clk_gate.hw, 3101 + [CLKID_PERIPH_SEL] = &meson8b_periph_clk_sel.hw, 3102 + [CLKID_PERIPH] = &meson8b_periph_clk_gate.hw, 3103 + [CLKID_AXI_SEL] = &meson8b_axi_clk_sel.hw, 3104 + [CLKID_AXI] = &meson8b_axi_clk_gate.hw, 3105 + [CLKID_L2_DRAM_SEL] = &meson8b_l2_dram_clk_sel.hw, 3106 + [CLKID_L2_DRAM] = &meson8b_l2_dram_clk_gate.hw, 3107 + [CLKID_HDMI_PLL_LVDS_OUT] = &meson8b_hdmi_pll_lvds_out.hw, 3108 + [CLKID_HDMI_PLL_HDMI_OUT] = &meson8b_hdmi_pll_hdmi_out.hw, 3109 + [CLKID_VID_PLL_IN_SEL] = &meson8b_vid_pll_in_sel.hw, 3110 + [CLKID_VID_PLL_IN_EN] = &meson8b_vid_pll_in_en.hw, 3111 + [CLKID_VID_PLL_PRE_DIV] = &meson8b_vid_pll_pre_div.hw, 3112 + [CLKID_VID_PLL_POST_DIV] = &meson8b_vid_pll_post_div.hw, 3113 + [CLKID_VID_PLL_FINAL_DIV] = &meson8b_vid_pll_final_div.hw, 3114 + [CLKID_VCLK_IN_SEL] = &meson8b_vclk_in_sel.hw, 3115 + [CLKID_VCLK_IN_EN] = &meson8b_vclk_in_en.hw, 3116 + [CLKID_VCLK_EN] = &meson8b_vclk_en.hw, 3117 + [CLKID_VCLK_DIV1] = &meson8b_vclk_div1_gate.hw, 3118 + [CLKID_VCLK_DIV2_DIV] = &meson8b_vclk_div2_div.hw, 3119 + [CLKID_VCLK_DIV2] = &meson8b_vclk_div2_div_gate.hw, 3120 + [CLKID_VCLK_DIV4_DIV] = &meson8b_vclk_div4_div.hw, 3121 + [CLKID_VCLK_DIV4] = &meson8b_vclk_div4_div_gate.hw, 3122 + [CLKID_VCLK_DIV6_DIV] = &meson8b_vclk_div6_div.hw, 3123 + [CLKID_VCLK_DIV6] = &meson8b_vclk_div6_div_gate.hw, 3124 + [CLKID_VCLK_DIV12_DIV] = &meson8b_vclk_div12_div.hw, 3125 + [CLKID_VCLK_DIV12] = &meson8b_vclk_div12_div_gate.hw, 3126 + [CLKID_VCLK2_IN_SEL] = &meson8b_vclk2_in_sel.hw, 3127 + [CLKID_VCLK2_IN_EN] = &meson8b_vclk2_clk_in_en.hw, 3128 + [CLKID_VCLK2_EN] = &meson8b_vclk2_clk_en.hw, 3129 + [CLKID_VCLK2_DIV1] = &meson8b_vclk2_div1_gate.hw, 3130 + [CLKID_VCLK2_DIV2_DIV] = &meson8b_vclk2_div2_div.hw, 3131 + [CLKID_VCLK2_DIV2] = &meson8b_vclk2_div2_div_gate.hw, 3132 + [CLKID_VCLK2_DIV4_DIV] = &meson8b_vclk2_div4_div.hw, 3133 + [CLKID_VCLK2_DIV4] = &meson8b_vclk2_div4_div_gate.hw, 3134 + [CLKID_VCLK2_DIV6_DIV] = &meson8b_vclk2_div6_div.hw, 3135 + [CLKID_VCLK2_DIV6] = &meson8b_vclk2_div6_div_gate.hw, 3136 + [CLKID_VCLK2_DIV12_DIV] = &meson8b_vclk2_div12_div.hw, 3137 + [CLKID_VCLK2_DIV12] = &meson8b_vclk2_div12_div_gate.hw, 3138 + [CLKID_CTS_ENCT_SEL] = &meson8b_cts_enct_sel.hw, 3139 + [CLKID_CTS_ENCT] = &meson8b_cts_enct.hw, 3140 + [CLKID_CTS_ENCP_SEL] = &meson8b_cts_encp_sel.hw, 3141 + [CLKID_CTS_ENCP] = &meson8b_cts_encp.hw, 3142 + [CLKID_CTS_ENCI_SEL] = &meson8b_cts_enci_sel.hw, 3143 + [CLKID_CTS_ENCI] = &meson8b_cts_enci.hw, 3144 + [CLKID_HDMI_TX_PIXEL_SEL] = &meson8b_hdmi_tx_pixel_sel.hw, 3145 + [CLKID_HDMI_TX_PIXEL] = &meson8b_hdmi_tx_pixel.hw, 3146 + [CLKID_CTS_ENCL_SEL] = &meson8b_cts_encl_sel.hw, 3147 + [CLKID_CTS_ENCL] = &meson8b_cts_encl.hw, 3148 + [CLKID_CTS_VDAC0_SEL] = &meson8b_cts_vdac0_sel.hw, 3149 + [CLKID_CTS_VDAC0] = &meson8b_cts_vdac0.hw, 3150 + [CLKID_HDMI_SYS_SEL] = &meson8b_hdmi_sys_sel.hw, 3151 + [CLKID_HDMI_SYS_DIV] = &meson8b_hdmi_sys_div.hw, 3152 + [CLKID_HDMI_SYS] = &meson8b_hdmi_sys.hw, 3153 + [CLKID_MALI_0_SEL] = &meson8b_mali_0_sel.hw, 3154 + [CLKID_MALI_0_DIV] = &meson8b_mali_0_div.hw, 3155 + [CLKID_MALI_0] = &meson8b_mali_0.hw, 3156 + [CLKID_MALI_1_SEL] = &meson8b_mali_1_sel.hw, 3157 + [CLKID_MALI_1_DIV] = &meson8b_mali_1_div.hw, 3158 + [CLKID_MALI_1] = &meson8b_mali_1.hw, 3159 + [CLKID_MALI] = &meson8b_mali.hw, 3160 + [CLKID_VPU_0_SEL] = &meson8b_vpu_0_sel.hw, 3161 + [CLKID_VPU_0_DIV] = &meson8b_vpu_0_div.hw, 3162 + [CLKID_VPU_0] = &meson8b_vpu_0.hw, 3163 + [CLKID_VPU_1_SEL] = &meson8b_vpu_1_sel.hw, 3164 + [CLKID_VPU_1_DIV] = &meson8b_vpu_1_div.hw, 3165 + [CLKID_VPU_1] = &meson8b_vpu_1.hw, 3166 + [CLKID_VPU] = &meson8b_vpu.hw, 3167 + [CLKID_VDEC_1_SEL] = &meson8b_vdec_1_sel.hw, 3168 + [CLKID_VDEC_1_1_DIV] = &meson8b_vdec_1_1_div.hw, 3169 + [CLKID_VDEC_1_1] = &meson8b_vdec_1_1.hw, 3170 + [CLKID_VDEC_1_2_DIV] = &meson8b_vdec_1_2_div.hw, 3171 + [CLKID_VDEC_1_2] = &meson8b_vdec_1_2.hw, 3172 + [CLKID_VDEC_1] = &meson8b_vdec_1.hw, 3173 + [CLKID_VDEC_HCODEC_SEL] = &meson8b_vdec_hcodec_sel.hw, 3174 + [CLKID_VDEC_HCODEC_DIV] = &meson8b_vdec_hcodec_div.hw, 3175 + [CLKID_VDEC_HCODEC] = &meson8b_vdec_hcodec.hw, 3176 + [CLKID_VDEC_2_SEL] = &meson8b_vdec_2_sel.hw, 3177 + [CLKID_VDEC_2_DIV] = &meson8b_vdec_2_div.hw, 3178 + [CLKID_VDEC_2] = &meson8b_vdec_2.hw, 3179 + [CLKID_VDEC_HEVC_SEL] = &meson8b_vdec_hevc_sel.hw, 3180 + [CLKID_VDEC_HEVC_DIV] = &meson8b_vdec_hevc_div.hw, 3181 + [CLKID_VDEC_HEVC_EN] = &meson8b_vdec_hevc_en.hw, 3182 + [CLKID_VDEC_HEVC] = &meson8b_vdec_hevc.hw, 3183 + [CLKID_CTS_AMCLK_SEL] = &meson8b_cts_amclk_sel.hw, 3184 + [CLKID_CTS_AMCLK_DIV] = &meson8b_cts_amclk_div.hw, 3185 + [CLKID_CTS_AMCLK] = &meson8b_cts_amclk.hw, 3186 + [CLKID_CTS_MCLK_I958_SEL] = &meson8b_cts_mclk_i958_sel.hw, 3187 + [CLKID_CTS_MCLK_I958_DIV] = &meson8b_cts_mclk_i958_div.hw, 3188 + [CLKID_CTS_MCLK_I958] = &meson8b_cts_mclk_i958.hw, 3189 + [CLKID_CTS_I958] = &meson8b_cts_i958.hw, 3190 + [CLKID_VID_PLL_LVDS_EN] = &meson8b_vid_pll_lvds_en.hw, 3191 + [CLKID_HDMI_PLL_DCO_IN] = &hdmi_pll_dco_in.hw, 3204 3192 }; 3205 3193 3206 - static struct clk_hw_onecell_data meson8m2_hw_onecell_data = { 3207 - .hws = { 3208 - [CLKID_PLL_FIXED] = &meson8b_fixed_pll.hw, 3209 - [CLKID_PLL_VID] = &meson8b_vid_pll.hw, 3210 - [CLKID_PLL_SYS] = &meson8b_sys_pll.hw, 3211 - [CLKID_FCLK_DIV2] = &meson8b_fclk_div2.hw, 3212 - [CLKID_FCLK_DIV3] = &meson8b_fclk_div3.hw, 3213 - [CLKID_FCLK_DIV4] = &meson8b_fclk_div4.hw, 3214 - [CLKID_FCLK_DIV5] = &meson8b_fclk_div5.hw, 3215 - [CLKID_FCLK_DIV7] = &meson8b_fclk_div7.hw, 3216 - [CLKID_CPUCLK] = &meson8b_cpu_clk.hw, 3217 - [CLKID_MPEG_SEL] = &meson8b_mpeg_clk_sel.hw, 3218 - [CLKID_MPEG_DIV] = &meson8b_mpeg_clk_div.hw, 3219 - [CLKID_CLK81] = &meson8b_clk81.hw, 3220 - [CLKID_DDR] = &meson8b_ddr.hw, 3221 - [CLKID_DOS] = &meson8b_dos.hw, 3222 - [CLKID_ISA] = &meson8b_isa.hw, 3223 - [CLKID_PL301] = &meson8b_pl301.hw, 3224 - [CLKID_PERIPHS] = &meson8b_periphs.hw, 3225 - [CLKID_SPICC] = &meson8b_spicc.hw, 3226 - [CLKID_I2C] = &meson8b_i2c.hw, 3227 - [CLKID_SAR_ADC] = &meson8b_sar_adc.hw, 3228 - [CLKID_SMART_CARD] = &meson8b_smart_card.hw, 3229 - [CLKID_RNG0] = &meson8b_rng0.hw, 3230 - [CLKID_UART0] = &meson8b_uart0.hw, 3231 - [CLKID_SDHC] = &meson8b_sdhc.hw, 3232 - [CLKID_STREAM] = &meson8b_stream.hw, 3233 - [CLKID_ASYNC_FIFO] = &meson8b_async_fifo.hw, 3234 - [CLKID_SDIO] = &meson8b_sdio.hw, 3235 - [CLKID_ABUF] = &meson8b_abuf.hw, 3236 - [CLKID_HIU_IFACE] = &meson8b_hiu_iface.hw, 3237 - [CLKID_ASSIST_MISC] = &meson8b_assist_misc.hw, 3238 - [CLKID_SPI] = &meson8b_spi.hw, 3239 - [CLKID_I2S_SPDIF] = &meson8b_i2s_spdif.hw, 3240 - [CLKID_ETH] = &meson8b_eth.hw, 3241 - [CLKID_DEMUX] = &meson8b_demux.hw, 3242 - [CLKID_AIU_GLUE] = &meson8b_aiu_glue.hw, 3243 - [CLKID_IEC958] = &meson8b_iec958.hw, 3244 - [CLKID_I2S_OUT] = &meson8b_i2s_out.hw, 3245 - [CLKID_AMCLK] = &meson8b_amclk.hw, 3246 - [CLKID_AIFIFO2] = &meson8b_aififo2.hw, 3247 - [CLKID_MIXER] = &meson8b_mixer.hw, 3248 - [CLKID_MIXER_IFACE] = &meson8b_mixer_iface.hw, 3249 - [CLKID_ADC] = &meson8b_adc.hw, 3250 - [CLKID_BLKMV] = &meson8b_blkmv.hw, 3251 - [CLKID_AIU] = &meson8b_aiu.hw, 3252 - [CLKID_UART1] = &meson8b_uart1.hw, 3253 - [CLKID_G2D] = &meson8b_g2d.hw, 3254 - [CLKID_USB0] = &meson8b_usb0.hw, 3255 - [CLKID_USB1] = &meson8b_usb1.hw, 3256 - [CLKID_RESET] = &meson8b_reset.hw, 3257 - [CLKID_NAND] = &meson8b_nand.hw, 3258 - [CLKID_DOS_PARSER] = &meson8b_dos_parser.hw, 3259 - [CLKID_USB] = &meson8b_usb.hw, 3260 - [CLKID_VDIN1] = &meson8b_vdin1.hw, 3261 - [CLKID_AHB_ARB0] = &meson8b_ahb_arb0.hw, 3262 - [CLKID_EFUSE] = &meson8b_efuse.hw, 3263 - [CLKID_BOOT_ROM] = &meson8b_boot_rom.hw, 3264 - [CLKID_AHB_DATA_BUS] = &meson8b_ahb_data_bus.hw, 3265 - [CLKID_AHB_CTRL_BUS] = &meson8b_ahb_ctrl_bus.hw, 3266 - [CLKID_HDMI_INTR_SYNC] = &meson8b_hdmi_intr_sync.hw, 3267 - [CLKID_HDMI_PCLK] = &meson8b_hdmi_pclk.hw, 3268 - [CLKID_USB1_DDR_BRIDGE] = &meson8b_usb1_ddr_bridge.hw, 3269 - [CLKID_USB0_DDR_BRIDGE] = &meson8b_usb0_ddr_bridge.hw, 3270 - [CLKID_MMC_PCLK] = &meson8b_mmc_pclk.hw, 3271 - [CLKID_DVIN] = &meson8b_dvin.hw, 3272 - [CLKID_UART2] = &meson8b_uart2.hw, 3273 - [CLKID_SANA] = &meson8b_sana.hw, 3274 - [CLKID_VPU_INTR] = &meson8b_vpu_intr.hw, 3275 - [CLKID_SEC_AHB_AHB3_BRIDGE] = &meson8b_sec_ahb_ahb3_bridge.hw, 3276 - [CLKID_CLK81_A9] = &meson8b_clk81_a9.hw, 3277 - [CLKID_VCLK2_VENCI0] = &meson8b_vclk2_venci0.hw, 3278 - [CLKID_VCLK2_VENCI1] = &meson8b_vclk2_venci1.hw, 3279 - [CLKID_VCLK2_VENCP0] = &meson8b_vclk2_vencp0.hw, 3280 - [CLKID_VCLK2_VENCP1] = &meson8b_vclk2_vencp1.hw, 3281 - [CLKID_GCLK_VENCI_INT] = &meson8b_gclk_venci_int.hw, 3282 - [CLKID_GCLK_VENCP_INT] = &meson8b_gclk_vencp_int.hw, 3283 - [CLKID_DAC_CLK] = &meson8b_dac_clk.hw, 3284 - [CLKID_AOCLK_GATE] = &meson8b_aoclk_gate.hw, 3285 - [CLKID_IEC958_GATE] = &meson8b_iec958_gate.hw, 3286 - [CLKID_ENC480P] = &meson8b_enc480p.hw, 3287 - [CLKID_RNG1] = &meson8b_rng1.hw, 3288 - [CLKID_GCLK_VENCL_INT] = &meson8b_gclk_vencl_int.hw, 3289 - [CLKID_VCLK2_VENCLMCC] = &meson8b_vclk2_venclmcc.hw, 3290 - [CLKID_VCLK2_VENCL] = &meson8b_vclk2_vencl.hw, 3291 - [CLKID_VCLK2_OTHER] = &meson8b_vclk2_other.hw, 3292 - [CLKID_EDP] = &meson8b_edp.hw, 3293 - [CLKID_AO_MEDIA_CPU] = &meson8b_ao_media_cpu.hw, 3294 - [CLKID_AO_AHB_SRAM] = &meson8b_ao_ahb_sram.hw, 3295 - [CLKID_AO_AHB_BUS] = &meson8b_ao_ahb_bus.hw, 3296 - [CLKID_AO_IFACE] = &meson8b_ao_iface.hw, 3297 - [CLKID_MPLL0] = &meson8b_mpll0.hw, 3298 - [CLKID_MPLL1] = &meson8b_mpll1.hw, 3299 - [CLKID_MPLL2] = &meson8b_mpll2.hw, 3300 - [CLKID_MPLL0_DIV] = &meson8b_mpll0_div.hw, 3301 - [CLKID_MPLL1_DIV] = &meson8b_mpll1_div.hw, 3302 - [CLKID_MPLL2_DIV] = &meson8b_mpll2_div.hw, 3303 - [CLKID_CPU_IN_SEL] = &meson8b_cpu_in_sel.hw, 3304 - [CLKID_CPU_IN_DIV2] = &meson8b_cpu_in_div2.hw, 3305 - [CLKID_CPU_IN_DIV3] = &meson8b_cpu_in_div3.hw, 3306 - [CLKID_CPU_SCALE_DIV] = &meson8b_cpu_scale_div.hw, 3307 - [CLKID_CPU_SCALE_OUT_SEL] = &meson8b_cpu_scale_out_sel.hw, 3308 - [CLKID_MPLL_PREDIV] = &meson8b_mpll_prediv.hw, 3309 - [CLKID_FCLK_DIV2_DIV] = &meson8b_fclk_div2_div.hw, 3310 - [CLKID_FCLK_DIV3_DIV] = &meson8b_fclk_div3_div.hw, 3311 - [CLKID_FCLK_DIV4_DIV] = &meson8b_fclk_div4_div.hw, 3312 - [CLKID_FCLK_DIV5_DIV] = &meson8b_fclk_div5_div.hw, 3313 - [CLKID_FCLK_DIV7_DIV] = &meson8b_fclk_div7_div.hw, 3314 - [CLKID_NAND_SEL] = &meson8b_nand_clk_sel.hw, 3315 - [CLKID_NAND_DIV] = &meson8b_nand_clk_div.hw, 3316 - [CLKID_NAND_CLK] = &meson8b_nand_clk_gate.hw, 3317 - [CLKID_PLL_FIXED_DCO] = &meson8b_fixed_pll_dco.hw, 3318 - [CLKID_HDMI_PLL_DCO] = &meson8b_hdmi_pll_dco.hw, 3319 - [CLKID_PLL_SYS_DCO] = &meson8b_sys_pll_dco.hw, 3320 - [CLKID_CPU_CLK_DIV2] = &meson8b_cpu_clk_div2.hw, 3321 - [CLKID_CPU_CLK_DIV3] = &meson8b_cpu_clk_div3.hw, 3322 - [CLKID_CPU_CLK_DIV4] = &meson8b_cpu_clk_div4.hw, 3323 - [CLKID_CPU_CLK_DIV5] = &meson8b_cpu_clk_div5.hw, 3324 - [CLKID_CPU_CLK_DIV6] = &meson8b_cpu_clk_div6.hw, 3325 - [CLKID_CPU_CLK_DIV7] = &meson8b_cpu_clk_div7.hw, 3326 - [CLKID_CPU_CLK_DIV8] = &meson8b_cpu_clk_div8.hw, 3327 - [CLKID_APB_SEL] = &meson8b_apb_clk_sel.hw, 3328 - [CLKID_APB] = &meson8b_apb_clk_gate.hw, 3329 - [CLKID_PERIPH_SEL] = &meson8b_periph_clk_sel.hw, 3330 - [CLKID_PERIPH] = &meson8b_periph_clk_gate.hw, 3331 - [CLKID_AXI_SEL] = &meson8b_axi_clk_sel.hw, 3332 - [CLKID_AXI] = &meson8b_axi_clk_gate.hw, 3333 - [CLKID_L2_DRAM_SEL] = &meson8b_l2_dram_clk_sel.hw, 3334 - [CLKID_L2_DRAM] = &meson8b_l2_dram_clk_gate.hw, 3335 - [CLKID_HDMI_PLL_LVDS_OUT] = &meson8b_hdmi_pll_lvds_out.hw, 3336 - [CLKID_HDMI_PLL_HDMI_OUT] = &meson8b_hdmi_pll_hdmi_out.hw, 3337 - [CLKID_VID_PLL_IN_SEL] = &meson8b_vid_pll_in_sel.hw, 3338 - [CLKID_VID_PLL_IN_EN] = &meson8b_vid_pll_in_en.hw, 3339 - [CLKID_VID_PLL_PRE_DIV] = &meson8b_vid_pll_pre_div.hw, 3340 - [CLKID_VID_PLL_POST_DIV] = &meson8b_vid_pll_post_div.hw, 3341 - [CLKID_VID_PLL_FINAL_DIV] = &meson8b_vid_pll_final_div.hw, 3342 - [CLKID_VCLK_IN_SEL] = &meson8b_vclk_in_sel.hw, 3343 - [CLKID_VCLK_IN_EN] = &meson8b_vclk_in_en.hw, 3344 - [CLKID_VCLK_EN] = &meson8b_vclk_en.hw, 3345 - [CLKID_VCLK_DIV1] = &meson8b_vclk_div1_gate.hw, 3346 - [CLKID_VCLK_DIV2_DIV] = &meson8b_vclk_div2_div.hw, 3347 - [CLKID_VCLK_DIV2] = &meson8b_vclk_div2_div_gate.hw, 3348 - [CLKID_VCLK_DIV4_DIV] = &meson8b_vclk_div4_div.hw, 3349 - [CLKID_VCLK_DIV4] = &meson8b_vclk_div4_div_gate.hw, 3350 - [CLKID_VCLK_DIV6_DIV] = &meson8b_vclk_div6_div.hw, 3351 - [CLKID_VCLK_DIV6] = &meson8b_vclk_div6_div_gate.hw, 3352 - [CLKID_VCLK_DIV12_DIV] = &meson8b_vclk_div12_div.hw, 3353 - [CLKID_VCLK_DIV12] = &meson8b_vclk_div12_div_gate.hw, 3354 - [CLKID_VCLK2_IN_SEL] = &meson8b_vclk2_in_sel.hw, 3355 - [CLKID_VCLK2_IN_EN] = &meson8b_vclk2_clk_in_en.hw, 3356 - [CLKID_VCLK2_EN] = &meson8b_vclk2_clk_en.hw, 3357 - [CLKID_VCLK2_DIV1] = &meson8b_vclk2_div1_gate.hw, 3358 - [CLKID_VCLK2_DIV2_DIV] = &meson8b_vclk2_div2_div.hw, 3359 - [CLKID_VCLK2_DIV2] = &meson8b_vclk2_div2_div_gate.hw, 3360 - [CLKID_VCLK2_DIV4_DIV] = &meson8b_vclk2_div4_div.hw, 3361 - [CLKID_VCLK2_DIV4] = &meson8b_vclk2_div4_div_gate.hw, 3362 - [CLKID_VCLK2_DIV6_DIV] = &meson8b_vclk2_div6_div.hw, 3363 - [CLKID_VCLK2_DIV6] = &meson8b_vclk2_div6_div_gate.hw, 3364 - [CLKID_VCLK2_DIV12_DIV] = &meson8b_vclk2_div12_div.hw, 3365 - [CLKID_VCLK2_DIV12] = &meson8b_vclk2_div12_div_gate.hw, 3366 - [CLKID_CTS_ENCT_SEL] = &meson8b_cts_enct_sel.hw, 3367 - [CLKID_CTS_ENCT] = &meson8b_cts_enct.hw, 3368 - [CLKID_CTS_ENCP_SEL] = &meson8b_cts_encp_sel.hw, 3369 - [CLKID_CTS_ENCP] = &meson8b_cts_encp.hw, 3370 - [CLKID_CTS_ENCI_SEL] = &meson8b_cts_enci_sel.hw, 3371 - [CLKID_CTS_ENCI] = &meson8b_cts_enci.hw, 3372 - [CLKID_HDMI_TX_PIXEL_SEL] = &meson8b_hdmi_tx_pixel_sel.hw, 3373 - [CLKID_HDMI_TX_PIXEL] = &meson8b_hdmi_tx_pixel.hw, 3374 - [CLKID_CTS_ENCL_SEL] = &meson8b_cts_encl_sel.hw, 3375 - [CLKID_CTS_ENCL] = &meson8b_cts_encl.hw, 3376 - [CLKID_CTS_VDAC0_SEL] = &meson8b_cts_vdac0_sel.hw, 3377 - [CLKID_CTS_VDAC0] = &meson8b_cts_vdac0.hw, 3378 - [CLKID_HDMI_SYS_SEL] = &meson8b_hdmi_sys_sel.hw, 3379 - [CLKID_HDMI_SYS_DIV] = &meson8b_hdmi_sys_div.hw, 3380 - [CLKID_HDMI_SYS] = &meson8b_hdmi_sys.hw, 3381 - [CLKID_MALI_0_SEL] = &meson8b_mali_0_sel.hw, 3382 - [CLKID_MALI_0_DIV] = &meson8b_mali_0_div.hw, 3383 - [CLKID_MALI_0] = &meson8b_mali_0.hw, 3384 - [CLKID_MALI_1_SEL] = &meson8b_mali_1_sel.hw, 3385 - [CLKID_MALI_1_DIV] = &meson8b_mali_1_div.hw, 3386 - [CLKID_MALI_1] = &meson8b_mali_1.hw, 3387 - [CLKID_MALI] = &meson8b_mali.hw, 3388 - [CLKID_GP_PLL_DCO] = &meson8m2_gp_pll_dco.hw, 3389 - [CLKID_GP_PLL] = &meson8m2_gp_pll.hw, 3390 - [CLKID_VPU_0_SEL] = &meson8m2_vpu_0_sel.hw, 3391 - [CLKID_VPU_0_DIV] = &meson8b_vpu_0_div.hw, 3392 - [CLKID_VPU_0] = &meson8b_vpu_0.hw, 3393 - [CLKID_VPU_1_SEL] = &meson8m2_vpu_1_sel.hw, 3394 - [CLKID_VPU_1_DIV] = &meson8b_vpu_1_div.hw, 3395 - [CLKID_VPU_1] = &meson8b_vpu_1.hw, 3396 - [CLKID_VPU] = &meson8b_vpu.hw, 3397 - [CLKID_VDEC_1_SEL] = &meson8b_vdec_1_sel.hw, 3398 - [CLKID_VDEC_1_1_DIV] = &meson8b_vdec_1_1_div.hw, 3399 - [CLKID_VDEC_1_1] = &meson8b_vdec_1_1.hw, 3400 - [CLKID_VDEC_1_2_DIV] = &meson8b_vdec_1_2_div.hw, 3401 - [CLKID_VDEC_1_2] = &meson8b_vdec_1_2.hw, 3402 - [CLKID_VDEC_1] = &meson8b_vdec_1.hw, 3403 - [CLKID_VDEC_HCODEC_SEL] = &meson8b_vdec_hcodec_sel.hw, 3404 - [CLKID_VDEC_HCODEC_DIV] = &meson8b_vdec_hcodec_div.hw, 3405 - [CLKID_VDEC_HCODEC] = &meson8b_vdec_hcodec.hw, 3406 - [CLKID_VDEC_2_SEL] = &meson8b_vdec_2_sel.hw, 3407 - [CLKID_VDEC_2_DIV] = &meson8b_vdec_2_div.hw, 3408 - [CLKID_VDEC_2] = &meson8b_vdec_2.hw, 3409 - [CLKID_VDEC_HEVC_SEL] = &meson8b_vdec_hevc_sel.hw, 3410 - [CLKID_VDEC_HEVC_DIV] = &meson8b_vdec_hevc_div.hw, 3411 - [CLKID_VDEC_HEVC_EN] = &meson8b_vdec_hevc_en.hw, 3412 - [CLKID_VDEC_HEVC] = &meson8b_vdec_hevc.hw, 3413 - [CLKID_CTS_AMCLK_SEL] = &meson8b_cts_amclk_sel.hw, 3414 - [CLKID_CTS_AMCLK_DIV] = &meson8b_cts_amclk_div.hw, 3415 - [CLKID_CTS_AMCLK] = &meson8b_cts_amclk.hw, 3416 - [CLKID_CTS_MCLK_I958_SEL] = &meson8b_cts_mclk_i958_sel.hw, 3417 - [CLKID_CTS_MCLK_I958_DIV] = &meson8b_cts_mclk_i958_div.hw, 3418 - [CLKID_CTS_MCLK_I958] = &meson8b_cts_mclk_i958.hw, 3419 - [CLKID_CTS_I958] = &meson8b_cts_i958.hw, 3420 - [CLKID_VID_PLL_LVDS_EN] = &meson8b_vid_pll_lvds_en.hw, 3421 - [CLKID_HDMI_PLL_DCO_IN] = &hdmi_pll_dco_in.hw, 3422 - [CLK_NR_CLKS] = NULL, 3423 - }, 3424 - .num = CLK_NR_CLKS, 3194 + static struct clk_hw *meson8m2_hw_clks[] = { 3195 + [CLKID_PLL_FIXED] = &meson8b_fixed_pll.hw, 3196 + [CLKID_PLL_VID] = &meson8b_vid_pll.hw, 3197 + [CLKID_PLL_SYS] = &meson8b_sys_pll.hw, 3198 + [CLKID_FCLK_DIV2] = &meson8b_fclk_div2.hw, 3199 + [CLKID_FCLK_DIV3] = &meson8b_fclk_div3.hw, 3200 + [CLKID_FCLK_DIV4] = &meson8b_fclk_div4.hw, 3201 + [CLKID_FCLK_DIV5] = &meson8b_fclk_div5.hw, 3202 + [CLKID_FCLK_DIV7] = &meson8b_fclk_div7.hw, 3203 + [CLKID_CPUCLK] = &meson8b_cpu_clk.hw, 3204 + [CLKID_MPEG_SEL] = &meson8b_mpeg_clk_sel.hw, 3205 + [CLKID_MPEG_DIV] = &meson8b_mpeg_clk_div.hw, 3206 + [CLKID_CLK81] = &meson8b_clk81.hw, 3207 + [CLKID_DDR] = &meson8b_ddr.hw, 3208 + [CLKID_DOS] = &meson8b_dos.hw, 3209 + [CLKID_ISA] = &meson8b_isa.hw, 3210 + [CLKID_PL301] = &meson8b_pl301.hw, 3211 + [CLKID_PERIPHS] = &meson8b_periphs.hw, 3212 + [CLKID_SPICC] = &meson8b_spicc.hw, 3213 + [CLKID_I2C] = &meson8b_i2c.hw, 3214 + [CLKID_SAR_ADC] = &meson8b_sar_adc.hw, 3215 + [CLKID_SMART_CARD] = &meson8b_smart_card.hw, 3216 + [CLKID_RNG0] = &meson8b_rng0.hw, 3217 + [CLKID_UART0] = &meson8b_uart0.hw, 3218 + [CLKID_SDHC] = &meson8b_sdhc.hw, 3219 + [CLKID_STREAM] = &meson8b_stream.hw, 3220 + [CLKID_ASYNC_FIFO] = &meson8b_async_fifo.hw, 3221 + [CLKID_SDIO] = &meson8b_sdio.hw, 3222 + [CLKID_ABUF] = &meson8b_abuf.hw, 3223 + [CLKID_HIU_IFACE] = &meson8b_hiu_iface.hw, 3224 + [CLKID_ASSIST_MISC] = &meson8b_assist_misc.hw, 3225 + [CLKID_SPI] = &meson8b_spi.hw, 3226 + [CLKID_I2S_SPDIF] = &meson8b_i2s_spdif.hw, 3227 + [CLKID_ETH] = &meson8b_eth.hw, 3228 + [CLKID_DEMUX] = &meson8b_demux.hw, 3229 + [CLKID_AIU_GLUE] = &meson8b_aiu_glue.hw, 3230 + [CLKID_IEC958] = &meson8b_iec958.hw, 3231 + [CLKID_I2S_OUT] = &meson8b_i2s_out.hw, 3232 + [CLKID_AMCLK] = &meson8b_amclk.hw, 3233 + [CLKID_AIFIFO2] = &meson8b_aififo2.hw, 3234 + [CLKID_MIXER] = &meson8b_mixer.hw, 3235 + [CLKID_MIXER_IFACE] = &meson8b_mixer_iface.hw, 3236 + [CLKID_ADC] = &meson8b_adc.hw, 3237 + [CLKID_BLKMV] = &meson8b_blkmv.hw, 3238 + [CLKID_AIU] = &meson8b_aiu.hw, 3239 + [CLKID_UART1] = &meson8b_uart1.hw, 3240 + [CLKID_G2D] = &meson8b_g2d.hw, 3241 + [CLKID_USB0] = &meson8b_usb0.hw, 3242 + [CLKID_USB1] = &meson8b_usb1.hw, 3243 + [CLKID_RESET] = &meson8b_reset.hw, 3244 + [CLKID_NAND] = &meson8b_nand.hw, 3245 + [CLKID_DOS_PARSER] = &meson8b_dos_parser.hw, 3246 + [CLKID_USB] = &meson8b_usb.hw, 3247 + [CLKID_VDIN1] = &meson8b_vdin1.hw, 3248 + [CLKID_AHB_ARB0] = &meson8b_ahb_arb0.hw, 3249 + [CLKID_EFUSE] = &meson8b_efuse.hw, 3250 + [CLKID_BOOT_ROM] = &meson8b_boot_rom.hw, 3251 + [CLKID_AHB_DATA_BUS] = &meson8b_ahb_data_bus.hw, 3252 + [CLKID_AHB_CTRL_BUS] = &meson8b_ahb_ctrl_bus.hw, 3253 + [CLKID_HDMI_INTR_SYNC] = &meson8b_hdmi_intr_sync.hw, 3254 + [CLKID_HDMI_PCLK] = &meson8b_hdmi_pclk.hw, 3255 + [CLKID_USB1_DDR_BRIDGE] = &meson8b_usb1_ddr_bridge.hw, 3256 + [CLKID_USB0_DDR_BRIDGE] = &meson8b_usb0_ddr_bridge.hw, 3257 + [CLKID_MMC_PCLK] = &meson8b_mmc_pclk.hw, 3258 + [CLKID_DVIN] = &meson8b_dvin.hw, 3259 + [CLKID_UART2] = &meson8b_uart2.hw, 3260 + [CLKID_SANA] = &meson8b_sana.hw, 3261 + [CLKID_VPU_INTR] = &meson8b_vpu_intr.hw, 3262 + [CLKID_SEC_AHB_AHB3_BRIDGE] = &meson8b_sec_ahb_ahb3_bridge.hw, 3263 + [CLKID_CLK81_A9] = &meson8b_clk81_a9.hw, 3264 + [CLKID_VCLK2_VENCI0] = &meson8b_vclk2_venci0.hw, 3265 + [CLKID_VCLK2_VENCI1] = &meson8b_vclk2_venci1.hw, 3266 + [CLKID_VCLK2_VENCP0] = &meson8b_vclk2_vencp0.hw, 3267 + [CLKID_VCLK2_VENCP1] = &meson8b_vclk2_vencp1.hw, 3268 + [CLKID_GCLK_VENCI_INT] = &meson8b_gclk_venci_int.hw, 3269 + [CLKID_GCLK_VENCP_INT] = &meson8b_gclk_vencp_int.hw, 3270 + [CLKID_DAC_CLK] = &meson8b_dac_clk.hw, 3271 + [CLKID_AOCLK_GATE] = &meson8b_aoclk_gate.hw, 3272 + [CLKID_IEC958_GATE] = &meson8b_iec958_gate.hw, 3273 + [CLKID_ENC480P] = &meson8b_enc480p.hw, 3274 + [CLKID_RNG1] = &meson8b_rng1.hw, 3275 + [CLKID_GCLK_VENCL_INT] = &meson8b_gclk_vencl_int.hw, 3276 + [CLKID_VCLK2_VENCLMCC] = &meson8b_vclk2_venclmcc.hw, 3277 + [CLKID_VCLK2_VENCL] = &meson8b_vclk2_vencl.hw, 3278 + [CLKID_VCLK2_OTHER] = &meson8b_vclk2_other.hw, 3279 + [CLKID_EDP] = &meson8b_edp.hw, 3280 + [CLKID_AO_MEDIA_CPU] = &meson8b_ao_media_cpu.hw, 3281 + [CLKID_AO_AHB_SRAM] = &meson8b_ao_ahb_sram.hw, 3282 + [CLKID_AO_AHB_BUS] = &meson8b_ao_ahb_bus.hw, 3283 + [CLKID_AO_IFACE] = &meson8b_ao_iface.hw, 3284 + [CLKID_MPLL0] = &meson8b_mpll0.hw, 3285 + [CLKID_MPLL1] = &meson8b_mpll1.hw, 3286 + [CLKID_MPLL2] = &meson8b_mpll2.hw, 3287 + [CLKID_MPLL0_DIV] = &meson8b_mpll0_div.hw, 3288 + [CLKID_MPLL1_DIV] = &meson8b_mpll1_div.hw, 3289 + [CLKID_MPLL2_DIV] = &meson8b_mpll2_div.hw, 3290 + [CLKID_CPU_IN_SEL] = &meson8b_cpu_in_sel.hw, 3291 + [CLKID_CPU_IN_DIV2] = &meson8b_cpu_in_div2.hw, 3292 + [CLKID_CPU_IN_DIV3] = &meson8b_cpu_in_div3.hw, 3293 + [CLKID_CPU_SCALE_DIV] = &meson8b_cpu_scale_div.hw, 3294 + [CLKID_CPU_SCALE_OUT_SEL] = &meson8b_cpu_scale_out_sel.hw, 3295 + [CLKID_MPLL_PREDIV] = &meson8b_mpll_prediv.hw, 3296 + [CLKID_FCLK_DIV2_DIV] = &meson8b_fclk_div2_div.hw, 3297 + [CLKID_FCLK_DIV3_DIV] = &meson8b_fclk_div3_div.hw, 3298 + [CLKID_FCLK_DIV4_DIV] = &meson8b_fclk_div4_div.hw, 3299 + [CLKID_FCLK_DIV5_DIV] = &meson8b_fclk_div5_div.hw, 3300 + [CLKID_FCLK_DIV7_DIV] = &meson8b_fclk_div7_div.hw, 3301 + [CLKID_NAND_SEL] = &meson8b_nand_clk_sel.hw, 3302 + [CLKID_NAND_DIV] = &meson8b_nand_clk_div.hw, 3303 + [CLKID_NAND_CLK] = &meson8b_nand_clk_gate.hw, 3304 + [CLKID_PLL_FIXED_DCO] = &meson8b_fixed_pll_dco.hw, 3305 + [CLKID_HDMI_PLL_DCO] = &meson8b_hdmi_pll_dco.hw, 3306 + [CLKID_PLL_SYS_DCO] = &meson8b_sys_pll_dco.hw, 3307 + [CLKID_CPU_CLK_DIV2] = &meson8b_cpu_clk_div2.hw, 3308 + [CLKID_CPU_CLK_DIV3] = &meson8b_cpu_clk_div3.hw, 3309 + [CLKID_CPU_CLK_DIV4] = &meson8b_cpu_clk_div4.hw, 3310 + [CLKID_CPU_CLK_DIV5] = &meson8b_cpu_clk_div5.hw, 3311 + [CLKID_CPU_CLK_DIV6] = &meson8b_cpu_clk_div6.hw, 3312 + [CLKID_CPU_CLK_DIV7] = &meson8b_cpu_clk_div7.hw, 3313 + [CLKID_CPU_CLK_DIV8] = &meson8b_cpu_clk_div8.hw, 3314 + [CLKID_APB_SEL] = &meson8b_apb_clk_sel.hw, 3315 + [CLKID_APB] = &meson8b_apb_clk_gate.hw, 3316 + [CLKID_PERIPH_SEL] = &meson8b_periph_clk_sel.hw, 3317 + [CLKID_PERIPH] = &meson8b_periph_clk_gate.hw, 3318 + [CLKID_AXI_SEL] = &meson8b_axi_clk_sel.hw, 3319 + [CLKID_AXI] = &meson8b_axi_clk_gate.hw, 3320 + [CLKID_L2_DRAM_SEL] = &meson8b_l2_dram_clk_sel.hw, 3321 + [CLKID_L2_DRAM] = &meson8b_l2_dram_clk_gate.hw, 3322 + [CLKID_HDMI_PLL_LVDS_OUT] = &meson8b_hdmi_pll_lvds_out.hw, 3323 + [CLKID_HDMI_PLL_HDMI_OUT] = &meson8b_hdmi_pll_hdmi_out.hw, 3324 + [CLKID_VID_PLL_IN_SEL] = &meson8b_vid_pll_in_sel.hw, 3325 + [CLKID_VID_PLL_IN_EN] = &meson8b_vid_pll_in_en.hw, 3326 + [CLKID_VID_PLL_PRE_DIV] = &meson8b_vid_pll_pre_div.hw, 3327 + [CLKID_VID_PLL_POST_DIV] = &meson8b_vid_pll_post_div.hw, 3328 + [CLKID_VID_PLL_FINAL_DIV] = &meson8b_vid_pll_final_div.hw, 3329 + [CLKID_VCLK_IN_SEL] = &meson8b_vclk_in_sel.hw, 3330 + [CLKID_VCLK_IN_EN] = &meson8b_vclk_in_en.hw, 3331 + [CLKID_VCLK_EN] = &meson8b_vclk_en.hw, 3332 + [CLKID_VCLK_DIV1] = &meson8b_vclk_div1_gate.hw, 3333 + [CLKID_VCLK_DIV2_DIV] = &meson8b_vclk_div2_div.hw, 3334 + [CLKID_VCLK_DIV2] = &meson8b_vclk_div2_div_gate.hw, 3335 + [CLKID_VCLK_DIV4_DIV] = &meson8b_vclk_div4_div.hw, 3336 + [CLKID_VCLK_DIV4] = &meson8b_vclk_div4_div_gate.hw, 3337 + [CLKID_VCLK_DIV6_DIV] = &meson8b_vclk_div6_div.hw, 3338 + [CLKID_VCLK_DIV6] = &meson8b_vclk_div6_div_gate.hw, 3339 + [CLKID_VCLK_DIV12_DIV] = &meson8b_vclk_div12_div.hw, 3340 + [CLKID_VCLK_DIV12] = &meson8b_vclk_div12_div_gate.hw, 3341 + [CLKID_VCLK2_IN_SEL] = &meson8b_vclk2_in_sel.hw, 3342 + [CLKID_VCLK2_IN_EN] = &meson8b_vclk2_clk_in_en.hw, 3343 + [CLKID_VCLK2_EN] = &meson8b_vclk2_clk_en.hw, 3344 + [CLKID_VCLK2_DIV1] = &meson8b_vclk2_div1_gate.hw, 3345 + [CLKID_VCLK2_DIV2_DIV] = &meson8b_vclk2_div2_div.hw, 3346 + [CLKID_VCLK2_DIV2] = &meson8b_vclk2_div2_div_gate.hw, 3347 + [CLKID_VCLK2_DIV4_DIV] = &meson8b_vclk2_div4_div.hw, 3348 + [CLKID_VCLK2_DIV4] = &meson8b_vclk2_div4_div_gate.hw, 3349 + [CLKID_VCLK2_DIV6_DIV] = &meson8b_vclk2_div6_div.hw, 3350 + [CLKID_VCLK2_DIV6] = &meson8b_vclk2_div6_div_gate.hw, 3351 + [CLKID_VCLK2_DIV12_DIV] = &meson8b_vclk2_div12_div.hw, 3352 + [CLKID_VCLK2_DIV12] = &meson8b_vclk2_div12_div_gate.hw, 3353 + [CLKID_CTS_ENCT_SEL] = &meson8b_cts_enct_sel.hw, 3354 + [CLKID_CTS_ENCT] = &meson8b_cts_enct.hw, 3355 + [CLKID_CTS_ENCP_SEL] = &meson8b_cts_encp_sel.hw, 3356 + [CLKID_CTS_ENCP] = &meson8b_cts_encp.hw, 3357 + [CLKID_CTS_ENCI_SEL] = &meson8b_cts_enci_sel.hw, 3358 + [CLKID_CTS_ENCI] = &meson8b_cts_enci.hw, 3359 + [CLKID_HDMI_TX_PIXEL_SEL] = &meson8b_hdmi_tx_pixel_sel.hw, 3360 + [CLKID_HDMI_TX_PIXEL] = &meson8b_hdmi_tx_pixel.hw, 3361 + [CLKID_CTS_ENCL_SEL] = &meson8b_cts_encl_sel.hw, 3362 + [CLKID_CTS_ENCL] = &meson8b_cts_encl.hw, 3363 + [CLKID_CTS_VDAC0_SEL] = &meson8b_cts_vdac0_sel.hw, 3364 + [CLKID_CTS_VDAC0] = &meson8b_cts_vdac0.hw, 3365 + [CLKID_HDMI_SYS_SEL] = &meson8b_hdmi_sys_sel.hw, 3366 + [CLKID_HDMI_SYS_DIV] = &meson8b_hdmi_sys_div.hw, 3367 + [CLKID_HDMI_SYS] = &meson8b_hdmi_sys.hw, 3368 + [CLKID_MALI_0_SEL] = &meson8b_mali_0_sel.hw, 3369 + [CLKID_MALI_0_DIV] = &meson8b_mali_0_div.hw, 3370 + [CLKID_MALI_0] = &meson8b_mali_0.hw, 3371 + [CLKID_MALI_1_SEL] = &meson8b_mali_1_sel.hw, 3372 + [CLKID_MALI_1_DIV] = &meson8b_mali_1_div.hw, 3373 + [CLKID_MALI_1] = &meson8b_mali_1.hw, 3374 + [CLKID_MALI] = &meson8b_mali.hw, 3375 + [CLKID_GP_PLL_DCO] = &meson8m2_gp_pll_dco.hw, 3376 + [CLKID_GP_PLL] = &meson8m2_gp_pll.hw, 3377 + [CLKID_VPU_0_SEL] = &meson8m2_vpu_0_sel.hw, 3378 + [CLKID_VPU_0_DIV] = &meson8b_vpu_0_div.hw, 3379 + [CLKID_VPU_0] = &meson8b_vpu_0.hw, 3380 + [CLKID_VPU_1_SEL] = &meson8m2_vpu_1_sel.hw, 3381 + [CLKID_VPU_1_DIV] = &meson8b_vpu_1_div.hw, 3382 + [CLKID_VPU_1] = &meson8b_vpu_1.hw, 3383 + [CLKID_VPU] = &meson8b_vpu.hw, 3384 + [CLKID_VDEC_1_SEL] = &meson8b_vdec_1_sel.hw, 3385 + [CLKID_VDEC_1_1_DIV] = &meson8b_vdec_1_1_div.hw, 3386 + [CLKID_VDEC_1_1] = &meson8b_vdec_1_1.hw, 3387 + [CLKID_VDEC_1_2_DIV] = &meson8b_vdec_1_2_div.hw, 3388 + [CLKID_VDEC_1_2] = &meson8b_vdec_1_2.hw, 3389 + [CLKID_VDEC_1] = &meson8b_vdec_1.hw, 3390 + [CLKID_VDEC_HCODEC_SEL] = &meson8b_vdec_hcodec_sel.hw, 3391 + [CLKID_VDEC_HCODEC_DIV] = &meson8b_vdec_hcodec_div.hw, 3392 + [CLKID_VDEC_HCODEC] = &meson8b_vdec_hcodec.hw, 3393 + [CLKID_VDEC_2_SEL] = &meson8b_vdec_2_sel.hw, 3394 + [CLKID_VDEC_2_DIV] = &meson8b_vdec_2_div.hw, 3395 + [CLKID_VDEC_2] = &meson8b_vdec_2.hw, 3396 + [CLKID_VDEC_HEVC_SEL] = &meson8b_vdec_hevc_sel.hw, 3397 + [CLKID_VDEC_HEVC_DIV] = &meson8b_vdec_hevc_div.hw, 3398 + [CLKID_VDEC_HEVC_EN] = &meson8b_vdec_hevc_en.hw, 3399 + [CLKID_VDEC_HEVC] = &meson8b_vdec_hevc.hw, 3400 + [CLKID_CTS_AMCLK_SEL] = &meson8b_cts_amclk_sel.hw, 3401 + [CLKID_CTS_AMCLK_DIV] = &meson8b_cts_amclk_div.hw, 3402 + [CLKID_CTS_AMCLK] = &meson8b_cts_amclk.hw, 3403 + [CLKID_CTS_MCLK_I958_SEL] = &meson8b_cts_mclk_i958_sel.hw, 3404 + [CLKID_CTS_MCLK_I958_DIV] = &meson8b_cts_mclk_i958_div.hw, 3405 + [CLKID_CTS_MCLK_I958] = &meson8b_cts_mclk_i958.hw, 3406 + [CLKID_CTS_I958] = &meson8b_cts_i958.hw, 3407 + [CLKID_VID_PLL_LVDS_EN] = &meson8b_vid_pll_lvds_en.hw, 3408 + [CLKID_HDMI_PLL_DCO_IN] = &hdmi_pll_dco_in.hw, 3425 3409 }; 3426 3410 3427 3411 static struct clk_regmap *const meson8b_clk_regmaps[] = { ··· 3780 3788 .nb.notifier_call = meson8b_cpu_clk_notifier_cb, 3781 3789 }; 3782 3790 3791 + static struct meson_clk_hw_data meson8_clks = { 3792 + .hws = meson8_hw_clks, 3793 + .num = ARRAY_SIZE(meson8_hw_clks), 3794 + }; 3795 + 3796 + static struct meson_clk_hw_data meson8b_clks = { 3797 + .hws = meson8b_hw_clks, 3798 + .num = ARRAY_SIZE(meson8b_hw_clks), 3799 + }; 3800 + 3801 + static struct meson_clk_hw_data meson8m2_clks = { 3802 + .hws = meson8m2_hw_clks, 3803 + .num = ARRAY_SIZE(meson8m2_hw_clks), 3804 + }; 3805 + 3783 3806 static void __init meson8b_clkc_init_common(struct device_node *np, 3784 - struct clk_hw_onecell_data *clk_hw_onecell_data) 3807 + struct meson_clk_hw_data *hw_clks) 3785 3808 { 3786 3809 struct meson8b_clk_reset *rstc; 3787 3810 struct device_node *parent_np; ··· 3837 3830 * register all clks and start with the first used ID (which is 3838 3831 * CLKID_PLL_FIXED) 3839 3832 */ 3840 - for (i = CLKID_PLL_FIXED; i < CLK_NR_CLKS; i++) { 3833 + for (i = CLKID_PLL_FIXED; i < hw_clks->num; i++) { 3841 3834 /* array might be sparse */ 3842 - if (!clk_hw_onecell_data->hws[i]) 3835 + if (!hw_clks->hws[i]) 3843 3836 continue; 3844 3837 3845 - ret = of_clk_hw_register(np, clk_hw_onecell_data->hws[i]); 3838 + ret = of_clk_hw_register(np, hw_clks->hws[i]); 3846 3839 if (ret) 3847 3840 return; 3848 3841 } 3849 3842 3850 - meson8b_cpu_nb_data.cpu_clk = clk_hw_onecell_data->hws[CLKID_CPUCLK]; 3843 + meson8b_cpu_nb_data.cpu_clk = hw_clks->hws[CLKID_CPUCLK]; 3851 3844 3852 3845 /* 3853 3846 * FIXME we shouldn't program the muxes in notifier handlers. The ··· 3863 3856 return; 3864 3857 } 3865 3858 3866 - ret = of_clk_add_hw_provider(np, of_clk_hw_onecell_get, 3867 - clk_hw_onecell_data); 3859 + ret = of_clk_add_hw_provider(np, meson_clk_hw_get, hw_clks); 3868 3860 if (ret) 3869 3861 pr_err("%s: failed to register clock provider\n", __func__); 3870 3862 } 3871 3863 3872 3864 static void __init meson8_clkc_init(struct device_node *np) 3873 3865 { 3874 - return meson8b_clkc_init_common(np, &meson8_hw_onecell_data); 3866 + return meson8b_clkc_init_common(np, &meson8_clks); 3875 3867 } 3876 3868 3877 3869 static void __init meson8b_clkc_init(struct device_node *np) 3878 3870 { 3879 - return meson8b_clkc_init_common(np, &meson8b_hw_onecell_data); 3871 + return meson8b_clkc_init_common(np, &meson8b_clks); 3880 3872 } 3881 3873 3882 3874 static void __init meson8m2_clkc_init(struct device_node *np) 3883 3875 { 3884 - return meson8b_clkc_init_common(np, &meson8m2_hw_onecell_data); 3876 + return meson8b_clkc_init_common(np, &meson8m2_clks); 3885 3877 } 3886 3878 3887 3879 CLK_OF_DECLARE_DRIVER(meson8_clkc, "amlogic,meson8-clkc",
-117
drivers/clk/meson/meson8b.h
··· 77 77 #define HHI_MPLL_CNTL9 0x2A0 /* 0xa8 offset in data sheet */ 78 78 #define HHI_MPLL_CNTL10 0x2A4 /* 0xa9 offset in data sheet */ 79 79 80 - /* 81 - * CLKID index values 82 - * 83 - * These indices are entirely contrived and do not map onto the hardware. 84 - * It has now been decided to expose everything by default in the DT header: 85 - * include/dt-bindings/clock/gxbb-clkc.h. Only the clocks ids we don't want 86 - * to expose, such as the internal muxes and dividers of composite clocks, 87 - * will remain defined here. 88 - */ 89 - 90 - #define CLKID_MPLL0_DIV 96 91 - #define CLKID_MPLL1_DIV 97 92 - #define CLKID_MPLL2_DIV 98 93 - #define CLKID_CPU_IN_SEL 99 94 - #define CLKID_CPU_IN_DIV2 100 95 - #define CLKID_CPU_IN_DIV3 101 96 - #define CLKID_CPU_SCALE_DIV 102 97 - #define CLKID_CPU_SCALE_OUT_SEL 103 98 - #define CLKID_MPLL_PREDIV 104 99 - #define CLKID_FCLK_DIV2_DIV 105 100 - #define CLKID_FCLK_DIV3_DIV 106 101 - #define CLKID_FCLK_DIV4_DIV 107 102 - #define CLKID_FCLK_DIV5_DIV 108 103 - #define CLKID_FCLK_DIV7_DIV 109 104 - #define CLKID_NAND_SEL 110 105 - #define CLKID_NAND_DIV 111 106 - #define CLKID_PLL_FIXED_DCO 113 107 - #define CLKID_HDMI_PLL_DCO 114 108 - #define CLKID_PLL_SYS_DCO 115 109 - #define CLKID_CPU_CLK_DIV2 116 110 - #define CLKID_CPU_CLK_DIV3 117 111 - #define CLKID_CPU_CLK_DIV4 118 112 - #define CLKID_CPU_CLK_DIV5 119 113 - #define CLKID_CPU_CLK_DIV6 120 114 - #define CLKID_CPU_CLK_DIV7 121 115 - #define CLKID_CPU_CLK_DIV8 122 116 - #define CLKID_APB_SEL 123 117 - #define CLKID_PERIPH_SEL 125 118 - #define CLKID_AXI_SEL 127 119 - #define CLKID_L2_DRAM_SEL 129 120 - #define CLKID_HDMI_PLL_LVDS_OUT 131 121 - #define CLKID_VID_PLL_IN_SEL 133 122 - #define CLKID_VID_PLL_IN_EN 134 123 - #define CLKID_VID_PLL_PRE_DIV 135 124 - #define CLKID_VID_PLL_POST_DIV 136 125 - #define CLKID_VCLK_IN_EN 139 126 - #define CLKID_VCLK_DIV1 140 127 - #define CLKID_VCLK_DIV2_DIV 141 128 - #define CLKID_VCLK_DIV2 142 129 - #define CLKID_VCLK_DIV4_DIV 143 130 - #define CLKID_VCLK_DIV4 144 131 - #define CLKID_VCLK_DIV6_DIV 145 132 - #define CLKID_VCLK_DIV6 146 133 - #define CLKID_VCLK_DIV12_DIV 147 134 - #define CLKID_VCLK_DIV12 148 135 - #define CLKID_VCLK2_IN_EN 150 136 - #define CLKID_VCLK2_DIV1 151 137 - #define CLKID_VCLK2_DIV2_DIV 152 138 - #define CLKID_VCLK2_DIV2 153 139 - #define CLKID_VCLK2_DIV4_DIV 154 140 - #define CLKID_VCLK2_DIV4 155 141 - #define CLKID_VCLK2_DIV6_DIV 156 142 - #define CLKID_VCLK2_DIV6 157 143 - #define CLKID_VCLK2_DIV12_DIV 158 144 - #define CLKID_VCLK2_DIV12 159 145 - #define CLKID_CTS_ENCT_SEL 160 146 - #define CLKID_CTS_ENCP_SEL 162 147 - #define CLKID_CTS_ENCI_SEL 164 148 - #define CLKID_HDMI_TX_PIXEL_SEL 166 149 - #define CLKID_CTS_ENCL_SEL 168 150 - #define CLKID_CTS_VDAC0_SEL 170 151 - #define CLKID_HDMI_SYS_SEL 172 152 - #define CLKID_HDMI_SYS_DIV 173 153 - #define CLKID_MALI_0_SEL 175 154 - #define CLKID_MALI_0_DIV 176 155 - #define CLKID_MALI_0 177 156 - #define CLKID_MALI_1_SEL 178 157 - #define CLKID_MALI_1_DIV 179 158 - #define CLKID_MALI_1 180 159 - #define CLKID_GP_PLL_DCO 181 160 - #define CLKID_GP_PLL 182 161 - #define CLKID_VPU_0_SEL 183 162 - #define CLKID_VPU_0_DIV 184 163 - #define CLKID_VPU_0 185 164 - #define CLKID_VPU_1_SEL 186 165 - #define CLKID_VPU_1_DIV 187 166 - #define CLKID_VPU_1 189 167 - #define CLKID_VDEC_1_SEL 191 168 - #define CLKID_VDEC_1_1_DIV 192 169 - #define CLKID_VDEC_1_1 193 170 - #define CLKID_VDEC_1_2_DIV 194 171 - #define CLKID_VDEC_1_2 195 172 - #define CLKID_VDEC_HCODEC_SEL 197 173 - #define CLKID_VDEC_HCODEC_DIV 198 174 - #define CLKID_VDEC_2_SEL 200 175 - #define CLKID_VDEC_2_DIV 201 176 - #define CLKID_VDEC_HEVC_SEL 203 177 - #define CLKID_VDEC_HEVC_DIV 204 178 - #define CLKID_VDEC_HEVC_EN 205 179 - #define CLKID_CTS_AMCLK_SEL 207 180 - #define CLKID_CTS_AMCLK_DIV 208 181 - #define CLKID_CTS_MCLK_I958_SEL 210 182 - #define CLKID_CTS_MCLK_I958_DIV 211 183 - #define CLKID_VCLK_EN 214 184 - #define CLKID_VCLK2_EN 215 185 - #define CLKID_VID_PLL_LVDS_EN 216 186 - #define CLKID_HDMI_PLL_DCO_IN 217 187 - 188 - #define CLK_NR_CLKS 218 189 - 190 - /* 191 - * include the CLKID and RESETID that have 192 - * been made part of the stable DT binding 193 - */ 194 - #include <dt-bindings/clock/meson8b-clkc.h> 195 - #include <dt-bindings/reset/amlogic,meson8b-clkc-reset.h> 196 - 197 80 #endif /* __MESON8B_H */
+2 -1
drivers/clk/rockchip/clk-rk3568.c
··· 79 79 RK3036_PLL_RATE(135000000, 2, 45, 4, 1, 1, 0), 80 80 RK3036_PLL_RATE(119000000, 3, 119, 4, 2, 1, 0), 81 81 RK3036_PLL_RATE(108000000, 2, 45, 5, 1, 1, 0), 82 + RK3036_PLL_RATE(101000000, 1, 101, 6, 4, 1, 0), 82 83 RK3036_PLL_RATE(100000000, 1, 150, 6, 6, 1, 0), 83 84 RK3036_PLL_RATE(96000000, 1, 96, 6, 4, 1, 0), 84 - RK3036_PLL_RATE(78750000, 1, 96, 6, 4, 1, 0), 85 + RK3036_PLL_RATE(78750000, 4, 315, 6, 4, 1, 0), 85 86 RK3036_PLL_RATE(74250000, 2, 99, 4, 4, 1, 0), 86 87 { /* sentinel */ }, 87 88 };
+59
drivers/clk/rockchip/clk-rv1126.c
··· 175 175 PNAME(mux_i2s2_out2io_p) = { "mclk_i2s2", "xin12m" }; 176 176 PNAME(mux_gpll_cpll_xin24m_p) = { "gpll", "cpll", "xin24m" }; 177 177 PNAME(mux_audpwm_p) = { "sclk_audpwm_div", "sclk_audpwm_fracdiv", "xin24m" }; 178 + PNAME(mux_dclk_vop_p) = { "dclk_vop_div", "dclk_vop_fracdiv", "xin24m" }; 178 179 PNAME(mux_usb480m_gpll_p) = { "usb480m", "gpll" }; 179 180 PNAME(clk_gmac_src_m0_p) = { "clk_gmac_div", "clk_gmac_rgmii_m0" }; 180 181 PNAME(clk_gmac_src_m1_p) = { "clk_gmac_div", "clk_gmac_rgmii_m1" }; ··· 259 258 static struct rockchip_clk_branch rv1126_audpwm_fracmux __initdata = 260 259 MUX(SCLK_AUDPWM_MUX, "mclk_audpwm_mux", mux_audpwm_p, CLK_SET_RATE_PARENT, 261 260 RV1126_CLKSEL_CON(36), 8, 2, MFLAGS); 261 + 262 + static struct rockchip_clk_branch rv1126_dclk_vop_fracmux __initdata = 263 + MUX(DCLK_VOP_MUX, "dclk_vop_mux", mux_dclk_vop_p, CLK_SET_RATE_PARENT, 264 + RV1126_CLKSEL_CON(47), 10, 2, MFLAGS); 262 265 263 266 static struct rockchip_clk_branch rv1126_clk_pmu_branches[] __initdata = { 264 267 /* ··· 720 715 RV1126_CLKGATE_CON(11), 1, GFLAGS), 721 716 722 717 /* 718 + * Clock-Architecture Diagram 9 719 + */ 720 + /* PD_VO */ 721 + COMPOSITE(ACLK_PDVO, "aclk_pdvo", mux_gpll_cpll_p, 0, 722 + RV1126_CLKSEL_CON(45), 7, 1, MFLAGS, 0, 5, DFLAGS, 723 + RV1126_CLKGATE_CON(14), 0, GFLAGS), 724 + COMPOSITE_NOMUX(HCLK_PDVO, "hclk_pdvo", "aclk_pdvo", 0, 725 + RV1126_CLKSEL_CON(45), 8, 5, DFLAGS, 726 + RV1126_CLKGATE_CON(14), 1, GFLAGS), 727 + COMPOSITE_NOMUX(PCLK_PDVO, "pclk_pdvo", "aclk_pdvo", 0, 728 + RV1126_CLKSEL_CON(46), 8, 5, DFLAGS, 729 + RV1126_CLKGATE_CON(14), 2, GFLAGS), 730 + GATE(ACLK_RGA, "aclk_rga", "aclk_pdvo", 0, 731 + RV1126_CLKGATE_CON(14), 6, GFLAGS), 732 + GATE(HCLK_RGA, "hclk_rga", "hclk_pdvo", 0, 733 + RV1126_CLKGATE_CON(14), 7, GFLAGS), 734 + COMPOSITE(CLK_RGA_CORE, "clk_rga_core", mux_gpll_cpll_p, 0, 735 + RV1126_CLKSEL_CON(46), 7, 1, MFLAGS, 0, 5, DFLAGS, 736 + RV1126_CLKGATE_CON(14), 8, GFLAGS), 737 + GATE(ACLK_VOP, "aclk_vop", "aclk_pdvo", 0, 738 + RV1126_CLKGATE_CON(14), 9, GFLAGS), 739 + GATE(HCLK_VOP, "hclk_vop", "hclk_pdvo", 0, 740 + RV1126_CLKGATE_CON(14), 10, GFLAGS), 741 + COMPOSITE(DCLK_VOP_DIV, "dclk_vop_div", mux_gpll_cpll_p, 0, 742 + RV1126_CLKSEL_CON(47), 8, 1, MFLAGS, 0, 8, DFLAGS, 743 + RV1126_CLKGATE_CON(14), 11, GFLAGS), 744 + COMPOSITE_FRACMUX(DCLK_VOP_FRACDIV, "dclk_vop_fracdiv", "dclk_vop_div", 745 + CLK_SET_RATE_PARENT, RV1126_CLKSEL_CON(48), 0, 746 + RV1126_CLKGATE_CON(14), 12, GFLAGS, 747 + &rv1126_dclk_vop_fracmux), 748 + GATE(DCLK_VOP, "dclk_vop", "dclk_vop_mux", 0, 749 + RV1126_CLKGATE_CON(14), 13, GFLAGS), 750 + GATE(PCLK_DSIHOST, "pclk_dsihost", "pclk_pdvo", 0, 751 + RV1126_CLKGATE_CON(14), 14, GFLAGS), 752 + GATE(ACLK_IEP, "aclk_iep", "aclk_pdvo", 0, 753 + RV1126_CLKGATE_CON(12), 7, GFLAGS), 754 + GATE(HCLK_IEP, "hclk_iep", "hclk_pdvo", 0, 755 + RV1126_CLKGATE_CON(12), 8, GFLAGS), 756 + COMPOSITE(CLK_IEP_CORE, "clk_iep_core", mux_gpll_cpll_p, 0, 757 + RV1126_CLKSEL_CON(54), 7, 1, MFLAGS, 0, 5, DFLAGS, 758 + RV1126_CLKGATE_CON(12), 9, GFLAGS), 759 + 760 + /* 723 761 * Clock-Architecture Diagram 12 724 762 */ 725 763 /* PD_PHP */ ··· 952 904 RV1126_CLKGATE_CON(9), 2, GFLAGS), 953 905 GATE(0, "pclk_pdaudio_niu", "hclk_pdaudio", CLK_IGNORE_UNUSED, 954 906 RV1126_CLKGATE_CON(9), 3, GFLAGS), 907 + 908 + /* 909 + * Clock-Architecture Diagram 9 910 + */ 911 + /* PD_VO */ 912 + GATE(0, "aclk_pdvo_niu", "aclk_pdvo", CLK_IGNORE_UNUSED, 913 + RV1126_CLKGATE_CON(14), 3, GFLAGS), 914 + GATE(0, "hclk_pdvo_niu", "hclk_pdvo", CLK_IGNORE_UNUSED, 915 + RV1126_CLKGATE_CON(14), 4, GFLAGS), 916 + GATE(0, "pclk_pdvo_niu", "pclk_pdvo", CLK_IGNORE_UNUSED, 917 + RV1126_CLKGATE_CON(14), 5, GFLAGS), 955 918 956 919 /* 957 920 * Clock-Architecture Diagram 12
+18 -23
drivers/clk/sunxi-ng/ccu-sun50i-a64.c
··· 68 68 BIT(28), /* lock */ 69 69 CLK_SET_RATE_UNGATE); 70 70 71 - static SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK_MIN_MAX(pll_video0_clk, "pll-video0", 71 + static SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK_MIN_MAX_CLOSEST(pll_video0_clk, "pll-video0", 72 72 "osc24M", 0x010, 73 73 192000000, /* Minimum rate */ 74 74 1008000000, /* Maximum rate */ ··· 179 179 .common = { 180 180 .reg = 0x040, 181 181 .hw.init = CLK_HW_INIT("pll-mipi", "pll-video0", 182 - &ccu_nkm_ops, CLK_SET_RATE_UNGATE), 182 + &ccu_nkm_ops, 183 + CLK_SET_RATE_UNGATE | CLK_SET_RATE_PARENT), 184 + .features = CCU_FEATURE_CLOSEST_RATE, 183 185 }, 184 186 }; 185 187 ··· 538 536 539 537 static const char * const tcon0_parents[] = { "pll-mipi", "pll-video0-2x" }; 540 538 static const u8 tcon0_table[] = { 0, 2, }; 541 - static SUNXI_CCU_MUX_TABLE_WITH_GATE(tcon0_clk, "tcon0", tcon0_parents, 542 - tcon0_table, 0x118, 24, 3, BIT(31), 543 - CLK_SET_RATE_PARENT | 544 - CLK_SET_RATE_NO_REPARENT); 539 + static SUNXI_CCU_MUX_TABLE_WITH_GATE_CLOSEST(tcon0_clk, "tcon0", tcon0_parents, 540 + tcon0_table, 0x118, 24, 3, BIT(31), 541 + CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT); 545 542 546 543 static const char * const tcon1_parents[] = { "pll-video0", "pll-video1" }; 547 544 static const u8 tcon1_table[] = { 0, 2, }; 548 - static struct ccu_div tcon1_clk = { 549 - .enable = BIT(31), 550 - .div = _SUNXI_CCU_DIV(0, 4), 551 - .mux = _SUNXI_CCU_MUX_TABLE(24, 2, tcon1_table), 552 - .common = { 553 - .reg = 0x11c, 554 - .hw.init = CLK_HW_INIT_PARENTS("tcon1", 555 - tcon1_parents, 556 - &ccu_div_ops, 557 - CLK_SET_RATE_PARENT), 558 - }, 559 - }; 545 + static SUNXI_CCU_M_WITH_MUX_TABLE_GATE_CLOSEST(tcon1_clk, "tcon1", tcon1_parents, 546 + tcon1_table, 0x11c, 547 + 0, 4, /* M */ 548 + 24, 2, /* mux */ 549 + BIT(31), /* gate */ 550 + CLK_SET_RATE_PARENT); 560 551 561 552 static const char * const deinterlace_parents[] = { "pll-periph0", "pll-periph1" }; 562 553 static SUNXI_CCU_M_WITH_MUX_GATE(deinterlace_clk, "deinterlace", deinterlace_parents, ··· 579 584 0x144, BIT(31), 0); 580 585 581 586 static const char * const hdmi_parents[] = { "pll-video0", "pll-video1" }; 582 - static SUNXI_CCU_M_WITH_MUX_GATE(hdmi_clk, "hdmi", hdmi_parents, 583 - 0x150, 0, 4, 24, 2, BIT(31), CLK_SET_RATE_PARENT); 587 + static SUNXI_CCU_M_WITH_MUX_GATE_CLOSEST(hdmi_clk, "hdmi", hdmi_parents, 588 + 0x150, 0, 4, 24, 2, BIT(31), CLK_SET_RATE_PARENT); 584 589 585 590 static SUNXI_CCU_GATE(hdmi_ddc_clk, "hdmi-ddc", "osc24M", 586 591 0x154, BIT(31), 0); ··· 592 597 593 598 static const char * const dsi_dphy_parents[] = { "pll-video0", "pll-periph0" }; 594 599 static const u8 dsi_dphy_table[] = { 0, 2, }; 595 - static SUNXI_CCU_M_WITH_MUX_TABLE_GATE(dsi_dphy_clk, "dsi-dphy", 596 - dsi_dphy_parents, dsi_dphy_table, 597 - 0x168, 0, 4, 8, 2, BIT(15), CLK_SET_RATE_PARENT); 600 + static SUNXI_CCU_M_WITH_MUX_TABLE_GATE_CLOSEST(dsi_dphy_clk, "dsi-dphy", 601 + dsi_dphy_parents, dsi_dphy_table, 602 + 0x168, 0, 4, 8, 2, BIT(15), CLK_SET_RATE_PARENT); 598 603 599 604 static SUNXI_CCU_M_WITH_GATE(gpu_clk, "gpu", "pll-gpu", 600 605 0x1a0, 0, 3, BIT(31), CLK_SET_RATE_PARENT);
+12
drivers/clk/sunxi-ng/ccu_common.c
··· 39 39 } 40 40 EXPORT_SYMBOL_NS_GPL(ccu_helper_wait_for_lock, SUNXI_CCU); 41 41 42 + bool ccu_is_better_rate(struct ccu_common *common, 43 + unsigned long target_rate, 44 + unsigned long current_rate, 45 + unsigned long best_rate) 46 + { 47 + if (common->features & CCU_FEATURE_CLOSEST_RATE) 48 + return abs(current_rate - target_rate) < abs(best_rate - target_rate); 49 + 50 + return current_rate <= target_rate && current_rate > best_rate; 51 + } 52 + EXPORT_SYMBOL_NS_GPL(ccu_is_better_rate, SUNXI_CCU); 53 + 42 54 /* 43 55 * This clock notifier is called when the frequency of a PLL clock is 44 56 * changed. In common PLL designs, changes to the dividers take effect
+6
drivers/clk/sunxi-ng/ccu_common.h
··· 18 18 #define CCU_FEATURE_MMC_TIMING_SWITCH BIT(6) 19 19 #define CCU_FEATURE_SIGMA_DELTA_MOD BIT(7) 20 20 #define CCU_FEATURE_KEY_FIELD BIT(8) 21 + #define CCU_FEATURE_CLOSEST_RATE BIT(9) 21 22 22 23 /* MMC timing mode switch bit */ 23 24 #define CCU_MMC_NEW_TIMING_MODE BIT(30) ··· 52 51 }; 53 52 54 53 void ccu_helper_wait_for_lock(struct ccu_common *common, u32 lock); 54 + 55 + bool ccu_is_better_rate(struct ccu_common *common, 56 + unsigned long target_rate, 57 + unsigned long current_rate, 58 + unsigned long best_rate); 55 59 56 60 struct ccu_pll_nb { 57 61 struct notifier_block clk_nb;
+30
drivers/clk/sunxi-ng/ccu_div.h
··· 143 143 }, \ 144 144 } 145 145 146 + #define SUNXI_CCU_M_WITH_MUX_TABLE_GATE_CLOSEST(_struct, _name, \ 147 + _parents, _table, \ 148 + _reg, \ 149 + _mshift, _mwidth, \ 150 + _muxshift, _muxwidth, \ 151 + _gate, _flags) \ 152 + struct ccu_div _struct = { \ 153 + .enable = _gate, \ 154 + .div = _SUNXI_CCU_DIV_FLAGS(_mshift, _mwidth, CLK_DIVIDER_ROUND_CLOSEST), \ 155 + .mux = _SUNXI_CCU_MUX_TABLE(_muxshift, _muxwidth, _table), \ 156 + .common = { \ 157 + .reg = _reg, \ 158 + .hw.init = CLK_HW_INIT_PARENTS(_name, \ 159 + _parents, \ 160 + &ccu_div_ops, \ 161 + _flags), \ 162 + .features = CCU_FEATURE_CLOSEST_RATE, \ 163 + }, \ 164 + } 165 + 146 166 #define SUNXI_CCU_M_WITH_MUX_GATE(_struct, _name, _parents, _reg, \ 147 167 _mshift, _mwidth, _muxshift, _muxwidth, \ 148 168 _gate, _flags) \ ··· 171 151 _reg, _mshift, _mwidth, \ 172 152 _muxshift, _muxwidth, \ 173 153 _gate, _flags) 154 + 155 + #define SUNXI_CCU_M_WITH_MUX_GATE_CLOSEST(_struct, _name, _parents, \ 156 + _reg, _mshift, _mwidth, \ 157 + _muxshift, _muxwidth, \ 158 + _gate, _flags) \ 159 + SUNXI_CCU_M_WITH_MUX_TABLE_GATE_CLOSEST(_struct, _name, \ 160 + _parents, NULL, \ 161 + _reg, _mshift, _mwidth, \ 162 + _muxshift, _muxwidth, \ 163 + _gate, _flags) 174 164 175 165 #define SUNXI_CCU_M_WITH_MUX(_struct, _name, _parents, _reg, \ 176 166 _mshift, _mwidth, _muxshift, _muxwidth, \
+1 -1
drivers/clk/sunxi-ng/ccu_mmc_timing.c
··· 43 43 EXPORT_SYMBOL_GPL(sunxi_ccu_set_mmc_timing_mode); 44 44 45 45 /** 46 - * sunxi_ccu_set_mmc_timing_mode: Get the current MMC clock timing mode 46 + * sunxi_ccu_get_mmc_timing_mode: Get the current MMC clock timing mode 47 47 * @clk: clock to query 48 48 * 49 49 * Return: %0 if the clock is in old timing mode, > %0 if it is in
+13 -2
drivers/clk/sunxi-ng/ccu_mux.c
··· 139 139 goto out; 140 140 } 141 141 142 - if ((req->rate - tmp_rate) < (req->rate - best_rate)) { 142 + if (ccu_is_better_rate(common, req->rate, tmp_rate, best_rate)) { 143 143 best_rate = tmp_rate; 144 144 best_parent_rate = parent_rate; 145 145 best_parent = parent; ··· 242 242 return ccu_mux_helper_set_parent(&cm->common, &cm->mux, index); 243 243 } 244 244 245 + static int ccu_mux_determine_rate(struct clk_hw *hw, 246 + struct clk_rate_request *req) 247 + { 248 + struct ccu_mux *cm = hw_to_ccu_mux(hw); 249 + 250 + if (cm->common.features & CCU_FEATURE_CLOSEST_RATE) 251 + return clk_mux_determine_rate_flags(hw, req, CLK_MUX_ROUND_CLOSEST); 252 + 253 + return clk_mux_determine_rate_flags(hw, req, 0); 254 + } 255 + 245 256 static unsigned long ccu_mux_recalc_rate(struct clk_hw *hw, 246 257 unsigned long parent_rate) 247 258 { ··· 270 259 .get_parent = ccu_mux_get_parent, 271 260 .set_parent = ccu_mux_set_parent, 272 261 273 - .determine_rate = __clk_mux_determine_rate, 262 + .determine_rate = ccu_mux_determine_rate, 274 263 .recalc_rate = ccu_mux_recalc_rate, 275 264 }; 276 265 EXPORT_SYMBOL_NS_GPL(ccu_mux_ops, SUNXI_CCU);
+27 -11
drivers/clk/sunxi-ng/ccu_mux.h
··· 46 46 struct ccu_common common; 47 47 }; 48 48 49 + #define SUNXI_CCU_MUX_TABLE_WITH_GATE_FEAT(_struct, _name, _parents, _table, \ 50 + _reg, _shift, _width, _gate, \ 51 + _flags, _features) \ 52 + struct ccu_mux _struct = { \ 53 + .enable = _gate, \ 54 + .mux = _SUNXI_CCU_MUX_TABLE(_shift, _width, _table), \ 55 + .common = { \ 56 + .reg = _reg, \ 57 + .hw.init = CLK_HW_INIT_PARENTS(_name, \ 58 + _parents, \ 59 + &ccu_mux_ops, \ 60 + _flags), \ 61 + .features = _features, \ 62 + } \ 63 + } 64 + 65 + #define SUNXI_CCU_MUX_TABLE_WITH_GATE_CLOSEST(_struct, _name, _parents, \ 66 + _table, _reg, _shift, \ 67 + _width, _gate, _flags) \ 68 + SUNXI_CCU_MUX_TABLE_WITH_GATE_FEAT(_struct, _name, _parents, \ 69 + _table, _reg, _shift, \ 70 + _width, _gate, _flags, \ 71 + CCU_FEATURE_CLOSEST_RATE) 72 + 49 73 #define SUNXI_CCU_MUX_TABLE_WITH_GATE(_struct, _name, _parents, _table, \ 50 74 _reg, _shift, _width, _gate, \ 51 75 _flags) \ 52 - struct ccu_mux _struct = { \ 53 - .enable = _gate, \ 54 - .mux = _SUNXI_CCU_MUX_TABLE(_shift, _width, _table), \ 55 - .common = { \ 56 - .reg = _reg, \ 57 - .hw.init = CLK_HW_INIT_PARENTS(_name, \ 58 - _parents, \ 59 - &ccu_mux_ops, \ 60 - _flags), \ 61 - } \ 62 - } 76 + SUNXI_CCU_MUX_TABLE_WITH_GATE_FEAT(_struct, _name, _parents, \ 77 + _table, _reg, _shift, \ 78 + _width, _gate, _flags, 0) 63 79 64 80 #define SUNXI_CCU_MUX_WITH_GATE(_struct, _name, _parents, _reg, \ 65 81 _shift, _width, _gate, _flags) \
+48 -7
drivers/clk/sunxi-ng/ccu_nkm.c
··· 16 16 unsigned long m, min_m, max_m; 17 17 }; 18 18 19 + static unsigned long ccu_nkm_find_best_with_parent_adj(struct ccu_common *common, 20 + struct clk_hw *parent_hw, 21 + unsigned long *parent, unsigned long rate, 22 + struct _ccu_nkm *nkm) 23 + { 24 + unsigned long best_rate = 0, best_parent_rate = *parent, tmp_parent = *parent; 25 + unsigned long best_n = 0, best_k = 0, best_m = 0; 26 + unsigned long _n, _k, _m; 27 + 28 + for (_k = nkm->min_k; _k <= nkm->max_k; _k++) { 29 + for (_n = nkm->min_n; _n <= nkm->max_n; _n++) { 30 + for (_m = nkm->min_m; _m <= nkm->max_m; _m++) { 31 + unsigned long tmp_rate; 32 + 33 + tmp_parent = clk_hw_round_rate(parent_hw, rate * _m / (_n * _k)); 34 + 35 + tmp_rate = tmp_parent * _n * _k / _m; 36 + 37 + if (ccu_is_better_rate(common, rate, tmp_rate, best_rate) || 38 + (tmp_parent == *parent && tmp_rate == best_rate)) { 39 + best_rate = tmp_rate; 40 + best_parent_rate = tmp_parent; 41 + best_n = _n; 42 + best_k = _k; 43 + best_m = _m; 44 + } 45 + } 46 + } 47 + } 48 + 49 + nkm->n = best_n; 50 + nkm->k = best_k; 51 + nkm->m = best_m; 52 + 53 + *parent = best_parent_rate; 54 + 55 + return best_rate; 56 + } 57 + 19 58 static unsigned long ccu_nkm_find_best(unsigned long parent, unsigned long rate, 20 - struct _ccu_nkm *nkm) 59 + struct _ccu_nkm *nkm, struct ccu_common *common) 21 60 { 22 61 unsigned long best_rate = 0; 23 62 unsigned long best_n = 0, best_k = 0, best_m = 0; ··· 69 30 70 31 tmp_rate = parent * _n * _k / _m; 71 32 72 - if (tmp_rate > rate) 73 - continue; 74 - if ((rate - tmp_rate) < (rate - best_rate)) { 33 + if (ccu_is_better_rate(common, rate, tmp_rate, best_rate)) { 75 34 best_rate = tmp_rate; 76 35 best_n = _n; 77 36 best_k = _k; ··· 143 106 } 144 107 145 108 static unsigned long ccu_nkm_round_rate(struct ccu_mux_internal *mux, 146 - struct clk_hw *hw, 109 + struct clk_hw *parent_hw, 147 110 unsigned long *parent_rate, 148 111 unsigned long rate, 149 112 void *data) ··· 161 124 if (nkm->common.features & CCU_FEATURE_FIXED_POSTDIV) 162 125 rate *= nkm->fixed_post_div; 163 126 164 - rate = ccu_nkm_find_best(*parent_rate, rate, &_nkm); 127 + if (!clk_hw_can_set_rate_parent(&nkm->common.hw)) 128 + rate = ccu_nkm_find_best(*parent_rate, rate, &_nkm, &nkm->common); 129 + else 130 + rate = ccu_nkm_find_best_with_parent_adj(&nkm->common, parent_hw, parent_rate, rate, 131 + &_nkm); 165 132 166 133 if (nkm->common.features & CCU_FEATURE_FIXED_POSTDIV) 167 134 rate /= nkm->fixed_post_div; ··· 200 159 _nkm.min_m = 1; 201 160 _nkm.max_m = nkm->m.max ?: 1 << nkm->m.width; 202 161 203 - ccu_nkm_find_best(parent_rate, rate, &_nkm); 162 + ccu_nkm_find_best(parent_rate, rate, &_nkm, &nkm->common); 204 163 205 164 spin_lock_irqsave(nkm->common.lock, flags); 206 165
+5 -8
drivers/clk/sunxi-ng/ccu_nm.c
··· 27 27 return rate; 28 28 } 29 29 30 - static unsigned long ccu_nm_find_best(unsigned long parent, unsigned long rate, 31 - struct _ccu_nm *nm) 30 + static unsigned long ccu_nm_find_best(struct ccu_common *common, unsigned long parent, 31 + unsigned long rate, struct _ccu_nm *nm) 32 32 { 33 33 unsigned long best_rate = 0; 34 34 unsigned long best_n = 0, best_m = 0; ··· 39 39 unsigned long tmp_rate = ccu_nm_calc_rate(parent, 40 40 _n, _m); 41 41 42 - if (tmp_rate > rate) 43 - continue; 44 - 45 - if ((rate - tmp_rate) < (rate - best_rate)) { 42 + if (ccu_is_better_rate(common, rate, tmp_rate, best_rate)) { 46 43 best_rate = tmp_rate; 47 44 best_n = _n; 48 45 best_m = _m; ··· 156 159 _nm.min_m = 1; 157 160 _nm.max_m = nm->m.max ?: 1 << nm->m.width; 158 161 159 - rate = ccu_nm_find_best(*parent_rate, rate, &_nm); 162 + rate = ccu_nm_find_best(&nm->common, *parent_rate, rate, &_nm); 160 163 161 164 if (nm->common.features & CCU_FEATURE_FIXED_POSTDIV) 162 165 rate /= nm->fixed_post_div; ··· 207 210 &_nm.m, &_nm.n); 208 211 } else { 209 212 ccu_sdm_helper_disable(&nm->common, &nm->sdm); 210 - ccu_nm_find_best(parent_rate, rate, &_nm); 213 + ccu_nm_find_best(&nm->common, parent_rate, rate, &_nm); 211 214 } 212 215 213 216 spin_lock_irqsave(nm->common.lock, flags);
+45 -3
drivers/clk/sunxi-ng/ccu_nm.h
··· 108 108 }, \ 109 109 } 110 110 111 - #define SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK_MIN_MAX(_struct, _name, \ 111 + #define SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK_MIN_MAX_FEAT(_struct, _name, \ 112 112 _parent, _reg, \ 113 113 _min_rate, _max_rate, \ 114 114 _nshift, _nwidth, \ ··· 116 116 _frac_en, _frac_sel, \ 117 117 _frac_rate_0, \ 118 118 _frac_rate_1, \ 119 - _gate, _lock, _flags) \ 119 + _gate, _lock, _flags, \ 120 + _features) \ 120 121 struct ccu_nm _struct = { \ 121 122 .enable = _gate, \ 122 123 .lock = _lock, \ ··· 130 129 .max_rate = _max_rate, \ 131 130 .common = { \ 132 131 .reg = _reg, \ 133 - .features = CCU_FEATURE_FRACTIONAL, \ 132 + .features = _features, \ 134 133 .hw.init = CLK_HW_INIT(_name, \ 135 134 _parent, \ 136 135 &ccu_nm_ops, \ 137 136 _flags), \ 138 137 }, \ 139 138 } 139 + 140 + #define SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK_MIN_MAX(_struct, _name, \ 141 + _parent, _reg, \ 142 + _min_rate, _max_rate, \ 143 + _nshift, _nwidth, \ 144 + _mshift, _mwidth, \ 145 + _frac_en, _frac_sel, \ 146 + _frac_rate_0, \ 147 + _frac_rate_1, \ 148 + _gate, _lock, _flags) \ 149 + SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK_MIN_MAX_FEAT(_struct, _name, \ 150 + _parent, _reg, \ 151 + _min_rate, _max_rate, \ 152 + _nshift, _nwidth, \ 153 + _mshift, _mwidth, \ 154 + _frac_en, _frac_sel, \ 155 + _frac_rate_0, \ 156 + _frac_rate_1, \ 157 + _gate, _lock, _flags, \ 158 + CCU_FEATURE_FRACTIONAL) 159 + 160 + #define SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK_MIN_MAX_CLOSEST(_struct, _name, \ 161 + _parent, _reg, \ 162 + _min_rate, _max_rate, \ 163 + _nshift, _nwidth, \ 164 + _mshift, _mwidth, \ 165 + _frac_en, _frac_sel, \ 166 + _frac_rate_0, \ 167 + _frac_rate_1, \ 168 + _gate, _lock, _flags) \ 169 + SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK_MIN_MAX_FEAT(_struct, _name, \ 170 + _parent, _reg, \ 171 + _min_rate, _max_rate, \ 172 + _nshift, _nwidth, \ 173 + _mshift, _mwidth, \ 174 + _frac_en, _frac_sel, \ 175 + _frac_rate_0, \ 176 + _frac_rate_1, \ 177 + _gate, _lock, _flags, \ 178 + CCU_FEATURE_FRACTIONAL |\ 179 + CCU_FEATURE_CLOSEST_RATE) 140 180 141 181 #define SUNXI_CCU_NM_WITH_GATE_LOCK(_struct, _name, _parent, _reg, \ 142 182 _nshift, _nwidth, \
+4 -6
drivers/clk/sunxi/clk-sun9i-mmc.c
··· 107 107 108 108 spin_lock_init(&data->lock); 109 109 110 - r = platform_get_resource(pdev, IORESOURCE_MEM, 0); 111 - if (!r) 112 - return -EINVAL; 113 - /* one clock/reset pair per word */ 114 - count = DIV_ROUND_UP((resource_size(r)), SUN9I_MMC_WIDTH); 115 - data->membase = devm_ioremap_resource(&pdev->dev, r); 110 + data->membase = devm_platform_get_and_ioremap_resource(pdev, 0, &r); 116 111 if (IS_ERR(data->membase)) 117 112 return PTR_ERR(data->membase); 113 + 114 + /* one clock/reset pair per word */ 115 + count = DIV_ROUND_UP((resource_size(r)), SUN9I_MMC_WIDTH); 118 116 119 117 clk_data = &data->clk_data; 120 118 clk_data->clk_num = count;
+2 -4
drivers/clk/tegra/clk.c
··· 14 14 #include <linux/platform_device.h> 15 15 #include <linux/pm_runtime.h> 16 16 #include <linux/reset-controller.h> 17 - #include <linux/string.h> 17 + #include <linux/string_helpers.h> 18 18 19 19 #include <soc/tegra/fuse.h> 20 20 ··· 384 384 struct device_node *np; 385 385 char *node_name; 386 386 387 - node_name = kstrdup(hw->init->name, GFP_KERNEL); 387 + node_name = kstrdup_and_replace(hw->init->name, '_', '-', GFP_KERNEL); 388 388 if (!node_name) 389 389 return NULL; 390 - 391 - strreplace(node_name, '_', '-'); 392 390 393 391 for_each_child_of_node(tegra_car_np, np) { 394 392 if (!strcmp(np->name, node_name))
+2 -2
drivers/clk/ti/clk.c
··· 16 16 #include <linux/of_address.h> 17 17 #include <linux/list.h> 18 18 #include <linux/regmap.h> 19 + #include <linux/string_helpers.h> 19 20 #include <linux/memblock.h> 20 21 #include <linux/device.h> 21 22 ··· 124 123 const char *n; 125 124 char *tmp; 126 125 127 - tmp = kstrdup(name, GFP_KERNEL); 126 + tmp = kstrdup_and_replace(name, '-', '_', GFP_KERNEL); 128 127 if (!tmp) 129 128 return NULL; 130 - strreplace(tmp, '-', '_'); 131 129 132 130 /* Node named "clock" with "clock-output-names" */ 133 131 for_each_of_allnodes_from(from, np) {
+5 -4
drivers/clk/ti/clkctrl.c
··· 13 13 #include <linux/of_address.h> 14 14 #include <linux/clk/ti.h> 15 15 #include <linux/delay.h> 16 + #include <linux/string_helpers.h> 16 17 #include <linux/timekeeping.h> 17 18 #include "clock.h" 18 19 ··· 474 473 const int prefix_len = 11; 475 474 const char *compat; 476 475 const char *output; 476 + const char *end; 477 477 char *name; 478 478 479 479 if (!of_property_read_string_index(np, "clock-output-names", 0, 480 480 &output)) { 481 - const char *end; 482 481 int len; 483 482 484 483 len = strlen(output); ··· 492 491 493 492 of_property_for_each_string(np, "compatible", prop, compat) { 494 493 if (!strncmp("ti,clkctrl-", compat, prefix_len)) { 494 + end = compat + prefix_len; 495 495 /* Two letter minimum name length for l3, l4 etc */ 496 - if (strnlen(compat + prefix_len, 16) < 2) 496 + if (strnlen(end, 16) < 2) 497 497 continue; 498 - name = kasprintf(GFP_KERNEL, "%s", compat + prefix_len); 498 + name = kstrdup_and_replace(end, '-', '_', GFP_KERNEL); 499 499 if (!name) 500 500 continue; 501 - strreplace(name, '-', '_'); 502 501 503 502 return name; 504 503 }
+53
include/dt-bindings/clock/amlogic,a1-peripherals-clkc.h
··· 10 10 #ifndef __A1_PERIPHERALS_CLKC_H 11 11 #define __A1_PERIPHERALS_CLKC_H 12 12 13 + #define CLKID_XTAL_IN 0 13 14 #define CLKID_FIXPLL_IN 1 14 15 #define CLKID_USB_PHY_IN 2 15 16 #define CLKID_USB_CTRL_IN 3 ··· 71 70 #define CLKID_CPU_CTRL 58 72 71 #define CLKID_ROM 59 73 72 #define CLKID_PROC_I2C 60 73 + #define CLKID_DSPA_SEL 61 74 + #define CLKID_DSPB_SEL 62 74 75 #define CLKID_DSPA_EN 63 75 76 #define CLKID_DSPA_EN_NIC 64 76 77 #define CLKID_DSPB_EN 65 ··· 84 81 #define CLKID_12M 71 85 82 #define CLKID_FCLK_DIV2_DIVN 72 86 83 #define CLKID_GEN 73 84 + #define CLKID_SARADC_SEL 74 87 85 #define CLKID_SARADC 75 88 86 #define CLKID_PWM_A 76 89 87 #define CLKID_PWM_B 77 ··· 99 95 #define CLKID_SD_EMMC 86 100 96 #define CLKID_PSRAM 87 101 97 #define CLKID_DMC 88 98 + #define CLKID_SYS_A_SEL 89 99 + #define CLKID_SYS_A_DIV 90 100 + #define CLKID_SYS_A 91 101 + #define CLKID_SYS_B_SEL 92 102 + #define CLKID_SYS_B_DIV 93 103 + #define CLKID_SYS_B 94 102 104 #define CLKID_DSPA_A_SEL 95 105 + #define CLKID_DSPA_A_DIV 96 106 + #define CLKID_DSPA_A 97 103 107 #define CLKID_DSPA_B_SEL 98 108 + #define CLKID_DSPA_B_DIV 99 109 + #define CLKID_DSPA_B 100 104 110 #define CLKID_DSPB_A_SEL 101 111 + #define CLKID_DSPB_A_DIV 102 112 + #define CLKID_DSPB_A 103 105 113 #define CLKID_DSPB_B_SEL 104 114 + #define CLKID_DSPB_B_DIV 105 115 + #define CLKID_DSPB_B 106 116 + #define CLKID_RTC_32K_IN 107 117 + #define CLKID_RTC_32K_DIV 108 118 + #define CLKID_RTC_32K_XTAL 109 119 + #define CLKID_RTC_32K_SEL 110 120 + #define CLKID_CECB_32K_IN 111 121 + #define CLKID_CECB_32K_DIV 112 106 122 #define CLKID_CECB_32K_SEL_PRE 113 107 123 #define CLKID_CECB_32K_SEL 114 124 + #define CLKID_CECA_32K_IN 115 125 + #define CLKID_CECA_32K_DIV 116 108 126 #define CLKID_CECA_32K_SEL_PRE 117 109 127 #define CLKID_CECA_32K_SEL 118 128 + #define CLKID_DIV2_PRE 119 129 + #define CLKID_24M_DIV2 120 110 130 #define CLKID_GEN_SEL 121 131 + #define CLKID_GEN_DIV 122 132 + #define CLKID_SARADC_DIV 123 111 133 #define CLKID_PWM_A_SEL 124 134 + #define CLKID_PWM_A_DIV 125 112 135 #define CLKID_PWM_B_SEL 126 136 + #define CLKID_PWM_B_DIV 127 113 137 #define CLKID_PWM_C_SEL 128 138 + #define CLKID_PWM_C_DIV 129 114 139 #define CLKID_PWM_D_SEL 130 140 + #define CLKID_PWM_D_DIV 131 115 141 #define CLKID_PWM_E_SEL 132 142 + #define CLKID_PWM_E_DIV 133 116 143 #define CLKID_PWM_F_SEL 134 144 + #define CLKID_PWM_F_DIV 135 145 + #define CLKID_SPICC_SEL 136 146 + #define CLKID_SPICC_DIV 137 147 + #define CLKID_SPICC_SEL2 138 148 + #define CLKID_TS_DIV 139 149 + #define CLKID_SPIFC_SEL 140 150 + #define CLKID_SPIFC_DIV 141 151 + #define CLKID_SPIFC_SEL2 142 152 + #define CLKID_USB_BUS_SEL 143 153 + #define CLKID_USB_BUS_DIV 144 154 + #define CLKID_SD_EMMC_SEL 145 155 + #define CLKID_SD_EMMC_DIV 146 117 156 #define CLKID_SD_EMMC_SEL2 147 157 + #define CLKID_PSRAM_SEL 148 158 + #define CLKID_PSRAM_DIV 149 159 + #define CLKID_PSRAM_SEL2 150 160 + #define CLKID_DMC_SEL 151 161 + #define CLKID_DMC_DIV 152 162 + #define CLKID_DMC_SEL2 153 118 163 119 164 #endif /* __A1_PERIPHERALS_CLKC_H */
+5
include/dt-bindings/clock/amlogic,a1-pll-clkc.h
··· 10 10 #ifndef __A1_PLL_CLKC_H 11 11 #define __A1_PLL_CLKC_H 12 12 13 + #define CLKID_FIXED_PLL_DCO 0 13 14 #define CLKID_FIXED_PLL 1 15 + #define CLKID_FCLK_DIV2_DIV 2 16 + #define CLKID_FCLK_DIV3_DIV 3 17 + #define CLKID_FCLK_DIV5_DIV 4 18 + #define CLKID_FCLK_DIV7_DIV 5 14 19 #define CLKID_FCLK_DIV2 6 15 20 #define CLKID_FCLK_DIV3 7 16 21 #define CLKID_FCLK_DIV5 8
+65
include/dt-bindings/clock/axg-audio-clkc.h
··· 37 37 #define AUD_CLKID_SPDIFIN_CLK 56 38 38 #define AUD_CLKID_PDM_DCLK 57 39 39 #define AUD_CLKID_PDM_SYSCLK 58 40 + #define AUD_CLKID_MST_A_MCLK_SEL 59 41 + #define AUD_CLKID_MST_B_MCLK_SEL 60 42 + #define AUD_CLKID_MST_C_MCLK_SEL 61 43 + #define AUD_CLKID_MST_D_MCLK_SEL 62 44 + #define AUD_CLKID_MST_E_MCLK_SEL 63 45 + #define AUD_CLKID_MST_F_MCLK_SEL 64 46 + #define AUD_CLKID_MST_A_MCLK_DIV 65 47 + #define AUD_CLKID_MST_B_MCLK_DIV 66 48 + #define AUD_CLKID_MST_C_MCLK_DIV 67 49 + #define AUD_CLKID_MST_D_MCLK_DIV 68 50 + #define AUD_CLKID_MST_E_MCLK_DIV 69 51 + #define AUD_CLKID_MST_F_MCLK_DIV 70 52 + #define AUD_CLKID_SPDIFOUT_CLK_SEL 71 53 + #define AUD_CLKID_SPDIFOUT_CLK_DIV 72 54 + #define AUD_CLKID_SPDIFIN_CLK_SEL 73 55 + #define AUD_CLKID_SPDIFIN_CLK_DIV 74 56 + #define AUD_CLKID_PDM_DCLK_SEL 75 57 + #define AUD_CLKID_PDM_DCLK_DIV 76 58 + #define AUD_CLKID_PDM_SYSCLK_SEL 77 59 + #define AUD_CLKID_PDM_SYSCLK_DIV 78 40 60 #define AUD_CLKID_MST_A_SCLK 79 41 61 #define AUD_CLKID_MST_B_SCLK 80 42 62 #define AUD_CLKID_MST_C_SCLK 81 ··· 69 49 #define AUD_CLKID_MST_D_LRCLK 89 70 50 #define AUD_CLKID_MST_E_LRCLK 90 71 51 #define AUD_CLKID_MST_F_LRCLK 91 52 + #define AUD_CLKID_MST_A_SCLK_PRE_EN 92 53 + #define AUD_CLKID_MST_B_SCLK_PRE_EN 93 54 + #define AUD_CLKID_MST_C_SCLK_PRE_EN 94 55 + #define AUD_CLKID_MST_D_SCLK_PRE_EN 95 56 + #define AUD_CLKID_MST_E_SCLK_PRE_EN 96 57 + #define AUD_CLKID_MST_F_SCLK_PRE_EN 97 58 + #define AUD_CLKID_MST_A_SCLK_DIV 98 59 + #define AUD_CLKID_MST_B_SCLK_DIV 99 60 + #define AUD_CLKID_MST_C_SCLK_DIV 100 61 + #define AUD_CLKID_MST_D_SCLK_DIV 101 62 + #define AUD_CLKID_MST_E_SCLK_DIV 102 63 + #define AUD_CLKID_MST_F_SCLK_DIV 103 64 + #define AUD_CLKID_MST_A_SCLK_POST_EN 104 65 + #define AUD_CLKID_MST_B_SCLK_POST_EN 105 66 + #define AUD_CLKID_MST_C_SCLK_POST_EN 106 67 + #define AUD_CLKID_MST_D_SCLK_POST_EN 107 68 + #define AUD_CLKID_MST_E_SCLK_POST_EN 108 69 + #define AUD_CLKID_MST_F_SCLK_POST_EN 109 70 + #define AUD_CLKID_MST_A_LRCLK_DIV 110 71 + #define AUD_CLKID_MST_B_LRCLK_DIV 111 72 + #define AUD_CLKID_MST_C_LRCLK_DIV 112 73 + #define AUD_CLKID_MST_D_LRCLK_DIV 113 74 + #define AUD_CLKID_MST_E_LRCLK_DIV 114 75 + #define AUD_CLKID_MST_F_LRCLK_DIV 115 72 76 #define AUD_CLKID_TDMIN_A_SCLK_SEL 116 73 77 #define AUD_CLKID_TDMIN_B_SCLK_SEL 117 74 78 #define AUD_CLKID_TDMIN_C_SCLK_SEL 118 ··· 114 70 #define AUD_CLKID_TDMOUT_A_LRCLK 134 115 71 #define AUD_CLKID_TDMOUT_B_LRCLK 135 116 72 #define AUD_CLKID_TDMOUT_C_LRCLK 136 73 + #define AUD_CLKID_TDMIN_A_SCLK_PRE_EN 137 74 + #define AUD_CLKID_TDMIN_B_SCLK_PRE_EN 138 75 + #define AUD_CLKID_TDMIN_C_SCLK_PRE_EN 139 76 + #define AUD_CLKID_TDMIN_LB_SCLK_PRE_EN 140 77 + #define AUD_CLKID_TDMOUT_A_SCLK_PRE_EN 141 78 + #define AUD_CLKID_TDMOUT_B_SCLK_PRE_EN 142 79 + #define AUD_CLKID_TDMOUT_C_SCLK_PRE_EN 143 80 + #define AUD_CLKID_TDMIN_A_SCLK_POST_EN 144 81 + #define AUD_CLKID_TDMIN_B_SCLK_POST_EN 145 82 + #define AUD_CLKID_TDMIN_C_SCLK_POST_EN 146 83 + #define AUD_CLKID_TDMIN_LB_SCLK_POST_EN 147 84 + #define AUD_CLKID_TDMOUT_A_SCLK_POST_EN 148 85 + #define AUD_CLKID_TDMOUT_B_SCLK_POST_EN 149 86 + #define AUD_CLKID_TDMOUT_C_SCLK_POST_EN 150 117 87 #define AUD_CLKID_SPDIFOUT_B 151 118 88 #define AUD_CLKID_SPDIFOUT_B_CLK 152 89 + #define AUD_CLKID_SPDIFOUT_B_CLK_SEL 153 90 + #define AUD_CLKID_SPDIFOUT_B_CLK_DIV 154 119 91 #define AUD_CLKID_TDM_MCLK_PAD0 155 120 92 #define AUD_CLKID_TDM_MCLK_PAD1 156 121 93 #define AUD_CLKID_TDM_LRCLK_PAD0 157 ··· 150 90 #define AUD_CLKID_FRDDR_D 170 151 91 #define AUD_CLKID_TODDR_D 171 152 92 #define AUD_CLKID_LOOPBACK_B 172 93 + #define AUD_CLKID_CLK81_EN 173 94 + #define AUD_CLKID_SYSCLK_A_DIV 174 95 + #define AUD_CLKID_SYSCLK_B_DIV 175 96 + #define AUD_CLKID_SYSCLK_A_EN 176 97 + #define AUD_CLKID_SYSCLK_B_EN 177 153 98 154 99 #endif /* __AXG_AUDIO_CLKC_BINDINGS_H */
+48
include/dt-bindings/clock/axg-clkc.h
··· 16 16 #define CLKID_FCLK_DIV5 5 17 17 #define CLKID_FCLK_DIV7 6 18 18 #define CLKID_GP0_PLL 7 19 + #define CLKID_MPEG_SEL 8 20 + #define CLKID_MPEG_DIV 9 19 21 #define CLKID_CLK81 10 20 22 #define CLKID_MPLL0 11 21 23 #define CLKID_MPLL1 12 ··· 69 67 #define CLKID_AO_I2C 58 70 68 #define CLKID_SD_EMMC_B_CLK0 59 71 69 #define CLKID_SD_EMMC_C_CLK0 60 70 + #define CLKID_SD_EMMC_B_CLK0_SEL 61 71 + #define CLKID_SD_EMMC_B_CLK0_DIV 62 72 + #define CLKID_SD_EMMC_C_CLK0_SEL 63 73 + #define CLKID_SD_EMMC_C_CLK0_DIV 64 74 + #define CLKID_MPLL0_DIV 65 75 + #define CLKID_MPLL1_DIV 66 76 + #define CLKID_MPLL2_DIV 67 77 + #define CLKID_MPLL3_DIV 68 72 78 #define CLKID_HIFI_PLL 69 79 + #define CLKID_MPLL_PREDIV 70 80 + #define CLKID_FCLK_DIV2_DIV 71 81 + #define CLKID_FCLK_DIV3_DIV 72 82 + #define CLKID_FCLK_DIV4_DIV 73 83 + #define CLKID_FCLK_DIV5_DIV 74 84 + #define CLKID_FCLK_DIV7_DIV 75 85 + #define CLKID_PCIE_PLL 76 86 + #define CLKID_PCIE_MUX 77 87 + #define CLKID_PCIE_REF 78 73 88 #define CLKID_PCIE_CML_EN0 79 74 89 #define CLKID_PCIE_CML_EN1 80 90 + #define CLKID_GEN_CLK_SEL 82 91 + #define CLKID_GEN_CLK_DIV 83 75 92 #define CLKID_GEN_CLK 84 93 + #define CLKID_SYS_PLL_DCO 85 94 + #define CLKID_FIXED_PLL_DCO 86 95 + #define CLKID_GP0_PLL_DCO 87 96 + #define CLKID_HIFI_PLL_DCO 88 97 + #define CLKID_PCIE_PLL_DCO 89 98 + #define CLKID_PCIE_PLL_OD 90 99 + #define CLKID_VPU_0_DIV 91 76 100 #define CLKID_VPU_0_SEL 92 77 101 #define CLKID_VPU_0 93 102 + #define CLKID_VPU_1_DIV 94 78 103 #define CLKID_VPU_1_SEL 95 79 104 #define CLKID_VPU_1 96 80 105 #define CLKID_VPU 97 106 + #define CLKID_VAPB_0_DIV 98 81 107 #define CLKID_VAPB_0_SEL 99 82 108 #define CLKID_VAPB_0 100 109 + #define CLKID_VAPB_1_DIV 101 83 110 #define CLKID_VAPB_1_SEL 102 84 111 #define CLKID_VAPB_1 103 85 112 #define CLKID_VAPB_SEL 104 86 113 #define CLKID_VAPB 105 87 114 #define CLKID_VCLK 106 88 115 #define CLKID_VCLK2 107 116 + #define CLKID_VCLK_SEL 108 117 + #define CLKID_VCLK2_SEL 109 118 + #define CLKID_VCLK_INPUT 110 119 + #define CLKID_VCLK2_INPUT 111 120 + #define CLKID_VCLK_DIV 112 121 + #define CLKID_VCLK2_DIV 113 122 + #define CLKID_VCLK_DIV2_EN 114 123 + #define CLKID_VCLK_DIV4_EN 115 124 + #define CLKID_VCLK_DIV6_EN 116 125 + #define CLKID_VCLK_DIV12_EN 117 126 + #define CLKID_VCLK2_DIV2_EN 118 127 + #define CLKID_VCLK2_DIV4_EN 119 128 + #define CLKID_VCLK2_DIV6_EN 120 129 + #define CLKID_VCLK2_DIV12_EN 121 89 130 #define CLKID_VCLK_DIV1 122 90 131 #define CLKID_VCLK_DIV2 123 91 132 #define CLKID_VCLK_DIV4 124 ··· 139 94 #define CLKID_VCLK2_DIV4 129 140 95 #define CLKID_VCLK2_DIV6 130 141 96 #define CLKID_VCLK2_DIV12 131 97 + #define CLKID_CTS_ENCL_SEL 132 142 98 #define CLKID_CTS_ENCL 133 99 + #define CLKID_VDIN_MEAS_SEL 134 100 + #define CLKID_VDIN_MEAS_DIV 135 143 101 #define CLKID_VDIN_MEAS 136 144 102 145 103 #endif /* __AXG_CLKC_H */
+7
include/dt-bindings/clock/g12a-aoclkc.h
··· 26 26 #define CLKID_AO_M4_FCLK 13 27 27 #define CLKID_AO_M4_HCLK 14 28 28 #define CLKID_AO_CLK81 15 29 + #define CLKID_AO_SAR_ADC_DIV 17 29 30 #define CLKID_AO_SAR_ADC_SEL 16 30 31 #define CLKID_AO_SAR_ADC_CLK 18 31 32 #define CLKID_AO_CTS_OSCIN 19 33 + #define CLKID_AO_32K_PRE 20 34 + #define CLKID_AO_32K_DIV 21 35 + #define CLKID_AO_32K_SEL 22 32 36 #define CLKID_AO_32K 23 37 + #define CLKID_AO_CEC_PRE 24 38 + #define CLKID_AO_CEC_DIV 25 39 + #define CLKID_AO_CEC_SEL 26 33 40 #define CLKID_AO_CEC 27 34 41 #define CLKID_AO_CTS_RTC_OSCIN 28 35 42
+130
include/dt-bindings/clock/g12a-clkc.h
··· 16 16 #define CLKID_FCLK_DIV5 5 17 17 #define CLKID_FCLK_DIV7 6 18 18 #define CLKID_GP0_PLL 7 19 + #define CLKID_MPEG_SEL 8 20 + #define CLKID_MPEG_DIV 9 19 21 #define CLKID_CLK81 10 20 22 #define CLKID_MPLL0 11 21 23 #define CLKID_MPLL1 12 ··· 71 69 #define CLKID_SD_EMMC_A_CLK0 60 72 70 #define CLKID_SD_EMMC_B_CLK0 61 73 71 #define CLKID_SD_EMMC_C_CLK0 62 72 + #define CLKID_SD_EMMC_A_CLK0_SEL 63 73 + #define CLKID_SD_EMMC_A_CLK0_DIV 64 74 + #define CLKID_SD_EMMC_B_CLK0_SEL 65 75 + #define CLKID_SD_EMMC_B_CLK0_DIV 66 76 + #define CLKID_SD_EMMC_C_CLK0_SEL 67 77 + #define CLKID_SD_EMMC_C_CLK0_DIV 68 78 + #define CLKID_MPLL0_DIV 69 79 + #define CLKID_MPLL1_DIV 70 80 + #define CLKID_MPLL2_DIV 71 81 + #define CLKID_MPLL3_DIV 72 82 + #define CLKID_MPLL_PREDIV 73 74 83 #define CLKID_HIFI_PLL 74 84 + #define CLKID_FCLK_DIV2_DIV 75 85 + #define CLKID_FCLK_DIV3_DIV 76 86 + #define CLKID_FCLK_DIV4_DIV 77 87 + #define CLKID_FCLK_DIV5_DIV 78 88 + #define CLKID_FCLK_DIV7_DIV 79 75 89 #define CLKID_VCLK2_VENCI0 80 76 90 #define CLKID_VCLK2_VENCI1 81 77 91 #define CLKID_VCLK2_VENCP0 82 ··· 108 90 #define CLKID_VCLK2_VENCL 97 109 91 #define CLKID_VCLK2_OTHER1 98 110 92 #define CLKID_FCLK_DIV2P5 99 93 + #define CLKID_FCLK_DIV2P5_DIV 100 94 + #define CLKID_FIXED_PLL_DCO 101 95 + #define CLKID_SYS_PLL_DCO 102 96 + #define CLKID_GP0_PLL_DCO 103 97 + #define CLKID_HIFI_PLL_DCO 104 111 98 #define CLKID_DMA 105 112 99 #define CLKID_EFUSE 106 113 100 #define CLKID_ROM_BOOT 107 114 101 #define CLKID_RESET_SEC 108 115 102 #define CLKID_SEC_AHB_APB3 109 116 103 #define CLKID_VPU_0_SEL 110 104 + #define CLKID_VPU_0_DIV 111 117 105 #define CLKID_VPU_0 112 118 106 #define CLKID_VPU_1_SEL 113 107 + #define CLKID_VPU_1_DIV 114 119 108 #define CLKID_VPU_1 115 120 109 #define CLKID_VPU 116 121 110 #define CLKID_VAPB_0_SEL 117 111 + #define CLKID_VAPB_0_DIV 118 122 112 #define CLKID_VAPB_0 119 123 113 #define CLKID_VAPB_1_SEL 120 114 + #define CLKID_VAPB_1_DIV 121 124 115 #define CLKID_VAPB_1 122 125 116 #define CLKID_VAPB_SEL 123 126 117 #define CLKID_VAPB 124 118 + #define CLKID_HDMI_PLL_DCO 125 119 + #define CLKID_HDMI_PLL_OD 126 120 + #define CLKID_HDMI_PLL_OD2 127 127 121 #define CLKID_HDMI_PLL 128 128 122 #define CLKID_VID_PLL 129 123 + #define CLKID_VID_PLL_SEL 130 124 + #define CLKID_VID_PLL_DIV 131 125 + #define CLKID_VCLK_SEL 132 126 + #define CLKID_VCLK2_SEL 133 127 + #define CLKID_VCLK_INPUT 134 128 + #define CLKID_VCLK2_INPUT 135 129 + #define CLKID_VCLK_DIV 136 130 + #define CLKID_VCLK2_DIV 137 129 131 #define CLKID_VCLK 138 130 132 #define CLKID_VCLK2 139 133 + #define CLKID_VCLK_DIV2_EN 140 134 + #define CLKID_VCLK_DIV4_EN 141 135 + #define CLKID_VCLK_DIV6_EN 142 136 + #define CLKID_VCLK_DIV12_EN 143 137 + #define CLKID_VCLK2_DIV2_EN 144 138 + #define CLKID_VCLK2_DIV4_EN 145 139 + #define CLKID_VCLK2_DIV6_EN 146 140 + #define CLKID_VCLK2_DIV12_EN 147 131 141 #define CLKID_VCLK_DIV1 148 132 142 #define CLKID_VCLK_DIV2 149 133 143 #define CLKID_VCLK_DIV4 150 ··· 166 120 #define CLKID_VCLK2_DIV4 155 167 121 #define CLKID_VCLK2_DIV6 156 168 122 #define CLKID_VCLK2_DIV12 157 123 + #define CLKID_CTS_ENCI_SEL 158 124 + #define CLKID_CTS_ENCP_SEL 159 125 + #define CLKID_CTS_VDAC_SEL 160 126 + #define CLKID_HDMI_TX_SEL 161 169 127 #define CLKID_CTS_ENCI 162 170 128 #define CLKID_CTS_ENCP 163 171 129 #define CLKID_CTS_VDAC 164 172 130 #define CLKID_HDMI_TX 165 131 + #define CLKID_HDMI_SEL 166 132 + #define CLKID_HDMI_DIV 167 173 133 #define CLKID_HDMI 168 174 134 #define CLKID_MALI_0_SEL 169 135 + #define CLKID_MALI_0_DIV 170 175 136 #define CLKID_MALI_0 171 176 137 #define CLKID_MALI_1_SEL 172 138 + #define CLKID_MALI_1_DIV 173 177 139 #define CLKID_MALI_1 174 178 140 #define CLKID_MALI 175 141 + #define CLKID_MPLL_50M_DIV 176 179 142 #define CLKID_MPLL_50M 177 143 + #define CLKID_SYS_PLL_DIV16_EN 178 144 + #define CLKID_SYS_PLL_DIV16 179 145 + #define CLKID_CPU_CLK_DYN0_SEL 180 146 + #define CLKID_CPU_CLK_DYN0_DIV 181 147 + #define CLKID_CPU_CLK_DYN0 182 148 + #define CLKID_CPU_CLK_DYN1_SEL 183 149 + #define CLKID_CPU_CLK_DYN1_DIV 184 150 + #define CLKID_CPU_CLK_DYN1 185 151 + #define CLKID_CPU_CLK_DYN 186 180 152 #define CLKID_CPU_CLK 187 153 + #define CLKID_CPU_CLK_DIV16_EN 188 154 + #define CLKID_CPU_CLK_DIV16 189 155 + #define CLKID_CPU_CLK_APB_DIV 190 156 + #define CLKID_CPU_CLK_APB 191 157 + #define CLKID_CPU_CLK_ATB_DIV 192 158 + #define CLKID_CPU_CLK_ATB 193 159 + #define CLKID_CPU_CLK_AXI_DIV 194 160 + #define CLKID_CPU_CLK_AXI 195 161 + #define CLKID_CPU_CLK_TRACE_DIV 196 162 + #define CLKID_CPU_CLK_TRACE 197 163 + #define CLKID_PCIE_PLL_DCO 198 164 + #define CLKID_PCIE_PLL_DCO_DIV2 199 165 + #define CLKID_PCIE_PLL_OD 200 181 166 #define CLKID_PCIE_PLL 201 167 + #define CLKID_VDEC_1_SEL 202 168 + #define CLKID_VDEC_1_DIV 203 182 169 #define CLKID_VDEC_1 204 170 + #define CLKID_VDEC_HEVC_SEL 205 171 + #define CLKID_VDEC_HEVC_DIV 206 183 172 #define CLKID_VDEC_HEVC 207 173 + #define CLKID_VDEC_HEVCF_SEL 208 174 + #define CLKID_VDEC_HEVCF_DIV 209 184 175 #define CLKID_VDEC_HEVCF 210 176 + #define CLKID_TS_DIV 211 185 177 #define CLKID_TS 212 178 + #define CLKID_SYS1_PLL_DCO 213 179 + #define CLKID_SYS1_PLL 214 180 + #define CLKID_SYS1_PLL_DIV16_EN 215 181 + #define CLKID_SYS1_PLL_DIV16 216 182 + #define CLKID_CPUB_CLK_DYN0_SEL 217 183 + #define CLKID_CPUB_CLK_DYN0_DIV 218 184 + #define CLKID_CPUB_CLK_DYN0 219 185 + #define CLKID_CPUB_CLK_DYN1_SEL 220 186 + #define CLKID_CPUB_CLK_DYN1_DIV 221 187 + #define CLKID_CPUB_CLK_DYN1 222 188 + #define CLKID_CPUB_CLK_DYN 223 186 189 #define CLKID_CPUB_CLK 224 190 + #define CLKID_CPUB_CLK_DIV16_EN 225 191 + #define CLKID_CPUB_CLK_DIV16 226 192 + #define CLKID_CPUB_CLK_DIV2 227 193 + #define CLKID_CPUB_CLK_DIV3 228 194 + #define CLKID_CPUB_CLK_DIV4 229 195 + #define CLKID_CPUB_CLK_DIV5 230 196 + #define CLKID_CPUB_CLK_DIV6 231 197 + #define CLKID_CPUB_CLK_DIV7 232 198 + #define CLKID_CPUB_CLK_DIV8 233 199 + #define CLKID_CPUB_CLK_APB_SEL 234 200 + #define CLKID_CPUB_CLK_APB 235 201 + #define CLKID_CPUB_CLK_ATB_SEL 236 202 + #define CLKID_CPUB_CLK_ATB 237 203 + #define CLKID_CPUB_CLK_AXI_SEL 238 204 + #define CLKID_CPUB_CLK_AXI 239 205 + #define CLKID_CPUB_CLK_TRACE_SEL 240 206 + #define CLKID_CPUB_CLK_TRACE 241 207 + #define CLKID_GP1_PLL_DCO 242 187 208 #define CLKID_GP1_PLL 243 209 + #define CLKID_DSU_CLK_DYN0_SEL 244 210 + #define CLKID_DSU_CLK_DYN0_DIV 245 211 + #define CLKID_DSU_CLK_DYN0 246 212 + #define CLKID_DSU_CLK_DYN1_SEL 247 213 + #define CLKID_DSU_CLK_DYN1_DIV 248 214 + #define CLKID_DSU_CLK_DYN1 249 215 + #define CLKID_DSU_CLK_DYN 250 216 + #define CLKID_DSU_CLK_FINAL 251 188 217 #define CLKID_DSU_CLK 252 189 218 #define CLKID_CPU1_CLK 253 190 219 #define CLKID_CPU2_CLK 254 191 220 #define CLKID_CPU3_CLK 255 221 + #define CLKID_SPICC0_SCLK_SEL 256 222 + #define CLKID_SPICC0_SCLK_DIV 257 192 223 #define CLKID_SPICC0_SCLK 258 224 + #define CLKID_SPICC1_SCLK_SEL 259 225 + #define CLKID_SPICC1_SCLK_DIV 260 193 226 #define CLKID_SPICC1_SCLK 261 227 + #define CLKID_NNA_AXI_CLK_SEL 262 228 + #define CLKID_NNA_AXI_CLK_DIV 263 194 229 #define CLKID_NNA_AXI_CLK 264 230 + #define CLKID_NNA_CORE_CLK_SEL 265 231 + #define CLKID_NNA_CORE_CLK_DIV 266 195 232 #define CLKID_NNA_CORE_CLK 267 233 + #define CLKID_MIPI_DSI_PXCLK_DIV 268 196 234 #define CLKID_MIPI_DSI_PXCLK_SEL 269 197 235 #define CLKID_MIPI_DSI_PXCLK 270 198 236
+65
include/dt-bindings/clock/gxbb-clkc.h
··· 15 15 #define CLKID_FCLK_DIV5 7 16 16 #define CLKID_FCLK_DIV7 8 17 17 #define CLKID_GP0_PLL 9 18 + #define CLKID_MPEG_SEL 10 19 + #define CLKID_MPEG_DIV 11 18 20 #define CLKID_CLK81 12 19 21 #define CLKID_MPLL0 13 20 22 #define CLKID_MPLL1 14 ··· 104 102 #define CLKID_SD_EMMC_C 96 105 103 #define CLKID_SAR_ADC_CLK 97 106 104 #define CLKID_SAR_ADC_SEL 98 105 + #define CLKID_SAR_ADC_DIV 99 107 106 #define CLKID_MALI_0_SEL 100 107 + #define CLKID_MALI_0_DIV 101 108 108 #define CLKID_MALI_0 102 109 109 #define CLKID_MALI_1_SEL 103 110 + #define CLKID_MALI_1_DIV 104 110 111 #define CLKID_MALI_1 105 111 112 #define CLKID_MALI 106 112 113 #define CLKID_CTS_AMCLK 107 114 + #define CLKID_CTS_AMCLK_SEL 108 115 + #define CLKID_CTS_AMCLK_DIV 109 113 116 #define CLKID_CTS_MCLK_I958 110 117 + #define CLKID_CTS_MCLK_I958_SEL 111 118 + #define CLKID_CTS_MCLK_I958_DIV 112 114 119 #define CLKID_CTS_I958 113 115 120 #define CLKID_32K_CLK 114 121 + #define CLKID_32K_CLK_SEL 115 122 + #define CLKID_32K_CLK_DIV 116 123 + #define CLKID_SD_EMMC_A_CLK0_SEL 117 124 + #define CLKID_SD_EMMC_A_CLK0_DIV 118 116 125 #define CLKID_SD_EMMC_A_CLK0 119 126 + #define CLKID_SD_EMMC_B_CLK0_SEL 120 127 + #define CLKID_SD_EMMC_B_CLK0_DIV 121 117 128 #define CLKID_SD_EMMC_B_CLK0 122 129 + #define CLKID_SD_EMMC_C_CLK0_SEL 123 130 + #define CLKID_SD_EMMC_C_CLK0_DIV 124 118 131 #define CLKID_SD_EMMC_C_CLK0 125 119 132 #define CLKID_VPU_0_SEL 126 133 + #define CLKID_VPU_0_DIV 127 120 134 #define CLKID_VPU_0 128 121 135 #define CLKID_VPU_1_SEL 129 136 + #define CLKID_VPU_1_DIV 130 122 137 #define CLKID_VPU_1 131 123 138 #define CLKID_VPU 132 124 139 #define CLKID_VAPB_0_SEL 133 140 + #define CLKID_VAPB_0_DIV 134 125 141 #define CLKID_VAPB_0 135 126 142 #define CLKID_VAPB_1_SEL 136 143 + #define CLKID_VAPB_1_DIV 137 127 144 #define CLKID_VAPB_1 138 128 145 #define CLKID_VAPB_SEL 139 129 146 #define CLKID_VAPB 140 147 + #define CLKID_HDMI_PLL_PRE_MULT 141 148 + #define CLKID_MPLL0_DIV 142 149 + #define CLKID_MPLL1_DIV 143 150 + #define CLKID_MPLL2_DIV 144 151 + #define CLKID_MPLL_PREDIV 145 152 + #define CLKID_FCLK_DIV2_DIV 146 153 + #define CLKID_FCLK_DIV3_DIV 147 154 + #define CLKID_FCLK_DIV4_DIV 148 155 + #define CLKID_FCLK_DIV5_DIV 149 156 + #define CLKID_FCLK_DIV7_DIV 150 157 + #define CLKID_VDEC_1_SEL 151 158 + #define CLKID_VDEC_1_DIV 152 130 159 #define CLKID_VDEC_1 153 160 + #define CLKID_VDEC_HEVC_SEL 154 161 + #define CLKID_VDEC_HEVC_DIV 155 131 162 #define CLKID_VDEC_HEVC 156 163 + #define CLKID_GEN_CLK_SEL 157 164 + #define CLKID_GEN_CLK_DIV 158 132 165 #define CLKID_GEN_CLK 159 166 + #define CLKID_FIXED_PLL_DCO 160 167 + #define CLKID_HDMI_PLL_DCO 161 168 + #define CLKID_HDMI_PLL_OD 162 169 + #define CLKID_HDMI_PLL_OD2 163 170 + #define CLKID_SYS_PLL_DCO 164 171 + #define CLKID_GP0_PLL_DCO 165 133 172 #define CLKID_VID_PLL 166 173 + #define CLKID_VID_PLL_SEL 167 174 + #define CLKID_VID_PLL_DIV 168 175 + #define CLKID_VCLK_SEL 169 176 + #define CLKID_VCLK2_SEL 170 177 + #define CLKID_VCLK_INPUT 171 178 + #define CLKID_VCLK2_INPUT 172 179 + #define CLKID_VCLK_DIV 173 180 + #define CLKID_VCLK2_DIV 174 134 181 #define CLKID_VCLK 175 135 182 #define CLKID_VCLK2 176 183 + #define CLKID_VCLK_DIV2_EN 177 184 + #define CLKID_VCLK_DIV4_EN 178 185 + #define CLKID_VCLK_DIV6_EN 179 186 + #define CLKID_VCLK_DIV12_EN 180 187 + #define CLKID_VCLK2_DIV2_EN 181 188 + #define CLKID_VCLK2_DIV4_EN 182 189 + #define CLKID_VCLK2_DIV6_EN 183 190 + #define CLKID_VCLK2_DIV12_EN 184 136 191 #define CLKID_VCLK_DIV1 185 137 192 #define CLKID_VCLK_DIV2 186 138 193 #define CLKID_VCLK_DIV4 187 ··· 200 141 #define CLKID_VCLK2_DIV4 192 201 142 #define CLKID_VCLK2_DIV6 193 202 143 #define CLKID_VCLK2_DIV12 194 144 + #define CLKID_CTS_ENCI_SEL 195 145 + #define CLKID_CTS_ENCP_SEL 196 146 + #define CLKID_CTS_VDAC_SEL 197 147 + #define CLKID_HDMI_TX_SEL 198 203 148 #define CLKID_CTS_ENCI 199 204 149 #define CLKID_CTS_ENCP 200 205 150 #define CLKID_CTS_VDAC 201 206 151 #define CLKID_HDMI_TX 202 152 + #define CLKID_HDMI_SEL 203 153 + #define CLKID_HDMI_DIV 204 207 154 #define CLKID_HDMI 205 208 155 #define CLKID_ACODEC 206 209 156
+97
include/dt-bindings/clock/meson8b-clkc.h
··· 100 100 #define CLKID_MPLL0 93 101 101 #define CLKID_MPLL1 94 102 102 #define CLKID_MPLL2 95 103 + #define CLKID_MPLL0_DIV 96 104 + #define CLKID_MPLL1_DIV 97 105 + #define CLKID_MPLL2_DIV 98 106 + #define CLKID_CPU_IN_SEL 99 107 + #define CLKID_CPU_IN_DIV2 100 108 + #define CLKID_CPU_IN_DIV3 101 109 + #define CLKID_CPU_SCALE_DIV 102 110 + #define CLKID_CPU_SCALE_OUT_SEL 103 111 + #define CLKID_MPLL_PREDIV 104 112 + #define CLKID_FCLK_DIV2_DIV 105 113 + #define CLKID_FCLK_DIV3_DIV 106 114 + #define CLKID_FCLK_DIV4_DIV 107 115 + #define CLKID_FCLK_DIV5_DIV 108 116 + #define CLKID_FCLK_DIV7_DIV 109 117 + #define CLKID_NAND_SEL 110 118 + #define CLKID_NAND_DIV 111 103 119 #define CLKID_NAND_CLK 112 120 + #define CLKID_PLL_FIXED_DCO 113 121 + #define CLKID_HDMI_PLL_DCO 114 122 + #define CLKID_PLL_SYS_DCO 115 123 + #define CLKID_CPU_CLK_DIV2 116 124 + #define CLKID_CPU_CLK_DIV3 117 125 + #define CLKID_CPU_CLK_DIV4 118 126 + #define CLKID_CPU_CLK_DIV5 119 127 + #define CLKID_CPU_CLK_DIV6 120 128 + #define CLKID_CPU_CLK_DIV7 121 129 + #define CLKID_CPU_CLK_DIV8 122 130 + #define CLKID_APB_SEL 123 104 131 #define CLKID_APB 124 132 + #define CLKID_PERIPH_SEL 125 105 133 #define CLKID_PERIPH 126 134 + #define CLKID_AXI_SEL 127 106 135 #define CLKID_AXI 128 107 136 #define CLKID_L2_DRAM 130 137 + #define CLKID_L2_DRAM_SEL 129 138 + #define CLKID_HDMI_PLL_LVDS_OUT 131 108 139 #define CLKID_HDMI_PLL_HDMI_OUT 132 140 + #define CLKID_VID_PLL_IN_SEL 133 141 + #define CLKID_VID_PLL_IN_EN 134 142 + #define CLKID_VID_PLL_PRE_DIV 135 143 + #define CLKID_VID_PLL_POST_DIV 136 109 144 #define CLKID_VID_PLL_FINAL_DIV 137 110 145 #define CLKID_VCLK_IN_SEL 138 146 + #define CLKID_VCLK_IN_EN 139 147 + #define CLKID_VCLK_DIV1 140 148 + #define CLKID_VCLK_DIV2_DIV 141 149 + #define CLKID_VCLK_DIV2 142 150 + #define CLKID_VCLK_DIV4_DIV 143 151 + #define CLKID_VCLK_DIV4 144 152 + #define CLKID_VCLK_DIV6_DIV 145 153 + #define CLKID_VCLK_DIV6 146 154 + #define CLKID_VCLK_DIV12_DIV 147 155 + #define CLKID_VCLK_DIV12 148 111 156 #define CLKID_VCLK2_IN_SEL 149 157 + #define CLKID_VCLK2_IN_EN 150 158 + #define CLKID_VCLK2_DIV1 151 159 + #define CLKID_VCLK2_DIV2_DIV 152 160 + #define CLKID_VCLK2_DIV2 153 161 + #define CLKID_VCLK2_DIV4_DIV 154 162 + #define CLKID_VCLK2_DIV4 155 163 + #define CLKID_VCLK2_DIV6_DIV 156 164 + #define CLKID_VCLK2_DIV6 157 165 + #define CLKID_VCLK2_DIV12_DIV 158 166 + #define CLKID_VCLK2_DIV12 159 167 + #define CLKID_CTS_ENCT_SEL 160 112 168 #define CLKID_CTS_ENCT 161 169 + #define CLKID_CTS_ENCP_SEL 162 113 170 #define CLKID_CTS_ENCP 163 171 + #define CLKID_CTS_ENCI_SEL 164 114 172 #define CLKID_CTS_ENCI 165 173 + #define CLKID_HDMI_TX_PIXEL_SEL 166 115 174 #define CLKID_HDMI_TX_PIXEL 167 175 + #define CLKID_CTS_ENCL_SEL 168 116 176 #define CLKID_CTS_ENCL 169 177 + #define CLKID_CTS_VDAC0_SEL 170 117 178 #define CLKID_CTS_VDAC0 171 179 + #define CLKID_HDMI_SYS_SEL 172 180 + #define CLKID_HDMI_SYS_DIV 173 118 181 #define CLKID_HDMI_SYS 174 182 + #define CLKID_MALI_0_SEL 175 183 + #define CLKID_MALI_0_DIV 176 184 + #define CLKID_MALI_0 177 185 + #define CLKID_MALI_1_SEL 178 186 + #define CLKID_MALI_1_DIV 179 187 + #define CLKID_MALI_1 180 188 + #define CLKID_GP_PLL_DCO 181 189 + #define CLKID_GP_PLL 182 190 + #define CLKID_VPU_0_SEL 183 191 + #define CLKID_VPU_0_DIV 184 192 + #define CLKID_VPU_0 185 193 + #define CLKID_VPU_1_SEL 186 194 + #define CLKID_VPU_1_DIV 187 195 + #define CLKID_VPU_1 189 119 196 #define CLKID_VPU 190 197 + #define CLKID_VDEC_1_SEL 191 198 + #define CLKID_VDEC_1_1_DIV 192 199 + #define CLKID_VDEC_1_1 193 200 + #define CLKID_VDEC_1_2_DIV 194 201 + #define CLKID_VDEC_1_2 195 120 202 #define CLKID_VDEC_1 196 203 + #define CLKID_VDEC_HCODEC_SEL 197 204 + #define CLKID_VDEC_HCODEC_DIV 198 121 205 #define CLKID_VDEC_HCODEC 199 206 + #define CLKID_VDEC_2_SEL 200 207 + #define CLKID_VDEC_2_DIV 201 122 208 #define CLKID_VDEC_2 202 209 + #define CLKID_VDEC_HEVC_SEL 203 210 + #define CLKID_VDEC_HEVC_DIV 204 211 + #define CLKID_VDEC_HEVC_EN 205 123 212 #define CLKID_VDEC_HEVC 206 213 + #define CLKID_CTS_AMCLK_SEL 207 214 + #define CLKID_CTS_AMCLK_DIV 208 124 215 #define CLKID_CTS_AMCLK 209 216 + #define CLKID_CTS_MCLK_I958_SEL 210 217 + #define CLKID_CTS_MCLK_I958_DIV 211 125 218 #define CLKID_CTS_MCLK_I958 212 126 219 #define CLKID_CTS_I958 213 220 + #define CLKID_VCLK_EN 214 221 + #define CLKID_VCLK2_EN 215 222 + #define CLKID_VID_PLL_LVDS_EN 216 223 + #define CLKID_HDMI_PLL_DCO_IN 217 127 224 128 225 #endif /* __MESON8B_CLKC_H */
+2
include/linux/string_helpers.h
··· 109 109 char *kstrdup_quotable_cmdline(struct task_struct *task, gfp_t gfp); 110 110 char *kstrdup_quotable_file(struct file *file, gfp_t gfp); 111 111 112 + char *kstrdup_and_replace(const char *src, char old, char new, gfp_t gfp); 113 + 112 114 char **kasprintf_strarray(gfp_t gfp, const char *prefix, size_t n); 113 115 void kfree_strarray(char **array, size_t n); 114 116
+15
lib/string_helpers.c
··· 719 719 } 720 720 EXPORT_SYMBOL_GPL(kstrdup_quotable_file); 721 721 722 + /* 723 + * Returns duplicate string in which the @old characters are replaced by @new. 724 + */ 725 + char *kstrdup_and_replace(const char *src, char old, char new, gfp_t gfp) 726 + { 727 + char *dst; 728 + 729 + dst = kstrdup(src, gfp); 730 + if (!dst) 731 + return NULL; 732 + 733 + return strreplace(dst, old, new); 734 + } 735 + EXPORT_SYMBOL_GPL(kstrdup_and_replace); 736 + 722 737 /** 723 738 * kasprintf_strarray - allocate and fill array of sequential strings 724 739 * @gfp: flags for the slab allocator