Skip to content

Commit 34a47bf

Browse files
committed
soundwire: intel: handle Peripheral bra_block_alignment
The data pre frame size should be a multiple of bra_block_alignment. Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
1 parent 256170f commit 34a47bf

3 files changed

Lines changed: 9 additions & 0 deletions

File tree

drivers/soundwire/cadence_master.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2139,6 +2139,7 @@ EXPORT_SYMBOL(sdw_cdns_bpt_find_bandwidth);
21392139
int sdw_cdns_bpt_find_buffer_sizes(int command, /* 0: write, 1: read */
21402140
int row, int col, unsigned int data_bytes,
21412141
unsigned int requested_bytes_per_frame,
2142+
unsigned int bra_block_alignment,
21422143
unsigned int *data_per_frame, unsigned int *pdi0_buffer_size,
21432144
unsigned int *pdi1_buffer_size, unsigned int *num_frames)
21442145
{
@@ -2163,6 +2164,11 @@ int sdw_cdns_bpt_find_buffer_sizes(int command, /* 0: write, 1: read */
21632164
if (requested_bytes_per_frame < actual_bpt_bytes)
21642165
actual_bpt_bytes = requested_bytes_per_frame;
21652166

2167+
if (bra_block_alignment) {
2168+
/* align to a multiple of bra_block_alignment */
2169+
actual_bpt_bytes -= (actual_bpt_bytes % bra_block_alignment);
2170+
}
2171+
21662172
*data_per_frame = actual_bpt_bytes;
21672173

21682174
if (data_bytes < actual_bpt_bytes)

drivers/soundwire/cadence_master.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,7 @@ int sdw_cdns_bpt_find_bandwidth(int command, /* 0: write, 1: read */
218218
int sdw_cdns_bpt_find_buffer_sizes(int command, /* 0: write, 1: read */
219219
int row, int col, unsigned int data_bytes,
220220
unsigned int requested_bytes_per_frame,
221+
unsigned int bra_block_alignment,
221222
unsigned int *data_per_frame, unsigned int *pdi0_buffer_size,
222223
unsigned int *pdi1_buffer_size, unsigned int *num_frames);
223224

drivers/soundwire/intel_ace2x.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,7 @@ static int intel_ace2x_bpt_open_stream(struct sdw_intel *sdw, struct sdw_slave *
173173
ret = sdw_cdns_bpt_find_buffer_sizes(command, cdns->bus.params.row,
174174
cdns->bus.params.col,
175175
msg->sec[i].len, SDW_BPT_MSG_MAX_BYTES,
176+
slave->prop.bra_block_alignment,
176177
&data_per_frame, &pdi0_buffer_size_,
177178
&pdi1_buffer_size_, &num_frames_);
178179
if (ret < 0)
@@ -197,6 +198,7 @@ static int intel_ace2x_bpt_open_stream(struct sdw_intel *sdw, struct sdw_slave *
197198
ret = sdw_cdns_bpt_find_buffer_sizes(command, cdns->bus.params.row,
198199
cdns->bus.params.col,
199200
data_per_frame, SDW_BPT_MSG_MAX_BYTES,
201+
slave->prop.bra_block_alignment,
200202
&data_per_frame, &pdi0_buf_size_pre_frame,
201203
&pdi1_buf_size_pre_frame, &fake_num_frames);
202204
if (ret < 0)

0 commit comments

Comments
 (0)