Merge tag 'efi-2020-07-rc6' of https://gitlab.denx.de/u-boot/custodians/u-boot-efi
[oweals/u-boot.git] / drivers / clk / clk_fixed_rate.c
index d8d9f86c8642c927bce696ab97d111090895d8d0..2c20eddb0b5c6164f3d430cb2a8cca39eb4fe24e 100644 (file)
@@ -6,31 +6,35 @@
 #include <common.h>
 #include <clk-uclass.h>
 #include <dm.h>
-
-struct clk_fixed_rate {
-       unsigned long fixed_rate;
-};
-
-#define to_clk_fixed_rate(dev) ((struct clk_fixed_rate *)dev_get_platdata(dev))
+#include <linux/clk-provider.h>
 
 static ulong clk_fixed_rate_get_rate(struct clk *clk)
 {
-       if (clk->id != 0)
-               return -EINVAL;
-
        return to_clk_fixed_rate(clk->dev)->fixed_rate;
 }
 
+/* avoid clk_enable() return -ENOSYS */
+static int dummy_enable(struct clk *clk)
+{
+       return 0;
+}
+
 const struct clk_ops clk_fixed_rate_ops = {
        .get_rate = clk_fixed_rate_get_rate,
+       .enable = dummy_enable,
 };
 
 static int clk_fixed_rate_ofdata_to_platdata(struct udevice *dev)
 {
+       struct clk *clk = &to_clk_fixed_rate(dev)->clk;
 #if !CONFIG_IS_ENABLED(OF_PLATDATA)
        to_clk_fixed_rate(dev)->fixed_rate =
                dev_read_u32_default(dev, "clock-frequency", 0);
 #endif
+       /* Make fixed rate clock accessible from higher level struct clk */
+       dev->uclass_priv = clk;
+       clk->dev = dev;
+       clk->enable_count = 0;
 
        return 0;
 }