diff mbox series

[04/16] soundwire: cadence: handle error cases with CONFIG_UPDATE

Message ID 20200311184128.4212-5-pierre-louis.bossart@linux.intel.com (mailing list archive)
State New, archived
Headers show
Series SoundWire: cadence: add clock stop and fix programming sequences | expand

Commit Message

Pierre-Louis Bossart March 11, 2020, 6:41 p.m. UTC
config_update() may time out or cannot be use in ClockStopMode

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
---
 drivers/soundwire/cadence_master.c | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Vinod Koul March 13, 2020, 12:08 p.m. UTC | #1
On 11-03-20, 13:41, Pierre-Louis Bossart wrote:
> config_update() may time out or cannot be use in ClockStopMode
> 
> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
> ---
>  drivers/soundwire/cadence_master.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/soundwire/cadence_master.c b/drivers/soundwire/cadence_master.c
> index 71cba2585151..4089c271305a 100644
> --- a/drivers/soundwire/cadence_master.c
> +++ b/drivers/soundwire/cadence_master.c
> @@ -239,6 +239,11 @@ static int cdns_config_update(struct sdw_cdns *cdns)
>  {
>  	int ret;
>  
> +	if (sdw_cdns_is_clock_stop(cdns)) {
> +		dev_err(cdns->dev, "Cannot program MCP_CONFIG_UPDATE in ClockStopMode\n");

This looks fine but duplicates the log, so maybe you can remove from
here or preceding patch... Or use single line as I suggested in that
patch and keep this as is.
Pierre-Louis Bossart March 13, 2020, 5:09 p.m. UTC | #2
On 3/13/20 7:08 AM, Vinod Koul wrote:
> On 11-03-20, 13:41, Pierre-Louis Bossart wrote:
>> config_update() may time out or cannot be use in ClockStopMode
>>
>> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
>> ---
>>   drivers/soundwire/cadence_master.c | 5 +++++
>>   1 file changed, 5 insertions(+)
>>
>> diff --git a/drivers/soundwire/cadence_master.c b/drivers/soundwire/cadence_master.c
>> index 71cba2585151..4089c271305a 100644
>> --- a/drivers/soundwire/cadence_master.c
>> +++ b/drivers/soundwire/cadence_master.c
>> @@ -239,6 +239,11 @@ static int cdns_config_update(struct sdw_cdns *cdns)
>>   {
>>   	int ret;
>>   
>> +	if (sdw_cdns_is_clock_stop(cdns)) {
>> +		dev_err(cdns->dev, "Cannot program MCP_CONFIG_UPDATE in ClockStopMode\n");
> 
> This looks fine but duplicates the log, so maybe you can remove from
> here or preceding patch... Or use single line as I suggested in that
> patch and keep this as is.

It doesn't duplicate it. In Patch1 it's a dev_dbg log that's useful for 
integration, and that function is used in other places (see the 
soundwire:intel series).

In this patch this is a clear error leading to a master hang.
diff mbox series

Patch

diff --git a/drivers/soundwire/cadence_master.c b/drivers/soundwire/cadence_master.c
index 71cba2585151..4089c271305a 100644
--- a/drivers/soundwire/cadence_master.c
+++ b/drivers/soundwire/cadence_master.c
@@ -239,6 +239,11 @@  static int cdns_config_update(struct sdw_cdns *cdns)
 {
 	int ret;
 
+	if (sdw_cdns_is_clock_stop(cdns)) {
+		dev_err(cdns->dev, "Cannot program MCP_CONFIG_UPDATE in ClockStopMode\n");
+		return -EINVAL;
+	}
+
 	ret = cdns_clear_bit(cdns, CDNS_MCP_CONFIG_UPDATE,
 			     CDNS_MCP_CONFIG_UPDATE_BIT);
 	if (ret < 0)