/*
 * Copyright (C) 2018, ARM Limited and Contributors. All rights reserved.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */
#ifndef IMX_SNVS_H
#define IMX_SNVS_H

#include <stdint.h>
#include <arch.h>

struct snvs {
	uint32_t hplr;
	uint32_t hpcomr;
	uint32_t hpcr;
	uint32_t hpsicr;
	uint32_t hpsvcr;
	uint32_t hpsr;
	uint32_t hpsvsr;
	uint32_t hphacivr;
	uint32_t hphacr;
	uint32_t hprtcmr;
	uint32_t hprtclr;
	uint32_t hptamr;
	uint32_t hptalr;
	uint32_t lplr;
	uint32_t lpcr;
	uint32_t lpmkcr;
	uint32_t lpsvcr;
	uint32_t lptgfcr;
	uint32_t lptdcr;
	uint32_t lpsr;
	uint32_t lpsrtcmr;
	uint32_t lpsrtclr;
	uint32_t lptar;
	uint32_t lpsmcmr;
	uint32_t lpsmclr;
	uint32_t lppgdr;
	uint32_t lpgpr0_alias;
	uint8_t  lpzmkr[32];
	uint16_t res0;
	uint32_t lpgpr0[4];
	uint32_t lptdc2r;
	uint32_t lptdsr;
	uint32_t lptgf1cr;
	uint32_t lptgf2cr;
	uint32_t res1[4];
	uint32_t lpat1cr;
	uint32_t lpat2cr;
	uint32_t lpat3cr;
	uint32_t lpat4cr;
	uint32_t lpat5cr;
	uint32_t res2[3];
	uint32_t lpatctlr;
	uint32_t lpatclkr;
	uint32_t lpatrc1r;
	uint32_t lpatrc2r;
	uint32_t res3[706];
	uint32_t hpvidr1;
	uint32_t hpvidr2;
} __packed;

/* Define the HPCOMR bits */
#define HPCOMR_NPSWA_EN		BIT(31)
#define HPCOMR_HAC_STOP		BIT(19)
#define HPCOMR_HAC_CLEAR	BIT(18)
#define HPCOMR_HAC_LOAD		BIT(17)
#define HPCOMR_HAC_EN		BIT(16)
#define HPCOMR_MKS_EN		BIT(13)
#define HPCOMR_PROG_ZMK		BIT(12)
#define HPCOMR_SW_LPSV		BIT(10)
#define HPCOMR_SW_FSV		BIT(9)
#define HPCOMR_SW_SV		BIT(8)
#define HPCOMR_LP_SWR_DIS	BIT(5)
#define HPCOMR_LP_SWR		BIT(4)
#define HPCOMR_SSM_SFNS_DIS	BIT(2)
#define HPCOMR_SSM_ST_DIS	BIT(1)
#define HPCOMR_SSM_ST		BIT(0)

void imx_snvs_init(void);

#endif /* IMX_SNVS_H */
