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 */
6 #include <net/netlink.h>
7 #include <net/genetlink.h>
11 #include <uapi/linux/dpll.h>
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
, },
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),
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),
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
, },
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
, },
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),
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
, },
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
, },
64 /* DPLL_CMD_PIN_SET - do */
65 static const struct nla_policy dpll_pin_set_nl_policy
[DPLL_A_PIN_ESYNC_FREQUENCY
+ 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 [DPLL_A_PIN_ESYNC_FREQUENCY
] = { .type
= NLA_U64
, },
77 /* Ops table for dpll */
78 static const struct genl_split_ops dpll_nl_ops
[] = {
80 .cmd
= DPLL_CMD_DEVICE_ID_GET
,
81 .pre_doit
= dpll_lock_doit
,
82 .doit
= dpll_nl_device_id_get_doit
,
83 .post_doit
= dpll_unlock_doit
,
84 .policy
= dpll_device_id_get_nl_policy
,
85 .maxattr
= DPLL_A_TYPE
,
86 .flags
= GENL_ADMIN_PERM
| GENL_CMD_CAP_DO
,
89 .cmd
= DPLL_CMD_DEVICE_GET
,
90 .pre_doit
= dpll_pre_doit
,
91 .doit
= dpll_nl_device_get_doit
,
92 .post_doit
= dpll_post_doit
,
93 .policy
= dpll_device_get_nl_policy
,
95 .flags
= GENL_ADMIN_PERM
| GENL_CMD_CAP_DO
,
98 .cmd
= DPLL_CMD_DEVICE_GET
,
99 .dumpit
= dpll_nl_device_get_dumpit
,
100 .flags
= GENL_ADMIN_PERM
| GENL_CMD_CAP_DUMP
,
103 .cmd
= DPLL_CMD_DEVICE_SET
,
104 .pre_doit
= dpll_pre_doit
,
105 .doit
= dpll_nl_device_set_doit
,
106 .post_doit
= dpll_post_doit
,
107 .policy
= dpll_device_set_nl_policy
,
108 .maxattr
= DPLL_A_ID
,
109 .flags
= GENL_ADMIN_PERM
| GENL_CMD_CAP_DO
,
112 .cmd
= DPLL_CMD_PIN_ID_GET
,
113 .pre_doit
= dpll_lock_doit
,
114 .doit
= dpll_nl_pin_id_get_doit
,
115 .post_doit
= dpll_unlock_doit
,
116 .policy
= dpll_pin_id_get_nl_policy
,
117 .maxattr
= DPLL_A_PIN_TYPE
,
118 .flags
= GENL_ADMIN_PERM
| GENL_CMD_CAP_DO
,
121 .cmd
= DPLL_CMD_PIN_GET
,
122 .pre_doit
= dpll_pin_pre_doit
,
123 .doit
= dpll_nl_pin_get_doit
,
124 .post_doit
= dpll_pin_post_doit
,
125 .policy
= dpll_pin_get_do_nl_policy
,
126 .maxattr
= DPLL_A_PIN_ID
,
127 .flags
= GENL_ADMIN_PERM
| GENL_CMD_CAP_DO
,
130 .cmd
= DPLL_CMD_PIN_GET
,
131 .dumpit
= dpll_nl_pin_get_dumpit
,
132 .policy
= dpll_pin_get_dump_nl_policy
,
133 .maxattr
= DPLL_A_PIN_ID
,
134 .flags
= GENL_ADMIN_PERM
| GENL_CMD_CAP_DUMP
,
137 .cmd
= DPLL_CMD_PIN_SET
,
138 .pre_doit
= dpll_pin_pre_doit
,
139 .doit
= dpll_nl_pin_set_doit
,
140 .post_doit
= dpll_pin_post_doit
,
141 .policy
= dpll_pin_set_nl_policy
,
142 .maxattr
= DPLL_A_PIN_ESYNC_FREQUENCY
,
143 .flags
= GENL_ADMIN_PERM
| GENL_CMD_CAP_DO
,
147 static const struct genl_multicast_group dpll_nl_mcgrps
[] = {
148 [DPLL_NLGRP_MONITOR
] = { "monitor", },
151 struct genl_family dpll_nl_family __ro_after_init
= {
152 .name
= DPLL_FAMILY_NAME
,
153 .version
= DPLL_FAMILY_VERSION
,
155 .parallel_ops
= true,
156 .module
= THIS_MODULE
,
157 .split_ops
= dpll_nl_ops
,
158 .n_split_ops
= ARRAY_SIZE(dpll_nl_ops
),
159 .mcgrps
= dpll_nl_mcgrps
,
160 .n_mcgrps
= ARRAY_SIZE(dpll_nl_mcgrps
),