Received: by 2002:a05:6358:489b:b0:bb:da1:e618 with SMTP id x27csp1932288rwn; Fri, 16 Sep 2022 03:09:19 -0700 (PDT) X-Google-Smtp-Source: AMsMyM56OyOV4m9ygzuotrKk87evILKoodNi503jL2NrKGyqRMMUdmlbZ6IKj/rz1HpVtH/IUDPH X-Received: by 2002:a17:907:7629:b0:776:a147:8524 with SMTP id jy9-20020a170907762900b00776a1478524mr3029253ejc.632.1663322958792; Fri, 16 Sep 2022 03:09:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1663322958; cv=none; d=google.com; s=arc-20160816; b=L3JaZ8atYk6V+yWbKaSvXT67FSz6Lnpmfj0W3Oj5p/KZsTc50TpFu4FUxho6++MbkD 5HELXiHUS6EnoQ2zPG7HhrjvZFKP/5TRZg01GvgqepCxlAvHl5DAooomN3RWQBxoILCw JDTtfNlcdlojb54hRkg4HYLOczTOl5Yn/8ftLf4SjfwpfK7zZbuLVOP2Lh3SR929K9i3 pt0DWfHlFvjgQ9fKLOKCFDSLE2yIkewGDSf/t70lb5zlKNr09WHS/tfG2cEPfc7rqL5i mPc3Dmf8/ha+e3FsossNJwAV6QvLA4Nbnv8DiVdnc5htiYKgj7+q7fnEymP3/SZDni1b TnAA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id:dkim-signature; bh=RjZugFqHdF1+IHX1RfLkEzeL1FTRXVr7An76OjttJpw=; b=s4X6EEcEUR/csR18giPkwQxwo7RDcvlr61cIVpzCzAWAF6YL8JYZVcr0iZxdNv7vFv cI8lIPaYpEG007ohJrKW3FFQx5Y+2FTqX7Y/CFuxoeqC2CkXKlD3H54IdlR/oxFkDVRd REikQ2IIbbGxd9p32SRc5VjRUShEv3+//X4Xv7JIDF0pePunyg0P4gqhGclNaCnizVgN D6WVUPIggaVqdU8PxLg0x7IodENAUtPGYaBqYqoA4rZcU9Y9dyquK1lsHkmqgqV9iySy +fqYY0F/5IwPEff+IDhgw2qvJDK5sR3MVeTW8PXwAoLIqBXgrKMV0+cibk0iiFhrmwRQ JIhA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=dPLf2y4Z; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id m2-20020a056402430200b0044e6ce6c84fsi1917556edc.548.2022.09.16.03.08.52; Fri, 16 Sep 2022 03:09:18 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=dPLf2y4Z; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230317AbiIPKFV (ORCPT + 99 others); Fri, 16 Sep 2022 06:05:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57366 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229600AbiIPKFS (ORCPT ); Fri, 16 Sep 2022 06:05:18 -0400 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C29484D27A; Fri, 16 Sep 2022 03:05:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1663322715; x=1694858715; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=QJhaJZlzeBsCcRJwzatIAFEHttA8Lak9pZBYRJkQDxI=; b=dPLf2y4ZqS7qjGjPG0Me+htKyc0ic8XCYfeEd9Q5AG9F2JILiaifTk/N lNYmuL4I9DDK6ThusFW0kocSpV6HQ4QrQ4n1YKFZkuJzdv9o3cTdWjTaQ ddu27QZ/+ZYyb8IKkT6ALBTHnNa7I+Hijo9oI218ANI0QZXL5snaX47N2 N7EhM37G+rtH1M0vK8+k7QWjMZRGZ0Np9Wn4jbi/uYBS6VxPXesj3iEoa 01GAXWS4fThdawplcgH9jRy/YUfwvSBYcDK7WM+Y04ryXnk7QwKH+Hwb6 wWfVifyts9hXhWq4mxTkDDKSm99MMO94e5jHTeA4bOXj27lUSUMcyVZfd g==; X-IronPort-AV: E=McAfee;i="6500,9779,10471"; a="300320723" X-IronPort-AV: E=Sophos;i="5.93,320,1654585200"; d="scan'208";a="300320723" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Sep 2022 03:05:11 -0700 X-IronPort-AV: E=Sophos;i="5.93,320,1654585200"; d="scan'208";a="617617827" Received: from kchan21-mobl1.ger.corp.intel.com (HELO [10.252.61.56]) ([10.252.61.56]) by orsmga002-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Sep 2022 03:05:08 -0700 Message-ID: Date: Fri, 16 Sep 2022 12:05:05 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0 Thunderbird/91.11.0 Subject: Re: [PATCH] soundwire: qcom: update status from device id 1 Content-Language: en-US To: Srinivas Kandagatla , vkoul@kernel.org Cc: alsa-devel@alsa-project.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, sanyog.r.kale@intel.com, yung-chuan.liao@linux.intel.com, quic_srivasam@quicinc.com References: <20220915124215.13703-1-srinivas.kandagatla@linaro.org> <3962348a-33b4-5941-4a0b-cb447a513a41@linux.intel.com> <2e1b81d2-e20f-db9f-b84e-b3c5ebb312cb@linux.intel.com> <4e42389e-c1c4-fe41-3bc8-03cc9a40ac0b@linaro.org> From: Pierre-Louis Bossart In-Reply-To: <4e42389e-c1c4-fe41-3bc8-03cc9a40ac0b@linaro.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-6.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,NICE_REPLY_A,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 9/16/22 11:49, Srinivas Kandagatla wrote: > > > On 16/09/2022 10:39, Pierre-Louis Bossart wrote: >> >> >> On 9/16/22 11:12, Srinivas Kandagatla wrote: >>> >>> >>> On 15/09/2022 14:10, Pierre-Louis Bossart wrote: >>>> >>>> >>>> On 9/15/22 14:42, 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. >>>>> Currently device 0 status is also shared with SoundWire core which >>>>> confuses >>>>> the core sometimes and we endup adding 0:0:0:0 slave device. >>>> >>>> The change looks fine, but the description of the issue is surprising. >>> >>> Thanks Pierre, >>> >>>> >>>> Whether autoenumeration is enabled or not is irrelevant, by spec the >>>> device0 cannot be in ALERT status and throw in-band interrupts to the >>>> host with this mechanism. >>> >>> This issue is more of around enumeration stage in specific during device >>> status change interrupt from controller. Sharing the device 0 status >>> with core makes it think that there is a device with 0:0:0:0 address and >>> it tries to park device to group 13. >> Still not clear, sorry, see my comment below. > > >> >>> >>> >>> --srini >>> >>>> >>>>> Signed-off-by: Srinivas Kandagatla >>>>> --- >>>>>    drivers/soundwire/qcom.c | 4 ++-- >>>>>    1 file changed, 2 insertions(+), 2 deletions(-) >>>>> >>>>> diff --git a/drivers/soundwire/qcom.c b/drivers/soundwire/qcom.c >>>>> index e21a3306bf01..871e4d8b32c7 100644 >>>>> --- a/drivers/soundwire/qcom.c >>>>> +++ b/drivers/soundwire/qcom.c >>>>> @@ -428,7 +428,7 @@ static int >>>>> qcom_swrm_get_alert_slave_dev_num(struct qcom_swrm_ctrl *ctrl) >>>>>          ctrl->reg_read(ctrl, SWRM_MCP_SLV_STATUS, &val); >>>>>    -    for (dev_num = 0; dev_num <= SDW_MAX_DEVICES; dev_num++) { >>>>> +    for (dev_num = 1; dev_num <= SDW_MAX_DEVICES; dev_num++) { >>>>>            status = (val >> (dev_num * SWRM_MCP_SLV_STATUS_SZ)); >>>>>              if ((status & SWRM_MCP_SLV_STATUS_MASK) == >>>>> SDW_SLAVE_ALERT) { >> >> can this really happen? >> > I have not see this happening, I had to change this line for consistency > reasons due to other changes in the patch. > > Only case the issue was seen is during enumeration. > >> Device0 cannot be in alert status, can it? The only this it can do is >> assert PREQ and set the Device0 status to 1 (ATTACHED). I don't get how >> a device status could be 2. >> >> So even if the status is shared somehow,I don't see how this could be >> related to parking the device as suggested above. If the condition is >> always false then changing the loop counter from 0 to 1 would not have >> an effect? > > The reason why core tries to park this device is because it 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. ok, that makes sense, thanks for the explanations. I would recommend splitting this patch in two then: 1) the change for the handling of the alert status, which is unrelated to the auto-enumeration. That removes a test for an always-false condition 2) the change for the device status, that indeed is related to enumeration. > > > > > --srini > >> >> >>>>> @@ -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));