[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20200427164514.GQ56386@vkoul-mobl.Dlink>
Date: Mon, 27 Apr 2020 22:15:14 +0530
From: Vinod Koul <vkoul@...nel.org>
To: Robert Marko <robert.marko@...tura.hr>
Cc: agross@...nel.org, bjorn.andersson@...aro.org, kishon@...com,
linux-kernel@...r.kernel.org, linux-arm-msm@...r.kernel.org,
robh+dt@...nel.org, mark.rutland@....com,
devicetree@...r.kernel.org, John Crispin <john@...ozen.org>,
Luka Perkov <luka.perkov@...tura.hr>
Subject: Re: [PATCH v6 1/3] phy: add driver for Qualcomm IPQ40xx USB PHY
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
Powered by blists - more mailing lists