Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mfd: sec: Provide max_register to regmap

Enable debugfs register dumps and greater error checking within the
regmap API providing the maximum register to the regmap API.

Signed-off-by: Mark Brown <broonie@linaro.org>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>

authored by

Mark Brown and committed by
Samuel Ortiz
25f311fa da002d89

+40 -1
+40 -1
drivers/mfd/sec-core.c
··· 25 25 #include <linux/mfd/samsung/core.h> 26 26 #include <linux/mfd/samsung/irq.h> 27 27 #include <linux/mfd/samsung/rtc.h> 28 + #include <linux/mfd/samsung/s2mps11.h> 29 + #include <linux/mfd/samsung/s5m8763.h> 30 + #include <linux/mfd/samsung/s5m8767.h> 28 31 #include <linux/regmap.h> 29 32 30 33 static struct mfd_cell s5m8751_devs[] = { ··· 108 105 .val_bits = 8, 109 106 }; 110 107 108 + static struct regmap_config s2mps11_regmap_config = { 109 + .reg_bits = 8, 110 + .val_bits = 8, 111 + 112 + .max_register = S2MPS11_REG_L38CTRL, 113 + }; 114 + 115 + static struct regmap_config s5m8763_regmap_config = { 116 + .reg_bits = 8, 117 + .val_bits = 8, 118 + 119 + .max_register = S5M8763_REG_LBCNFG2, 120 + }; 121 + 122 + static struct regmap_config s5m8767_regmap_config = { 123 + .reg_bits = 8, 124 + .val_bits = 8, 125 + 126 + .max_register = S5M8767_REG_LDO28CTRL, 127 + }; 111 128 112 129 #ifdef CONFIG_OF 113 130 /* ··· 183 160 const struct i2c_device_id *id) 184 161 { 185 162 struct sec_platform_data *pdata = i2c->dev.platform_data; 163 + const struct regmap_config *regmap; 186 164 struct sec_pmic_dev *sec_pmic; 187 165 int ret; 188 166 ··· 214 190 sec_pmic->pdata = pdata; 215 191 } 216 192 217 - sec_pmic->regmap = devm_regmap_init_i2c(i2c, &sec_regmap_config); 193 + switch (sec_pmic->device_type) { 194 + case S2MPS11X: 195 + regmap = &s2mps11_regmap_config; 196 + break; 197 + case S5M8763X: 198 + regmap = &s5m8763_regmap_config; 199 + break; 200 + case S5M8767X: 201 + regmap = &s5m8767_regmap_config; 202 + break; 203 + default: 204 + regmap = &sec_regmap_config; 205 + break; 206 + } 207 + 208 + sec_pmic->regmap = devm_regmap_init_i2c(i2c, regmap); 218 209 if (IS_ERR(sec_pmic->regmap)) { 219 210 ret = PTR_ERR(sec_pmic->regmap); 220 211 dev_err(&i2c->dev, "Failed to allocate register map: %d\n",