Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion src/drivers/intel/cavs/idc.c
Original file line number Diff line number Diff line change
Expand Up @@ -129,8 +129,11 @@ int idc_send_msg(struct idc_msg *msg, uint32_t mode)
switch (mode) {
case IDC_BLOCKING:
ret = idc_wait_in_blocking_mode(msg->core, idc_is_received);
if (ret < 0)
if (ret < 0) {
tr_err(&idc_tr, "idc_send_msg(), blocking msg 0x%x failed for core %d",
msg->header, msg->core);
return ret;
}

idc_write(IPC_IDCIETC(msg->core), core,
idc_read(IPC_IDCIETC(msg->core), core) |
Expand Down
30 changes: 26 additions & 4 deletions src/drivers/intel/ssp/ssp.c
Original file line number Diff line number Diff line change
Expand Up @@ -987,8 +987,19 @@ static void ssp_start(struct dai *dai, int direction)
else
ssp_update_bits(dai, SSRSA, SSRSA_RXEN, SSRSA_RXEN);

/* wait to get valid fifo status */
wait_delay(PLATFORM_SSP_DELAY);
/*
* Wait to get valid fifo status in clock consumer mode. TODO it's
* uncertain which SSP clock consumer modes need the delay atm, but
* these can be added here when confirmed.
*/
switch (ssp->config.format & SOF_DAI_FMT_CLOCK_PROVIDER_MASK) {
case SOF_DAI_FMT_CBC_CFC:
break;
default:
/* delay for all SSP consumed clocks atm - see above */
wait_delay(PLATFORM_SSP_DELAY);
break;
}

spin_unlock(&dai->lock);
}
Expand All @@ -1000,8 +1011,19 @@ static void ssp_stop(struct dai *dai, int direction)

spin_lock(&dai->lock);

/* wait to get valid fifo status */
wait_delay(PLATFORM_SSP_DELAY);
/*
* Wait to get valid fifo status in clock consumer mode. TODO it's
* uncertain which SSP clock consumer modes need the delay atm, but
* these can be added here when confirmed.
*/
switch (ssp->config.format & SOF_DAI_FMT_CLOCK_PROVIDER_MASK) {
case SOF_DAI_FMT_CBC_CFC:
break;
default:
/* delay for all SSP consumed clocks atm - see above */

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

only minor . typo consumed -> consumer

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good change @lgirdwood we should add this patch as a separate PR, it might help even outside of multi-core changes.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the motivation of the change here? the PLATFORM_SSP_DELAY delay is only some us, no?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The delay is NOT needed in SSP clock producer mode. It can be 100uS.

wait_delay(PLATFORM_SSP_DELAY);
break;
}

/* stop Rx if neeed */
if (direction == DAI_DIR_CAPTURE &&
Expand Down