brintos

brintos / linux-shallow public Read only

0
0
Text · 3.5 KiB · 449680a Raw
136 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later */2/*3 * Copyright (c) 2003 Evgeniy Polyakov <zbr@ioremap.net>4 */5 6#ifndef __W1_NETLINK_H7#define __W1_NETLINK_H8 9#include <asm/types.h>10#include <linux/connector.h>11 12#include "w1_internal.h"13 14/**15 * enum w1_cn_msg_flags - bitfield flags for struct cn_msg.flags16 *17 * @W1_CN_BUNDLE: Request bundling replies into fewer messagse.  Be prepared18 * to handle multiple struct cn_msg, struct w1_netlink_msg, and19 * struct w1_netlink_cmd in one packet.20 */21enum w1_cn_msg_flags {22	W1_CN_BUNDLE = 1,23};24 25/**26 * enum w1_netlink_message_types - message type27 *28 * @W1_SLAVE_ADD: notification that a slave device was added29 * @W1_SLAVE_REMOVE: notification that a slave device was removed30 * @W1_MASTER_ADD: notification that a new bus master was added31 * @W1_MASTER_REMOVE: notification that a bus masterwas removed32 * @W1_MASTER_CMD: initiate operations on a specific master33 * @W1_SLAVE_CMD: sends reset, selects the slave, then does a read/write/touch34 * operation35 * @W1_LIST_MASTERS: used to determine the bus master identifiers36 */37enum w1_netlink_message_types {38	W1_SLAVE_ADD = 0,39	W1_SLAVE_REMOVE,40	W1_MASTER_ADD,41	W1_MASTER_REMOVE,42	W1_MASTER_CMD,43	W1_SLAVE_CMD,44	W1_LIST_MASTERS,45};46 47/**48 * struct w1_netlink_msg - holds w1 message type, id, and result49 *50 * @type: one of enum w1_netlink_message_types51 * @status: kernel feedback for success 0 or errno failure value52 * @len: length of data following w1_netlink_msg53 * @id: union holding bus master id (msg.id) and slave device id (id[8]).54 * @id.id: Slave ID (8 bytes)55 * @id.mst: bus master identification56 * @id.mst.id: bus master ID57 * @id.mst.res: bus master reserved58 * @data: start address of any following data59 *60 * The base message structure for w1 messages over netlink.61 * The netlink connector data sequence is, struct nlmsghdr, struct cn_msg,62 * then one or more struct w1_netlink_msg (each with optional data).63 */64struct w1_netlink_msg65{66	__u8				type;67	__u8				status;68	__u16				len;69	union {70		__u8			id[8];71		struct w1_mst {72			__u32		id;73			__u32		res;74		} mst;75	} id;76	__u8				data[];77};78 79/**80 * enum w1_commands - commands available for master or slave operations81 *82 * @W1_CMD_READ: read len bytes83 * @W1_CMD_WRITE: write len bytes84 * @W1_CMD_SEARCH: initiate a standard search, returns only the slave85 * devices found during that search86 * @W1_CMD_ALARM_SEARCH: search for devices that are currently alarming87 * @W1_CMD_TOUCH: Touches a series of bytes.88 * @W1_CMD_RESET: sends a bus reset on the given master89 * @W1_CMD_SLAVE_ADD: adds a slave to the given master,90 * 8 byte slave id at data[0]91 * @W1_CMD_SLAVE_REMOVE: removes a slave to the given master,92 * 8 byte slave id at data[0]93 * @W1_CMD_LIST_SLAVES: list of slaves registered on this master94 * @W1_CMD_MAX: number of available commands95 */96enum w1_commands {97	W1_CMD_READ = 0,98	W1_CMD_WRITE,99	W1_CMD_SEARCH,100	W1_CMD_ALARM_SEARCH,101	W1_CMD_TOUCH,102	W1_CMD_RESET,103	W1_CMD_SLAVE_ADD,104	W1_CMD_SLAVE_REMOVE,105	W1_CMD_LIST_SLAVES,106	W1_CMD_MAX107};108 109/**110 * struct w1_netlink_cmd - holds the command and data111 *112 * @cmd: one of enum w1_commands113 * @res: reserved114 * @len: length of data following w1_netlink_cmd115 * @data: start address of any following data116 *117 * One or more struct w1_netlink_cmd is placed starting at w1_netlink_msg.data118 * each with optional data.119 */120struct w1_netlink_cmd121{122	__u8				cmd;123	__u8				res;124	__u16				len;125	__u8				data[];126};127 128#ifdef __KERNEL__129 130void w1_netlink_send(struct w1_master *, struct w1_netlink_msg *);131int w1_init_netlink(void);132void w1_fini_netlink(void);133 134#endif /* __KERNEL__ */135#endif /* __W1_NETLINK_H */136