1 | // SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) |
2 | /* Do not edit directly, auto-generated from: */ |
3 | /* Documentation/netlink/specs/dpll.yaml */ |
4 | /* YNL-GEN kernel source */ |
5 | |
6 | #include <net/netlink.h> |
7 | #include <net/genetlink.h> |
8 | |
9 | #include "dpll_nl.h" |
10 | |
11 | #include <uapi/linux/dpll.h> |
12 | |
13 | /* Common nested types */ |
14 | const struct nla_policy dpll_pin_parent_device_nl_policy[DPLL_A_PIN_PHASE_OFFSET + 1] = { |
15 | [DPLL_A_PIN_PARENT_ID] = { .type = NLA_U32, }, |
16 | [DPLL_A_PIN_DIRECTION] = NLA_POLICY_RANGE(NLA_U32, 1, 2), |
17 | [DPLL_A_PIN_PRIO] = { .type = NLA_U32, }, |
18 | [DPLL_A_PIN_STATE] = NLA_POLICY_RANGE(NLA_U32, 1, 3), |
19 | [DPLL_A_PIN_PHASE_OFFSET] = { .type = NLA_S64, }, |
20 | }; |
21 | |
22 | const struct nla_policy dpll_pin_parent_pin_nl_policy[DPLL_A_PIN_STATE + 1] = { |
23 | [DPLL_A_PIN_PARENT_ID] = { .type = NLA_U32, }, |
24 | [DPLL_A_PIN_STATE] = NLA_POLICY_RANGE(NLA_U32, 1, 3), |
25 | }; |
26 | |
27 | /* DPLL_CMD_DEVICE_ID_GET - do */ |
28 | static const struct nla_policy dpll_device_id_get_nl_policy[DPLL_A_TYPE + 1] = { |
29 | [DPLL_A_MODULE_NAME] = { .type = NLA_NUL_STRING, }, |
30 | [DPLL_A_CLOCK_ID] = { .type = NLA_U64, }, |
31 | [DPLL_A_TYPE] = NLA_POLICY_RANGE(NLA_U32, 1, 2), |
32 | }; |
33 | |
34 | /* DPLL_CMD_DEVICE_GET - do */ |
35 | static const struct nla_policy dpll_device_get_nl_policy[DPLL_A_ID + 1] = { |
36 | [DPLL_A_ID] = { .type = NLA_U32, }, |
37 | }; |
38 | |
39 | /* DPLL_CMD_DEVICE_SET - do */ |
40 | static const struct nla_policy dpll_device_set_nl_policy[DPLL_A_ID + 1] = { |
41 | [DPLL_A_ID] = { .type = NLA_U32, }, |
42 | }; |
43 | |
44 | /* DPLL_CMD_PIN_ID_GET - do */ |
45 | static const struct nla_policy dpll_pin_id_get_nl_policy[DPLL_A_PIN_TYPE + 1] = { |
46 | [DPLL_A_PIN_MODULE_NAME] = { .type = NLA_NUL_STRING, }, |
47 | [DPLL_A_PIN_CLOCK_ID] = { .type = NLA_U64, }, |
48 | [DPLL_A_PIN_BOARD_LABEL] = { .type = NLA_NUL_STRING, }, |
49 | [DPLL_A_PIN_PANEL_LABEL] = { .type = NLA_NUL_STRING, }, |
50 | [DPLL_A_PIN_PACKAGE_LABEL] = { .type = NLA_NUL_STRING, }, |
51 | [DPLL_A_PIN_TYPE] = NLA_POLICY_RANGE(NLA_U32, 1, 5), |
52 | }; |
53 | |
54 | /* DPLL_CMD_PIN_GET - do */ |
55 | static const struct nla_policy dpll_pin_get_do_nl_policy[DPLL_A_PIN_ID + 1] = { |
56 | [DPLL_A_PIN_ID] = { .type = NLA_U32, }, |
57 | }; |
58 | |
59 | /* DPLL_CMD_PIN_GET - dump */ |
60 | static const struct nla_policy dpll_pin_get_dump_nl_policy[DPLL_A_PIN_ID + 1] = { |
61 | [DPLL_A_PIN_ID] = { .type = NLA_U32, }, |
62 | }; |
63 | |
64 | /* DPLL_CMD_PIN_SET - do */ |
65 | static const struct nla_policy dpll_pin_set_nl_policy[DPLL_A_PIN_PHASE_ADJUST + 1] = { |
66 | [DPLL_A_PIN_ID] = { .type = NLA_U32, }, |
67 | [DPLL_A_PIN_FREQUENCY] = { .type = NLA_U64, }, |
68 | [DPLL_A_PIN_DIRECTION] = NLA_POLICY_RANGE(NLA_U32, 1, 2), |
69 | [DPLL_A_PIN_PRIO] = { .type = NLA_U32, }, |
70 | [DPLL_A_PIN_STATE] = NLA_POLICY_RANGE(NLA_U32, 1, 3), |
71 | [DPLL_A_PIN_PARENT_DEVICE] = NLA_POLICY_NESTED(dpll_pin_parent_device_nl_policy), |
72 | [DPLL_A_PIN_PARENT_PIN] = NLA_POLICY_NESTED(dpll_pin_parent_pin_nl_policy), |
73 | [DPLL_A_PIN_PHASE_ADJUST] = { .type = NLA_S32, }, |
74 | }; |
75 | |
76 | /* Ops table for dpll */ |
77 | static const struct genl_split_ops dpll_nl_ops[] = { |
78 | { |
79 | .cmd = DPLL_CMD_DEVICE_ID_GET, |
80 | .pre_doit = dpll_lock_doit, |
81 | .doit = dpll_nl_device_id_get_doit, |
82 | .post_doit = dpll_unlock_doit, |
83 | .policy = dpll_device_id_get_nl_policy, |
84 | .maxattr = DPLL_A_TYPE, |
85 | .flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DO, |
86 | }, |
87 | { |
88 | .cmd = DPLL_CMD_DEVICE_GET, |
89 | .pre_doit = dpll_pre_doit, |
90 | .doit = dpll_nl_device_get_doit, |
91 | .post_doit = dpll_post_doit, |
92 | .policy = dpll_device_get_nl_policy, |
93 | .maxattr = DPLL_A_ID, |
94 | .flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DO, |
95 | }, |
96 | { |
97 | .cmd = DPLL_CMD_DEVICE_GET, |
98 | .dumpit = dpll_nl_device_get_dumpit, |
99 | .flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DUMP, |
100 | }, |
101 | { |
102 | .cmd = DPLL_CMD_DEVICE_SET, |
103 | .pre_doit = dpll_pre_doit, |
104 | .doit = dpll_nl_device_set_doit, |
105 | .post_doit = dpll_post_doit, |
106 | .policy = dpll_device_set_nl_policy, |
107 | .maxattr = DPLL_A_ID, |
108 | .flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DO, |
109 | }, |
110 | { |
111 | .cmd = DPLL_CMD_PIN_ID_GET, |
112 | .pre_doit = dpll_lock_doit, |
113 | .doit = dpll_nl_pin_id_get_doit, |
114 | .post_doit = dpll_unlock_doit, |
115 | .policy = dpll_pin_id_get_nl_policy, |
116 | .maxattr = DPLL_A_PIN_TYPE, |
117 | .flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DO, |
118 | }, |
119 | { |
120 | .cmd = DPLL_CMD_PIN_GET, |
121 | .pre_doit = dpll_pin_pre_doit, |
122 | .doit = dpll_nl_pin_get_doit, |
123 | .post_doit = dpll_pin_post_doit, |
124 | .policy = dpll_pin_get_do_nl_policy, |
125 | .maxattr = DPLL_A_PIN_ID, |
126 | .flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DO, |
127 | }, |
128 | { |
129 | .cmd = DPLL_CMD_PIN_GET, |
130 | .dumpit = dpll_nl_pin_get_dumpit, |
131 | .policy = dpll_pin_get_dump_nl_policy, |
132 | .maxattr = DPLL_A_PIN_ID, |
133 | .flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DUMP, |
134 | }, |
135 | { |
136 | .cmd = DPLL_CMD_PIN_SET, |
137 | .pre_doit = dpll_pin_pre_doit, |
138 | .doit = dpll_nl_pin_set_doit, |
139 | .post_doit = dpll_pin_post_doit, |
140 | .policy = dpll_pin_set_nl_policy, |
141 | .maxattr = DPLL_A_PIN_PHASE_ADJUST, |
142 | .flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DO, |
143 | }, |
144 | }; |
145 | |
146 | static const struct genl_multicast_group dpll_nl_mcgrps[] = { |
147 | [DPLL_NLGRP_MONITOR] = { "monitor" , }, |
148 | }; |
149 | |
150 | struct genl_family dpll_nl_family __ro_after_init = { |
151 | .name = DPLL_FAMILY_NAME, |
152 | .version = DPLL_FAMILY_VERSION, |
153 | .netnsok = true, |
154 | .parallel_ops = true, |
155 | .module = THIS_MODULE, |
156 | .split_ops = dpll_nl_ops, |
157 | .n_split_ops = ARRAY_SIZE(dpll_nl_ops), |
158 | .mcgrps = dpll_nl_mcgrps, |
159 | .n_mcgrps = ARRAY_SIZE(dpll_nl_mcgrps), |
160 | }; |
161 | |