mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-09 05:39:54 -04:00
Merge "net: stmmac: cleanup and free the nodes and gpios setup in probe"
This commit is contained in:
commit
becb6bbf79
3 changed files with 42 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;
|
||||
|
|
@ -1704,6 +1718,11 @@ static int qcom_ethqos_remove(struct platform_device *pdev)
|
|||
struct qcom_ethqos *ethqos;
|
||||
int ret;
|
||||
|
||||
if (of_device_is_compatible(pdev->dev.of_node, "qcom,emac-smmu-embedded")) {
|
||||
of_platform_depopulate(&pdev->dev);
|
||||
return 0;
|
||||
}
|
||||
|
||||
ethqos = get_stmmac_bsp_priv(&pdev->dev);
|
||||
if (!ethqos)
|
||||
return -ENODEV;
|
||||
|
|
@ -1717,9 +1736,17 @@ 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);
|
||||
|
||||
platform_set_drvdata(pdev, NULL);
|
||||
of_platform_depopulate(&pdev->dev);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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