2 * Copyright (C) 2016 Socionext Inc.
3 * Author: Masahiro Yamada <yamada.masahiro@socionext.com>
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
16 #include <linux/clk-provider.h>
17 #include <linux/device.h>
19 #include "clk-uniphier.h"
21 struct clk_hw
*uniphier_clk_register_fixed_factor(struct device
*dev
,
23 const struct uniphier_clk_fixed_factor_data
*data
)
25 struct clk_fixed_factor
*fix
;
26 struct clk_init_data init
;
29 fix
= devm_kzalloc(dev
, sizeof(*fix
), GFP_KERNEL
);
31 return ERR_PTR(-ENOMEM
);
34 init
.ops
= &clk_fixed_factor_ops
;
35 init
.flags
= data
->parent_name
? CLK_SET_RATE_PARENT
: 0;
36 init
.parent_names
= data
->parent_name
? &data
->parent_name
: NULL
;
37 init
.num_parents
= data
->parent_name
? 1 : 0;
39 fix
->mult
= data
->mult
;
43 ret
= devm_clk_hw_register(dev
, &fix
->hw
);