diff options
author | Joachim Eastwood <manabian@gmail.com> | 2015-07-17 01:26:08 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-07-21 06:45:56 +0300 |
commit | b0003ead75f394f1c6f3b704be5da8e9eb029f8c (patch) | |
tree | 46eaff7a61fdec5389b2bda307e1335c60a56226 /drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c | |
parent | f396cb01210909ab2de0b50b76677892c1bfeb5a (diff) | |
download | linux-b0003ead75f394f1c6f3b704be5da8e9eb029f8c.tar.xz |
stmmac: make stmmac_probe_config_dt return the platform data struct
Since stmmac_probe_config_dt() allocates the platform data structure
it is cleaner if it just returned this structure directly. This
function will later be used in the probe function in dwmac-* drivers.
Signed-off-by: Joachim Eastwood <manabian@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c')
-rw-r--r-- | drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c index 94962d75b99a..ea467be93673 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c @@ -104,9 +104,8 @@ static int dwmac1000_validate_ucast_entries(int ucast_entries) * this function is to read the driver parameters from device-tree and * set some private fields that will be used by the main at runtime. */ -static int stmmac_probe_config_dt(struct platform_device *pdev, - struct plat_stmmacenet_data **plat_dat, - const char **mac) +static struct plat_stmmacenet_data * +stmmac_probe_config_dt(struct platform_device *pdev, const char **mac) { struct device_node *np = pdev->dev.of_node; struct plat_stmmacenet_data *plat; @@ -115,9 +114,7 @@ static int stmmac_probe_config_dt(struct platform_device *pdev, plat = devm_kzalloc(&pdev->dev, sizeof(*plat), GFP_KERNEL); if (!plat) - return -ENOMEM; - - *plat_dat = plat; + return ERR_PTR(-ENOMEM); data = of_device_get_match_data(&pdev->dev); if (data) { @@ -156,7 +153,7 @@ static int stmmac_probe_config_dt(struct platform_device *pdev, /* If phy-handle is not specified, check if we have a fixed-phy */ if (!plat->phy_node && of_phy_is_fixed_link(np)) { if ((of_phy_register_fixed_link(np) < 0)) - return -ENODEV; + return ERR_PTR(-ENODEV); plat->phy_node = of_node_get(np); } @@ -233,7 +230,7 @@ static int stmmac_probe_config_dt(struct platform_device *pdev, GFP_KERNEL); if (!dma_cfg) { of_node_put(np); - return -ENOMEM; + return ERR_PTR(-ENOMEM); } plat->dma_cfg = dma_cfg; of_property_read_u32(np, "snps,pbl", &dma_cfg->pbl); @@ -251,14 +248,13 @@ static int stmmac_probe_config_dt(struct platform_device *pdev, pr_warn("force_sf_dma_mode is ignored if force_thresh_dma_mode is set."); } - return 0; + return plat; } #else -static int stmmac_probe_config_dt(struct platform_device *pdev, - struct plat_stmmacenet_data **plat, - const char **mac) +static struct plat_stmmacenet_data * +stmmac_probe_config_dt(struct platform_device *pdev, const char **mac) { - return -ENOSYS; + return ERR_PTR(-ENOSYS); } #endif /* CONFIG_OF */ @@ -325,10 +321,10 @@ int stmmac_pltfr_probe(struct platform_device *pdev) return ret; if (pdev->dev.of_node) { - ret = stmmac_probe_config_dt(pdev, &plat_dat, &stmmac_res.mac); - if (ret) { + plat_dat = stmmac_probe_config_dt(pdev, &stmmac_res.mac); + if (IS_ERR(plat_dat)) { dev_err(&pdev->dev, "dt configuration failed\n"); - return ret; + return PTR_ERR(plat_dat); } } else { plat_dat = dev_get_platdata(&pdev->dev); |