#include <linux/mfd/syscon.h>
#include <linux/module.h>
#include <linux/of_platform.h>
#include <linux/pm_opp.h>
#include <linux/regmap.h>
#define REVISION_MASK 0xF
#define REVISION_SHIFT 28
#define AM33XX_800M_ARM_MPU_MAX_FREQ 0x1E2F
#define AM43XX_600M_ARM_MPU_MAX_FREQ 0xFFA
#define DRA7_EFUSE_HAS_OD_MPU_OPP 11
#define DRA7_EFUSE_HAS_HIGH_MPU_OPP 15
#define DRA7_EFUSE_HAS_ALL_MPU_OPP 23
#define DRA7_EFUSE_NOM_MPU_OPP BIT(0)
#define DRA7_EFUSE_OD_MPU_OPP BIT(1)
#define DRA7_EFUSE_HIGH_MPU_OPP BIT(2)
struct ti_cpufreq_soc_data {
unsigned long (*efuse_xlate)(struct ti_cpufreq_data *opp_data,
unsigned long efuse_fallback;
unsigned long efuse_offset;
unsigned long efuse_mask;
unsigned long efuse_shift;
unsigned long rev_offset;
struct device_node *opp_node;
const struct ti_cpufreq_soc_data *soc_data;
struct opp_table *opp_table;
static unsigned long amx3_efuse_xlate(struct ti_cpufreq_data *opp_data,
efuse = opp_data->soc_data->efuse_fallback;