mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-13 16:16:15 -04:00
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:
parent
701109ad7a
commit
15a7538044
3 changed files with 34 additions and 0 deletions
|
|
@ -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(ðqos->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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue