net: stmmac: cleanup and free the nodes and gpios setup in probe

Cleanup debugfs, dev nodes and gpios on driver removal.

Change-Id: Icd18103ef0d968edb9f2ab254321a14323dd1c5a
Signed-off-by: Sneh Shah <snehshah@codeaurora.org>
This commit is contained in:
Sneh Shah 2021-04-29 16:08:34 +05:30 • committed by Gerrit - the friendly Code Review server
commit 15a7538044
3 changed files with 34 additions and 0 deletions

View file

@ -1522,6 +1522,20 @@ fail:
return -ENOMEM;
}
static int ethqos_cleanup_debugfs(struct qcom_ethqos *ethqos)
{
if (!ethqos) {
ETHQOSERR("Null Param");
return -ENODEV;
}
debugfs_remove_recursive(ethqos->debugfs_dir);
ethqos->debugfs_dir = NULL;
ETHQOSDBG("debugfs Deleted Successfully");
return 0;
}
static int qcom_ethqos_probe(struct platform_device *pdev)
{
struct device_node *np = pdev->dev.of_node;
@ -1722,6 +1736,11 @@ static int qcom_ethqos_remove(struct platform_device *pdev)
if (phy_intr_en)
cancel_work_sync(&ethqos->emac_phy_work);
if (ethqos->emac_ver == EMAC_HW_v2_3_2_RG)
ethqos_remove_pps_dev(ethqos);
ethqos_cleanup_debugfs(ethqos);
ethqos_free_gpios(ethqos);
emac_emb_smmu_exit();
ethqos_disable_regulators(ethqos);

View file

@ -247,6 +247,7 @@ int create_pps_interrupt_device_node(dev_t *pps_dev_t,
struct cdev **pps_cdev,
struct class **pps_class,
char *pps_dev_node_name);
int ethqos_remove_pps_dev(struct qcom_ethqos *ethqos);
bool qcom_ethqos_is_phy_link_up(struct qcom_ethqos *ethqos);
void *qcom_ethqos_get_priv(struct qcom_ethqos *ethqos);

View file

@ -453,3 +453,17 @@ fail_alloc_cdev:
alloc_chrdev1_region_fail:
return ret;
}
int ethqos_remove_pps_dev(struct qcom_ethqos *ethqos)
{
device_destroy(ethqos->avb_class_a_class, ethqos->avb_class_a_dev_t);
class_destroy(ethqos->avb_class_a_class);
cdev_del(ethqos->avb_class_a_cdev);
unregister_chrdev_region(ethqos->avb_class_a_dev_t, 1);
device_destroy(ethqos->avb_class_b_class, ethqos->avb_class_b_dev_t);
class_destroy(ethqos->avb_class_b_class);
cdev_del(ethqos->avb_class_b_cdev);
unregister_chrdev_region(ethqos->avb_class_b_dev_t, 1);
return 0;
}