From: Charles Keepax Date: Wed, 12 Mar 2025 17:22:04 +0000 (+0000) Subject: ASoC: SDCA: Add SDCA Control Range data access helper X-Git-Tag: v6.15-rc1~173^2~4^2~13^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1bcbb88bedb17804491e692a3f1a38223e09152c;p=thirdparty%2Fkernel%2Flinux.git ASoC: SDCA: Add SDCA Control Range data access helper SDCA Ranges are two dimensional arrays of data associated with controls, add a helper to provide an x,y access mechanism to the data and a helper to locate a specific value inside a range. Signed-off-by: Charles Keepax Link: https://patch.msgid.link/20250312172205.4152686-6-ckeepax@opensource.cirrus.com Signed-off-by: Mark Brown --- diff --git a/include/sound/sdca_function.h b/include/sound/sdca_function.h index ca0376903e87c..d7489e3c7e471 100644 --- a/include/sound/sdca_function.h +++ b/include/sound/sdca_function.h @@ -1136,6 +1136,25 @@ struct sdca_function_data { unsigned int busy_max_delay; }; +static inline u32 sdca_range(struct sdca_control_range *range, + unsigned int col, unsigned int row) +{ + return range->data[(row * range->cols) + col]; +} + +static inline u32 sdca_range_search(struct sdca_control_range *range, + int search_col, int value, int result_col) +{ + int i; + + for (i = 0; i < range->rows; i++) { + if (sdca_range(range, search_col, i) == value) + return sdca_range(range, result_col, i); + } + + return 0; +} + int sdca_parse_function(struct device *dev, struct sdca_function_desc *desc, struct sdca_function_data *function);