clk_enable(clk_ enable)

When implementing support for a new type of clock it is only necessary to
include the following header::

    #include <linux/clk-provider.h>

To construct a clk hardware structure for your platform you must define
the following::

    struct clk_foo {
        struct clk_hw hw;
        ... hardware specific data goes here ...
    };

To take advantage of your data you'll need to support valid operations
for your clk::

    struct clk_ops clk_foo_ops {
        .enable        = &clk_foo_enable;
        .disable    = &clk_foo_disable;
    };

Implement the above functions using container_of::

    #define to_clk_foo(_hw) container_of(_hw, struct clk_foo, hw)

    int clk_foo_enable(struct clk_hw *hw)
    {
        struct clk_foo *foo;

        foo = to_clk_foo(hw);

        ... perform magic on foo ...

        return 0;
    };
————————
When implementing support for a new type of clock it is only necessary to
include the following header::

    #include <linux/clk-provider.h>

To construct a clk hardware structure for your platform you must define
the following::

    struct clk_foo {
        struct clk_hw hw;
        ... hardware specific data goes here ...
    };

To take advantage of your data you'll need to support valid operations
for your clk::

    struct clk_ops clk_foo_ops {
        .enable        = &clk_foo_enable;
        .disable    = &clk_foo_disable;
    };

Implement the above functions using container_of::

    #define to_clk_foo(_hw) container_of(_hw, struct clk_foo, hw)

    int clk_foo_enable(struct clk_hw *hw)
    {
        struct clk_foo *foo;

        foo = to_clk_foo(hw);

        ... perform magic on foo ...

        return 0;
    };