5454
5555#define ISL12022_BETA_TSE (1 << 7)
5656
57+ struct isl12022 {
58+ struct regmap * regmap ;
59+ };
60+
5761static 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
117121static 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 */
144149static 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
179185static 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
211218static 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
249257static 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
289298static 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
326336static 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