| /* |
| * Copyright (c) 2021 Microchip Technology Inc. |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #ifndef _SOC_MCHP_PCR_H_ |
| #define _SOC_MCHP_PCR_H_ |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /* slp_idx = [0, 4], bitpos = [0, 31] refer above */ |
| #define MCHP_XEC_PCR_SCR_ENCODE(slp_idx, bitpos, domain) \ |
| ((((uint32_t)(domain) & 0xff) << 24) | (((bitpos) & 0x1f) << 3) \ |
| | ((uint32_t)(slp_idx) & 0x7)) |
| |
| #define MCHP_XEC_PCR_SCR_GET_IDX(e) ((e) & 0x7u) |
| #define MCHP_XEC_PCR_SCR_GET_BITPOS(e) (((e) & 0xf8u) >> 3) |
| |
| /* cpu clock divider */ |
| #define MCHP_XEC_CLK_CPU_MASK GENMASK(7, 0) |
| #define MCHP_XEC_CLK_CPU_CLK_DIV_1 1u |
| #define MCHP_XEC_CLK_CPU_CLK_DIV_2 2u |
| #define MCHP_XEC_CLK_CPU_CLK_DIV_4 4u |
| #define MCHP_XEC_CLK_CPU_CLK_DIV_8 8u |
| #define MCHP_XEC_CLK_CPU_CLK_DIV_16 16u |
| #define MCHP_XEC_CLK_CPU_CLK_DIV_48 48u |
| |
| /* slow clock divider */ |
| #define MCHP_XEC_CLK_SLOW_MASK GENMASK(8, 0) |
| #define MCHP_XEC_CLK_SLOW_CLK_DIV_100K 480u |
| |
| #define MCHP_XEC_CLK_SRC_POS 24 |
| #define MCHP_XEC_CLK_SRC_MASK GENMASK(31, 24) |
| |
| #define MCHP_XEC_CLK_SRC_GET(n) \ |
| (((n) & MCHP_XEC_CLK_SRC_MASK) >> MCHP_XEC_CLK_SRC_POS) |
| |
| #define MCHP_XEC_CLK_SRC_SET(v, c) (((v) & ~MCHP_XEC_CLK_SRC_MASK) |\ |
| (((c) << MCHP_XEC_CLK_SRC_POS) & MCHP_XEC_CLK_SRC_MASK)) |
| |
| /* |
| * b[31:24] = clock source |
| * b[23:0] = clock source specific format |
| */ |
| struct mchp_xec_pcr_clk_ctrl { |
| uint32_t pcr_info; |
| }; |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* _SOC_MCHP_PCR_H_ */ |