The branch main has been updated by manu:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=cc2f9bbbad3b9cd81b8e66d57f9d34d8a42048dd

commit cc2f9bbbad3b9cd81b8e66d57f9d34d8a42048dd
Author:     Emmanuel Vadot <[email protected]>
AuthorDate: 2021-09-15 16:33:38 +0000
Commit:     Emmanuel Vadot <[email protected]>
CommitDate: 2021-09-15 16:43:10 +0000

    arm64: rockchip: rk3328: Finish implementing clocks
    
    This finish (almost) the clocks implementations for the RK3328 SoC.
    The clocks are now correctly implemented respecting the clock hiearchy.
    The missing clocks are mostly the DDR clocks, implementing those is only
    useful for debugging as we will never set them in the kernel.
    The ARMCLK still needs to be rewritten so it looks closer to how the
    hardware is done.
    
    Tested-on: Rock64
---
 sys/arm64/rockchip/clk/rk3328_cru.c | 2096 ++++++++++++-----------------------
 1 file changed, 712 insertions(+), 1384 deletions(-)

diff --git a/sys/arm64/rockchip/clk/rk3328_cru.c 
b/sys/arm64/rockchip/clk/rk3328_cru.c
index 95a87cfd0e00..344bf3bcd7aa 100644
--- a/sys/arm64/rockchip/clk/rk3328_cru.c
+++ b/sys/arm64/rockchip/clk/rk3328_cru.c
@@ -1,7 +1,7 @@
 /*-
  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
  *
- * Copyright (c) 2018 Emmanuel Vadot <[email protected]>
+ * Copyright (c) 2018-2021 Emmanuel Vadot <[email protected]>
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -49,18 +49,76 @@ __FBSDID("$FreeBSD$");
 
 #include <arm64/rockchip/clk/rk_cru.h>
 
+#define        CRU_CLKSEL_CON(x)       (0x100 + (x) * 0x4)
+
 /* Registers */
 #define        RK3328_GRF_SOC_CON4     0x410
 #define        RK3328_GRF_MAC_CON1     0x904
 #define        RK3328_GRF_MAC_CON2     0x908
 
-/* GATES */
-
+/* Exported clocks */
+
+#define        PLL_APLL                1
+#define        PLL_DPLL                2
+#define        PLL_CPLL                3
+#define        PLL_GPLL                4
+#define        PLL_NPLL                5
+#define        ARMCLK                  6
+
+/* SCLK */
+#define        SCLK_RTC32K             30
+#define        SCLK_SDMMC_EXT          31
+#define        SCLK_SPI                32
+#define        SCLK_SDMMC              33
+#define        SCLK_SDIO               34
+#define        SCLK_EMMC               35
+#define        SCLK_TSADC              36
+#define        SCLK_SARADC             37
+#define        SCLK_UART0              38
+#define        SCLK_UART1              39
+#define        SCLK_UART2              40
 #define        SCLK_I2S0               41
 #define        SCLK_I2S1               42
 #define        SCLK_I2S2               43
 #define        SCLK_I2S1_OUT           44
 #define        SCLK_I2S2_OUT           45
+#define        SCLK_SPDIF              46
+#define        SCLK_TIMER0             47
+#define        SCLK_TIMER1             48
+#define        SCLK_TIMER2             49
+#define        SCLK_TIMER3             50
+#define        SCLK_TIMER4             51
+#define        SCLK_TIMER5             52
+#define        SCLK_WIFI               53
+#define        SCLK_CIF_OUT            54
+#define        SCLK_I2C0               55
+#define        SCLK_I2C1               56
+#define        SCLK_I2C2               57
+#define        SCLK_I2C3               58
+#define        SCLK_CRYPTO             59
+#define        SCLK_PWM                60
+#define        SCLK_PDM                61
+#define        SCLK_EFUSE              62
+#define        SCLK_OTP                63
+#define        SCLK_DDRCLK             64
+#define        SCLK_VDEC_CABAC         65
+#define        SCLK_VDEC_CORE          66
+#define        SCLK_VENC_DSP           67
+#define        SCLK_VENC_CORE          68
+#define        SCLK_RGA                69
+#define        SCLK_HDMI_SFC           70
+#define        SCLK_HDMI_CEC           71      /* Unused ? */
+#define        SCLK_USB3_REF           72
+#define        SCLK_USB3_SUSPEND       73
+#define        SCLK_SDMMC_DRV          74
+#define        SCLK_SDIO_DRV           75
+#define        SCLK_EMMC_DRV           76
+#define        SCLK_SDMMC_EXT_DRV      77
+#define        SCLK_SDMMC_SAMPLE       78
+#define        SCLK_SDIO_SAMPLE        79
+#define        SCLK_EMMC_SAMPLE        80
+#define        SCLK_SDMMC_EXT_SAMPLE   81
+#define        SCLK_VOP                82
 #define        SCLK_MAC2PHY_RXTX       83
 #define        SCLK_MAC2PHY_SRC        84
 #define        SCLK_MAC2PHY_REF        85
@@ -70,528 +128,553 @@ __FBSDID("$FreeBSD$");
 #define        SCLK_MAC2IO_REFOUT      89
 #define        SCLK_MAC2IO_REF         90
 #define        SCLK_MAC2IO_OUT         91
+#define        SCLK_TSP                92
+#define        SCLK_HSADC_TSP          93
+#define        SCLK_USB3PHY_REF        94
+#define        SCLK_REF_USB3OTG        95
 #define        SCLK_USB3OTG_REF        96
+#define        SCLK_USB3OTG_SUSPEND    97
+#define        SCLK_REF_USB3OTG_SRC    98
 #define        SCLK_MAC2IO_SRC         99
 #define        SCLK_MAC2IO             100
 #define        SCLK_MAC2PHY            101
 #define        SCLK_MAC2IO_EXT         102
+
+/* DCLK */
+#define        DCLK_LCDC               120
+#define        DCLK_HDMIPHY            121
+#define        HDMIPHY                 122
+#define        USB480M                 123
+#define        DCLK_LCDC_SRC           124
+
+/* ACLK */
+#define        ACLK_AXISRAM            130     /* Unused */
+#define        ACLK_VOP_PRE            131
 #define        ACLK_USB3OTG            132
