Skip to content

Commit 74ac08a

Browse files
andy-shevlinusw
authored andcommitted
pinctrl: core: Simplify devm_pinctrl_*()
Use devm_add_action_or_reset() instead of devres_alloc() and devres_add(), which works the same. This will simplify the code. There is no functional changes. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com> Signed-off-by: Linus Walleij <linusw@kernel.org>
1 parent 17926aa commit 74ac08a

1 file changed

Lines changed: 20 additions & 47 deletions

File tree

drivers/pinctrl/core.c

Lines changed: 20 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1383,9 +1383,9 @@ int pinctrl_select_state(struct pinctrl *p, struct pinctrl_state *state)
13831383
}
13841384
EXPORT_SYMBOL_GPL(pinctrl_select_state);
13851385

1386-
static void devm_pinctrl_release(struct device *dev, void *res)
1386+
static void devm_pinctrl_release(void *p)
13871387
{
1388-
pinctrl_put(*(struct pinctrl **)res);
1388+
pinctrl_put(p);
13891389
}
13901390

13911391
/**
@@ -1397,31 +1397,21 @@ static void devm_pinctrl_release(struct device *dev, void *res)
13971397
*/
13981398
struct pinctrl *devm_pinctrl_get(struct device *dev)
13991399
{
1400-
struct pinctrl **ptr, *p;
1401-
1402-
ptr = devres_alloc(devm_pinctrl_release, sizeof(*ptr), GFP_KERNEL);
1403-
if (!ptr)
1404-
return ERR_PTR(-ENOMEM);
1400+
struct pinctrl *p;
1401+
int ret;
14051402

14061403
p = pinctrl_get(dev);
1407-
if (!IS_ERR(p)) {
1408-
*ptr = p;
1409-
devres_add(dev, ptr);
1410-
} else {
1411-
devres_free(ptr);
1412-
}
1404+
if (IS_ERR(p))
1405+
return p;
1406+
1407+
ret = devm_add_action_or_reset(dev, devm_pinctrl_release, p);
1408+
if (ret)
1409+
return ERR_PTR(ret);
14131410

14141411
return p;
14151412
}
14161413
EXPORT_SYMBOL_GPL(devm_pinctrl_get);
14171414

1418-
static int devm_pinctrl_match(struct device *dev, void *res, void *data)
1419-
{
1420-
struct pinctrl **p = res;
1421-
1422-
return *p == data;
1423-
}
1424-
14251415
/**
14261416
* devm_pinctrl_put() - Resource managed pinctrl_put()
14271417
* @p: the pinctrl handle to release
@@ -1432,8 +1422,7 @@ static int devm_pinctrl_match(struct device *dev, void *res, void *data)
14321422
*/
14331423
void devm_pinctrl_put(struct pinctrl *p)
14341424
{
1435-
WARN_ON(devres_release(p->dev, devm_pinctrl_release,
1436-
devm_pinctrl_match, p));
1425+
devm_release_action(p->dev, devm_pinctrl_release, p);
14371426
}
14381427
EXPORT_SYMBOL_GPL(devm_pinctrl_put);
14391428

@@ -2316,10 +2305,8 @@ void pinctrl_unregister(struct pinctrl_dev *pctldev)
23162305
}
23172306
EXPORT_SYMBOL_GPL(pinctrl_unregister);
23182307

2319-
static void devm_pinctrl_dev_release(struct device *dev, void *res)
2308+
static void devm_pinctrl_dev_release(void *pctldev)
23202309
{
2321-
struct pinctrl_dev *pctldev = *(struct pinctrl_dev **)res;
2322-
23232310
pinctrl_unregister(pctldev);
23242311
}
23252312

@@ -2338,20 +2325,16 @@ struct pinctrl_dev *devm_pinctrl_register(struct device *dev,
23382325
const struct pinctrl_desc *pctldesc,
23392326
void *driver_data)
23402327
{
2341-
struct pinctrl_dev **ptr, *pctldev;
2342-
2343-
ptr = devres_alloc(devm_pinctrl_dev_release, sizeof(*ptr), GFP_KERNEL);
2344-
if (!ptr)
2345-
return ERR_PTR(-ENOMEM);
2328+
struct pinctrl_dev *pctldev;
2329+
int ret;
23462330

23472331
pctldev = pinctrl_register(pctldesc, dev, driver_data);
2348-
if (IS_ERR(pctldev)) {
2349-
devres_free(ptr);
2332+
if (IS_ERR(pctldev))
23502333
return pctldev;
2351-
}
23522334

2353-
*ptr = pctldev;
2354-
devres_add(dev, ptr);
2335+
ret = devm_add_action_or_reset(dev, devm_pinctrl_dev_release, pctldev);
2336+
if (ret)
2337+
return ERR_PTR(ret);
23552338

23562339
return pctldev;
23572340
}
@@ -2373,23 +2356,13 @@ int devm_pinctrl_register_and_init(struct device *dev,
23732356
void *driver_data,
23742357
struct pinctrl_dev **pctldev)
23752358
{
2376-
struct pinctrl_dev **ptr;
23772359
int error;
23782360

2379-
ptr = devres_alloc(devm_pinctrl_dev_release, sizeof(*ptr), GFP_KERNEL);
2380-
if (!ptr)
2381-
return -ENOMEM;
2382-
23832361
error = pinctrl_register_and_init(pctldesc, dev, driver_data, pctldev);
2384-
if (error) {
2385-
devres_free(ptr);
2362+
if (error)
23862363
return error;
2387-
}
2388-
2389-
*ptr = *pctldev;
2390-
devres_add(dev, ptr);
23912364

2392-
return 0;
2365+
return devm_add_action_or_reset(dev, devm_pinctrl_dev_release, *pctldev);
23932366
}
23942367
EXPORT_SYMBOL_GPL(devm_pinctrl_register_and_init);
23952368

0 commit comments

Comments
 (0)