Loading drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c +27 −0 Original line number Diff line number Diff line Loading @@ -1522,6 +1522,20 @@ static int ethqos_create_debugfs(struct qcom_ethqos *ethqos) 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; Loading Loading @@ -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; Loading @@ -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; } Loading drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.h +1 −0 Original line number Diff line number Diff line Loading @@ -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); Loading drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-pps.c +14 −0 Original line number Diff line number Diff line Loading @@ -453,3 +453,17 @@ int create_pps_interrupt_device_node(dev_t *pps_dev_t, 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
drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c +27 −0 Original line number Diff line number Diff line Loading @@ -1522,6 +1522,20 @@ static int ethqos_create_debugfs(struct qcom_ethqos *ethqos) 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; Loading Loading @@ -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; Loading @@ -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; } Loading
drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.h +1 −0 Original line number Diff line number Diff line Loading @@ -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); Loading
drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-pps.c +14 −0 Original line number Diff line number Diff line Loading @@ -453,3 +453,17 @@ int create_pps_interrupt_device_node(dev_t *pps_dev_t, 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; }