greybus: update UniPro Set Interface Power Mode operation to match spec
authorEli Sennesh <esennesh@leaflabs.com>
Fri, 3 Jun 2016 15:24:44 +0000 (11:24 -0400)
committerGreg Kroah-Hartman <gregkh@google.com>
Fri, 10 Jun 2016 01:14:00 +0000 (18:14 -0700)
commit8c2522d87ab20ba245ddf92e4e8b19a76e5760fd
treeb8524650818e94f2154a0557ecdbb5b2b0795ff5
parent62e04623530c9a4312817438dea4859c549d01c1
greybus: update UniPro Set Interface Power Mode operation to match spec

Bring the gb_svc_intf_set_power_mode() up-to-date with the current Greybus
specification.  This largely involves adding more members to the structure
sent across the wire.  Also change the camera code to use the new
operation properly, with default values passed for the new necessary
arguments.  The correctness of these default values is confirmed via testing
and by asking Rob Johnson.

We must make sure to zero the request structure sent across the wire, lest
bite us most cruelly, and we fix by changing the Set Power Mode
Response structure to use a __u8 rather than a __le16.

Testing Done: Took a picture with a camera module, received error code
when passing deliberately incorrect values for new parameters, got proper
-EIO and Greybus result code printed when operation stopped halfway
through.  Could induce error by initializing request struct with random
nonsense, and can stop it by initializing request struct with zeroes.

Associated Firmware Changes: 1669-1671 on Android N Gerrit for SW-2945

Signed-off-by: Eli Sennesh <esennesh@leaflabs.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
drivers/staging/greybus/camera.c
drivers/staging/greybus/greybus_protocols.h
drivers/staging/greybus/svc.c
drivers/staging/greybus/svc.h