3636 */
3737#define WRITE_PROTECT_EN 0
3838
39- struct sd3078 {
40- struct rtc_device * rtc ;
41- struct regmap * regmap ;
42- };
43-
4439/*
4540 * In order to prevent arbitrary modification of the time register,
4641 * when modification of the register,
@@ -49,14 +44,11 @@ struct sd3078 {
4944 * 2. set WRITE2 bit
5045 * 3. set WRITE3 bit
5146 */
52- static void sd3078_enable_reg_write (struct sd3078 * sd3078 )
47+ static void sd3078_enable_reg_write (struct regmap * regmap )
5348{
54- regmap_update_bits (sd3078 -> regmap , SD3078_REG_CTRL2 ,
55- KEY_WRITE1 , KEY_WRITE1 );
56- regmap_update_bits (sd3078 -> regmap , SD3078_REG_CTRL1 ,
57- KEY_WRITE2 , KEY_WRITE2 );
58- regmap_update_bits (sd3078 -> regmap , SD3078_REG_CTRL1 ,
59- KEY_WRITE3 , KEY_WRITE3 );
49+ regmap_update_bits (regmap , SD3078_REG_CTRL2 , KEY_WRITE1 , KEY_WRITE1 );
50+ regmap_update_bits (regmap , SD3078_REG_CTRL1 , KEY_WRITE2 , KEY_WRITE2 );
51+ regmap_update_bits (regmap , SD3078_REG_CTRL1 , KEY_WRITE3 , KEY_WRITE3 );
6052}
6153
6254#if WRITE_PROTECT_EN
@@ -69,14 +61,11 @@ static void sd3078_enable_reg_write(struct sd3078 *sd3078)
6961 * 2. clear WRITE3 bit
7062 * 3. clear WRITE1 bit
7163 */
72- static void sd3078_disable_reg_write (struct sd3078 * sd3078 )
64+ static void sd3078_disable_reg_write (struct regmap * regmap )
7365{
74- regmap_update_bits (sd3078 -> regmap , SD3078_REG_CTRL1 ,
75- KEY_WRITE2 , 0 );
76- regmap_update_bits (sd3078 -> regmap , SD3078_REG_CTRL1 ,
77- KEY_WRITE3 , 0 );
78- regmap_update_bits (sd3078 -> regmap , SD3078_REG_CTRL2 ,
79- KEY_WRITE1 , 0 );
66+ regmap_update_bits (regmap , SD3078_REG_CTRL1 , KEY_WRITE2 , 0 );
67+ regmap_update_bits (regmap , SD3078_REG_CTRL1 , KEY_WRITE3 , 0 );
68+ regmap_update_bits (regmap , SD3078_REG_CTRL2 , KEY_WRITE1 , 0 );
8069}
8170#endif
8271
@@ -85,11 +74,10 @@ static int sd3078_rtc_read_time(struct device *dev, struct rtc_time *tm)
8574 unsigned char hour ;
8675 unsigned char rtc_data [NUM_TIME_REGS ] = {0 };
8776 struct i2c_client * client = to_i2c_client (dev );
88- struct sd3078 * sd3078 = i2c_get_clientdata (client );
77+ struct regmap * regmap = i2c_get_clientdata (client );
8978 int ret ;
9079
91- ret = regmap_bulk_read (sd3078 -> regmap , SD3078_REG_SC , rtc_data ,
92- NUM_TIME_REGS );
80+ ret = regmap_bulk_read (regmap , SD3078_REG_SC , rtc_data , NUM_TIME_REGS );
9381 if (ret < 0 ) {
9482 dev_err (dev , "reading from RTC failed with err:%d\n" , ret );
9583 return ret ;
@@ -123,7 +111,7 @@ static int sd3078_rtc_set_time(struct device *dev, struct rtc_time *tm)
123111{
124112 unsigned char rtc_data [NUM_TIME_REGS ];
125113 struct i2c_client * client = to_i2c_client (dev );
126- struct sd3078 * sd3078 = i2c_get_clientdata (client );
114+ struct regmap * regmap = i2c_get_clientdata (client );
127115 int ret ;
128116
129117 rtc_data [SD3078_REG_SC ] = bin2bcd (tm -> tm_sec );
@@ -135,18 +123,18 @@ static int sd3078_rtc_set_time(struct device *dev, struct rtc_time *tm)
135123 rtc_data [SD3078_REG_YR ] = bin2bcd (tm -> tm_year - 100 );
136124
137125#if WRITE_PROTECT_EN
138- sd3078_enable_reg_write (sd3078 );
126+ sd3078_enable_reg_write (regmap );
139127#endif
140128
141- ret = regmap_bulk_write (sd3078 -> regmap , SD3078_REG_SC , rtc_data ,
129+ ret = regmap_bulk_write (regmap , SD3078_REG_SC , rtc_data ,
142130 NUM_TIME_REGS );
143131 if (ret < 0 ) {
144132 dev_err (dev , "writing to RTC failed with err:%d\n" , ret );
145133 return ret ;
146134 }
147135
148136#if WRITE_PROTECT_EN
149- sd3078_disable_reg_write (sd3078 );
137+ sd3078_disable_reg_write (regmap );
150138#endif
151139
152140 return 0 ;
@@ -166,36 +154,33 @@ static const struct regmap_config regmap_config = {
166154static int sd3078_probe (struct i2c_client * client )
167155{
168156 int ret ;
169- struct sd3078 * sd3078 ;
157+ struct regmap * regmap ;
158+ struct rtc_device * rtc ;
170159
171160 if (!i2c_check_functionality (client -> adapter , I2C_FUNC_I2C ))
172161 return - ENODEV ;
173162
174- sd3078 = devm_kzalloc (& client -> dev , sizeof (* sd3078 ), GFP_KERNEL );
175- if (!sd3078 )
176- return - ENOMEM ;
177-
178- sd3078 -> regmap = devm_regmap_init_i2c (client , & regmap_config );
179- if (IS_ERR (sd3078 -> regmap )) {
163+ regmap = devm_regmap_init_i2c (client , & regmap_config );
164+ if (IS_ERR (regmap )) {
180165 dev_err (& client -> dev , "regmap allocation failed\n" );
181- return PTR_ERR (sd3078 -> regmap );
166+ return PTR_ERR (regmap );
182167 }
183168
184- i2c_set_clientdata (client , sd3078 );
169+ i2c_set_clientdata (client , regmap );
185170
186- sd3078 -> rtc = devm_rtc_allocate_device (& client -> dev );
187- if (IS_ERR (sd3078 -> rtc ))
188- return PTR_ERR (sd3078 -> rtc );
171+ rtc = devm_rtc_allocate_device (& client -> dev );
172+ if (IS_ERR (rtc ))
173+ return PTR_ERR (rtc );
189174
190- sd3078 -> rtc -> ops = & sd3078_rtc_ops ;
191- sd3078 -> rtc -> range_min = RTC_TIMESTAMP_BEGIN_2000 ;
192- sd3078 -> rtc -> range_max = RTC_TIMESTAMP_END_2099 ;
175+ rtc -> ops = & sd3078_rtc_ops ;
176+ rtc -> range_min = RTC_TIMESTAMP_BEGIN_2000 ;
177+ rtc -> range_max = RTC_TIMESTAMP_END_2099 ;
193178
194- ret = devm_rtc_register_device (sd3078 -> rtc );
179+ ret = devm_rtc_register_device (rtc );
195180 if (ret )
196181 return ret ;
197182
198- sd3078_enable_reg_write (sd3078 );
183+ sd3078_enable_reg_write (regmap );
199184
200185 return 0 ;
201186}
0 commit comments