From 64fb5af1d1bbcf1b808e9bb092b22fa1b691ae63 Mon Sep 17 00:00:00 2001 From: Charles Keepax Date: Wed, 5 Feb 2025 11:37:57 +0000 Subject: ASoC: SDCA: Add parsing for Control range structures DisCo/SDCA contains small buffers of data that hold ranges of valid values for the various SDCA Controls. Add support for parsing these from ACPI. Signed-off-by: Charles Keepax Reviewed-by: Pierre-Louis Bossart Link: https://patch.msgid.link/20250205113801.3699902-7-ckeepax@opensource.cirrus.com Signed-off-by: Mark Brown --- include/sound/sdca_function.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'include/sound') diff --git a/include/sound/sdca_function.h b/include/sound/sdca_function.h index 64043090fe76..769ae6841064 100644 --- a/include/sound/sdca_function.h +++ b/include/sound/sdca_function.h @@ -612,6 +612,18 @@ enum sdca_access_layer { SDCA_ACCESS_LAYER_EXTENSION = 1 << 5, }; +/** + * struct sdca_control_range - SDCA Control range table + * @cols: Number of columns in the range table. + * @rows: Number of rows in the range table. + * @data: Array of values contained in the range table. + */ +struct sdca_control_range { + unsigned int cols; + unsigned int rows; + u32 *data; +}; + /** * struct sdca_control - information for one SDCA Control * @label: Name for the Control, from SDCA Specification v1.0, section 7.1.7. @@ -622,6 +634,7 @@ enum sdca_access_layer { * Control. * @cn_list: A bitmask showing the valid Control Numbers within this Control, * Control Numbers typically represent channels. + * @range: Buffer describing valid range of values for the Control. * @mode: Access mode of the Control. * @layers: Bitmask of access layers of the Control. * @deferrable: Indicates if the access to the Control can be deferred. @@ -637,6 +650,7 @@ struct sdca_control { int interrupt_position; u64 cn_list; + struct sdca_control_range range; enum sdca_access_mode mode; u8 layers; -- cgit v1.3