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: 146798 Delivered-To: patch@linaro.org Received: by 2002:a2e:1648:0:0:0:0:0 with SMTP id 8-v6csp3154575ljw; Sun, 16 Sep 2018 16:46:08 -0700 (PDT) X-Google-Smtp-Source: ANB0VdZtE2Jyvm2B6BLlCAVQPDOWq9sYaW6jJTwA/vD0su8k+WfWsokrRTk0f0iQqIw788m/ZL5f X-Received: by 2002:a17:902:261:: with SMTP id 88-v6mr22254260plc.331.1537141567983; Sun, 16 Sep 2018 16:46:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1537141567; cv=none; d=google.com; s=arc-20160816; b=0S7s31T4HBcZnAc5zM6w9StFU1SCG6U9yBzR/Mnke86E8cEo1grZKoZn33Czvnwc0Y U9TZr4qT9MfsWcSRfeZR9Pm+62xgds/TdSKbYFarzUDns0/Bv0frz1oFZ4GFQwvLzhO8 GnkH657AA1TjeXzStbF24mSg0/C0zntQNShS4GXpvirSrWL1YEJxF+rDDAQ1U8/X4Gpi 86c+OTCVzJmKah5rYbzbkTSrQ4SAto/XG/1r05w7llBOMMNUn9TaOvT2Evp82Gqp12jQ Y6BeZEytxoU5YedPpBBsqbHi+26Zohu2kV4jS6haM06Trcgd9k/ORSlg/isjjxAbdue5 7HqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=PIKaH/Ayz19S8iNTPDQor8FxL6MltyIuIX2u6+vfhek=; b=dBs6EMFYPPaeB9xxEqUuMVnIRgS684q/rDYf+9CsDuQK/r6bC1P/NKdgpbtbvUlBxp wXzeTII0TXx1arAen6Fkpe0tnQEzmV8AP6BzCNzxKZ9s87UKU6EtgRVrUcHtED7YUwBh FGGkRtOUTgq7qaWJfpv2fz2/3wozWa7So8SRiCWbaQjxiL3vvQZxgrOzAfsGxxPDd+Pa t3nzz0Z96ICCcrGUN0dp1YHz1VEIM5fT5UpoDAedQ1X//P5DAysposr3dDWh9fwbybFY WfiXIxiAURswojyd+/0XM9T9R1sDW+bMq+aDEwi9Aj5py0MaFRdaNbXAuSIcHS6KpWT0 Ygsw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=ee7g1aiN; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f4-v6si13808546plt.346.2018.09.16.16.46.07; Sun, 16 Sep 2018 16:46:07 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=ee7g1aiN; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728186AbeIQFKk (ORCPT + 32 others); Mon, 17 Sep 2018 01:10:40 -0400 Received: from mail-it0-f68.google.com ([209.85.214.68]:50869 "EHLO mail-it0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726889AbeIQFKk (ORCPT ); Mon, 17 Sep 2018 01:10:40 -0400 Received: by mail-it0-f68.google.com with SMTP id j81-v6so8967053ite.0 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=JLx5sG/YOilmMa0D/o+UvYGayBg6TiyfUhUyvzP6AmwGH3rjyM5iY2bQjbakRP4v4V IWALNh/oknKrNcO8RX0vmMGt9ZGlJ/+Lj38WbAi/daGkZh3gZpoQWk7r1KDvSTRb6q1m fibFri89W6RIFAZb7c+4JDtW7KJpUk8cV27+wTqHaZxWAntJuJ/qYCDpeN+RfUXRMfPu 6yPYK07XhZrNJO63Sv9UklkZ3mb3AnwPIcGBslJiOiytR2Zm5x3Pw4UADIX99fn82KSv KEcXzFR0z3FA3sPQLrWPUQ4V4fkl64DbsnhfHITO7x/7dwnqgT5RnjXma6dXeHvc8JjZ meOQ== X-Gm-Message-State: APzg51AYSqqFywJnoxEO9yDhM0fnXF18BOpxeEMEIcqVnrZS1jQm4fit grJ/dhcAYNKUszgd0jqRlpRaaA== 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-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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(-) -- 2.9.3 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)