Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/drivers/dpll/dpll_nl.c
29267 views
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
const struct nla_policy dpll_reference_sync_nl_policy[DPLL_A_PIN_STATE + 1] = {
28
[DPLL_A_PIN_ID] = { .type = NLA_U32, },
29
[DPLL_A_PIN_STATE] = NLA_POLICY_RANGE(NLA_U32, 1, 3),
30
};
31
32
/* DPLL_CMD_DEVICE_ID_GET - do */
33
static const struct nla_policy dpll_device_id_get_nl_policy[DPLL_A_TYPE + 1] = {
34
[DPLL_A_MODULE_NAME] = { .type = NLA_NUL_STRING, },
35
[DPLL_A_CLOCK_ID] = { .type = NLA_U64, },
36
[DPLL_A_TYPE] = NLA_POLICY_RANGE(NLA_U32, 1, 2),
37
};
38
39
/* DPLL_CMD_DEVICE_GET - do */
40
static const struct nla_policy dpll_device_get_nl_policy[DPLL_A_ID + 1] = {
41
[DPLL_A_ID] = { .type = NLA_U32, },
42
};
43
44
/* DPLL_CMD_DEVICE_SET - do */
45
static const struct nla_policy dpll_device_set_nl_policy[DPLL_A_PHASE_OFFSET_AVG_FACTOR + 1] = {
46
[DPLL_A_ID] = { .type = NLA_U32, },
47
[DPLL_A_PHASE_OFFSET_MONITOR] = NLA_POLICY_MAX(NLA_U32, 1),
48
[DPLL_A_PHASE_OFFSET_AVG_FACTOR] = { .type = NLA_U32, },
49
};
50
51
/* DPLL_CMD_PIN_ID_GET - do */
52
static const struct nla_policy dpll_pin_id_get_nl_policy[DPLL_A_PIN_TYPE + 1] = {
53
[DPLL_A_PIN_MODULE_NAME] = { .type = NLA_NUL_STRING, },
54
[DPLL_A_PIN_CLOCK_ID] = { .type = NLA_U64, },
55
[DPLL_A_PIN_BOARD_LABEL] = { .type = NLA_NUL_STRING, },
56
[DPLL_A_PIN_PANEL_LABEL] = { .type = NLA_NUL_STRING, },
57
[DPLL_A_PIN_PACKAGE_LABEL] = { .type = NLA_NUL_STRING, },
58
[DPLL_A_PIN_TYPE] = NLA_POLICY_RANGE(NLA_U32, 1, 5),
59
};
60
61
/* DPLL_CMD_PIN_GET - do */
62
static const struct nla_policy dpll_pin_get_do_nl_policy[DPLL_A_PIN_ID + 1] = {
63
[DPLL_A_PIN_ID] = { .type = NLA_U32, },
64
};
65
66
/* DPLL_CMD_PIN_GET - dump */
67
static const struct nla_policy dpll_pin_get_dump_nl_policy[DPLL_A_PIN_ID + 1] = {
68
[DPLL_A_PIN_ID] = { .type = NLA_U32, },
69
};
70
71
/* DPLL_CMD_PIN_SET - do */
72
static const struct nla_policy dpll_pin_set_nl_policy[DPLL_A_PIN_REFERENCE_SYNC + 1] = {
73
[DPLL_A_PIN_ID] = { .type = NLA_U32, },
74
[DPLL_A_PIN_FREQUENCY] = { .type = NLA_U64, },
75
[DPLL_A_PIN_DIRECTION] = NLA_POLICY_RANGE(NLA_U32, 1, 2),
76
[DPLL_A_PIN_PRIO] = { .type = NLA_U32, },
77
[DPLL_A_PIN_STATE] = NLA_POLICY_RANGE(NLA_U32, 1, 3),
78
[DPLL_A_PIN_PARENT_DEVICE] = NLA_POLICY_NESTED(dpll_pin_parent_device_nl_policy),
79
[DPLL_A_PIN_PARENT_PIN] = NLA_POLICY_NESTED(dpll_pin_parent_pin_nl_policy),
80
[DPLL_A_PIN_PHASE_ADJUST] = { .type = NLA_S32, },
81
[DPLL_A_PIN_ESYNC_FREQUENCY] = { .type = NLA_U64, },
82
[DPLL_A_PIN_REFERENCE_SYNC] = NLA_POLICY_NESTED(dpll_reference_sync_nl_policy),
83
};
84
85
/* Ops table for dpll */
86
static const struct genl_split_ops dpll_nl_ops[] = {
87
{
88
.cmd = DPLL_CMD_DEVICE_ID_GET,
89
.pre_doit = dpll_lock_doit,
90
.doit = dpll_nl_device_id_get_doit,
91
.post_doit = dpll_unlock_doit,
92
.policy = dpll_device_id_get_nl_policy,
93
.maxattr = DPLL_A_TYPE,
94
.flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DO,
95
},
96
{
97
.cmd = DPLL_CMD_DEVICE_GET,
98
.pre_doit = dpll_pre_doit,
99
.doit = dpll_nl_device_get_doit,
100
.post_doit = dpll_post_doit,
101
.policy = dpll_device_get_nl_policy,
102
.maxattr = DPLL_A_ID,
103
.flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DO,
104
},
105
{
106
.cmd = DPLL_CMD_DEVICE_GET,
107
.dumpit = dpll_nl_device_get_dumpit,
108
.flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DUMP,
109
},
110
{
111
.cmd = DPLL_CMD_DEVICE_SET,
112
.pre_doit = dpll_pre_doit,
113
.doit = dpll_nl_device_set_doit,
114
.post_doit = dpll_post_doit,
115
.policy = dpll_device_set_nl_policy,
116
.maxattr = DPLL_A_PHASE_OFFSET_AVG_FACTOR,
117
.flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DO,
118
},
119
{
120
.cmd = DPLL_CMD_PIN_ID_GET,
121
.pre_doit = dpll_lock_doit,
122
.doit = dpll_nl_pin_id_get_doit,
123
.post_doit = dpll_unlock_doit,
124
.policy = dpll_pin_id_get_nl_policy,
125
.maxattr = DPLL_A_PIN_TYPE,
126
.flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DO,
127
},
128
{
129
.cmd = DPLL_CMD_PIN_GET,
130
.pre_doit = dpll_pin_pre_doit,
131
.doit = dpll_nl_pin_get_doit,
132
.post_doit = dpll_pin_post_doit,
133
.policy = dpll_pin_get_do_nl_policy,
134
.maxattr = DPLL_A_PIN_ID,
135
.flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DO,
136
},
137
{
138
.cmd = DPLL_CMD_PIN_GET,
139
.dumpit = dpll_nl_pin_get_dumpit,
140
.policy = dpll_pin_get_dump_nl_policy,
141
.maxattr = DPLL_A_PIN_ID,
142
.flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DUMP,
143
},
144
{
145
.cmd = DPLL_CMD_PIN_SET,
146
.pre_doit = dpll_pin_pre_doit,
147
.doit = dpll_nl_pin_set_doit,
148
.post_doit = dpll_pin_post_doit,
149
.policy = dpll_pin_set_nl_policy,
150
.maxattr = DPLL_A_PIN_REFERENCE_SYNC,
151
.flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DO,
152
},
153
};
154
155
static const struct genl_multicast_group dpll_nl_mcgrps[] = {
156
[DPLL_NLGRP_MONITOR] = { "monitor", },
157
};
158
159
struct genl_family dpll_nl_family __ro_after_init = {
160
.name = DPLL_FAMILY_NAME,
161
.version = DPLL_FAMILY_VERSION,
162
.netnsok = true,
163
.parallel_ops = true,
164
.module = THIS_MODULE,
165
.split_ops = dpll_nl_ops,
166
.n_split_ops = ARRAY_SIZE(dpll_nl_ops),
167
.mcgrps = dpll_nl_mcgrps,
168
.n_mcgrps = ARRAY_SIZE(dpll_nl_mcgrps),
169
};
170
171