19fa32b12SVikas Manocha /* 29fa32b12SVikas Manocha * (C) Copyright 2014 39fa32b12SVikas Manocha * Vikas Manocha, ST Micoelectronics, vikas.manocha@st.com 49fa32b12SVikas Manocha * 59fa32b12SVikas Manocha * SPDX-License-Identifier: GPL-2.0+ 69fa32b12SVikas Manocha */ 79fa32b12SVikas Manocha 89fa32b12SVikas Manocha #ifndef _STV0991_CGU_H 99fa32b12SVikas Manocha #define _STV0991_CGU_H 109fa32b12SVikas Manocha 119fa32b12SVikas Manocha struct stv0991_cgu_regs { 129fa32b12SVikas Manocha u32 cpu_freq; /* offset 0x0 */ 139fa32b12SVikas Manocha u32 icn2_freq; /* offset 0x4 */ 149fa32b12SVikas Manocha u32 dma_freq; /* offset 0x8 */ 159fa32b12SVikas Manocha u32 isp_freq; /* offset 0xc */ 169fa32b12SVikas Manocha u32 h264_freq; /* offset 0x10 */ 179fa32b12SVikas Manocha u32 osif_freq; /* offset 0x14 */ 189fa32b12SVikas Manocha u32 ren_freq; /* offset 0x18 */ 199fa32b12SVikas Manocha u32 tim_freq; /* offset 0x1c */ 209fa32b12SVikas Manocha u32 sai_freq; /* offset 0x20 */ 219fa32b12SVikas Manocha u32 eth_freq; /* offset 0x24 */ 229fa32b12SVikas Manocha u32 i2c_freq; /* offset 0x28 */ 239fa32b12SVikas Manocha u32 spi_freq; /* offset 0x2c */ 249fa32b12SVikas Manocha u32 uart_freq; /* offset 0x30 */ 259fa32b12SVikas Manocha u32 qspi_freq; /* offset 0x34 */ 269fa32b12SVikas Manocha u32 sdio_freq; /* offset 0x38 */ 279fa32b12SVikas Manocha u32 usi_freq; /* offset 0x3c */ 289fa32b12SVikas Manocha u32 can_line_freq; /* offset 0x40 */ 299fa32b12SVikas Manocha u32 debug_freq; /* offset 0x44 */ 309fa32b12SVikas Manocha u32 trace_freq; /* offset 0x48 */ 319fa32b12SVikas Manocha u32 stm_freq; /* offset 0x4c */ 329fa32b12SVikas Manocha u32 eth_ctrl; /* offset 0x50 */ 339fa32b12SVikas Manocha u32 reserved[3]; /* offset 0x54 */ 349fa32b12SVikas Manocha u32 osc_ctrl; /* offset 0x60 */ 359fa32b12SVikas Manocha u32 pll1_ctrl; /* offset 0x64 */ 369fa32b12SVikas Manocha u32 pll1_freq; /* offset 0x68 */ 379fa32b12SVikas Manocha u32 pll1_fract; /* offset 0x6c */ 389fa32b12SVikas Manocha u32 pll1_spread; /* offset 0x70 */ 399fa32b12SVikas Manocha u32 pll1_status; /* offset 0x74 */ 409fa32b12SVikas Manocha u32 pll2_ctrl; /* offset 0x78 */ 419fa32b12SVikas Manocha u32 pll2_freq; /* offset 0x7c */ 429fa32b12SVikas Manocha u32 pll2_fract; /* offset 0x80 */ 439fa32b12SVikas Manocha u32 pll2_spread; /* offset 0x84 */ 449fa32b12SVikas Manocha u32 pll2_status; /* offset 0x88 */ 459fa32b12SVikas Manocha u32 cgu_enable_1; /* offset 0x8c */ 469fa32b12SVikas Manocha u32 cgu_enable_2; /* offset 0x90 */ 479fa32b12SVikas Manocha u32 cgu_isp_pulse; /* offset 0x94 */ 489fa32b12SVikas Manocha u32 cgu_h264_pulse; /* offset 0x98 */ 499fa32b12SVikas Manocha u32 cgu_osif_pulse; /* offset 0x9c */ 509fa32b12SVikas Manocha u32 cgu_ren_pulse; /* offset 0xa0 */ 519fa32b12SVikas Manocha 529fa32b12SVikas Manocha }; 539fa32b12SVikas Manocha 549fa32b12SVikas Manocha /* CGU Timer */ 559fa32b12SVikas Manocha #define CLK_TMR_OSC 0 569fa32b12SVikas Manocha #define CLK_TMR_MCLK 1 579fa32b12SVikas Manocha #define CLK_TMR_PLL1 2 589fa32b12SVikas Manocha #define CLK_TMR_PLL2 3 599fa32b12SVikas Manocha #define MDIV_SHIFT_TMR 3 609fa32b12SVikas Manocha #define DIV_SHIFT_TMR 6 619fa32b12SVikas Manocha 629fa32b12SVikas Manocha #define TIMER1_CLK_CFG (0 << DIV_SHIFT_TMR \ 639fa32b12SVikas Manocha | 0 << MDIV_SHIFT_TMR | CLK_TMR_MCLK) 649fa32b12SVikas Manocha 659fa32b12SVikas Manocha /* Clock Enable/Disable */ 669fa32b12SVikas Manocha 679fa32b12SVikas Manocha #define TIMER1_CLK_EN (1 << 15) 689fa32b12SVikas Manocha 699fa32b12SVikas Manocha /* CGU Uart config */ 709fa32b12SVikas Manocha #define CLK_UART_MCLK 0 719fa32b12SVikas Manocha #define CLK_UART_PLL1 1 729fa32b12SVikas Manocha #define CLK_UART_PLL2 2 739fa32b12SVikas Manocha 749fa32b12SVikas Manocha #define MDIV_SHIFT_UART 3 759fa32b12SVikas Manocha #define DIV_SHIFT_UART 6 769fa32b12SVikas Manocha 779fa32b12SVikas Manocha #define UART_CLK_CFG (4 << DIV_SHIFT_UART \ 789fa32b12SVikas Manocha | 1 << MDIV_SHIFT_UART | CLK_UART_MCLK) 799fa32b12SVikas Manocha 802ce4eaf4SVikas Manocha /* CGU Ethernet clock config */ 812ce4eaf4SVikas Manocha #define CLK_ETH_MCLK 0 822ce4eaf4SVikas Manocha #define CLK_ETH_PLL1 1 832ce4eaf4SVikas Manocha #define CLK_ETH_PLL2 2 842ce4eaf4SVikas Manocha 852ce4eaf4SVikas Manocha #define MDIV_SHIFT_ETH 3 862ce4eaf4SVikas Manocha #define DIV_SHIFT_ETH 6 872ce4eaf4SVikas Manocha #define DIV_ETH_125 9 882ce4eaf4SVikas Manocha #define DIV_ETH_50 12 892ce4eaf4SVikas Manocha #define DIV_ETH_P2P 15 902ce4eaf4SVikas Manocha 912ce4eaf4SVikas Manocha #define ETH_CLK_CFG (4 << DIV_ETH_P2P | 4 << DIV_ETH_50 \ 922ce4eaf4SVikas Manocha | 1 << DIV_ETH_125 \ 932ce4eaf4SVikas Manocha | 0 << DIV_SHIFT_ETH \ 942ce4eaf4SVikas Manocha | 3 << MDIV_SHIFT_ETH | CLK_ETH_PLL1) 952ce4eaf4SVikas Manocha /* CGU Ethernet control */ 962ce4eaf4SVikas Manocha 972ce4eaf4SVikas Manocha #define ETH_CLK_TX_EXT_PHY 0 982ce4eaf4SVikas Manocha #define ETH_CLK_TX_125M 1 992ce4eaf4SVikas Manocha #define ETH_CLK_TX_25M 2 1002ce4eaf4SVikas Manocha #define ETH_CLK_TX_2M5 3 1012ce4eaf4SVikas Manocha #define ETH_CLK_TX_DIS 7 1022ce4eaf4SVikas Manocha 1032ce4eaf4SVikas Manocha #define ETH_CLK_RX_EXT_PHY 0 1042ce4eaf4SVikas Manocha #define ETH_CLK_RX_25M 1 1052ce4eaf4SVikas Manocha #define ETH_CLK_RX_2M5 2 1062ce4eaf4SVikas Manocha #define ETH_CLK_RX_DIS 3 1072ce4eaf4SVikas Manocha #define RX_CLK_SHIFT 3 1082ce4eaf4SVikas Manocha #define ETH_CLK_MASK ~(0x1F) 1092ce4eaf4SVikas Manocha 1102ce4eaf4SVikas Manocha #define ETH_PHY_MODE_GMII 0 1112ce4eaf4SVikas Manocha #define ETH_PHY_MODE_RMII 1 1122ce4eaf4SVikas Manocha #define ETH_PHY_CLK_DIS 1 1132ce4eaf4SVikas Manocha 1142ce4eaf4SVikas Manocha #define ETH_CLK_CTRL (ETH_CLK_RX_EXT_PHY << RX_CLK_SHIFT \ 1152ce4eaf4SVikas Manocha | ETH_CLK_TX_EXT_PHY) 116*54afb500SVikas Manocha /* CGU qspi clock */ 117*54afb500SVikas Manocha #define DIV_HCLK1_SHIFT 9 118*54afb500SVikas Manocha #define DIV_CRYP_SHIFT 6 119*54afb500SVikas Manocha #define MDIV_QSPI_SHIFT 3 120*54afb500SVikas Manocha 121*54afb500SVikas Manocha #define CLK_QSPI_OSC 0 122*54afb500SVikas Manocha #define CLK_QSPI_MCLK 1 123*54afb500SVikas Manocha #define CLK_QSPI_PLL1 2 124*54afb500SVikas Manocha #define CLK_QSPI_PLL2 3 125*54afb500SVikas Manocha 126*54afb500SVikas Manocha #define QSPI_CLK_CTRL (3 << DIV_HCLK1_SHIFT \ 127*54afb500SVikas Manocha | 1 << DIV_CRYP_SHIFT \ 128*54afb500SVikas Manocha | 0 << MDIV_QSPI_SHIFT \ 129*54afb500SVikas Manocha | CLK_QSPI_OSC) 130*54afb500SVikas Manocha 1319fa32b12SVikas Manocha #endif 132