Re: [PATCH v6 1/3] phy: add driver for Qualcomm IPQ40xx USB PHY

From: Vinod Koul
Date: Mon Apr 27 2020 - 12:45:36 EST


Hello Robert,

On 01-04-20, 18:35, Robert Marko wrote:

> +static int ipq4019_ss_phy_power_on(struct phy *_phy)
> +{
> + struct ipq4019_usb_phy *phy = phy_get_drvdata(_phy);
> +
> + ipq4019_ss_phy_power_off(_phy);
> +
> + reset_control_deassert(phy->por_rst);
> +
> + return 0;
> +}
> +
> +static struct phy_ops ipq4019_usb_ss_phy_ops = {
> + .power_on = ipq4019_ss_phy_power_on,
> + .power_off = ipq4019_ss_phy_power_off,
> +};
> +
> +static int ipq4019_hs_phy_power_off(struct phy *_phy)
> +{
> + struct ipq4019_usb_phy *phy = phy_get_drvdata(_phy);
> +
> + reset_control_assert(phy->por_rst);
> + msleep(10);

why not call ipq4019_ss_phy_power_off() here as well?

> +
> + reset_control_assert(phy->srif_rst);
> + msleep(10);
> +
> + return 0;
> +}
> +
> +static int ipq4019_hs_phy_power_on(struct phy *_phy)
> +{
> + struct ipq4019_usb_phy *phy = phy_get_drvdata(_phy);
> +
> + ipq4019_hs_phy_power_off(_phy);
> +
> + reset_control_deassert(phy->srif_rst);
> + msleep(10);
> +
> + reset_control_deassert(phy->por_rst);
> +
> + return 0;
> +}
> +
> +static struct phy_ops ipq4019_usb_hs_phy_ops = {
> + .power_on = ipq4019_hs_phy_power_on,
> + .power_off = ipq4019_hs_phy_power_off,
> +};

So this is fiddling with resets, what about phy configuration and
calibration, who take care of that?

> +static int ipq4019_usb_phy_probe(struct platform_device *pdev)
> +{
> + struct device *dev = &pdev->dev;
> + struct resource *res;
> + struct phy_provider *phy_provider;
> + struct ipq4019_usb_phy *phy;
> + const struct of_device_id *match;
> +
> + match = of_match_device(ipq4019_usb_phy_of_match, &pdev->dev);
> + if (!match)
> + return -ENODEV;

you are using this to get match-data few lines below, why not use
of_device_get_match_data() and get the match->data which you are
interested in?

--
~Vinod