Blame view

drivers/w1/w1_netlink.h 3.54 KB
c942fddf8   Thomas Gleixner   treewide: Replace...
1
  /* SPDX-License-Identifier: GPL-2.0-or-later */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
2
  /*
a80187663   Evgeniy Polyakov   MAINTAINERS: Evge...
3
   * Copyright (c) 2003 Evgeniy Polyakov <zbr@ioremap.net>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
4
5
6
7
8
9
   */
  
  #ifndef __W1_NETLINK_H
  #define __W1_NETLINK_H
  
  #include <asm/types.h>
12003375a   Evgeniy Polyakov   [PATCH] w1: Users...
10
  #include <linux/connector.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
11

de0d6dbdb   Andrew F. Davis   w1: Add subsystem...
12
  #include "w1_internal.h"
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
13

b3be177a1   David Fries   w1: format for Do...
14
  /**
8a0427d19   David Fries   w1: optional bund...
15
16
17
18
19
20
21
22
23
24
25
   * enum w1_cn_msg_flags - bitfield flags for struct cn_msg.flags
   *
   * @W1_CN_BUNDLE: Request bundling replies into fewer messagse.  Be prepared
   * to handle multiple struct cn_msg, struct w1_netlink_msg, and
   * struct w1_netlink_cmd in one packet.
   */
  enum w1_cn_msg_flags {
  	W1_CN_BUNDLE = 1,
  };
  
  /**
b3be177a1   David Fries   w1: format for Do...
26
   * enum w1_netlink_message_types - message type
70b34d2ed   David Fries   w1: new netlink c...
27
28
29
30
31
32
33
34
35
36
   *
   * @W1_SLAVE_ADD: notification that a slave device was added
   * @W1_SLAVE_REMOVE: notification that a slave device was removed
   * @W1_MASTER_ADD: notification that a new bus master was added
   * @W1_MASTER_REMOVE: notification that a bus masterwas removed
   * @W1_MASTER_CMD: initiate operations on a specific master
   * @W1_SLAVE_CMD: sends reset, selects the slave, then does a read/write/touch
   * operation
   * @W1_LIST_MASTERS: used to determine the bus master identifiers
   */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
37
38
39
40
41
  enum w1_netlink_message_types {
  	W1_SLAVE_ADD = 0,
  	W1_SLAVE_REMOVE,
  	W1_MASTER_ADD,
  	W1_MASTER_REMOVE,
12003375a   Evgeniy Polyakov   [PATCH] w1: Users...
42
43
  	W1_MASTER_CMD,
  	W1_SLAVE_CMD,
610705e78   Evgeniy Polyakov   w1: add list mast...
44
  	W1_LIST_MASTERS,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
45
  };
8a0427d19   David Fries   w1: optional bund...
46
47
48
49
50
51
  /**
   * struct w1_netlink_msg - holds w1 message type, id, and result
   *
   * @type: one of enum w1_netlink_message_types
   * @status: kernel feedback for success 0 or errno failure value
   * @len: length of data following w1_netlink_msg
aa931b44a   Mauro Carvalho Chehab   w1_netlink.h: add...
52
53
54
55
56
   * @id: union holding bus master id (msg.id) and slave device id (id[8]).
   * @id.id: Slave ID (8 bytes)
   * @id.mst: bus master identification
   * @id.mst.id: bus master ID
   * @id.mst.res: bus master reserved
8a0427d19   David Fries   w1: optional bund...
57
58
59
60
61
62
   * @data: start address of any following data
   *
   * The base message structure for w1 messages over netlink.
   * The netlink connector data sequence is, struct nlmsghdr, struct cn_msg,
   * then one or more struct w1_netlink_msg (each with optional data).
   */
