Hi Valentine

Thank you for your patch

> +/* Setup USB channels */
> +static void __rcar_gen2_usb_phy_setup(struct rcar_gen2_usb_phy_priv *priv)
> +{
> +     u32 val;
> +
> +     clk_prepare_enable(priv->clk);
> +
> +     /* Set USB channels in the USBHS UGCTRL2 register */
> +     val = ioread32(priv->base);
> +     val &= ~(USBHS_UGCTRL2_USB0_HS | USBHS_UGCTRL2_USB2_SS);
> +     val |= priv->ugctrl2;
> +     iowrite32(val, priv->base);
> +}

>From my point of view, if you use clk_enable() on setup(),
then, it is easy to read if it has exit() or similar name function
which calls clk_disable()

> +static int rcar_gen2_usb_phy_set_suspend(struct usb_phy *phy, int suspend)
> +{
> +     struct rcar_gen2_usb_phy_priv *priv = usb_phy_to_priv(phy);
> +     unsigned long flags;
> +     int retval;
> +
> +     spin_lock_irqsave(&priv->lock, flags);
> +     if (suspend) {
> +             /* Suspend USBHS internal phy */
> +             retval = __rcar_gen2_usbhs_phy_disable(priv->base);
> +             /*
> +              * If nothing else is using USB channel 0/2
> +              * disable the clocks as well
> +              */
> +             if (priv->usecount == 1) {
> +                     clk_disable_unprepare(priv->clk);
> +                     priv->usecount--;
> +             }
> +     } else {
> +             /*
> +              * Enable the clock and setup USB channels
> +              * if needed.
> +              */
> +             if (!priv->usecount) {
> +                     priv->usecount++;
> +                     __rcar_gen2_usb_phy_setup(priv);
> +             }
> +             /* Resume USBHS internal phy */
> +             retval = __rcar_gen2_usbhs_phy_enable(priv->base);
> +     }

Are these usecount++/usecount-- position correct ?

> +static int rcar_gen2_usb_phy_probe(struct platform_device *pdev)
> +{
> +     struct device *dev = &pdev->dev;
> +     struct rcar_gen2_phy_platform_data *pdata;
> +     struct rcar_gen2_usb_phy_priv *priv;
> +     struct resource *res;
> +     void __iomem *base;
> +     struct clk *clk;
> +     int retval;
> +
> +     pdata = dev_get_platdata(&pdev->dev);
> +     if (!pdata) {
> +             dev_err(dev, "No platform data\n");
> +             return -EINVAL;
> +     }
> +
> +     clk = devm_clk_get(&pdev->dev, "usbhs");
> +     if (IS_ERR(clk)) {
> +             dev_err(&pdev->dev, "Can't get the clock\n");
> +             return PTR_ERR(clk);
> +     }

This case (if you use usb_phy_rcar_gen2 driver),
you can use pm_runtime_xxx instead of clk_get/enable/disable()

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to