-#define ACLK_GMAC              146
-#define ACLK_MAC2PHY           149
-#define ACLK_MAC2IO            150
+#define        ACLK_RGA_PRE            133
+#define        ACLK_DMAC               134     /* Unused */
+#define        ACLK_GPU                135
+#define        ACLK_BUS_PRE            136
+#define        ACLK_PERI_PRE           137
+#define        ACLK_RKVDEC_PRE         138
+#define        ACLK_RKVDEC             139
+#define        ACLK_RKVENC             140
+#define        ACLK_VPU_PRE            141
+#define        ACLK_VIO_PRE            142
+#define        ACLK_VPU                143
+#define        ACLK_VIO                144
+#define        ACLK_VOP                145
+#define        ACLK_GMAC               146
+#define        ACLK_H265               147
+#define        ACLK_H264               148
+#define        ACLK_MAC2PHY            149
+#define        ACLK_MAC2IO             150
+#define        ACLK_DCF                151
+#define        ACLK_TSP                152
 #define        ACLK_PERI               153
+#define        ACLK_RGA                154
+#define        ACLK_IEP                155
+#define        ACLK_CIF                156
+#define        ACLK_HDCP               157
+
+/* PCLK */
 #define        PCLK_GPIO0              200
 #define        PCLK_GPIO1              201
 #define        PCLK_GPIO2              202
 #define        PCLK_GPIO3              203
+#define        PCLK_GRF                204
 #define        PCLK_I2C0               205
 #define        PCLK_I2C1               206
 #define        PCLK_I2C2               207
 #define        PCLK_I2C3               208
+#define        PCLK_SPI                209
+#define        PCLK_UART0              210
+#define        PCLK_UART1              211
+#define        PCLK_UART2              212
 #define        PCLK_TSADC              213
-#define PCLK_GMAC              220
-#define PCLK_MAC2PHY           222
-#define PCLK_MAC2IO            223
+#define        PCLK_PWM                214
+#define        PCLK_TIMER              215
+#define        PCLK_BUS_PRE            216
+#define        PCLK_PERI_PRE           217     /* Unused */
+#define        PCLK_HDMI_CTRL          218     /* Unused */
+#define        PCLK_HDMI_PHY           219     /* Unused */
+#define        PCLK_GMAC               220
+#define        PCLK_H265               221
+#define        PCLK_MAC2PHY            222
+#define        PCLK_MAC2IO             223
 #define        PCLK_USB3PHY_OTG        224
 #define        PCLK_USB3PHY_PIPE       225
 #define        PCLK_USB3_GRF           226
+#define        PCLK_USB2_GRF           227
+#define        PCLK_HDMIPHY            228
+#define        PCLK_DDR                229
+#define        PCLK_PERI               230
+#define        PCLK_HDMI               231
+#define        PCLK_HDCP               232
+#define        PCLK_DCF                233
+#define        PCLK_SARADC             234
 #define        PCLK_ACODECPHY          235
+#define        PCLK_WDT                236     /* Controlled from the secure 
GRF */
+
+/* HCLK */
+#define        HCLK_PERI               308
+#define        HCLK_TSP                309
+#define        HCLK_GMAC               310     /* Unused */
 #define        HCLK_I2S0_8CH           311
 #define        HCLK_I2S1_8CH           312
 #define        HCLK_I2S2_2CH           313
+#define        HCLK_SPDIF_8CH          314
+#define        HCLK_VOP                315
+#define        HCLK_NANDC              316     /* Unused */
 #define        HCLK_SDMMC              317
 #define        HCLK_SDIO               318
 #define        HCLK_EMMC               319
 #define        HCLK_SDMMC_EXT          320
