@@ -154,8 +154,7 @@ static const struct regmap_config sbs_regmap = {
154154 .val_format_endian = REGMAP_ENDIAN_LITTLE , /* since based on SMBus */
155155};
156156
157- static const struct power_supply_desc sbs_desc = {
158- .name = "sbs-charger" ,
157+ static const struct power_supply_desc sbs_default_desc = {
159158 .type = POWER_SUPPLY_TYPE_MAINS ,
160159 .properties = sbs_properties ,
161160 .num_properties = ARRAY_SIZE (sbs_properties ),
@@ -165,9 +164,20 @@ static const struct power_supply_desc sbs_desc = {
165164static int sbs_probe (struct i2c_client * client )
166165{
167166 struct power_supply_config psy_cfg = {};
167+ struct power_supply_desc * sbs_desc ;
168168 struct sbs_info * chip ;
169169 int ret , val ;
170170
171+ sbs_desc = devm_kmemdup (& client -> dev , & sbs_default_desc ,
172+ sizeof (* sbs_desc ), GFP_KERNEL );
173+ if (!sbs_desc )
174+ return - ENOMEM ;
175+
176+ sbs_desc -> name = devm_kasprintf (& client -> dev , GFP_KERNEL , "sbs-%s" ,
177+ dev_name (& client -> dev ));
178+ if (!sbs_desc -> name )
179+ return - ENOMEM ;
180+
171181 chip = devm_kzalloc (& client -> dev , sizeof (struct sbs_info ), GFP_KERNEL );
172182 if (!chip )
173183 return - ENOMEM ;
@@ -191,7 +201,7 @@ static int sbs_probe(struct i2c_client *client)
191201 return dev_err_probe (& client -> dev , ret , "Failed to get device status\n" );
192202 chip -> last_state = val ;
193203
194- chip -> power_supply = devm_power_supply_register (& client -> dev , & sbs_desc , & psy_cfg );
204+ chip -> power_supply = devm_power_supply_register (& client -> dev , sbs_desc , & psy_cfg );
195205 if (IS_ERR (chip -> power_supply ))
196206 return dev_err_probe (& client -> dev , PTR_ERR (chip -> power_supply ),
197207 "Failed to register power supply\n" );
0 commit comments