root/include/linux/mfd/bcm590xx.h
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Broadcom BCM590xx PMU
 *
 * Copyright 2014 Linaro Limited
 * Author: Matt Porter <mporter@linaro.org>
 */

#ifndef __LINUX_MFD_BCM590XX_H
#define __LINUX_MFD_BCM590XX_H

#include <linux/device.h>
#include <linux/i2c.h>
#include <linux/regmap.h>

/* PMU ID register values; also used as device type */
#define BCM590XX_PMUID_BCM59054         0x54
#define BCM590XX_PMUID_BCM59056         0x56

/* Known chip revision IDs */
#define BCM59054_REV_DIGITAL_A1         1
#define BCM59054_REV_ANALOG_A1          2

#define BCM59056_REV_DIGITAL_A0         1
#define BCM59056_REV_ANALOG_A0          1

#define BCM59056_REV_DIGITAL_B0         2
#define BCM59056_REV_ANALOG_B0          2

/* regmap types */
enum bcm590xx_regmap_type {
        BCM590XX_REGMAP_PRI,
        BCM590XX_REGMAP_SEC,
};

/* max register address */
#define BCM590XX_MAX_REGISTER_PRI       0xe7
#define BCM590XX_MAX_REGISTER_SEC       0xf0

struct bcm590xx {
        struct device *dev;
        struct i2c_client *i2c_pri;
        struct i2c_client *i2c_sec;
        struct regmap *regmap_pri;
        struct regmap *regmap_sec;

        /* PMU ID value; also used as device type */
        u8 pmu_id;

        /* Chip revision, read from PMUREV reg */
        u8 rev_digital;
        u8 rev_analog;
};

#endif /*  __LINUX_MFD_BCM590XX_H */