summaryrefslogtreecommitdiffstats
path: root/drivers/soundwire
diff options
context:
space:
mode:
authorSrinivas Kandagatla <srinivas.kandagatla@linaro.org>2021-04-01 11:24:54 +0200
committerVinod Koul <vkoul@kernel.org>2021-04-06 06:53:59 +0200
commit9916c02ccd74e672b62dd1a9017ac2f237ebf512 (patch)
treed10be825c090603cc30d62ac92cc0ada5eaa27f8 /drivers/soundwire
parentsoundwire: qcom: wait for fifo space to be available before read/write (diff)
downloadlinux-9916c02ccd74e672b62dd1a9017ac2f237ebf512.tar.xz
linux-9916c02ccd74e672b62dd1a9017ac2f237ebf512.zip
soundwire: qcom: cleanup internal port config indexing
Internally used portconfig array for storing port bandwidth params starts from offset zero. However port zero is not really used and we also copy the bus parameters to offset zero. So basically we endup with a code which has to subtract 1 from port number to get to port parameters. This is bit confusing to the reader so, make this bit more obvious by only copying the parameters to offset 1 instead of zero. This will avoid doing -1 every time when we try to get port params. Similar thing has been recently done with din/dout_port_mask. Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Link: https://lore.kernel.org/r/20210401092454.21299-1-srinivas.kandagatla@linaro.org Signed-off-by: Vinod Koul <vkoul@kernel.org>
Diffstat (limited to 'drivers/soundwire')
-rw-r--r--drivers/soundwire/qcom.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/drivers/soundwire/qcom.c b/drivers/soundwire/qcom.c
index 190e4d7f486a..892027e6df5f 100644
--- a/drivers/soundwire/qcom.c
+++ b/drivers/soundwire/qcom.c
@@ -724,7 +724,7 @@ static int qcom_swrm_transport_params(struct sdw_bus *bus,
int reg = SWRM_DP_PORT_CTRL_BANK((params->port_num), bank);
int ret;
- pcfg = &ctrl->pconfig[params->port_num - 1];
+ pcfg = &ctrl->pconfig[params->port_num];
value = pcfg->off1 << SWRM_DP_PORT_CTRL_OFFSET1_SHFT;
value |= pcfg->off2 << SWRM_DP_PORT_CTRL_OFFSET2_SHFT;
@@ -801,11 +801,11 @@ static int qcom_swrm_compute_params(struct sdw_bus *bus)
struct qcom_swrm_port_config *pcfg;
struct sdw_slave *slave;
unsigned int m_port;
- int i = 0;
+ int i = 1;
list_for_each_entry(m_rt, &bus->m_rt_list, bus_node) {
list_for_each_entry(p_rt, &m_rt->port_list, port_node) {
- pcfg = &ctrl->pconfig[p_rt->num - 1];
+ pcfg = &ctrl->pconfig[p_rt->num];
p_rt->transport_params.port_num = p_rt->num;
if (pcfg->word_length != SWR_INVALID_PARAM) {
sdw_fill_port_params(&p_rt->port_params,
@@ -822,7 +822,7 @@ static int qcom_swrm_compute_params(struct sdw_bus *bus)
m_port = slave->m_port_map[p_rt->num];
/* port config starts at offset 0 so -1 from actual port number */
if (m_port)
- pcfg = &ctrl->pconfig[m_port - 1];
+ pcfg = &ctrl->pconfig[m_port];
else
pcfg = &ctrl->pconfig[i];
p_rt->transport_params.port_num = p_rt->num;
@@ -1159,15 +1159,16 @@ static int qcom_swrm_get_port_config(struct qcom_swrm_ctrl *ctrl)
of_property_read_u8_array(np, "qcom,ports-lane-control", lane_control, nports);
for (i = 0; i < nports; i++) {
- ctrl->pconfig[i].si = si[i];
- ctrl->pconfig[i].off1 = off1[i];
- ctrl->pconfig[i].off2 = off2[i];
- ctrl->pconfig[i].bp_mode = bp_mode[i];
- ctrl->pconfig[i].hstart = hstart[i];
- ctrl->pconfig[i].hstop = hstop[i];
- ctrl->pconfig[i].word_length = word_length[i];
- ctrl->pconfig[i].blk_group_count = blk_group_count[i];
- ctrl->pconfig[i].lane_control = lane_control[i];
+ /* Valid port number range is from 1-14 */
+ ctrl->pconfig[i + 1].si = si[i];
+ ctrl->pconfig[i + 1].off1 = off1[i];
+ ctrl->pconfig[i + 1].off2 = off2[i];
+ ctrl->pconfig[i + 1].bp_mode = bp_mode[i];
+ ctrl->pconfig[i + 1].hstart = hstart[i];
+ ctrl->pconfig[i + 1].hstop = hstop[i];
+ ctrl->pconfig[i + 1].word_length = word_length[i];
+ ctrl->pconfig[i + 1].blk_group_count = blk_group_count[i];
+ ctrl->pconfig[i + 1].lane_control = lane_control[i];
}
return 0;