Re: [PATCH v12 7/7] clk: X1000: Add FIXDIV for SSI clock of X1000.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Quoting Zhou Yanjie (2020-05-27 10:56:35)
> @@ -40,8 +43,47 @@
>  #define OPCR_SPENDN0           BIT(7)
>  #define OPCR_SPENDN1           BIT(6)
>  
> +/* bits within the USBPCR register */
> +#define USBPCR_SIDDQ           BIT(21)
> +#define USBPCR_OTG_DISABLE     BIT(20)
> +
>  static struct ingenic_cgu *cgu;
>  
> +static int x1000_usb_phy_enable(struct clk_hw *hw)
> +{
> +       void __iomem *reg_opcr          = cgu->base + CGU_REG_OPCR;
> +       void __iomem *reg_usbpcr        = cgu->base + CGU_REG_USBPCR;
> +
> +       writel(readl(reg_opcr) | OPCR_SPENDN0, reg_opcr);

Please include linux/io.h for writel/readl.

> +       writel(readl(reg_usbpcr) & ~USBPCR_OTG_DISABLE & ~USBPCR_SIDDQ, reg_usbpcr);
> +       return 0;
> +}
> +
> +static void x1000_usb_phy_disable(struct clk_hw *hw)
> +{
> +       void __iomem *reg_opcr          = cgu->base + CGU_REG_OPCR;
> +       void __iomem *reg_usbpcr        = cgu->base + CGU_REG_USBPCR;
> +
> +       writel(readl(reg_opcr) & ~OPCR_SPENDN0, reg_opcr);
> +       writel(readl(reg_usbpcr) | USBPCR_OTG_DISABLE | USBPCR_SIDDQ, reg_usbpcr);
> +}
> +
> +static int x1000_usb_phy_is_enabled(struct clk_hw *hw)
> +{
> +       void __iomem *reg_opcr          = cgu->base + CGU_REG_OPCR;
> +       void __iomem *reg_usbpcr        = cgu->base + CGU_REG_USBPCR;
> +
> +       return (readl(reg_opcr) & OPCR_SPENDN0) &&
> +               !(readl(reg_usbpcr) & USBPCR_SIDDQ) &&
> +               !(readl(reg_usbpcr) & USBPCR_OTG_DISABLE);
> +}
> +
> +static const struct clk_ops x1000_otg_phy_ops = {
> +       .enable         = x1000_usb_phy_enable,
> +       .disable        = x1000_usb_phy_disable,
> +       .is_enabled     = x1000_usb_phy_is_enabled,
> +};
> +
>  static const s8 pll_od_encoding[8] = {
>         0x0, 0x1, -1, 0x2, -1, -1, -1, 0x3,
>  };
> @@ -277,4 +377,4 @@ static void __init x1000_cgu_init(struct device_node *np)
>  
>         ingenic_cgu_register_syscore_ops(cgu);
>  }
> -CLK_OF_DECLARE(x1000_cgu, "ingenic,x1000-cgu", x1000_cgu_init);
> +CLK_OF_DECLARE_DRIVER(x1000_cgu, "ingenic,x1000-cgu", x1000_cgu_init);

Why does this change to DECLARE_DRIVER? Can you please add a comment
here in the code indicating what other driver is probing this compatible
string?




[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux