diff options
author | Vinod Koul <vkoul@kernel.org> | 2020-03-20 19:25:14 +0530 |
---|---|---|
committer | Vinod Koul <vkoul@kernel.org> | 2020-03-20 19:25:14 +0530 |
commit | 1ce7139436603dda9e155df0c3e275c87a725761 (patch) | |
tree | 044be412bde0c4db608c4949940cb488229f8b8d | |
parent | b468a785bd3e0a0591c84cbde5787f58be38c3e4 (diff) | |
parent | a9107de4b03604ce0d279315c91b31b8065ee4ea (diff) |
Merge branch 'topic/ro_wordlength' into next
-rw-r--r-- | drivers/soundwire/stream.c | 16 | ||||
-rw-r--r-- | include/linux/soundwire/sdw.h | 2 |
2 files changed, 11 insertions, 7 deletions
diff --git a/drivers/soundwire/stream.c b/drivers/soundwire/stream.c index 1b43d03c79ea..a9a72574b34a 100644 --- a/drivers/soundwire/stream.c +++ b/drivers/soundwire/stream.c @@ -167,13 +167,15 @@ static int sdw_program_slave_port_params(struct sdw_bus *bus, return ret; } - /* Program DPN_BlockCtrl1 register */ - ret = sdw_write(s_rt->slave, addr2, (p_params->bps - 1)); - if (ret < 0) { - dev_err(&s_rt->slave->dev, - "DPN_BlockCtrl1 register write failed for port %d\n", - t_params->port_num); - return ret; + if (!dpn_prop->read_only_wordlength) { + /* Program DPN_BlockCtrl1 register */ + ret = sdw_write(s_rt->slave, addr2, (p_params->bps - 1)); + if (ret < 0) { + dev_err(&s_rt->slave->dev, + "DPN_BlockCtrl1 register write failed for port %d\n", + t_params->port_num); + return ret; + } } /* Program DPN_SampleCtrl1 register */ diff --git a/include/linux/soundwire/sdw.h b/include/linux/soundwire/sdw.h index ee349a4c5349..00f5826092e3 100644 --- a/include/linux/soundwire/sdw.h +++ b/include/linux/soundwire/sdw.h @@ -299,6 +299,7 @@ struct sdw_dpn_audio_mode { * @max_async_buffer: Number of samples that this port can buffer in * asynchronous modes * @block_pack_mode: Type of block port mode supported + * @read_only_wordlength: Read Only wordlength field in DPN_BlockCtrl1 register * @port_encoding: Payload Channel Sample encoding schemes supported * @audio_modes: Audio modes supported */ @@ -322,6 +323,7 @@ struct sdw_dpn_prop { u32 modes; u32 max_async_buffer; bool block_pack_mode; + bool read_only_wordlength; u32 port_encoding; struct sdw_dpn_audio_mode *audio_modes; }; |