summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>2019-08-05 20:55:10 -0400
committerVinod Koul <vkoul@kernel.org>2019-08-21 05:06:01 -0400
commitfe4b70f2ce27e961198605ac5ddc288f066f7150 (patch)
treebe3752b7ce1b9748376495127beb6804ab17f563
parent6e0ac6a663b834b9ea16b2340e66aa3717c465b2 (diff)
soundwire: export helpers to find row and column values
Add a prefix for common tables and export 2 helpers to set the frame shapes based on row/col values. These changes simplify bandwidth allocation algorithms as well as the Cadence parts which all need to convert from frame shape to indices used by the standard. These helpers are used in the following patch. Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://lore.kernel.org/r/20190806005522.22642-6-pierre-louis.bossart@linux.intel.com Signed-off-by: Vinod Koul <vkoul@kernel.org>
-rw-r--r--drivers/soundwire/bus.h7
-rw-r--r--drivers/soundwire/stream.c14
2 files changed, 13 insertions, 8 deletions
diff --git a/drivers/soundwire/bus.h b/drivers/soundwire/bus.h
index 3048ca153f22..4429c51c5f86 100644
--- a/drivers/soundwire/bus.h
+++ b/drivers/soundwire/bus.h
@@ -49,8 +49,11 @@ struct sdw_msg {
49 49
50#define SDW_DOUBLE_RATE_FACTOR 2 50#define SDW_DOUBLE_RATE_FACTOR 2
51 51
52extern int rows[SDW_FRAME_ROWS]; 52extern int sdw_rows[SDW_FRAME_ROWS];
53extern int cols[SDW_FRAME_COLS]; 53extern int sdw_cols[SDW_FRAME_COLS];
54
55int sdw_find_row_index(int row);
56int sdw_find_col_index(int col);
54 57
55/** 58/**
56 * sdw_port_runtime: Runtime port parameters for Master or Slave 59 * sdw_port_runtime: Runtime port parameters for Master or Slave
diff --git a/drivers/soundwire/stream.c b/drivers/soundwire/stream.c
index a0476755a459..53f5e790fcd7 100644
--- a/drivers/soundwire/stream.c
+++ b/drivers/soundwire/stream.c
@@ -21,37 +21,39 @@
21 * The rows are arranged as per the array index value programmed 21 * The rows are arranged as per the array index value programmed
22 * in register. The index 15 has dummy value 0 in order to fill hole. 22 * in register. The index 15 has dummy value 0 in order to fill hole.
23 */ 23 */
24int rows[SDW_FRAME_ROWS] = {48, 50, 60, 64, 75, 80, 125, 147, 24int sdw_rows[SDW_FRAME_ROWS] = {48, 50, 60, 64, 75, 80, 125, 147,
25 96, 100, 120, 128, 150, 160, 250, 0, 25 96, 100, 120, 128, 150, 160, 250, 0,
26 192, 200, 240, 256, 72, 144, 90, 180}; 26 192, 200, 240, 256, 72, 144, 90, 180};
27 27
28int cols[SDW_FRAME_COLS] = {2, 4, 6, 8, 10, 12, 14, 16}; 28int sdw_cols[SDW_FRAME_COLS] = {2, 4, 6, 8, 10, 12, 14, 16};
29 29
30static int sdw_find_col_index(int col) 30int sdw_find_col_index(int col)
31{ 31{
32 int i; 32 int i;
33 33
34 for (i = 0; i < SDW_FRAME_COLS; i++) { 34 for (i = 0; i < SDW_FRAME_COLS; i++) {
35 if (cols[i] == col) 35 if (sdw_cols[i] == col)
36 return i; 36 return i;
37 } 37 }
38 38
39 pr_warn("Requested column not found, selecting lowest column no: 2\n"); 39 pr_warn("Requested column not found, selecting lowest column no: 2\n");
40 return 0; 40 return 0;
41} 41}
42EXPORT_SYMBOL(sdw_find_col_index);
42 43
43static int sdw_find_row_index(int row) 44int sdw_find_row_index(int row)
44{ 45{
45 int i; 46 int i;
46 47
47 for (i = 0; i < SDW_FRAME_ROWS; i++) { 48 for (i = 0; i < SDW_FRAME_ROWS; i++) {
48 if (rows[i] == row) 49 if (sdw_rows[i] == row)
49 return i; 50 return i;
50 } 51 }
51 52
52 pr_warn("Requested row not found, selecting lowest row no: 48\n"); 53 pr_warn("Requested row not found, selecting lowest row no: 48\n");
53 return 0; 54 return 0;
54} 55}
56EXPORT_SYMBOL(sdw_find_row_index);
55 57
56static int _sdw_program_slave_port_params(struct sdw_bus *bus, 58static int _sdw_program_slave_port_params(struct sdw_bus *bus,
57 struct sdw_slave *slave, 59 struct sdw_slave *slave,