blob: b8a365a34ec3ae0f38436773bd9b65b51c8a7392 [file] [log] [blame]
/* SPDX-License-Identifier: BSD-2-Clause */
/*
* Copyright 2018-2019 NXP
*
* Brief CAAM driver common include file.
* Definition of the structure type to save and restore
* HW registers configuration
*/
#ifndef __CAAM_PWR_H__
#define __CAAM_PWR_H__
#include <sys/queue.h>
/*
* Definition of the structure type used to list HW registers
* to be saved and restored.
*/
struct reglist {
uint32_t offset; /* Register offset */
uint32_t nbregs; /* Number of consecutive registers */
uint32_t mask_clr; /* Clear mask of bit to exclude in restore value */
uint32_t mask_set; /* Set mask of bit to force in restore value */
};
#define BACKUP_REG(_offset, _nbregs, _mask_clr, _mask_set) \
{ \
.offset = _offset, .nbregs = _nbregs, .mask_clr = _mask_clr, \
.mask_set = _mask_set, \
}
/*
* Definition of the structure type used to store registers to backup
*/
struct backup_data {
vaddr_t baseaddr; /* Register virtual base address */
size_t nbentries; /* Number of entries in the list */
const struct reglist *regs; /* Register list */
uint32_t *val; /* Register value */
SLIST_ENTRY(backup_data) next; /* Link to next data */
};
/*
* Add definition of the backup data in the list
*
* @baseaddr Register base address
* @regs Register list
* @nbentries Number of entries in the list
*/
void caam_pwr_add_backup(vaddr_t baseaddr, const struct reglist *regs,
size_t nbentries);
/*
* Power Initialization function called when all CAAM modules are
* initialized correctly.
* Register the PM callback in the system.
*/
void caam_pwr_init(void);
#endif /* __CAAM_PWR_H__ */