libcamera: ipa: Support array controls in ipa_control_value_entry

Report in a new field of the ipa_control_value_entry structure if the
value contains an array. Reorganize the other fields of the structure to
avoid increasing its size.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
Laurent Pinchart 2020-02-28 17:37:23 +02:00
parent 1716d4e86f
commit 427c37f671
2 changed files with 8 additions and 2 deletions

View file

@ -26,9 +26,11 @@ struct ipa_controls_header {
struct ipa_control_value_entry {
uint32_t id;
uint32_t type;
uint32_t count;
uint8_t type;
uint8_t is_array;
uint16_t count;
uint32_t offset;
uint32_t padding[1];
};
struct ipa_control_range_entry {

View file

@ -163,11 +163,15 @@ static_assert(sizeof(ipa_controls_header) == 32,
* The numerical ID of the control
* \var ipa_control_value_entry::type
* The type of the control (defined by enum ControlType)
* \var ipa_control_value_entry::is_array
* True if the control value stores an array, false otherwise
* \var ipa_control_value_entry::count
* The number of control array entries for array controls (1 otherwise)
* \var ipa_control_value_entry::offset
* The offset in bytes from the beginning of the data section to the control
* value data (shall be a multiple of 8 bytes).
* \var ipa_control_value_entry::padding
* Padding bytes (shall be set to 0)
*/
static_assert(sizeof(ipa_control_value_entry) == 16,