| /* 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 */ |