12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- #define ARK_PLLREF_REG 0x14C
- #define ARK_PLL_DIV_MASK 0xFF
- #define ARK_PLL_DIV_OFFSET 0
- #define ARK_PLL_NO_MASK 0x3
- #define ARK_PLL_NO_OFFSET 12
- #define ARK_PLL_ENA (1 << 14)
- #define ARK_DDS_DIV_MASK 0x7
- #define ARK_DDS_DIV_OFFSET 10
- #define ARK_DDS_DTOINC_MASK 0x3FFFFF
- #define ARK_DDS_DTOINC_OFFSET 0
- #define ARK_DDS_MUL_MASK 1
- #define ARK_DDS_MUL_OFFSET 2
- #define ARK_DDS_ENA (1 << 18)
- #define ARK_DDS_MIN_FREQ 200000000
- #define ARK_DDS_MAX_FREQ 300000000
- #define ARKE_SSCG_OD_MASK 0x7
- #define ARKE_SSCG_OD_OFFSET 24
- #define ARKE_SSCG_NR_MASK 0x7f
- #define ARKE_SSCG_NR_OFFSET 15
- #define ARKE_SSCG_NFF_MASK 0x7fff
- #define ARKE_SSCG_NFF_OFFSET 0
- #define ARKE_SSCG_NFX_MASK 0x1ff
- #define ARKE_SSCG_NFX_OFFSET 15
- #define ARKE_SSCG_ENA (1 << 27)
- #define ARKE_PLL_PS_MASK 0x1f
- #define ARKE_PLL_PS_OFFSET 12
- #define ARKE_PLL_NS_MASK 0x1ff
- #define ARKE_PLL_NS_OFFSET 3
- #define ARKE_PLL_MS_MASK 0x7
- #define ARKE_PLL_MS_OFFSET 0
- #define ARKE_PLL_ENA (1 << 17)
- #define ARK_CLK_MAX_ENABLE_NUM 4u
- enum ARK_CLK_TYPE {
- ARK_CLK_TYPE_PLL = 0,
- ARK_CLK_TYPE_DDS,
- ARK_CLK_TYPE_DDR,
- ARK_CLK_TYPE_SYS,
- ARK_CLK_TYPE_APB,
- ARKE_CLK_TYPE_SSCG,
- ARKE_CLK_TYPE_PLL,
- };
- enum ARK_PLAT_TYPE {
- PLAT_ARK1668,
- PLAT_ARKN141,
- };
- struct ark_clk {
- struct clk_hw hw;
- void __iomem *reg;
- void __iomem *reg2;
- bool can_change;
- int div;
- int divmode;
- int divmask;
- int divoffset;
- int enable_num;
- void __iomem *enable_reg[ARK_CLK_MAX_ENABLE_NUM];
- int enable_offset[ARK_CLK_MAX_ENABLE_NUM];
- char *parent_name;
- };
- #define to_ark_clk(p) container_of(p, struct ark_clk, hw)
|