+#define        HCLK_RKVDEC_PRE         321
+#define        HCLK_RKVDEC             322
+#define        HCLK_RKVENC             323
+#define        HCLK_VPU_PRE            324
+#define        HCLK_VIO_PRE            325
+#define        HCLK_VPU                326
+/* 327 doesn't exists */
+#define        HCLK_BUS_PRE            328
+#define        HCLK_PERI_PRE           329     /* Unused */
+#define        HCLK_H264               330
+#define        HCLK_CIF                331
+#define        HCLK_OTG_PMU            332
+#define        HCLK_OTG                333
+#define        HCLK_HOST0              334
+#define        HCLK_HOST0_ARB          335
+#define        HCLK_CRYPTO_MST         336
+#define        HCLK_CRYPTO_SLV         337
+#define        HCLK_PDM                338
+#define        HCLK_IEP                339
+#define        HCLK_RGA                340
+#define        HCLK_HDCP               341
 
 static struct rk_cru_gate rk3328_gates[] = {
        /* CRU_CLKGATE_CON0 */
-       CRU_GATE(0, "apll_core", "apll", 0x200, 0)
-       CRU_GATE(0, "dpll_core", "dpll", 0x200, 1)
-       CRU_GATE(0, "gpll_core", "gpll", 0x200, 2)
-       CRU_GATE(0, "npll_core", "npll", 0x200, 12)
+       CRU_GATE(0, "core_apll_clk", "apll", 0x200, 0)
+       CRU_GATE(0, "core_dpll_clk", "dpll", 0x200, 1)
+       CRU_GATE(0, "core_gpll_clk", "gpll", 0x200, 2)
+       /* Bit 3 bus_src_clk_en */
+       /* Bit 4 clk_ddrphy_src_en */
+       /* Bit 5 clk_ddrpd_src_en */
+       /* Bit 6 clk_ddrmon_en */
+       /* Bit 7-8 unused */
+       /* Bit 9 testclk_en */
+       CRU_GATE(SCLK_WIFI, "sclk_wifi", "sclk_wifi_c", 0x200, 10)
+       CRU_GATE(SCLK_RTC32K, "clk_rtc32k", "clk_rtc32k_c", 0x200, 11)
+       CRU_GATE(0, "core_npll_clk", "npll", 0x200, 12)
+       /* Bit 13-15 unused */
 
        /* CRU_CLKGATE_CON1 */
+       /* Bit 0 unused */
+       CRU_GATE(0, "clk_i2s0_div", "clk_i2s0_div_c", 0x204, 1)
+       CRU_GATE(0, "clk_i2s0_frac", "clk_i2s0_frac_f", 0x204, 2)
        CRU_GATE(SCLK_I2S0, "clk_i2s0", "clk_i2s0_mux", 0x204, 3)
+       CRU_GATE(0, "clk_i2s1_div", "clk_i2s1_div_c", 0x204, 4)
+       CRU_GATE(0, "clk_i2s1_frac", "clk_i2s1_frac_f", 0x204, 5)
        CRU_GATE(SCLK_I2S1, "clk_i2s1", "clk_i2s1_mux", 0x204, 6)
+       CRU_GATE(0, "clk_i2s1_out", "clk_i2s1_mux", 0x204, 7)
+       CRU_GATE(0, "clk_i2s2_div", "clk_i2s2_div_c", 0x204, 8)
+       CRU_GATE(0, "clk_i2s2_frac", "clk_i2s2_frac_f", 0x204, 9)
        CRU_GATE(SCLK_I2S2, "clk_i2s2", "clk_i2s2_mux", 0x204, 10)
+       CRU_GATE(0, "clk_i2s2_out", "clk_i2s2_mux", 0x204, 11)
+       CRU_GATE(0, "clk_spdif_div", "clk_spdif_div_c", 0x204, 12)
+       CRU_GATE(0, "clk_spdif_frac", "clk_spdif_frac_f", 0x204, 13)
+       CRU_GATE(0, "clk_uart0_div", "clk_uart0_div_c", 0x204, 14)
+       CRU_GATE(0, "clk_uart0_frac", "clk_uart0_frac_f", 0x204, 15)
+
+       /* CRU_CLKGATE_CON2 */
+       CRU_GATE(0, "clk_uart1_div", "clk_uart1_div_c", 0x208, 0)
+       CRU_GATE(0, "clk_uart1_frac", "clk_uart1_frac_f", 0x208, 1)
+       CRU_GATE(0, "clk_uart2_div", "clk_uart2_div_c", 0x208, 2)
+       CRU_GATE(0, "clk_uart2_frac", "clk_uart2_frac_f", 0x208, 3)
+       CRU_GATE(SCLK_CRYPTO, "clk_crypto", "clk_crypto_c", 0x208, 4)
+       CRU_GATE(SCLK_TSP, "clk_tsp", "clk_tsp_c", 0x208, 5)
+       CRU_GATE(SCLK_TSADC, "clk_tsadc_src", "clk_tsadc_c", 0x208, 6)
+       CRU_GATE(SCLK_SPI, "clk_spi", "clk_spi_c", 0x208, 7)
+       CRU_GATE(SCLK_PWM, "clk_pwm", "clk_pwm_c", 0x208, 8)
+       CRU_GATE(SCLK_I2C0, "clk_i2c0_src", "clk_i2c0_c", 0x208, 9)
+       CRU_GATE(SCLK_I2C1, "clk_i2c1_src", "clk_i2c1_c", 0x208, 10)
+       CRU_GATE(SCLK_I2C2, "clk_i2c2_src", "clk_i2c2_c", 0x208, 11)
+       CRU_GATE(SCLK_I2C3, "clk_i2c3_src", "clk_i2c3_c", 0x208, 12)
+       CRU_GATE(SCLK_EFUSE, "clk_efuse", "clk_efuse_c", 0x208, 13)
+       CRU_GATE(SCLK_SARADC, "clk_saradc", "clk_saradc_c", 0x208, 14)
+       CRU_GATE(SCLK_PDM, "clk_pdm", "clk_pdm_c", 0x208, 15)
+
+       /* CRU_CLKGATE_CON3 */
+       CRU_GATE(SCLK_MAC2PHY_SRC, "clk_mac2phy_src", "clk_mac2phy_src_c", 
0x20c, 0)
+       CRU_GATE(SCLK_MAC2IO_SRC, "clk_mac2io_src", "clk_mac2io_src_c", 0x20c, 
1)
+       CRU_GATE(ACLK_GMAC, "aclk_gmac", "aclk_gmac_c", 0x20c, 2)
+       /* Bit 3 gmac_gpll_src_en Unused ? */
+       /* Bit 4 gmac_vpll_src_en Unused ? */
+       CRU_GATE(SCLK_MAC2IO_OUT, "clk_mac2io_out", "clk_mac2io_out_c", 0x20c, 
5)
+       /* Bit 6-7 unused */
+       CRU_GATE(SCLK_OTP, "clk_otp", "clk_otp_c", 0x20c, 8)
+       /* Bit 9-15 unused */
 
        /* CRU_CLKGATE_CON4 */
-       CRU_GATE(0, "gpll_peri", "gpll", 0x210, 0)
-       CRU_GATE(0, "cpll_peri", "cpll", 0x210, 1)
-       CRU_GATE(SCLK_USB3OTG_REF, "clk_usb3otg_ref", "xin24m", 0x210, 7)
+       CRU_GATE(0, "periph_gclk_src", "gpll", 0x210, 0)
+       CRU_GATE(0, "periph_cclk_src", "cpll", 0x210, 1)
+       CRU_GATE(0, "hdmiphy_peri", "hdmiphy", 0x210, 2)
+       CRU_GATE(SCLK_SDMMC, "clk_mmc0_src", "clk_sdmmc_c", 0x210, 3)
+       CRU_GATE(SCLK_SDIO, "clk_sdio_src", "clk_sdio_c", 0x210, 4)
+       CRU_GATE(SCLK_EMMC, "clk_emmc_src", "clk_emmc_c", 0x210, 5)
+       CRU_GATE(SCLK_REF_USB3OTG_SRC, "clk_ref_usb3otg_src", 
"clk_ref_usb3otg_src_c", 0x210, 6)
+       CRU_GATE(SCLK_USB3OTG_REF, "clk_usb3_otg0_ref", "xin24m", 0x210, 7)
+       CRU_GATE(SCLK_USB3OTG_SUSPEND, "clk_usb3otg_suspend", 
"clk_usb3otg_suspend_c", 0x210, 8)
+       /* Bit 9 clk_usb3phy_ref_25m_en */
+       CRU_GATE(SCLK_SDMMC_EXT, "clk_sdmmc_ext", "clk_sdmmc_ext_c", 0x210, 10)
+       /* Bit 11-15 unused */
+
+       /* CRU_CLKGATE_CON5 */
+       CRU_GATE(ACLK_RGA_PRE, "aclk_rga_pre", "aclk_rga_pre_c", 0x214, 0)
+       CRU_GATE(SCLK_RGA, "sclk_rga", "sclk_rga_c", 0x214, 0)
+       CRU_GATE(ACLK_VIO_PRE, "aclk_vio_pre", "aclk_vio_pre_c", 0x214, 2)
+       CRU_GATE(SCLK_CIF_OUT, "clk_cif_src", "clk_cif_src_c", 0x214, 3)
+       CRU_GATE(SCLK_HDMI_SFC, "clk_hdmi_sfc", "xin24m", 0x214, 4)
+       CRU_GATE(ACLK_VOP_PRE, "aclk_vop_pre", "aclk_vop_pre_c", 0x214, 5)
+       CRU_GATE(DCLK_LCDC_SRC, "vop_dclk_src", "vop_dclk_src_c", 0x214, 6)
+       /* Bit 7-15 unused */
+
+       /* CRU_CLKGATE_CON6 */
+       CRU_GATE(ACLK_RKVDEC_PRE, "aclk_rkvdec_pre", "aclk_rkvdec_c", 0x218, 0)
+       CRU_GATE(SCLK_VDEC_CABAC, "sclk_cabac", "sclk_cabac_c", 0x218, 1)
+       CRU_GATE(SCLK_VDEC_CORE, "sclk_vdec_core", "sclk_vdec_core_c", 0x218, 2)
+       CRU_GATE(ACLK_RKVENC, "aclk_rkvenc", "aclk_rkvenc_c", 0x218, 3)
+       CRU_GATE(SCLK_VENC_CORE, "sclk_venc", "sclk_venc_c", 0x218, 4)
+       CRU_GATE(ACLK_VPU_PRE, "aclk_vpu_pre", "aclk_vpu_pre_c", 0x218, 5)
+       CRU_GATE(0, "aclk_gpu_pre", "aclk_gpu_pre_c", 0x218, 6)
+       CRU_GATE(SCLK_VENC_DSP, "sclk_venc_dsp", "sclk_venc_dsp_c", 0x218, 7)
+       /* Bit 8-15 unused */
+
+       /* CRU_CLKGATE_CON7 */
+       /* Bit 0 aclk_core_en */
+       /* Bit 1 clk_core_periph_en */
+       /* Bit 2 clk_jtag_en */
+       /* Bit 3 unused */
+       /* Bit 4 pclk_ddr_en */
+       /* Bit 5-15 unused */
 
        /* CRU_CLKGATE_CON8 */
+       CRU_GATE(ACLK_BUS_PRE, "aclk_bus_pre", "aclk_bus_pre_c", 0x220, 0)
+       CRU_GATE(HCLK_BUS_PRE, "hclk_bus_pre", "hclk_bus_pre_c", 0x220, 1)
+       CRU_GATE(PCLK_BUS_PRE, "pclk_bus_pre", "pclk_bus_pre_c", 0x220, 2)
        CRU_GATE(0, "pclk_bus", "pclk_bus_pre", 0x220, 3)
-       CRU_GATE(0, "pclk_phy_pre", "pclk_bus_pre", 0x220, 4)
+       CRU_GATE(0, "pclk_phy", "pclk_bus_pre", 0x220, 4)
+       CRU_GATE(SCLK_TIMER0, "sclk_timer0", "xin24m", 0x220, 5)
+       CRU_GATE(SCLK_TIMER1, "sclk_timer1", "xin24m", 0x220, 6)
+       CRU_GATE(SCLK_TIMER2, "sclk_timer2", "xin24m", 0x220, 7)
+       CRU_GATE(SCLK_TIMER3, "sclk_timer3", "xin24m", 0x220, 8)
+       CRU_GATE(SCLK_TIMER4, "sclk_timer4", "xin24m", 0x220, 9)
+       CRU_GATE(SCLK_TIMER5, "sclk_timer5", "xin24m", 0x220, 10)
+       /* Bit 11-15 unused */
 
-       /* CRU_CLKGATE_CON8 */
-       CRU_GATE(SCLK_MAC2IO_REF, "clk_mac2io_ref", "clk_mac2io", 0x224, 7)
-       CRU_GATE(SCLK_MAC2IO_REFOUT, "clk_mac2io_refout", "clk_mac2io", 0x224, 
6)
-       CRU_GATE(SCLK_MAC2IO_TX, "clk_mac2io_tx", "clk_mac2io", 0x224, 5)
-       CRU_GATE(SCLK_MAC2IO_RX, "clk_mac2io_rx", "clk_mac2io", 0x224, 4)
-       CRU_GATE(SCLK_MAC2PHY_REF, "clk_mac2phy_ref", "clk_mac2phy", 0x224, 3)
-       CRU_GATE(SCLK_MAC2PHY_RXTX, "clk_mac2phy_rxtx", "clk_mac2phy", 0x224, 1)
+       /* CRU_CLKGATE_CON9 */
+       CRU_GATE(PCLK_GMAC, "pclk_gmac", "aclk_gmac", 0x224, 0)
+       CRU_GATE(SCLK_MAC2PHY_RXTX, "clk_gmac2phy_rx", "clk_mac2phy", 0x224, 1)
+       CRU_GATE(SCLK_MAC2PHY_OUT, "clk_mac2phy_out", "clk_mac2phy_out_c", 
0x224, 2)
+       CRU_GATE(SCLK_MAC2PHY_REF, "clk_gmac2phy_ref", "clk_mac2phy", 0x224, 3)
+       CRU_GATE(SCLK_MAC2IO_RX, "clk_gmac2io_rx", "clk_mac2io", 0x224, 4)
+       CRU_GATE(SCLK_MAC2IO_TX, "clk_gmac2io_tx", "clk_mac2io", 0x224, 5)
+       CRU_GATE(SCLK_MAC2IO_REFOUT, "clk_gmac2io_refout", "clk_mac2io", 0x224, 
6)
+       CRU_GATE(SCLK_MAC2IO_REF, "clk_gmac2io_ref", "clk_mac2io", 0x224, 7)
+       /* Bit 8-15 unused */
 
        /* CRU_CLKGATE_CON10 */
        CRU_GATE(ACLK_PERI, "aclk_peri", "aclk_peri_pre", 0x228, 0)
+       CRU_GATE(HCLK_PERI, "hclk_peri", "hclk_peri_c", 0x228, 1)
+       CRU_GATE(PCLK_PERI, "pclk_peri", "pclk_peri_c", 0x228, 2)
+       /* Bit 3-15 unused */
+
+       /* CRU_CLKGATE_CON11 */
+       CRU_GATE(HCLK_RKVDEC_PRE, "hclk_rkvdec_pre", "aclk_rkvdec_pre", 0x22C, 
0)
+       /* Bit 1-3 unused */
+       CRU_GATE(HCLK_RKVENC, "hclk_rkvenc", "aclk_rkvenc", 0x22C, 4)
+       /* Bit 5-7 unused */
+       CRU_GATE(HCLK_VPU_PRE, "hclk_vpu_pre", "aclk_vpu_pre", 0x22C, 8)
+       /* Bit 9-15 unused */
+
+       /* CRU_CLKGATE_CON12 */
+       /* unused */
+
+       /* CRU_CLKGATE_CON13 */
+       /* Bit 0 aclk_core_niu_en */
+       /* Bit 1 aclk_gic400_en */
+       /* Bit 2-15 unused */
+
+       /* CRU_CLKGATE_CON14 */
+       CRU_GATE(ACLK_GPU, "aclk_gpu", "aclk_gpu_pre", 0x238, 0)
+       CRU_GATE(0, "aclk_gpu_niu", "aclk_gpu_pre", 0x238, 1)
+       /* Bit 2-15 unused */
 
        /* CRU_CLKGATE_CON15*/
+       /* Bit 0 aclk_intmem_en Unused */
+       /* Bit 1 aclk_dmac_bus_en Unused */
+       /* Bit 2 hclk_rom_en Unused */
        CRU_GATE(HCLK_I2S0_8CH, "hclk_i2s0_8ch", "hclk_bus_pre", 0x23C, 3)
        CRU_GATE(HCLK_I2S1_8CH, "hclk_i2s1_8ch", "hclk_bus_pre", 0x23C, 4)
        CRU_GATE(HCLK_I2S2_2CH, "hclk_i2s2_2ch", "hclk_bus_pre", 0x23C, 5)
+       CRU_GATE(HCLK_SPDIF_8CH, "hclk_spdif_8ch", "hclk_bus_pre", 0x23C, 6)
+       CRU_GATE(HCLK_CRYPTO_MST, "hclk_crypto_mst", "hclk_bus_pre", 0x23C, 7)
+       CRU_GATE(HCLK_CRYPTO_SLV, "hclk_crypto_slv", "hclk_bus_pre", 0x23C, 8)
+       CRU_GATE(0, "pclk_efuse", "pclk_bus", 0x23C, 9)
        CRU_GATE(PCLK_I2C0, "pclk_i2c0", "pclk_bus", 0x23C, 10)
+       CRU_GATE(ACLK_DCF, "aclk_dcf", "aclk_bus_pre", 0x23C, 11)
+       CRU_GATE(0, "aclk_bus_niu", "aclk_bus_pre", 0x23C, 12)
+       CRU_GATE(0, "hclk_bus_niu", "hclk_bus_pre", 0x23C, 13)
+       CRU_GATE(0, "pclk_bus_niu", "pclk_bus_pre", 0x23C, 14)
+       CRU_GATE(0, "pclk_phy_niu", "pclk_phy", 0x23C, 14)
+       /* Bit 15 pclk_phy_niu_en */
 
        /* CRU_CLKGATE_CON16 */
-       CRU_GATE(PCLK_I2C1, "pclk_i2c1", "pclk_bus", 0x23C, 0)
-       CRU_GATE(PCLK_I2C2, "pclk_i2c2", "pclk_bus", 0x23C, 1)
-       CRU_GATE(PCLK_I2C3, "pclk_i2c3", "pclk_bus", 0x23C, 2)
-       CRU_GATE(PCLK_TSADC, "pclk_tsadc", "pclk_bus", 0x23C, 14)
-
+       CRU_GATE(PCLK_I2C1, "pclk_i2c1", "pclk_bus", 0x240, 0)
+       CRU_GATE(PCLK_I2C2, "pclk_i2c2", "pclk_bus", 0x240, 1)
+       CRU_GATE(PCLK_I2C3, "pclk_i2c3", "pclk_bus", 0x240, 2)
+       CRU_GATE(PCLK_TIMER, "pclk_timer0", "pclk_bus", 0x240, 3)
+       CRU_GATE(0, "pclk_stimer", "pclk_bus", 0x240, 4)
+       CRU_GATE(PCLK_SPI, "pclk_spi", "pclk_bus", 0x240, 5)
+       CRU_GATE(PCLK_PWM, "pclk_pwm", "pclk_bus", 0x240, 6)
        CRU_GATE(PCLK_GPIO0, "pclk_gpio0", "pclk_bus", 0x240, 7)
        CRU_GATE(PCLK_GPIO1, "pclk_gpio1", "pclk_bus", 0x240, 8)
        CRU_GATE(PCLK_GPIO2, "pclk_gpio2", "pclk_bus", 0x240, 9)
        CRU_GATE(PCLK_GPIO3, "pclk_gpio3", "pclk_bus", 0x240, 10)
+       CRU_GATE(PCLK_UART0, "pclk_uart0", "pclk_bus", 0x240, 11)
+       CRU_GATE(PCLK_UART1, "pclk_uart1", "pclk_bus", 0x240, 12)
+       CRU_GATE(PCLK_UART2, "pclk_uart2", "pclk_bus", 0x240, 13)
+       CRU_GATE(PCLK_TSADC, "pclk_tsadc", "pclk_bus", 0x240, 14)
+       CRU_GATE(PCLK_DCF, "pclk_dcf", "pclk_bus", 0x240, 15)
 
        /* CRU_CLKGATE_CON17 */
-       CRU_GATE(PCLK_USB3_GRF, "pclk_usb3_grf", "pclk_phy_pre", 0x244, 2)
-       CRU_GATE(PCLK_ACODECPHY, "pclk_acodecphy", "pclk_phy_pre", 0x244, 5)
+       CRU_GATE(PCLK_GRF, "pclk_grf", "pclk_bus", 0x244, 0)
+       /* Bit 1 unused */
+       CRU_GATE(PCLK_USB3_GRF, "pclk_usb3grf", "pclk_phy", 0x244, 2)
+       CRU_GATE(0, "pclk_ddrphy", "pclk_phy", 0x244, 3)
+       CRU_GATE(0, "pclk_cru", "pclk_bus", 0x244, 4)
+       CRU_GATE(PCLK_ACODECPHY, "pclk_acodecphy", "pclk_phy", 0x244, 5)
+       CRU_GATE(0, "pclk_sgrf", "pclk_bus", 0x244, 6)
+       CRU_GATE(PCLK_HDMIPHY, "pclk_hdmiphy", "pclk_phy", 0x244, 7)
+       CRU_GATE(0, "pclk_vdacphy", "pclk_bus", 0x244, 8)
+       /* Bit 9 unused */
+       CRU_GATE(0, "pclk_sim", "pclk_bus", 0x244, 10)
+       CRU_GATE(HCLK_TSP, "hclk_tsp", "hclk_bus_pre", 0x244, 11)
+       CRU_GATE(ACLK_TSP, "aclk_tsp", "aclk_bus_pre", 0x244, 12)
+       /* Bit 13 clk_hsadc_0_tsp_en Depend on a gpio clock ? */
+       CRU_GATE(PCLK_USB2_GRF, "pclk_usb2grf", "pclk_phy", 0x244, 14)
+       CRU_GATE(PCLK_SARADC, "pclk_saradc", "pclk_bus", 0x244, 15)
+
+       /* CRU_CLKGATE_CON18 */
+       /* Bit 0 unused */
+       /* Bit 1 pclk_ddr_upctl_en */
+       /* Bit 2 pclk_ddr_msch_en */
+       /* Bit 3 pclk_ddr_mon_en */
+       /* Bit 4 aclk_ddr_upctl_en */
+       /* Bit 5 clk_ddr_upctl_en */
+       /* Bit 6 clk_ddr_msch_en */
+       /* Bit 7 pclk_ddrstdby_en */
+       /* Bit 8-15 unused */
 
        /* CRU_CLKGATE_CON19 */
        CRU_GATE(HCLK_SDMMC, "hclk_sdmmc", "hclk_peri", 0x24C, 0)
        CRU_GATE(HCLK_SDIO, "hclk_sdio", "hclk_peri", 0x24C, 1)
        CRU_GATE(HCLK_EMMC, "hclk_emmc", "hclk_peri", 0x24C, 2)
+       /* Bit 3-5 unused */
+       CRU_GATE(HCLK_HOST0, "hclk_host0", "hclk_peri", 0x24C, 6)
+       CRU_GATE(HCLK_HOST0_ARB, "hclk_host0_arg", "hclk_peri", 0x24C, 7)
+       CRU_GATE(HCLK_OTG, "hclk_otg", "hclk_peri", 0x24C, 8)
+       CRU_GATE(HCLK_OTG_PMU, "hclk_otg_pmu", "hclk_peri", 0x24C, 9)
+       /* Bit 10 unused */
+       CRU_GATE(0, "aclk_peri_niu", "aclk_peri", 0x24C, 11)
        CRU_GATE(0, "hclk_peri_niu", "hclk_peri", 0x24C, 12)
        CRU_GATE(0, "pclk_peri_niu", "hclk_peri", 0x24C, 13)
        CRU_GATE(ACLK_USB3OTG, "aclk_usb3otg", "aclk_peri", 0x24C, 14)
        CRU_GATE(HCLK_SDMMC_EXT, "hclk_sdmmc_ext", "hclk_peri", 0x24C, 15)
 
+       /* CRU_CLKGATE_CON20 */
+       /* unused */
+
+       /* CRU_CLKGATE_CON21 */
+       /* Bit 0-1 unused */
+       CRU_GATE(ACLK_VOP, "aclk_vop", "aclk_vop_pre", 0x254, 2)
+       CRU_GATE(HCLK_VOP, "hclk_vop", "hclk_vio_pre", 0x254, 3)
+       CRU_GATE(0, "aclk_vop_niu", "aclk_vop_pre", 0x254, 4)
+       CRU_GATE(0, "hclk_vop_niu", "hclk_vio_pre", 0x254, 5)
+       CRU_GATE(ACLK_IEP, "aclk_iep", "aclk_vio_pre", 0x254, 6)
+       CRU_GATE(HCLK_IEP, "hclk_iep", "hclk_vio_pre", 0x254, 7)
+       CRU_GATE(ACLK_CIF, "aclk_cif", "aclk_vio_pre", 0x254, 8)
+       CRU_GATE(HCLK_CIF, "hclk_cif", "hclk_vio_pre", 0x254, 9)
+       CRU_GATE(ACLK_RGA, "aclk_rga", "aclk_rga_pre", 0x254, 10)
+       CRU_GATE(HCLK_RGA, "hclk_rga", "hclk_vio_pre", 0x254, 11)
+       CRU_GATE(0, "hclk_ahb1tom", "hclk_vio_pre", 0x254, 12)
+       CRU_GATE(0, "pclk_vio_h2p", "hclk_vio_pre", 0x254, 13)
+       CRU_GATE(0, "hclk_vio_h2p", "hclk_vio_pre", 0x254, 14)
+       CRU_GATE(ACLK_HDCP, "aclk_hdcp", "aclk_vio_pre", 0x254, 15)
+
+       /* CRU_CLKGATE_CON22 */
+       CRU_GATE(HCLK_HDCP, "hclk_hdcp", "hclk_vio_pre", 0x258, 0)
+       CRU_GATE(0, "hclk_vio_niu", "hclk_vio_pre", 0x258, 1)
+       CRU_GATE(0, "aclk_vio_niu", "aclk_vio_pre", 0x258, 2)
+       CRU_GATE(0, "aclk_rga_niu", "aclk_rga_pre", 0x258, 3)
+       CRU_GATE(PCLK_HDMI, "pclk_hdmi", "hclk_vio_pre", 0x258, 4)
+       CRU_GATE(PCLK_HDCP, "pclk_hdcp", "hclk_vio_pre", 0x258, 5)
+       /* Bit 6-15 unused */
+
+       /* CRU_CLKGATE_CON23 */
+       CRU_GATE(ACLK_VPU, "aclk_vpu", "aclk_vpu_pre", 0x25C, 0)
+       CRU_GATE(HCLK_VPU, "hclk_vpu", "hclk_vpu_pre", 0x25C, 1)
+       CRU_GATE(0, "aclk_vpu_niu", "aclk_vpu_pre", 0x25C, 2)
+       CRU_GATE(0, "hclk_vpu_niu", "hclk_vpu_pre", 0x25C, 3)
+       /* Bit 4-15 unused */
+
+       /* CRU_CLKGATE_CON24 */
+       CRU_GATE(ACLK_RKVDEC, "aclk_rkvdec", "aclk_rkvdec_pre", 0x260, 0)
+       CRU_GATE(HCLK_RKVDEC, "hclk_rkvdec", "hclk_rkvdec_pre", 0x260, 1)
+       CRU_GATE(0, "aclk_rkvdec_niu", "aclk_rkvdec_pre", 0x260, 2)
+       CRU_GATE(0, "hclk_rkvdec_niu", "hclk_rkvdec_pre", 0x260, 3)
+       /* Bit 4-15 unused */
+
+       /* CRU_CLKGATE_CON25 */
+       CRU_GATE(0, "aclk_rkvenc_niu", "aclk_rkvenc", 0x264, 0)
+       CRU_GATE(0, "hclk_rkvenc_niu", "hclk_rkvenc", 0x264, 1)
+       CRU_GATE(ACLK_H265, "aclk_h265", "aclk_rkvenc", 0x264, 2)
+       CRU_GATE(PCLK_H265, "pclk_h265", "hclk_rkvenc", 0x264, 3)
+       CRU_GATE(ACLK_H264, "aclk_h264", "aclk_rkvenc", 0x264, 4)
+       CRU_GATE(HCLK_H264, "hclk_h264", "hclk_rkvenc", 0x264, 5)
+       CRU_GATE(0, "aclk_axisram", "hclk_rkvenc", 0x264, 6)
+       /* Bit 7-15 unused */
+
        /* CRU_CLKGATE_CON26 */
-       CRU_GATE(ACLK_MAC2PHY, "aclk_mac2phy", "aclk_gmac", 0x268, 0)
-       CRU_GATE(PCLK_MAC2PHY, "pclk_mac2phy", "pclk_gmac", 0x268, 1)
-       CRU_GATE(ACLK_MAC2IO, "aclk_mac2io", "aclk_gmac", 0x268, 2)
-       CRU_GATE(PCLK_MAC2IO, "pclk_mac2io", "pclk_gmac", 0x268, 3)
+       CRU_GATE(ACLK_MAC2PHY, "aclk_gmac2phy", "aclk_gmac", 0x268, 0)
+       CRU_GATE(PCLK_MAC2PHY, "pclk_gmac2phy", "pclk_gmac", 0x268, 1)
+       CRU_GATE(ACLK_MAC2IO, "aclk_gmac2io", "aclk_gmac", 0x268, 2)
+       CRU_GATE(PCLK_MAC2IO, "pclk_gmac2io", "pclk_gmac", 0x268, 3)
+       CRU_GATE(0, "aclk_gmac_niu", "aclk_gmac", 0x268, 4)
+       CRU_GATE(0, "pclk_gmac_niu", "pclk_gmac", 0x268, 5)
+       /* Bit 6-15 unused */
+
+       /* CRU_CLKGATE_CON27 */
+       /* Bit 0 clk_ddrphy_en */
+       /* Bit 1 clk4x_ddrphy_en */
 
        /* CRU_CLKGATE_CON28 */
-       CRU_GATE(PCLK_USB3PHY_OTG, "pclk_usb3phy_otg", "pclk_phy_pre", 0x270, 1)
-       CRU_GATE(PCLK_USB3PHY_PIPE, "pclk_usb3phy_pipe", "pclk_phy_pre", 0x270, 
2)
+       CRU_GATE(HCLK_PDM, "hclk_pdm", "hclk_bus_pre", 0x270, 0)
+       CRU_GATE(PCLK_USB3PHY_OTG, "pclk_usb3phy_otg", "pclk_phy", 0x270, 1)
+       CRU_GATE(PCLK_USB3PHY_PIPE, "pclk_usb3phy_pipe", "pclk_phy", 0x270, 2)
+       CRU_GATE(0, "pclk_pmu", "pclk_bus", 0x270, 3)
+       CRU_GATE(0, "pclk_otp", "pclk_bus", 0x270, 4)
+       /* Bit 5-15 unused */
 };
 
 /*
  * PLLs
  */
 
