diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/soundwire/swr-wcd-ctrl.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/drivers/soundwire/swr-wcd-ctrl.c b/drivers/soundwire/swr-wcd-ctrl.c index a8f93beeabbe..2cb60c11e212 100644 --- a/drivers/soundwire/swr-wcd-ctrl.c +++ b/drivers/soundwire/swr-wcd-ctrl.c @@ -675,6 +675,11 @@ static void swrm_cleanup_disabled_data_ports(struct swr_master *master, int port_disable_cnt = 0; struct swr_mstr_ctrl *swrm = swr_get_ctrl_data(master); + if (!swrm) { + pr_err("%s: swrm is null\n", __func__); + return; + } + dev_dbg(swrm->dev, "%s: master num_port: %d\n", __func__, master->num_port); @@ -740,6 +745,11 @@ static void swrm_slvdev_datapath_control(struct swr_master *master, SWRM_MCP_FRAME_CTRL_BANK_SSP_PERIOD_BMSK); u8 inactive_bank; + if (!swrm) { + pr_err("%s: swrm is null\n", __func__); + return; + } + bank = get_inactive_bank_num(swrm); dev_dbg(swrm->dev, "%s: enable: %d, cfg_devs: %d\n", @@ -829,6 +839,11 @@ static void swrm_copy_data_port_config(struct swr_master *master, u8 bank) int len = 0; struct swr_mstr_ctrl *swrm = swr_get_ctrl_data(master); + if (!swrm) { + pr_err("%s: swrm is null\n", __func__); + return; + } + dev_dbg(swrm->dev, "%s: master num_port: %d\n", __func__, master->num_port); @@ -975,13 +990,12 @@ port_fail: mem_fail: list_for_each_safe(ptr, next, &swrm->mport_list) { mport = list_entry(ptr, struct swrm_mports, list); - if (!mport) - continue; for (i = 0; i < portinfo->num_port; i++) { if (portinfo->port_id[i] == mstr_ports[mport->id]) { port = swrm_get_port(master, portinfo->port_id[i]); - port->ch_en = false; + if (port) + port->ch_en = false; list_del(&mport->list); kfree(mport); break; |
