xref: /openbmc/linux/drivers/w1/w1_netlink.h (revision f89735c4e281e8642907b38640c076ae5048f3a6)
11da177e4SLinus Torvalds /*
21da177e4SLinus Torvalds  * w1_netlink.h
31da177e4SLinus Torvalds  *
41da177e4SLinus Torvalds  * Copyright (c) 2003 Evgeniy Polyakov <johnpol@2ka.mipt.ru>
51da177e4SLinus Torvalds  *
61da177e4SLinus Torvalds  *
71da177e4SLinus Torvalds  * This program is free software; you can redistribute it and/or modify
81da177e4SLinus Torvalds  * it under the terms of the GNU General Public License as published by
91da177e4SLinus Torvalds  * the Free Software Foundation; either version 2 of the License, or
101da177e4SLinus Torvalds  * (at your option) any later version.
111da177e4SLinus Torvalds  *
121da177e4SLinus Torvalds  * This program is distributed in the hope that it will be useful,
131da177e4SLinus Torvalds  * but WITHOUT ANY WARRANTY; without even the implied warranty of
141da177e4SLinus Torvalds  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
151da177e4SLinus Torvalds  * GNU General Public License for more details.
161da177e4SLinus Torvalds  *
171da177e4SLinus Torvalds  * You should have received a copy of the GNU General Public License
181da177e4SLinus Torvalds  * along with this program; if not, write to the Free Software
191da177e4SLinus Torvalds  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
201da177e4SLinus Torvalds  */
211da177e4SLinus Torvalds 
221da177e4SLinus Torvalds #ifndef __W1_NETLINK_H
231da177e4SLinus Torvalds #define __W1_NETLINK_H
241da177e4SLinus Torvalds 
251da177e4SLinus Torvalds #include <asm/types.h>
2612003375SEvgeniy Polyakov #include <linux/connector.h>
271da177e4SLinus Torvalds 
281da177e4SLinus Torvalds #include "w1.h"
291da177e4SLinus Torvalds 
301da177e4SLinus Torvalds enum w1_netlink_message_types {
311da177e4SLinus Torvalds 	W1_SLAVE_ADD = 0,
321da177e4SLinus Torvalds 	W1_SLAVE_REMOVE,
331da177e4SLinus Torvalds 	W1_MASTER_ADD,
341da177e4SLinus Torvalds 	W1_MASTER_REMOVE,
3512003375SEvgeniy Polyakov 	W1_MASTER_CMD,
3612003375SEvgeniy Polyakov 	W1_SLAVE_CMD,
37610705e7SEvgeniy Polyakov 	W1_LIST_MASTERS,
381da177e4SLinus Torvalds };
391da177e4SLinus Torvalds 
401da177e4SLinus Torvalds struct w1_netlink_msg
411da177e4SLinus Torvalds {
421da177e4SLinus Torvalds 	__u8				type;
4312003375SEvgeniy Polyakov 	__u8				reserved;
4412003375SEvgeniy Polyakov 	__u16				len;
4512003375SEvgeniy Polyakov 	union {
4612003375SEvgeniy Polyakov 		__u8			id[8];
4712003375SEvgeniy Polyakov 		struct w1_mst {
481da177e4SLinus Torvalds 			__u32		id;
4912003375SEvgeniy Polyakov 			__u32		res;
501da177e4SLinus Torvalds 		} mst;
511da177e4SLinus Torvalds 	} id;
5212003375SEvgeniy Polyakov 	__u8				data[0];
5312003375SEvgeniy Polyakov };
5412003375SEvgeniy Polyakov 
55325a06fbSEvgeniy Polyakov enum w1_commands {
56325a06fbSEvgeniy Polyakov 	W1_CMD_READ = 0,
57325a06fbSEvgeniy Polyakov 	W1_CMD_WRITE,
58325a06fbSEvgeniy Polyakov 	W1_CMD_SEARCH,
59325a06fbSEvgeniy Polyakov 	W1_CMD_ALARM_SEARCH,
60325a06fbSEvgeniy Polyakov 	W1_CMD_TOUCH,
61*f89735c4SEvgeniy Polyakov 	W1_CMD_RESET,
62325a06fbSEvgeniy Polyakov 	W1_CMD_MAX,
63325a06fbSEvgeniy Polyakov };
6412003375SEvgeniy Polyakov 
6512003375SEvgeniy Polyakov struct w1_netlink_cmd
6612003375SEvgeniy Polyakov {
6712003375SEvgeniy Polyakov 	__u8				cmd;
6812003375SEvgeniy Polyakov 	__u8				res;
6912003375SEvgeniy Polyakov 	__u16				len;
7012003375SEvgeniy Polyakov 	__u8				data[0];
711da177e4SLinus Torvalds };
721da177e4SLinus Torvalds 
731da177e4SLinus Torvalds #ifdef __KERNEL__
741da177e4SLinus Torvalds 
751da177e4SLinus Torvalds void w1_netlink_send(struct w1_master *, struct w1_netlink_msg *);
7612003375SEvgeniy Polyakov int w1_init_netlink(void);
7712003375SEvgeniy Polyakov void w1_fini_netlink(void);
781da177e4SLinus Torvalds 
791da177e4SLinus Torvalds #endif /* __KERNEL__ */
801da177e4SLinus Torvalds #endif /* __W1_NETLINK_H */
81