0001
0002
0003
0004
0005
0006 #include <linux/clk-provider.h>
0007 #include <linux/slab.h>
0008
0009 #include "clk.h"
0010
0011 struct clk_hw *__init clk_hw_register_pll(struct device *dev,
0012 const char *name,
0013 const char *parent_name,
0014 const struct clk_ops *ops,
0015 unsigned long flags)
0016 {
0017 int ret;
0018 struct clk_hw *hw;
0019 struct clk_init_data init;
0020
0021
0022 hw = kzalloc(sizeof(*hw), GFP_KERNEL);
0023 if (!hw)
0024 return ERR_PTR(-ENOMEM);
0025
0026 init.name = name;
0027 init.ops = ops;
0028 init.flags = flags;
0029 init.parent_names = parent_name ? &parent_name : NULL;
0030 init.num_parents = parent_name ? 1 : 0;
0031 hw->init = &init;
0032
0033
0034 ret = clk_hw_register(dev, hw);
0035 if (ret) {
0036 kfree(hw);
0037 hw = ERR_PTR(ret);
0038 }
0039
0040 return hw;
0041 }