0001
0002
0003
0004 #ifndef __LINUX_MFD_ROHM_H__
0005 #define __LINUX_MFD_ROHM_H__
0006
0007 #include <linux/regmap.h>
0008 #include <linux/regulator/driver.h>
0009
0010 enum rohm_chip_type {
0011 ROHM_CHIP_TYPE_BD9571,
0012 ROHM_CHIP_TYPE_BD9573,
0013 ROHM_CHIP_TYPE_BD9574,
0014 ROHM_CHIP_TYPE_BD9576,
0015 ROHM_CHIP_TYPE_BD71815,
0016 ROHM_CHIP_TYPE_BD71828,
0017 ROHM_CHIP_TYPE_BD71837,
0018 ROHM_CHIP_TYPE_BD71847,
0019 ROHM_CHIP_TYPE_AMOUNT
0020 };
0021
0022 struct rohm_regmap_dev {
0023 struct device *dev;
0024 struct regmap *regmap;
0025 };
0026
0027 #define ROHM_DVS_LEVEL_RUN BIT(0)
0028 #define ROHM_DVS_LEVEL_IDLE BIT(1)
0029 #define ROHM_DVS_LEVEL_SUSPEND BIT(2)
0030 #define ROHM_DVS_LEVEL_LPSR BIT(3)
0031 #define ROHM_DVS_LEVEL_SNVS BIT(4)
0032 #define ROHM_DVS_LEVEL_VALID_AMOUNT 5
0033 #define ROHM_DVS_LEVEL_UNKNOWN 0
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057 struct rohm_dvs_config {
0058 uint64_t level_map;
0059 unsigned int run_reg;
0060 unsigned int run_mask;
0061 unsigned int run_on_mask;
0062 unsigned int idle_reg;
0063 unsigned int idle_mask;
0064 unsigned int idle_on_mask;
0065 unsigned int suspend_reg;
0066 unsigned int suspend_mask;
0067 unsigned int suspend_on_mask;
0068 unsigned int lpsr_reg;
0069 unsigned int lpsr_mask;
0070 unsigned int lpsr_on_mask;
0071 unsigned int snvs_reg;
0072 unsigned int snvs_mask;
0073 unsigned int snvs_on_mask;
0074 };
0075
0076 #if IS_ENABLED(CONFIG_REGULATOR_ROHM)
0077 int rohm_regulator_set_dvs_levels(const struct rohm_dvs_config *dvs,
0078 struct device_node *np,
0079 const struct regulator_desc *desc,
0080 struct regmap *regmap);
0081
0082 int rohm_regulator_set_voltage_sel_restricted(struct regulator_dev *rdev,
0083 unsigned int sel);
0084 #endif
0085
0086 #endif