54
54
55
55
#define ISL12022_BETA_TSE (1 << 7)
56
56
57
+ struct isl12022 {
58
+ struct regmap * regmap ;
59
+ };
60
+
57
61
static umode_t isl12022_hwmon_is_visible (const void * data ,
58
62
enum hwmon_sensor_types type ,
59
63
u32 attr , int channel )
@@ -116,7 +120,8 @@ static const struct hwmon_chip_info isl12022_hwmon_chip_info = {
116
120
117
121
static void isl12022_hwmon_register (struct device * dev )
118
122
{
119
- struct regmap * regmap = dev_get_drvdata (dev );
123
+ struct isl12022 * isl12022 = dev_get_drvdata (dev );
124
+ struct regmap * regmap = isl12022 -> regmap ;
120
125
struct device * hwmon ;
121
126
int ret ;
122
127
@@ -143,7 +148,8 @@ static void isl12022_hwmon_register(struct device *dev)
143
148
*/
144
149
static int isl12022_rtc_read_time (struct device * dev , struct rtc_time * tm )
145
150
{
146
- struct regmap * regmap = dev_get_drvdata (dev );
151
+ struct isl12022 * isl12022 = dev_get_drvdata (dev );
152
+ struct regmap * regmap = isl12022 -> regmap ;
147
153
uint8_t buf [ISL12022_REG_INT + 1 ];
148
154
int ret ;
149
155
@@ -178,7 +184,8 @@ static int isl12022_rtc_read_time(struct device *dev, struct rtc_time *tm)
178
184
179
185
static int isl12022_rtc_set_time (struct device * dev , struct rtc_time * tm )
180
186
{
181
- struct regmap * regmap = dev_get_drvdata (dev );
187
+ struct isl12022 * isl12022 = dev_get_drvdata (dev );
188
+ struct regmap * regmap = isl12022 -> regmap ;
182
189
int ret ;
183
190
uint8_t buf [ISL12022_REG_DW + 1 ];
184
191
@@ -210,7 +217,8 @@ static int isl12022_rtc_set_time(struct device *dev, struct rtc_time *tm)
210
217
211
218
static int isl12022_rtc_ioctl (struct device * dev , unsigned int cmd , unsigned long arg )
212
219
{
213
- struct regmap * regmap = dev_get_drvdata (dev );
220
+ struct isl12022 * isl12022 = dev_get_drvdata (dev );
221
+ struct regmap * regmap = isl12022 -> regmap ;
214
222
u32 user , val ;
215
223
int ret ;
216
224
@@ -248,7 +256,8 @@ static const struct regmap_config regmap_config = {
248
256
249
257
static int isl12022_register_clock (struct device * dev )
250
258
{
251
- struct regmap * regmap = dev_get_drvdata (dev );
259
+ struct isl12022 * isl12022 = dev_get_drvdata (dev );
260
+ struct regmap * regmap = isl12022 -> regmap ;
252
261
struct clk_hw * hw ;
253
262
int ret ;
254
263
@@ -288,7 +297,8 @@ static const u32 trip_levels[2][7] = {
288
297
289
298
static void isl12022_set_trip_levels (struct device * dev )
290
299
{
291
- struct regmap * regmap = dev_get_drvdata (dev );
300
+ struct isl12022 * isl12022 = dev_get_drvdata (dev );
301
+ struct regmap * regmap = isl12022 -> regmap ;
292
302
u32 levels [2 ] = {0 , 0 };
293
303
int ret , i , j , x [2 ];
294
304
u8 val , mask ;
@@ -325,20 +335,27 @@ static void isl12022_set_trip_levels(struct device *dev)
325
335
326
336
static int isl12022_probe (struct i2c_client * client )
327
337
{
338
+ struct isl12022 * isl12022 ;
328
339
struct rtc_device * rtc ;
329
340
struct regmap * regmap ;
330
341
int ret ;
331
342
332
343
if (!i2c_check_functionality (client -> adapter , I2C_FUNC_I2C ))
333
344
return - ENODEV ;
334
345
346
+ /* Allocate driver state */
347
+ isl12022 = devm_kzalloc (& client -> dev , sizeof (* isl12022 ), GFP_KERNEL );
348
+ if (!isl12022 )
349
+ return - ENOMEM ;
350
+
335
351
regmap = devm_regmap_init_i2c (client , & regmap_config );
336
352
if (IS_ERR (regmap )) {
337
353
dev_err (& client -> dev , "regmap allocation failed\n" );
338
354
return PTR_ERR (regmap );
339
355
}
356
+ isl12022 -> regmap = regmap ;
340
357
341
- dev_set_drvdata (& client -> dev , regmap );
358
+ dev_set_drvdata (& client -> dev , isl12022 );
342
359
343
360
ret = isl12022_register_clock (& client -> dev );
344
361
if (ret )
0 commit comments