1 | /* |
---|---|
2 | * Copyright (C) 2013 Altera Corporation |
3 | * Copyright (C) 2011 Thomas Chou |
4 | * Copyright (C) 2011 Walter Goossens |
5 | * |
6 | * This file is subject to the terms and conditions of the GNU General |
7 | * Public License. See the file COPYING in the main directory of this |
8 | * archive for more details. |
9 | */ |
10 | |
11 | #include <linux/init.h> |
12 | #include <linux/of_address.h> |
13 | #include <linux/of_fdt.h> |
14 | #include <linux/err.h> |
15 | #include <linux/slab.h> |
16 | #include <linux/sys_soc.h> |
17 | #include <linux/io.h> |
18 | #include <linux/clk-provider.h> |
19 | |
20 | static const struct of_device_id clk_match[] __initconst = { |
21 | { .compatible = "fixed-clock", .data = of_fixed_clk_setup, }, |
22 | {} |
23 | }; |
24 | |
25 | static int __init nios2_soc_device_init(void) |
26 | { |
27 | struct soc_device *soc_dev; |
28 | struct soc_device_attribute *soc_dev_attr; |
29 | const char *machine; |
30 | |
31 | soc_dev_attr = kzalloc(size: sizeof(*soc_dev_attr), GFP_KERNEL); |
32 | if (soc_dev_attr) { |
33 | machine = of_flat_dt_get_machine_name(); |
34 | if (machine) |
35 | soc_dev_attr->machine = kasprintf(GFP_KERNEL, fmt: "%s", |
36 | machine); |
37 | |
38 | soc_dev_attr->family = "Nios II"; |
39 | |
40 | soc_dev = soc_device_register(soc_plat_dev_attr: soc_dev_attr); |
41 | if (IS_ERR(ptr: soc_dev)) { |
42 | kfree(objp: soc_dev_attr->machine); |
43 | kfree(objp: soc_dev_attr); |
44 | } |
45 | } |
46 | |
47 | of_clk_init(matches: clk_match); |
48 | |
49 | return 0; |
50 | } |
51 | |
52 | device_initcall(nios2_soc_device_init); |
53 |