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