Commit accc98af authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'soundwire-6.7-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/soundwire

Pull soundwire fixes from Vinod Koul:

 - Null pointer dereference for mult link in core

 - AC timing fix in intel driver

* tag 'soundwire-6.7-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/soundwire:
  soundwire: intel_ace2x: fix AC timing setting for ACE2.x
  soundwire: stream: fix NULL pointer dereference for multi_link
parents 7f499ec2 393cae5f
...@@ -23,8 +23,9 @@ ...@@ -23,8 +23,9 @@
static void intel_shim_vs_init(struct sdw_intel *sdw) static void intel_shim_vs_init(struct sdw_intel *sdw)
{ {
void __iomem *shim_vs = sdw->link_res->shim_vs; void __iomem *shim_vs = sdw->link_res->shim_vs;
u16 act = 0; u16 act;
act = intel_readw(shim_vs, SDW_SHIM2_INTEL_VS_ACTMCTL);
u16p_replace_bits(&act, 0x1, SDW_SHIM2_INTEL_VS_ACTMCTL_DOAIS); u16p_replace_bits(&act, 0x1, SDW_SHIM2_INTEL_VS_ACTMCTL_DOAIS);
act |= SDW_SHIM2_INTEL_VS_ACTMCTL_DACTQE; act |= SDW_SHIM2_INTEL_VS_ACTMCTL_DACTQE;
act |= SDW_SHIM2_INTEL_VS_ACTMCTL_DODS; act |= SDW_SHIM2_INTEL_VS_ACTMCTL_DODS;
......
...@@ -742,14 +742,15 @@ static int sdw_bank_switch(struct sdw_bus *bus, int m_rt_count) ...@@ -742,14 +742,15 @@ static int sdw_bank_switch(struct sdw_bus *bus, int m_rt_count)
* sdw_ml_sync_bank_switch: Multilink register bank switch * sdw_ml_sync_bank_switch: Multilink register bank switch
* *
* @bus: SDW bus instance * @bus: SDW bus instance
* @multi_link: whether this is a multi-link stream with hardware-based sync
* *
* Caller function should free the buffers on error * Caller function should free the buffers on error
*/ */
static int sdw_ml_sync_bank_switch(struct sdw_bus *bus) static int sdw_ml_sync_bank_switch(struct sdw_bus *bus, bool multi_link)
{ {
unsigned long time_left; unsigned long time_left;
if (!bus->multi_link) if (!multi_link)
return 0; return 0;
/* Wait for completion of transfer */ /* Wait for completion of transfer */
...@@ -847,7 +848,7 @@ static int do_bank_switch(struct sdw_stream_runtime *stream) ...@@ -847,7 +848,7 @@ static int do_bank_switch(struct sdw_stream_runtime *stream)
bus->bank_switch_timeout = DEFAULT_BANK_SWITCH_TIMEOUT; bus->bank_switch_timeout = DEFAULT_BANK_SWITCH_TIMEOUT;
/* Check if bank switch was successful */ /* Check if bank switch was successful */
ret = sdw_ml_sync_bank_switch(bus); ret = sdw_ml_sync_bank_switch(bus, multi_link);
if (ret < 0) { if (ret < 0) {
dev_err(bus->dev, dev_err(bus->dev,
"multi link bank switch failed: %d\n", ret); "multi link bank switch failed: %d\n", ret);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment