Skip to content

Commit fc9ee2a

Browse files
Bartosz Golaszewskikuba-moo
authored andcommitted
net: stmmac: platform: provide devm_stmmac_pltfr_probe()
Provide a devres variant of stmmac_pltfr_probe() which allows users to skip calling stmmac_pltfr_remove() at driver detach. Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org> Link: https://lore.kernel.org/r/20230623100417.93592-11-brgl@bgdev.pl Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent 061425d commit fc9ee2a

2 files changed

Lines changed: 33 additions & 0 deletions

File tree

drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -803,6 +803,36 @@ int stmmac_pltfr_probe(struct platform_device *pdev,
803803
}
804804
EXPORT_SYMBOL_GPL(stmmac_pltfr_probe);
805805

806+
static void devm_stmmac_pltfr_remove(void *data)
807+
{
808+
struct platform_device *pdev = data;
809+
810+
stmmac_pltfr_remove_no_dt(pdev);
811+
}
812+
813+
/**
814+
* devm_stmmac_pltfr_probe
815+
* @pdev: pointer to the platform device
816+
* @plat: driver data platform structure
817+
* @res: stmmac resources
818+
* Description: Devres variant of stmmac_pltfr_probe(). Allows users to skip
819+
* calling stmmac_pltfr_remove() on driver detach.
820+
*/
821+
int devm_stmmac_pltfr_probe(struct platform_device *pdev,
822+
struct plat_stmmacenet_data *plat,
823+
struct stmmac_resources *res)
824+
{
825+
int ret;
826+
827+
ret = stmmac_pltfr_probe(pdev, plat, res);
828+
if (ret)
829+
return ret;
830+
831+
return devm_add_action_or_reset(&pdev->dev, devm_stmmac_pltfr_remove,
832+
pdev);
833+
}
834+
EXPORT_SYMBOL_GPL(devm_stmmac_pltfr_probe);
835+
806836
/**
807837
* stmmac_pltfr_remove_no_dt
808838
* @pdev: pointer to the platform device

drivers/net/ethernet/stmicro/stmmac/stmmac_platform.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ void stmmac_pltfr_exit(struct platform_device *pdev,
2929
int stmmac_pltfr_probe(struct platform_device *pdev,
3030
struct plat_stmmacenet_data *plat,
3131
struct stmmac_resources *res);
32+
int devm_stmmac_pltfr_probe(struct platform_device *pdev,
33+
struct plat_stmmacenet_data *plat,
34+
struct stmmac_resources *res);
3235
void stmmac_pltfr_remove_no_dt(struct platform_device *pdev);
3336
void stmmac_pltfr_remove(struct platform_device *pdev);
3437
extern const struct dev_pm_ops stmmac_pltfr_pm_ops;

0 commit comments

Comments
 (0)