1dc7de222SMasahiro Yamada /* 2dc7de222SMasahiro Yamada * keystone2: common pll clock definitions 3dc7de222SMasahiro Yamada * (C) Copyright 2012-2014 4dc7de222SMasahiro Yamada * Texas Instruments Incorporated, <www.ti.com> 5dc7de222SMasahiro Yamada * 6dc7de222SMasahiro Yamada * SPDX-License-Identifier: GPL-2.0+ 7dc7de222SMasahiro Yamada */ 8dc7de222SMasahiro Yamada 9dc7de222SMasahiro Yamada #ifndef _CLOCK_DEFS_H_ 10dc7de222SMasahiro Yamada #define _CLOCK_DEFS_H_ 11dc7de222SMasahiro Yamada 12dc7de222SMasahiro Yamada #include <asm/arch/hardware.h> 13dc7de222SMasahiro Yamada 14dc7de222SMasahiro Yamada /* PLL Control Registers */ 15dc7de222SMasahiro Yamada struct pllctl_regs { 16dc7de222SMasahiro Yamada u32 ctl; /* 00 */ 17dc7de222SMasahiro Yamada u32 ocsel; /* 04 */ 18dc7de222SMasahiro Yamada u32 secctl; /* 08 */ 19dc7de222SMasahiro Yamada u32 resv0; 20dc7de222SMasahiro Yamada u32 mult; /* 10 */ 21dc7de222SMasahiro Yamada u32 prediv; /* 14 */ 22dc7de222SMasahiro Yamada u32 div1; /* 18 */ 23dc7de222SMasahiro Yamada u32 div2; /* 1c */ 24dc7de222SMasahiro Yamada u32 div3; /* 20 */ 25dc7de222SMasahiro Yamada u32 oscdiv1; /* 24 */ 26dc7de222SMasahiro Yamada u32 resv1; /* 28 */ 27dc7de222SMasahiro Yamada u32 bpdiv; /* 2c */ 28dc7de222SMasahiro Yamada u32 wakeup; /* 30 */ 29dc7de222SMasahiro Yamada u32 resv2; 30dc7de222SMasahiro Yamada u32 cmd; /* 38 */ 31dc7de222SMasahiro Yamada u32 stat; /* 3c */ 32dc7de222SMasahiro Yamada u32 alnctl; /* 40 */ 33dc7de222SMasahiro Yamada u32 dchange; /* 44 */ 34dc7de222SMasahiro Yamada u32 cken; /* 48 */ 35dc7de222SMasahiro Yamada u32 ckstat; /* 4c */ 36dc7de222SMasahiro Yamada u32 systat; /* 50 */ 37dc7de222SMasahiro Yamada u32 ckctl; /* 54 */ 38dc7de222SMasahiro Yamada u32 resv3[2]; 39dc7de222SMasahiro Yamada u32 div4; /* 60 */ 40dc7de222SMasahiro Yamada u32 div5; /* 64 */ 41dc7de222SMasahiro Yamada u32 div6; /* 68 */ 42dc7de222SMasahiro Yamada u32 div7; /* 6c */ 43dc7de222SMasahiro Yamada u32 div8; /* 70 */ 44dc7de222SMasahiro Yamada u32 div9; /* 74 */ 45dc7de222SMasahiro Yamada u32 div10; /* 78 */ 46dc7de222SMasahiro Yamada u32 div11; /* 7c */ 47dc7de222SMasahiro Yamada u32 div12; /* 80 */ 48dc7de222SMasahiro Yamada }; 49dc7de222SMasahiro Yamada 50dc7de222SMasahiro Yamada static struct pllctl_regs *pllctl_regs[] = { 51dc7de222SMasahiro Yamada (struct pllctl_regs *)(KS2_CLOCK_BASE + 0x100) 52dc7de222SMasahiro Yamada }; 53dc7de222SMasahiro Yamada 54dc7de222SMasahiro Yamada #define pllctl_reg(pll, reg) (&(pllctl_regs[pll]->reg)) 55dc7de222SMasahiro Yamada #define pllctl_reg_read(pll, reg) __raw_readl(pllctl_reg(pll, reg)) 56dc7de222SMasahiro Yamada #define pllctl_reg_write(pll, reg, val) __raw_writel(val, pllctl_reg(pll, reg)) 57dc7de222SMasahiro Yamada 58dc7de222SMasahiro Yamada #define pllctl_reg_rmw(pll, reg, mask, val) \ 59dc7de222SMasahiro Yamada pllctl_reg_write(pll, reg, \ 60dc7de222SMasahiro Yamada (pllctl_reg_read(pll, reg) & ~(mask)) | val) 61dc7de222SMasahiro Yamada 62dc7de222SMasahiro Yamada #define pllctl_reg_setbits(pll, reg, mask) \ 63dc7de222SMasahiro Yamada pllctl_reg_rmw(pll, reg, 0, mask) 64dc7de222SMasahiro Yamada 65dc7de222SMasahiro Yamada #define pllctl_reg_clrbits(pll, reg, mask) \ 66dc7de222SMasahiro Yamada pllctl_reg_rmw(pll, reg, mask, 0) 67dc7de222SMasahiro Yamada 68dc7de222SMasahiro Yamada #define pll0div_read(N) ((pllctl_reg_read(CORE_PLL, div##N) & 0xff) + 1) 69dc7de222SMasahiro Yamada 70*c321a236SLokesh Vutla /* PLLCTL Bits */ 71*c321a236SLokesh Vutla #define PLLCTL_PLLENSRC_SHIF 5 72*c321a236SLokesh Vutla #define PLLCTL_PLLENSRC_MASK BIT(5) 73*c321a236SLokesh Vutla #define PLLCTL_PLLRST_SHIFT 3 74*c321a236SLokesh Vutla #define PLLCTL_PLLRST_MASK BIT(3) 75*c321a236SLokesh Vutla #define PLLCTL_PLLPWRDN_SHIFT 1 76*c321a236SLokesh Vutla #define PLLCTL_PLLPWRDN_MASK BIT(1) 77*c321a236SLokesh Vutla #define PLLCTL_PLLEN_SHIFT 0 78*c321a236SLokesh Vutla #define PLLCTL_PLLEN_MASK BIT(0) 79*c321a236SLokesh Vutla 80*c321a236SLokesh Vutla /* SECCTL Bits */ 81*c321a236SLokesh Vutla #define SECCTL_BYPASS_SHIFT 23 82*c321a236SLokesh Vutla #define SECCTL_BYPASS_MASK BIT(23) 83*c321a236SLokesh Vutla #define SECCTL_OP_DIV_SHIFT 19 84*c321a236SLokesh Vutla #define SECCTL_OP_DIV_MASK (0xf << 19) 85*c321a236SLokesh Vutla 86*c321a236SLokesh Vutla /* PLLM Bits */ 87*c321a236SLokesh Vutla #define PLLM_MULT_LO_SHIFT 0 88*c321a236SLokesh Vutla #define PLLM_MULT_LO_MASK 0x3f 89*c321a236SLokesh Vutla #define PLLM_MULT_LO_BITS 6 90*c321a236SLokesh Vutla 91*c321a236SLokesh Vutla /* PLLDIVn Bits */ 92*c321a236SLokesh Vutla #define PLLDIV_ENABLE_SHIFT 15 93*c321a236SLokesh Vutla #define PLLDIV_ENABLE_MASK BIT(15) 94*c321a236SLokesh Vutla #define PLLDIV_RATIO_SHIFT 0x0 95*c321a236SLokesh Vutla #define PLLDIV_RATIO_MASK 0xff 96*c321a236SLokesh Vutla #define PLLDIV_MAX 16 97*c321a236SLokesh Vutla 98*c321a236SLokesh Vutla /* PLLCMD Bits */ 99*c321a236SLokesh Vutla #define PLLCMD_GOSET_SHIFT 0 100*c321a236SLokesh Vutla #define PLLCMD_GOSET_MASK BIT(0) 101*c321a236SLokesh Vutla 102*c321a236SLokesh Vutla /* PLLSTAT Bits */ 103*c321a236SLokesh Vutla #define PLLSTAT_GOSTAT_SHIFT 0 104*c321a236SLokesh Vutla #define PLLSTAT_GOSTAT_MASK BIT(0) 105*c321a236SLokesh Vutla 106*c321a236SLokesh Vutla /* Device Config PLLCTL0 */ 107*c321a236SLokesh Vutla #define CFG_PLLCTL0_BWADJ_SHIFT 24 108*c321a236SLokesh Vutla #define CFG_PLLCTL0_BWADJ_MASK (0xff << 24) 109*c321a236SLokesh Vutla #define CFG_PLLCTL0_BWADJ_BITS 8 110*c321a236SLokesh Vutla #define CFG_PLLCTL0_BYPASS_SHIFT 23 111*c321a236SLokesh Vutla #define CFG_PLLCTL0_BYPASS_MASK BIT(23) 112*c321a236SLokesh Vutla #define CFG_PLLCTL0_CLKOD_SHIFT 19 113*c321a236SLokesh Vutla #define CFG_PLLCTL0_CLKOD_MASK (0xf << 19) 114*c321a236SLokesh Vutla #define CFG_PLLCTL0_PLLM_HI_SHIFT 12 115*c321a236SLokesh Vutla #define CFG_PLLCTL0_PLLM_HI_MASK (0x7f << 12) 116*c321a236SLokesh Vutla #define CFG_PLLCTL0_PLLM_SHIFT 6 117*c321a236SLokesh Vutla #define CFG_PLLCTL0_PLLM_MASK (0x1fff << 6) 118*c321a236SLokesh Vutla #define CFG_PLLCTL0_PLLD_SHIFT 0 119*c321a236SLokesh Vutla #define CFG_PLLCTL0_PLLD_MASK 0x3f 120*c321a236SLokesh Vutla 121*c321a236SLokesh Vutla /* Device Config PLLCTL1 */ 122*c321a236SLokesh Vutla #define CFG_PLLCTL1_RST_SHIFT 14 123*c321a236SLokesh Vutla #define CFG_PLLCTL1_RST_MASK BIT(14) 124*c321a236SLokesh Vutla #define CFG_PLLCTL1_PAPLL_SHIFT 13 125*c321a236SLokesh Vutla #define CFG_PLLCTL1_PAPLL_MASK BIT(13) 126*c321a236SLokesh Vutla #define CFG_PLLCTL1_ENSAT_SHIFT 6 127*c321a236SLokesh Vutla #define CFG_PLLCTL1_ENSAT_MASK BIT(6) 128*c321a236SLokesh Vutla #define CFG_PLLCTL1_BWADJ_SHIFT 0 129*c321a236SLokesh Vutla #define CFG_PLLCTL1_BWADJ_MASK 0xf 130*c321a236SLokesh Vutla 131*c321a236SLokesh Vutla #define MISC_CTL1_ARM_PLL_EN BIT(13) 132dc7de222SMasahiro Yamada 133dc7de222SMasahiro Yamada #endif /* _CLOCK_DEFS_H_ */ 134