From eb7479cd86c86cb60c6f60a76499f5e2e3f76063 Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Tue, 27 Sep 2011 19:00:50 +0200 Subject: [PATCH] --- yaml --- r: 268567 b: refs/heads/master c: 8517e879e0d11a277275616b9e1c749afe2fceff h: refs/heads/master i: 268565: e4bc6ca7424514b8b48bb5d3da85c272c68b3bf5 268563: b98f78dc887ffc22aae8f3b8a7844ee6abc36da0 268559: a86707999392f5102d89cb9951a48ae1e7a95bce v: v3 --- [refs] | 2 +- trunk/drivers/staging/nvec/nvec.c | 31 +++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index bb1d19c59f65..6b1dab4c6eab 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e7c40851fd7989dad297988b6343f4e3cb687292 +refs/heads/master: 8517e879e0d11a277275616b9e1c749afe2fceff diff --git a/trunk/drivers/staging/nvec/nvec.c b/trunk/drivers/staging/nvec/nvec.c index 17f5abfcb780..8e97e2d7ac3d 100644 --- a/trunk/drivers/staging/nvec/nvec.c +++ b/trunk/drivers/staging/nvec/nvec.c @@ -114,6 +114,37 @@ static void nvec_msg_free(struct nvec_chip *nvec, struct nvec_msg *msg) atomic_set(&msg->used, 0); } +/** + * nvec_msg_is_event - Return %true if @msg is an event + * @msg: A message + */ +static bool nvec_msg_is_event(struct nvec_msg *msg) +{ + return msg->data[0] >> 7; +} + +/** + * nvec_msg_size - Get the size of a message + * @msg: The message to get the size for + * + * This only works for received messages, not for outgoing messages. + */ +static size_t nvec_msg_size(struct nvec_msg *msg) +{ + bool is_event = nvec_msg_is_event(msg); + int event_length = (msg->data[0] & 0x60) >> 5; + + /* for variable size, payload size in byte 1 + count (1) + cmd (1) */ + if (!is_event || event_length == NVEC_VAR_SIZE) + return (msg->pos || msg->size) ? (msg->data[1] + 2) : 0; + else if (event_length == NVEC_2BYTES) + return 2; + else if (event_length == NVEC_3BYTES) + return 3; + else + return 0; +} + static void nvec_gpio_set_value(struct nvec_chip *nvec, int value) { dev_dbg(nvec->dev, "GPIO changed from %u to %u\n",