mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
w1: optional bundling of netlink kernel replies
Applications can submit a set of commands in one packet to the kernel, and in some cases it is required such as reading the temperature sensor results. This adds an option W1_CN_BUNDLE to the flags of cn_msg to request the kernel to reply in one packet for efficiency. The cn_msg flags now check for unknown flag values and return an error if one is seen. See "Proper handling of unknown flags in system calls" http://lwn.net/Articles/588444/ This corrects the ack values returned as per the protocol standard, namely the original ack for status messages and seq + 1 for all others such as the data returned from a read. Some of the common variable names have been standardized as follows. struct cn_msg *cn struct w1_netlink_msg *msg struct w1_netlink_cmd *cmd struct w1_master *dev When an argument and a function scope variable would collide, add req_ to the argument. Signed-off-by: David Fries <[email protected]> Acked-by: Evgeniy Polyakov <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
This commit is contained in:
parent
34470e0bfa
commit
8a0427d192
6 changed files with 447 additions and 263 deletions
|
|
@ -82,7 +82,7 @@ driver - (standard) symlink to the w1 driver
|
|||
w1_master_add - Manually register a slave device
|
||||
w1_master_attempts - the number of times a search was attempted
|
||||
w1_master_max_slave_count
|
||||
- the maximum slaves that may be attached to a master
|
||||
- maximum number of slaves to search for at a time
|
||||
w1_master_name - the name of the device (w1_bus_masterX)
|
||||
w1_master_pullup - 5V strong pullup 0 enabled, 1 disabled
|
||||
w1_master_remove - Manually remove a slave device
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ Protocol.
|
|||
W1_SLAVE_CMD
|
||||
userspace command for slave device
|
||||
(read/write/touch)
|
||||
__u8 res - reserved
|
||||
__u8 status - error indication from kernel
|
||||
__u16 len - size of data attached to this header data
|
||||
union {
|
||||
__u8 id[8]; - slave unique device id
|
||||
|
|
@ -44,10 +44,14 @@ Protocol.
|
|||
__u8 cmd - command opcode.
|
||||
W1_CMD_READ - read command
|
||||
W1_CMD_WRITE - write command
|
||||
W1_CMD_TOUCH - touch command
|
||||
(write and sample data back to userspace)
|
||||
W1_CMD_SEARCH - search command
|
||||
W1_CMD_ALARM_SEARCH - alarm search command
|
||||
W1_CMD_TOUCH - touch command
|
||||
(write and sample data back to userspace)
|
||||
W1_CMD_RESET - send bus reset
|
||||
W1_CMD_SLAVE_ADD - add slave to kernel list
|
||||
W1_CMD_SLAVE_REMOVE - remove slave from kernel list
|
||||
W1_CMD_LIST_SLAVES - get slaves list from kernel
|
||||
__u8 res - reserved
|
||||
__u16 len - length of data for this command
|
||||
For read command data must be allocated like for write command
|
||||
|
|
@ -87,8 +91,7 @@ format:
|
|||
id0 ... idN
|
||||
|
||||
Each message is at most 4k in size, so if number of master devices
|
||||
exceeds this, it will be split into several messages,
|
||||
cn.seq will be increased for each one.
|
||||
exceeds this, it will be split into several messages.
|
||||
|
||||
W1 search and alarm search commands.
|
||||
request:
|
||||
|
|
|
|||
Loading…
Reference in a new issue