7785925dd   Evgeniy Polyakov   [PATCH] w1: clean...
63
  struct w1_netlink_msg
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
64
65
  {
  	__u8				type;
4037014e3   Evgeniy Polyakov   w1: send status m...
66
  	__u8				status;
12003375a   Evgeniy Polyakov   [PATCH] w1: Users...
67
68
69
70
  	__u16				len;
  	union {
  		__u8			id[8];
  		struct w1_mst {
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
71
  			__u32		id;
12003375a   Evgeniy Polyakov   [PATCH] w1: Users...
72
  			__u32		res;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
73
74
  		} mst;
  	} id;
76fafbfff   Gustavo A. R. Silva   w1: Replace zero-...
75
  	__u8				data[];
12003375a   Evgeniy Polyakov   [PATCH] w1: Users...
76
  };
b3be177a1   David Fries   w1: format for Do...
77
78
  /**
   * enum w1_commands - commands available for master or slave operations
8a0427d19   David Fries   w1: optional bund...
79
   *
70b34d2ed   David Fries   w1: new netlink c...
80
81
82
83
84
85
86
87
88
89
90
91
92
93
   * @W1_CMD_READ: read len bytes
   * @W1_CMD_WRITE: write len bytes
   * @W1_CMD_SEARCH: initiate a standard search, returns only the slave
   * devices found during that search
   * @W1_CMD_ALARM_SEARCH: search for devices that are currently alarming
   * @W1_CMD_TOUCH: Touches a series of bytes.
   * @W1_CMD_RESET: sends a bus reset on the given master
   * @W1_CMD_SLAVE_ADD: adds a slave to the given master,
   * 8 byte slave id at data[0]
   * @W1_CMD_SLAVE_REMOVE: removes a slave to the given master,
   * 8 byte slave id at data[0]
   * @W1_CMD_LIST_SLAVES: list of slaves registered on this master
   * @W1_CMD_MAX: number of available commands
   */
325a06fb1   Evgeniy Polyakov   w1: move w1 comma...
94
95
96
97
98
99
  enum w1_commands {
  	W1_CMD_READ = 0,
  	W1_CMD_WRITE,
  	W1_CMD_SEARCH,
  	W1_CMD_ALARM_SEARCH,
  	W1_CMD_TOUCH,
f89735c4e   Evgeniy Polyakov   w1: added w1 rese...
100
  	W1_CMD_RESET,
70b34d2ed   David Fries   w1: new netlink c...
101
102
103
104
  	W1_CMD_SLAVE_ADD,
  	W1_CMD_SLAVE_REMOVE,
  	W1_CMD_LIST_SLAVES,
  	W1_CMD_MAX
325a06fb1   Evgeniy Polyakov   w1: move w1 comma...
105
  };
12003375a   Evgeniy Polyakov   [PATCH] w1: Users...
106

8a0427d19   David Fries   w1: optional bund...
107
108
109
110
111
112
113
114
115
116
117
  /**
   * struct w1_netlink_cmd - holds the command and data
   *
   * @cmd: one of enum w1_commands
   * @res: reserved
   * @len: length of data following w1_netlink_cmd
   * @data: start address of any following data
   *
   * One or more struct w1_netlink_cmd is placed starting at w1_netlink_msg.data
   * each with optional data.
   */
12003375a   Evgeniy Polyakov   [PATCH] w1: Users...
118
119
120
121
122
  struct w1_netlink_cmd
  {
  	__u8				cmd;
  	__u8				res;
  	__u16				len;
76fafbfff   Gustavo A. R. Silva   w1: Replace zero-...
123
  	__u8				data[];
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
124
125
126
127
128
  };
  
  #ifdef __KERNEL__
  
  void w1_netlink_send(struct w1_master *, struct w1_netlink_msg *);
12003375a   Evgeniy Polyakov   [PATCH] w1: Users...
129
130
  int w1_init_netlink(void);
  void w1_fini_netlink(void);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
131
132
133
  
  #endif /* __KERNEL__ */
  #endif /* __W1_NETLINK_H */