Commit 2a7f9982 authored by Maxime Ripard's avatar Maxime Ripard Committed by Kishon Vijay Abraham I

phy: sunxi: Rework phy initialization

Move the phy initialization and variables declaration to the loop itself, since
it is where it really belongs. Also remove all the temporary variables, we can
use the structure members directly.
Signed-off-by: default avatarMaxime Ripard <maxime.ripard@free-electrons.com>
Reviewed-by: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarKishon Vijay Abraham I <kishon@ti.com>
parent 4fc8a4e6
...@@ -224,13 +224,8 @@ static int sun4i_usb_phy_probe(struct platform_device *pdev) ...@@ -224,13 +224,8 @@ static int sun4i_usb_phy_probe(struct platform_device *pdev)
struct sun4i_usb_phy_data *data; struct sun4i_usb_phy_data *data;
struct device *dev = &pdev->dev; struct device *dev = &pdev->dev;
struct device_node *np = dev->of_node; struct device_node *np = dev->of_node;
void __iomem *pmu = NULL;
struct phy_provider *phy_provider; struct phy_provider *phy_provider;
struct reset_control *reset;
struct regulator *vbus;
struct resource *res; struct resource *res;
struct phy *phy;
char name[16];
int i; int i;
data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL); data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL);
...@@ -262,42 +257,41 @@ static int sun4i_usb_phy_probe(struct platform_device *pdev) ...@@ -262,42 +257,41 @@ static int sun4i_usb_phy_probe(struct platform_device *pdev)
/* Skip 0, 0 is the phy for otg which is not yet supported. */ /* Skip 0, 0 is the phy for otg which is not yet supported. */
for (i = 1; i < data->num_phys; i++) { for (i = 1; i < data->num_phys; i++) {
struct sun4i_usb_phy *phy = data->phys + i;
char name[16];
snprintf(name, sizeof(name), "usb%d_vbus", i); snprintf(name, sizeof(name), "usb%d_vbus", i);
vbus = devm_regulator_get_optional(dev, name); phy->vbus = devm_regulator_get_optional(dev, name);
if (IS_ERR(vbus)) { if (IS_ERR(phy->vbus)) {
if (PTR_ERR(vbus) == -EPROBE_DEFER) if (PTR_ERR(phy->vbus) == -EPROBE_DEFER)
return -EPROBE_DEFER; return -EPROBE_DEFER;
vbus = NULL; phy->vbus = NULL;
} }
snprintf(name, sizeof(name), "usb%d_reset", i); snprintf(name, sizeof(name), "usb%d_reset", i);
reset = devm_reset_control_get(dev, name); phy->reset = devm_reset_control_get(dev, name);
if (IS_ERR(reset)) { if (IS_ERR(phy->reset)) {
dev_err(dev, "failed to get reset %s\n", name); dev_err(dev, "failed to get reset %s\n", name);
return PTR_ERR(reset); return PTR_ERR(phy->reset);
} }
if (i) { /* No pmu for usbc0 */ if (i) { /* No pmu for usbc0 */
snprintf(name, sizeof(name), "pmu%d", i); snprintf(name, sizeof(name), "pmu%d", i);
res = platform_get_resource_byname(pdev, res = platform_get_resource_byname(pdev,
IORESOURCE_MEM, name); IORESOURCE_MEM, name);
pmu = devm_ioremap_resource(dev, res); phy->pmu = devm_ioremap_resource(dev, res);
if (IS_ERR(pmu)) if (IS_ERR(phy->pmu))
return PTR_ERR(pmu); return PTR_ERR(phy->pmu);
} }
phy = devm_phy_create(dev, &sun4i_usb_phy_ops, NULL); phy->phy = devm_phy_create(dev, &sun4i_usb_phy_ops, NULL);
if (IS_ERR(phy)) { if (IS_ERR(phy->phy)) {
dev_err(dev, "failed to create PHY %d\n", i); dev_err(dev, "failed to create PHY %d\n", i);
return PTR_ERR(phy); return PTR_ERR(phy->phy);
} }
data->phys[i].phy = phy; phy->index = i;
data->phys[i].pmu = pmu; phy_set_drvdata(phy->phy, &data->phys[i]);
data->phys[i].vbus = vbus;
data->phys[i].reset = reset;
data->phys[i].index = i;
phy_set_drvdata(phy, &data->phys[i]);
} }
dev_set_drvdata(dev, data); dev_set_drvdata(dev, data);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment