clk: add API to enable clock
authorMasahiro Yamada <yamada.masahiro@socionext.com>
Wed, 13 Jan 2016 04:16:12 +0000 (13:16 +0900)
committerSimon Glass <sjg@chromium.org>
Thu, 21 Jan 2016 02:06:23 +0000 (19:06 -0700)
The most basic thing for clock is to enable it, but it is missing
in this uclass.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Acked-by: Simon Glass <sjg@chromium.org>
drivers/clk/clk-uclass.c
include/clk.h

index 73dfd7d016052c04bc273cc5e134e829852ba940..19f6f07c6f43ead3c12813afe6bb6d3a15b7073b 100644 (file)
@@ -32,6 +32,16 @@ ulong clk_set_rate(struct udevice *dev, ulong rate)
        return ops->set_rate(dev, rate);
 }
 
+int clk_enable(struct udevice *dev, int periph)
+{
+       struct clk_ops *ops = clk_get_ops(dev);
+
+       if (!ops->enable)
+               return -ENOSYS;
+
+       return ops->enable(dev, periph);
+}
+
 ulong clk_get_periph_rate(struct udevice *dev, int periph)
 {
        struct clk_ops *ops = clk_get_ops(dev);
index 371784a56e0fc54e0a6c084723480603da5d1cb6..941808a50e253a83dda83d8fecaaa01c5292d50b 100644 (file)
@@ -32,6 +32,15 @@ struct clk_ops {
         */
        ulong (*set_rate)(struct udevice *dev, ulong rate);
 
+       /**
+        * enable() - Enable the clock for a peripheral
+        *
+        * @dev:        clock provider
+        * @periph:     Peripheral ID to enable
+        * @return zero on success, or -ve error code
+        */
+       int (*enable)(struct udevice *dev, int periph);
+
        /**
         * get_periph_rate() - Get clock rate for a peripheral
         *
@@ -70,6 +79,15 @@ ulong clk_get_rate(struct udevice *dev);
  */
 ulong clk_set_rate(struct udevice *dev, ulong rate);
 
+/**
+ * clk_enable() - Enable the clock for a peripheral
+ *
+ * @dev:       clock provider
+ * @periph:    Peripheral ID to enable
+ * @return zero on success, or -ve error code
+ */
+int clk_enable(struct udevice *dev, int periph);
+
 /**
  * clk_get_periph_rate() - Get current clock rate for a peripheral
  *