Skip to content

Commit d4a6161

Browse files
esbenalexandrebelloni
authored andcommitted
rtc: isl12022: Prepare for extending rtc device drvdata
Add a struct to hold the regmap pointer, so more information can be added. This is morally a revert of commit f525b21 ("rtc: isl12022: Get rid of unneeded private struct isl12022"). Acked-by: Rasmus Villemoes <[email protected]> Signed-off-by: Esben Haabendal <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Alexandre Belloni <[email protected]>
1 parent 49fd6f9 commit d4a6161

File tree

1 file changed

+24
-7
lines changed

1 file changed

+24
-7
lines changed

drivers/rtc/rtc-isl12022.c

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@
5454

5555
#define ISL12022_BETA_TSE (1 << 7)
5656

57+
struct isl12022 {
58+
struct regmap *regmap;
59+
};
60+
5761
static umode_t isl12022_hwmon_is_visible(const void *data,
5862
enum hwmon_sensor_types type,
5963
u32 attr, int channel)
@@ -116,7 +120,8 @@ static const struct hwmon_chip_info isl12022_hwmon_chip_info = {
116120

117121
static void isl12022_hwmon_register(struct device *dev)
118122
{
119-
struct regmap *regmap = dev_get_drvdata(dev);
123+
struct isl12022 *isl12022 = dev_get_drvdata(dev);
124+
struct regmap *regmap = isl12022->regmap;
120125
struct device *hwmon;
121126
int ret;
122127

@@ -143,7 +148,8 @@ static void isl12022_hwmon_register(struct device *dev)
143148
*/
144149
static int isl12022_rtc_read_time(struct device *dev, struct rtc_time *tm)
145150
{
146-
struct regmap *regmap = dev_get_drvdata(dev);
151+
struct isl12022 *isl12022 = dev_get_drvdata(dev);
152+
struct regmap *regmap = isl12022->regmap;
147153
uint8_t buf[ISL12022_REG_INT + 1];
148154
int ret;
149155

@@ -178,7 +184,8 @@ static int isl12022_rtc_read_time(struct device *dev, struct rtc_time *tm)
178184

179185
static int isl12022_rtc_set_time(struct device *dev, struct rtc_time *tm)
180186
{
181-
struct regmap *regmap = dev_get_drvdata(dev);
187+
struct isl12022 *isl12022 = dev_get_drvdata(dev);
188+
struct regmap *regmap = isl12022->regmap;
182189
int ret;
183190
uint8_t buf[ISL12022_REG_DW + 1];
184191

@@ -210,7 +217,8 @@ static int isl12022_rtc_set_time(struct device *dev, struct rtc_time *tm)
210217

211218
static int isl12022_rtc_ioctl(struct device *dev, unsigned int cmd, unsigned long arg)
212219
{
213-
struct regmap *regmap = dev_get_drvdata(dev);
220+
struct isl12022 *isl12022 = dev_get_drvdata(dev);
221+
struct regmap *regmap = isl12022->regmap;
214222
u32 user, val;
215223
int ret;
216224

@@ -248,7 +256,8 @@ static const struct regmap_config regmap_config = {
248256

249257
static int isl12022_register_clock(struct device *dev)
250258
{
251-
struct regmap *regmap = dev_get_drvdata(dev);
259+
struct isl12022 *isl12022 = dev_get_drvdata(dev);
260+
struct regmap *regmap = isl12022->regmap;
252261
struct clk_hw *hw;
253262
int ret;
254263

@@ -288,7 +297,8 @@ static const u32 trip_levels[2][7] = {
288297

289298
static void isl12022_set_trip_levels(struct device *dev)
290299
{
291-
struct regmap *regmap = dev_get_drvdata(dev);
300+
struct isl12022 *isl12022 = dev_get_drvdata(dev);
301+
struct regmap *regmap = isl12022->regmap;
292302
u32 levels[2] = {0, 0};
293303
int ret, i, j, x[2];
294304
u8 val, mask;
@@ -325,20 +335,27 @@ static void isl12022_set_trip_levels(struct device *dev)
325335

326336
static int isl12022_probe(struct i2c_client *client)
327337
{
338+
struct isl12022 *isl12022;
328339
struct rtc_device *rtc;
329340
struct regmap *regmap;
330341
int ret;
331342

332343
if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C))
333344
return -ENODEV;
334345

346+
/* Allocate driver state */
347+
isl12022 = devm_kzalloc(&client->dev, sizeof(*isl12022), GFP_KERNEL);
348+
if (!isl12022)
349+
return -ENOMEM;
350+
335351
regmap = devm_regmap_init_i2c(client, &regmap_config);
336352
if (IS_ERR(regmap)) {
337353
dev_err(&client->dev, "regmap allocation failed\n");
338354
return PTR_ERR(regmap);
339355
}
356+
isl12022->regmap = regmap;
340357

341-
dev_set_drvdata(&client->dev, regmap);
358+
dev_set_drvdata(&client->dev, isl12022);
342359

343360
ret = isl12022_register_clock(&client->dev);
344361
if (ret)

0 commit comments

Comments
 (0)