blob: eccf48c5a6568a0e05ba198f6d49e23573a67ad4 [file] [log] [blame]
#ifndef __PMUCAL_COMMON_H__
#define __PMUCAL_COMMON_H__
#include "pwrcal-env.h"
#ifdef PWRCAL_TARGET_LINUX
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/sizes.h>
#include <linux/debug-snapshot.h>
#include <linux/delay.h>
#endif
#define PMUCAL_PREFIX "PMUCAL: "
/* represents the value in access_type column in guide */
enum pmucal_seq_acctype {
PMUCAL_READ = 0,
PMUCAL_WRITE,
PMUCAL_COND_READ,
PMUCAL_COND_WRITE,
PMUCAL_INV_COND_WRITE,
PMUCAL_SAVE_RESTORE,
PMUCAL_COND_SAVE_RESTORE,
PMUCAL_WAIT,
PMUCAL_RAW_WAIT,
PMUCAL_CHECK_SKIP,
PMUCAL_COND_CHECK_SKIP,
#ifdef CONFIG_FLEXPMU
PMUCAL_WRITE_WAIT,
PMUCAL_WRITE_RETURN,
#endif
PMUCAL_DELAY,
};
/* represents each row in the PMU sequence guide */
struct pmucal_seq {
u32 access_type;
char *sfr_name;
phys_addr_t base_pa;
void __iomem *base_va;
u32 offset;
u32 mask;
u32 value;
phys_addr_t cond_base_pa;
void __iomem *cond_base_va;
u32 cond_offset;
u32 cond_mask;
u32 cond_value;
bool need_restore;
bool need_skip;
};
#define PMUCAL_SEQ_DESC(_access_type, _sfr_name, _base_pa, _offset, \
_mask, _value, _cond_base_pa, _cond_offset, \
_cond_mask, _cond_value) { \
.access_type = _access_type, \
.sfr_name = _sfr_name, \
.base_pa = _base_pa, \
.base_va = NULL, \
.offset = _offset, \
.mask = _mask, \
.value = _value, \
.cond_base_pa = _cond_base_pa, \
.cond_base_va = NULL, \
.cond_offset = _cond_offset, \
.cond_mask = _cond_mask, \
.cond_value = _cond_value, \
.need_restore = false, \
.need_skip = false, \
}
#ifdef CONFIG_FLEXPMU
#define PMUCAL_CPU_INFORM(_cpu_num, _base_pa, _offset) { \
.cpu_num = _cpu_num, \
.base_pa = _base_pa, \
.base_va = NULL, \
.offset = _offset, \
}
#endif
#endif