Re: [PATCH v2 1/2] soundwire: qcom: update status from device id 1
From: Pierre-Louis Bossart
Date: Fri Sep 16 2022 - 10:25:11 EST
On 9/16/22 15:53, Srinivas Kandagatla wrote:
> By default autoenumeration is enabled on QCom SoundWire controller
> which means the core should not be dealing with device 0 w.r.t enumeration.
>
> During Enumeration if SoundWire core sees status[0] as SDW_SLAVE_ATTACHED and
> start programming the device id, however reading DEVID registers return zeros
> which does not match to any of the slaves in the list and the core attempts
> to park this device to Group 13. This results in adding SoundWire device
> with enumeration address 0:0:0:0
>
> Fix this by not passing device 0 status to SoundWire core.
>
> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@xxxxxxxxxx>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@xxxxxxxxxxxxxxx>
> ---
> Changes since v1:
> - updated change log and split patch in to two as suggested by Pierre
>
> drivers/soundwire/qcom.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/soundwire/qcom.c b/drivers/soundwire/qcom.c
> index e7f95c41eb70..d3ce580cdeaf 100644
> --- a/drivers/soundwire/qcom.c
> +++ b/drivers/soundwire/qcom.c
> @@ -448,7 +448,7 @@ static void qcom_swrm_get_device_status(struct qcom_swrm_ctrl *ctrl)
> ctrl->reg_read(ctrl, SWRM_MCP_SLV_STATUS, &val);
> ctrl->slave_status = val;
>
> - for (i = 0; i <= SDW_MAX_DEVICES; i++) {
> + for (i = 1; i <= SDW_MAX_DEVICES; i++) {
> u32 s;
>
> s = (val >> (i * 2));