Unverified Commit 1bcbb88b authored by Charles Keepax's avatar Charles Keepax Committed by Mark Brown
Browse files

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: default avatarCharles Keepax <ckeepax@opensource.cirrus.com>
Link: https://patch.msgid.link/20250312172205.4152686-6-ckeepax@opensource.cirrus.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 2a4667f3
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -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);