blob: 89d95762a14d94716da819e0f0661fe6586b40c3 [file] [log] [blame]
/* SPDX-License-Identifier: BSD-2-Clause */
/*
* Copyright 2017-2019 NXP
*/
#ifndef __IMX7_CRM_H__
#define __IMX7_CRM_H__
/*
* GPRx Registers
*/
#define CCM_GPR0 0x0
#define CCM_GPRx_OFFSET 0x10
#define CCM_GPRx(idx) (((idx) * CCM_GRPx_OFFSET) + CCM_GPR0)
#define CCM_GPRx_SET(idx) (CCM_GPRx(idx) + 0x4)
#define CCM_GPRx_CLR(idx) (CCM_GPRx(idx) + 0x8)
#define CCM_GPRx_TOG(idx) (CCM_GPRx(idx) + 0xC)
/*
* PLL_CTRLx Registers (PLL Control)
*/
#define CCM_PLL_CTRL0 0x800
#define CCM_PLL_CTRLx_OFFSET 0x10
#define CCM_PLL_CTRLx(idx) (((idx) * CCM_PLL_CTRLx_OFFSET) + CCM_PLL_CTRL0)
#define CCM_PLL_CTRLx_SET(idx) (CCM_PLL_CTRLx(idx) + 0x4)
#define CCM_PLL_CTRLx_CLR(idx) (CCM_PLL_CTRLx(idx) + 0x8)
#define CCM_PLL_CTRLx_TOG(idx) (CCM_PLL_CTRLx(idx) + 0xC)
/*
* CCGRx Registers (Clock Gating)
*/
#define CCM_CCGR0 0x4000
#define CCM_CCGRx_OFFSET 0x10
#define CCM_CCGRx(idx) (((idx) * CCM_CCGRx_OFFSET) + CCM_CCGR0)
#define CCM_CCGRx_SET(idx) (CCM_CCGRx(idx) + 0x4)
#define CCM_CCGRx_CLR(idx) (CCM_CCGRx(idx) + 0x8)
#define CCM_CCGRx_TOG(idx) (CCM_CCGRx(idx) + 0xC)
#define BS_CCM_CCGRx_SETTING(idx) ((idx) * 4)
#define BM_CCM_CCGRx_SETTING(idx) \
SHIFT_U32(0x3, BS_CCM_CCGRx_SETTING(idx))
#define CCM_CCGRx_DISABLE(idx) \
SHIFT_U32(0, BS_CCM_CCGRx_SETTING(idx))
#define CCM_CCGRx_RUN(idx) \
BIT32(BS_CCM_CCGRx_SETTING(idx))
#define CCM_CCGRx_RUN_WAIT(idx) \
SHIFT_U32(0x2, BS_CCM_CCGRx_SETTING(idx))
#define CCM_CCGRx_ALWAYS_ON(idx) \
SHIFT_U32(0x3, BS_CCM_CCGRx_SETTING(idx))
/*
* TARGET_ROOTx Registers (Target)
*/
#define CCM_TARGET_ROOT0 0x8000
#define CCM_TARGET_ROOTx_OFFSET 0x80
#define CCM_TARGET_ROOTx(idx) \
(((idx) * CCM_TARGET_ROOTx_OFFSET) + CCM_TARGET_ROOT0)
#define CCM_TARGET_ROOTx_SET(idx) (CCM_TARGET_ROOTx(idx) + 0x4)
#define CCM_TARGET_ROOTx_CLR(idx) (CCM_TARGET_ROOTx(idx) + 0x8)
#define CCM_TARGET_ROOTx_TOG(idx) (CCM_TARGET_ROOTx(idx) + 0xC)
/*
* MISC_ROOTx Registers (Miscellaneous)
*/
#define CCM_MISC_ROOT0 0x8010
#define CCM_MISC_ROOTx_OFFSET 0x80
#define CCM_MISC_ROOTx(idx) \
(((idx) * CCM_MISC_ROOTx_OFFSET) + CCM_MISC_ROOT0)
#define CCM_MISC_ROOTx_SET(idx) (CCM_MISC_ROOTx(idx) + 0x4)
#define CCM_MISC_ROOTx_CLR(idx) (CCM_MISC_ROOTx(idx) + 0x8)
#define CCM_MISC_ROOTx_TOG(idx) (CCM_MISC_ROOTx(idx) + 0xC)
/*
* POST_ROOTx Registers (Post Divider)
*/
#define CCM_POST_ROOT0 0x8020
#define CCM_POST_ROOTx_OFFSET 0x80
#define CCM_POST_ROOTx(idx) \
(((idx) * CCM_POST_ROOTx_OFFSET) + CCM_POST_ROOT0)
#define CCM_POST_ROOTx_SET(idx) (CCM_POST_ROOTx(idx) + 0x4)
#define CCM_POST_ROOTx_CLR(idx) (CCM_POST_ROOTx(idx) + 0x8)
#define CCM_POST_ROOTx_TOG(idx) (CCM_POST_ROOTx(idx) + 0xC)
/*
* PRE_ROOTx Registers (Pre Divider)
*/
#define CCM_PRE_ROOT0 0x8030
#define CCM_PRE_ROOTx_OFFSET 0x80
#define CCM_PRE_ROOTx(idx) \
(((idx) * CCM_PRE_ROOTx_OFFSET) + CCM_PRE_ROOT0)
#define CCM_PRE_ROOTx_SET(idx) (CCM_PRE_ROOTx(idx) + 0x4)
#define CCM_PRE_ROOTx_CLR(idx) (CCM_PRE_ROOTx(idx) + 0x8)
#define CCM_PRE_ROOTx_TOG(idx) (CCM_PRE_ROOTx(idx) + 0xC)
/*
* ACCESS_CTRL_ROOTx Registers (Access Control)
*/
#define CCM_ACCESS_CTRL_ROOT0 0x8030
#define CCM_ACCESS_CTRL_ROOTx_OFFSET 0x80
#define CCM_ACCESS_CTRL_ROOTx(idx) \
(((idx) * CCM_ACCESS_CTRL_ROOTx_OFFSET) + CCM_ACCESS_CTRL_ROOT0)
#define CCM_ACCESS_CTRL_ROOTx_SET(idx) (CCM_ACCESS_CTRL_ROOTx(idx) + 0x4)
#define CCM_ACCESS_CTRL_ROOTx_CLR(idx) (CCM_ACCESS_CTRL_ROOTx(idx) + 0x8)
#define CCM_ACCESS_CTRL_ROOTx_TOG(idx) (CCM_ACCESS_CTRL_ROOTx(idx) + 0xC)
/*
* Clock Domain ID
*/
#define CCM_CLOCK_DOMAIN_CAAM 36
#endif /* __IMX7_CRM_H__ */