-#define PLL_APLL               1
-#define PLL_DPLL               2
-#define PLL_CPLL               3
-#define PLL_GPLL               4
-#define PLL_NPLL               5
+#define PLL_RATE(_hz, _ref, _fb, _post1, _post2, _dspd, _frac)         \
+{                                                                      \
+       .freq = _hz,                                                    \
+       .refdiv = _ref,                                                 \
+       .fbdiv = _fb,                                                   \
+       .postdiv1 = _post1,                                             \
+       .postdiv2 = _post2,                                             \
+       .dsmpd = _dspd,                                                 \
+       .frac = _frac,                                                  \
+}
 
 static struct rk_clk_pll_rate rk3328_pll_rates[] = {
-       {
-               .freq = 1608000000,
-               .refdiv = 1,
-               .fbdiv = 67,
-               .postdiv1 = 1,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 1584000000,
-               .refdiv = 1,
-               .fbdiv = 66,
-               .postdiv1 = 1,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 1560000000,
-               .refdiv = 1,
-               .fbdiv = 65,
-               .postdiv1 = 1,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 1536000000,
-               .refdiv = 1,
-               .fbdiv = 64,
-               .postdiv1 = 1,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 1512000000,
-               .refdiv = 1,
-               .fbdiv = 63,
-               .postdiv1 = 1,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 1488000000,
-               .refdiv = 1,
-               .fbdiv = 62,
-               .postdiv1 = 1,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 1464000000,
-               .refdiv = 1,
-               .fbdiv = 61,
-               .postdiv1 = 1,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 1440000000,
-               .refdiv = 1,
-               .fbdiv = 60,
-               .postdiv1 = 1,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 1416000000,
-               .refdiv = 1,
-               .fbdiv = 59,
-               .postdiv1 = 1,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 1392000000,
-               .refdiv = 1,
-               .fbdiv = 58,
-               .postdiv1 = 1,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 1368000000,
-               .refdiv = 1,
-               .fbdiv = 57,
-               .postdiv1 = 1,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 1344000000,
-               .refdiv = 1,
-               .fbdiv = 56,
-               .postdiv1 = 1,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 1320000000,
-               .refdiv = 1,
-               .fbdiv = 55,
-               .postdiv1 = 1,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 1296000000,
-               .refdiv = 1,
-               .fbdiv = 54,
-               .postdiv1 = 1,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 1272000000,
-               .refdiv = 1,
-               .fbdiv = 53,
-               .postdiv1 = 1,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 1248000000,
-               .refdiv = 1,
-               .fbdiv = 52,
-               .postdiv1 = 1,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 1200000000,
-               .refdiv = 1,
-               .fbdiv = 50,
-               .postdiv1 = 1,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 1188000000,
-               .refdiv = 2,
-               .fbdiv = 99,
-               .postdiv1 = 1,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 1104000000,
-               .refdiv = 1,
-               .fbdiv = 46,
-               .postdiv1 = 1,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 1100000000,
-               .refdiv = 12,
-               .fbdiv = 550,
-               .postdiv1 = 1,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 1008000000,
-               .refdiv = 1,
-               .fbdiv = 84,
-               .postdiv1 = 2,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 1000000000,
-               .refdiv = 6,
-               .fbdiv = 500,
-               .postdiv1 = 2,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 984000000,
-               .refdiv = 1,
-               .fbdiv = 82,
-               .postdiv1 = 2,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 960000000,
-               .refdiv = 1,
-               .fbdiv = 80,
-               .postdiv1 = 2,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 936000000,
-               .refdiv = 1,
-               .fbdiv = 78,
-               .postdiv1 = 2,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 912000000,
-               .refdiv = 1,
-               .fbdiv = 76,
-               .postdiv1 = 2,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 900000000,
-               .refdiv = 4,
-               .fbdiv = 300,
-               .postdiv1 = 2,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 888000000,
-               .refdiv = 1,
-               .fbdiv = 74,
-               .postdiv1 = 2,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 864000000,
-               .refdiv = 1,
-               .fbdiv = 72,
-               .postdiv1 = 2,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 840000000,
-               .refdiv = 1,
-               .fbdiv = 70,
-               .postdiv1 = 2,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 816000000,
-               .refdiv = 1,
-               .fbdiv = 68,
-               .postdiv1 = 2,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 800000000,
-               .refdiv = 6,
-               .fbdiv = 400,
-               .postdiv1 = 2,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 700000000,
-               .refdiv = 6,
-               .fbdiv = 350,
-               .postdiv1 = 2,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 696000000,
-               .refdiv = 1,
-               .fbdiv = 58,
-               .postdiv1 = 2,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 600000000,
-               .refdiv = 1,
-               .fbdiv = 75,
-               .postdiv1 = 3,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 594000000,
-               .refdiv = 2,
-               .fbdiv = 99,
-               .postdiv1 = 2,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 504000000,
-               .refdiv = 1,
-               .fbdiv = 63,
-               .postdiv1 = 3,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 500000000,
-               .refdiv = 6,
-               .fbdiv = 250,
-               .postdiv1 = 2,
-               .postdiv2 = 1,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 408000000,
-               .refdiv = 1,
-               .fbdiv = 68,
-               .postdiv1 = 2,
-               .postdiv2 = 2,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 312000000,
-               .refdiv = 1,
-               .fbdiv = 52,
-               .postdiv1 = 2,
-               .postdiv2 = 2,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 216000000,
-               .refdiv = 1,
-               .fbdiv = 72,
-               .postdiv1 = 4,
-               .postdiv2 = 2,
-               .dsmpd = 1,
-       },
-       {
-               .freq = 96000000,
-               .refdiv = 1,
-               .fbdiv = 64,
-               .postdiv1 = 4,
-               .postdiv2 = 4,
-               .dsmpd = 1,
-       },
+       /* _mhz, _refdiv, _fbdiv, _postdiv1, _postdiv2, _dsmpd, _frac */
+       PLL_RATE(1608000000, 1, 67, 1, 1, 1, 0),
+       PLL_RATE(1584000000, 1, 66, 1, 1, 1, 0),
+       PLL_RATE(1560000000, 1, 65, 1, 1, 1, 0),
+       PLL_RATE(1536000000, 1, 64, 1, 1, 1, 0),
+       PLL_RATE(1512000000, 1, 63, 1, 1, 1, 0),
+       PLL_RATE(1488000000, 1, 62, 1, 1, 1, 0),
+       PLL_RATE(1464000000, 1, 61, 1, 1, 1, 0),
+       PLL_RATE(1440000000, 1, 60, 1, 1, 1, 0),
+       PLL_RATE(1416000000, 1, 59, 1, 1, 1, 0),
+       PLL_RATE(1392000000, 1, 58, 1, 1, 1, 0),
+       PLL_RATE(1368000000, 1, 57, 1, 1, 1, 0),
+       PLL_RATE(1344000000, 1, 56, 1, 1, 1, 0),
+       PLL_RATE(1320000000, 1, 55, 1, 1, 1, 0),
+       PLL_RATE(1296000000, 1, 54, 1, 1, 1, 0),
+       PLL_RATE(1272000000, 1, 53, 1, 1, 1, 0),
+       PLL_RATE(1248000000, 1, 52, 1, 1, 1, 0),
+       PLL_RATE(1200000000, 1, 50, 1, 1, 1, 0),
+       PLL_RATE(1188000000, 2, 99, 1, 1, 1, 0),
+       PLL_RATE(1104000000, 1, 46, 1, 1, 1, 0),
+       PLL_RATE(1100000000, 12, 550, 1, 1, 1, 0),
+       PLL_RATE(1008000000, 1, 84, 2, 1, 1, 0),
+       PLL_RATE(1000000000, 6, 500, 2, 1, 1, 0),
+       PLL_RATE(984000000, 1, 82, 2, 1, 1, 0),
+       PLL_RATE(960000000, 1, 80, 2, 1, 1, 0),
+       PLL_RATE(936000000, 1, 78, 2, 1, 1, 0),
+       PLL_RATE(912000000, 1, 76, 2, 1, 1, 0),
+       PLL_RATE(900000000, 4, 300, 2, 1, 1, 0),
+       PLL_RATE(888000000, 1, 74, 2, 1, 1, 0),
+       PLL_RATE(864000000, 1, 72, 2, 1, 1, 0),
+       PLL_RATE(840000000, 1, 70, 2, 1, 1, 0),
+       PLL_RATE(816000000, 1, 68, 2, 1, 1, 0),
+       PLL_RATE(800000000, 6, 400, 2, 1, 1, 0),
+       PLL_RATE(700000000, 6, 350, 2, 1, 1, 0),
+       PLL_RATE(696000000, 1, 58, 2, 1, 1, 0),
+       PLL_RATE(600000000, 1, 75, 3, 1, 1, 0),
+       PLL_RATE(594000000, 2, 99, 2, 1, 1, 0),
*** 1373 LINES SKIPPED ***
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/dev-commits-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to