From patchwork Sun Sep 16 23:45:41 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srinivas Kandagatla X-Patchwork-Id: 10601909 X-Patchwork-Delegate: agross@codeaurora.org Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 1CB0113AD for ; Sun, 16 Sep 2018 23:46:06 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 084AE29350 for ; Sun, 16 Sep 2018 23:46:06 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id F11152935B; Sun, 16 Sep 2018 23:46:05 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7042A2934B for ; Sun, 16 Sep 2018 23:46:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728115AbeIQFKk (ORCPT ); Mon, 17 Sep 2018 01:10:40 -0400 Received: from mail-it0-f66.google.com ([209.85.214.66]:38104 "EHLO mail-it0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725844AbeIQFKk (ORCPT ); Mon, 17 Sep 2018 01:10:40 -0400 Received: by mail-it0-f66.google.com with SMTP id p129-v6so8791030ite.3 for ; Sun, 16 Sep 2018 16:45:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=PIKaH/Ayz19S8iNTPDQor8FxL6MltyIuIX2u6+vfhek=; b=ee7g1aiNVMrlWJbii8louGa7accboQgy+AOfEg9XLtOZpHOJBDpBDYMeFIJoikkMs6 s8EyyClPK2N6P8A4yOToExebsnio4GPoC7GlrgJpUUShXH+KgqouuDSHHGs9VzOTYHIn NbtlhdZOVETN+bKhQ6HZ3gGkdpNIyHjFH85qc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=PIKaH/Ayz19S8iNTPDQor8FxL6MltyIuIX2u6+vfhek=; b=MB8PzEIBqBMPJm+EzEXRTX/7pofPO5/zXV07Uf+M3H/xxrivt6Ax3+yhUaabISEslT 8RE4/NnPg9YpMDdU2KHbRo/3JTsG8uJf9MCeiz3laHKwXPLByWimWFYxFGbTbIvsx/IZ 4hpiHwQc1iTtzPPHUILxwcueNoyCuLr4HPSo1KyDpdAYBzK9Nk1r3nPiZAOyoLa/lZqD 62xaoq+7kf3n3KiG6im/vIEZWy83utoy+sLxliBm02sof05jW6jeQDLwiBK3a2eE62Tt kVQiqsoymojXoj/MLh5nBHwXT00l+GhwP5WnukWiHpM/NYKT7/URYUPb9V0TTjeTC7ed 4WwQ== X-Gm-Message-State: APzg51CiioUEiau4qrTpIHgktjwieisOWheELuoNXkQ2msWlzUvhkNUa 25cIZvGrPjgPuYj97+BP4dEr/Q== X-Google-Smtp-Source: ANB0VdY7W8TNXy3QBSFCzO+Q+M/Frdz77xjS4yobxID+qnXWZiliFhGwlWnA2oBQ/UH0Ig5gbjSV8g== X-Received: by 2002:a24:24c2:: with SMTP id f185-v6mr10666065ita.18.1537141559357; Sun, 16 Sep 2018 16:45:59 -0700 (PDT) Received: from localhost.localdomain ([209.82.80.116]) by smtp.gmail.com with ESMTPSA id a11-v6sm4495177ioc.63.2018.09.16.16.45.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 16 Sep 2018 16:45:58 -0700 (PDT) From: srinivas.kandagatla@linaro.org To: gregkh@linuxfoundation.org Cc: broonie@kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, alsa-devel@alsa-project.org, vkoul@kernel.org, Srinivas Kandagatla Subject: [PATCH 2/7] slimbus: core: update device status in probe Date: Sun, 16 Sep 2018 16:45:41 -0700 Message-Id: <20180916234546.29661-3-srinivas.kandagatla@linaro.org> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20180916234546.29661-1-srinivas.kandagatla@linaro.org> References: <20180916234546.29661-1-srinivas.kandagatla@linaro.org> Sender: linux-arm-msm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Srinivas Kandagatla device status update can be racy with probe in some cases, so make sure it take lock during the probe. Also after probe the device is expected to be ready for communications, so make sure that a logical address can be assigned to it after probe. If it fails to do so then probe defer such instances. Signed-off-by: Srinivas Kandagatla --- drivers/slimbus/core.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/drivers/slimbus/core.c b/drivers/slimbus/core.c index 31f2910..262591f 100644 --- a/drivers/slimbus/core.c +++ b/drivers/slimbus/core.c @@ -40,8 +40,23 @@ static int slim_device_probe(struct device *dev) { struct slim_device *sbdev = to_slim_device(dev); struct slim_driver *sbdrv = to_slim_driver(dev->driver); + int ret; + + ret = sbdrv->probe(sbdev); + if (ret) + return ret; - return sbdrv->probe(sbdev); + /* try getting the logical address after probe */ + ret = slim_get_logical_addr(sbdev); + if (!ret) { + if (sbdrv->device_status) + sbdrv->device_status(sbdev, sbdev->status); + } else { + dev_err(&sbdev->dev, "Failed to get logical address\n"); + ret = -EPROBE_DEFER; + } + + return ret; } static int slim_device_remove(struct device *dev)