Received: by 2002:a05:6a10:eb17:0:0:0:0 with SMTP id hx23csp888100pxb; Wed, 8 Sep 2021 15:05:39 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx6+TPHT6hZILzIqp4f2YVUjBy4IT3eg2orQwdrAQPNp5awRZjjqrMrLmWxiuOPD61SxhuR X-Received: by 2002:a05:6602:2c05:: with SMTP id w5mr404498iov.160.1631138739362; Wed, 08 Sep 2021 15:05:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1631138739; cv=none; d=google.com; s=arc-20160816; b=A7b8FESmpl7HgFo9g764MYdqaO3mtob0EyUSkzbv0e5bwuz+md/imj/JUcaRtEfJ2c On8kftyhnGLX4UxdnwBI1k6jcCQhWuwDOip4Y2U6F76vxtXE/KrUmnZtss+vRvILRGGu MW7aOCk/oYkQT4p5dZwhDbU6qwLXdInAdiFtDEDRxjMBQgpaLs4h4UF9q5f7yK7xFsq7 tvxlxdWJMwNEnX+7ejLeTvp15pyCh7ToWmZqf/E/RPZW731zVN44Z8WPBYvKfccxKBlr o92xKx9+lCNT4hz5gOD+0AD0yMD0jfYtaqZGKPhBtREtig94RUhipCTO7k4DAsdRfR8d Ulbw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=h/KrPoSusIWXfaxxiz6d+5SZKzgcam3GYDlFFEZnnMY=; b=fhzELOYDlq7KCpgCMvvucHJjWSEMVNMsNS/cwG3DvPmrmGqDRKS9s727tfDnoozVde Fj66mI1EIB7WoAUhGyK/f5TsAh/Hksunp/eIkfROWpsfXnUyFN3F+scqMwfOoFRdhrD6 wy0G7VBBVuRHQOmlj4yNhl7Spd8RFlszr60d9+QlfsPeDTfnViSlqiIMMzZkh1sdjKpN Wy3A0PPDotW3cXS8k1YhoJ5Cm1y60z1yuVIJetSmCk4zszfQoKSAsY8RuCYlcJ7rFsUP P14G1apAtMlb86olyMgh0O1F3jOTnac4WK1BjkWbz2V68SqV5O+iPY34YUvmtxJfIZsg tSGg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=pe7+5xly; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f11si365450iok.80.2021.09.08.15.05.21; Wed, 08 Sep 2021 15:05:39 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=pe7+5xly; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237486AbhIHWEH (ORCPT + 99 others); Wed, 8 Sep 2021 18:04:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50046 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236062AbhIHWEG (ORCPT ); Wed, 8 Sep 2021 18:04:06 -0400 Received: from mail-yb1-xb2f.google.com (mail-yb1-xb2f.google.com [IPv6:2607:f8b0:4864:20::b2f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0D917C06175F for ; Wed, 8 Sep 2021 15:02:58 -0700 (PDT) Received: by mail-yb1-xb2f.google.com with SMTP id a93so7314282ybi.1 for ; Wed, 08 Sep 2021 15:02:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=h/KrPoSusIWXfaxxiz6d+5SZKzgcam3GYDlFFEZnnMY=; b=pe7+5xlygWREYLTBPwQ4X2nvtNtdGJRqObWDRJY9EMov224EgPVX8Ha+BITykbcrHD pgsGo/GfwQZLxzwUvA+bnJjC95jBhDgCnzyENJs8mZKhTTXQuAXdlqFyEL/8CNVtHmrO n8utNK+rV2QUw0YCAaPdPBh9QbZ+uyEQXNfliHXAtJ1zTv/zI+gbbP5QD0Ker4nklmVS h3smtQKVGfJLnPLDpcCPwSStMR1VMU37GPu8lzuf1k4S/UEqeUm4zr8TPpmWmMoJltTf 7MRUz+in30TtguUqXKOYxQWfmwNGBFSYQGmksXgJF+6xmRiisHJEcGLmQZ8KcMnngO3F fMXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=h/KrPoSusIWXfaxxiz6d+5SZKzgcam3GYDlFFEZnnMY=; b=LVbaP3+KbqqDJTnVpgjE+5PUbfRwv2OZ0cVlYIqK0KfZbrSBdurkIdSzXAo3uubW5+ IXjtXYOxyhE+2NISYUHjcZIInTpRuF7i4ioi+3Nj2eqgvAg/rq93eu1DDB1LZTZ8UxrG tNjaATyhA82QnN7FrnHqtbynbh2Fjh7BNdmm0Bk8K+U+igjz9JaNHiAy6Zhp4RhxbuiD +13li5p02hY52tNY91UqXT9s08tSBypnzXXaqOaM08lcgzXz13hxD6n2SyRd76e8NiK8 /SYE1ydfPGjedaFEYorDxgKOVwQYcyfKUKwMx+/GtyYlroDd6GSmQAwlBEcFur8ZDqQ/ lLgw== X-Gm-Message-State: AOAM531FIc+QeOUDI7tSPuxT/Aw1Qd2E4UXdkx2WTDvBhH1ekSwJ2tJ/ V8l6JG9kABv4omllWPhm0yr7uglmTiGTrEMkHPTZMQ== X-Received: by 2002:a05:6902:1201:: with SMTP id s1mr600170ybu.432.1631138577011; Wed, 08 Sep 2021 15:02:57 -0700 (PDT) MIME-Version: 1.0 References: <20210904000543.2019010-1-saravanak@google.com> <20210904000543.2019010-2-saravanak@google.com> In-Reply-To: From: Saravana Kannan Date: Wed, 8 Sep 2021 15:02:21 -0700 Message-ID: Subject: Re: [PATCH v3 1/2] drivers: bus: simple-pm-bus: Add support for probing simple bus only devices To: Ulf Hansson Cc: Russell King , Neil Armstrong , Geert Uytterhoeven , Magnus Damm , Tony Lindgren , Catalin Marinas , Will Deacon , Damien Le Moal , Rob Herring , Android Kernel Team , Linux ARM , Linux Kernel Mailing List , linux-oxnas@groups.io, Linux-Renesas , linux-omap , linux-riscv Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Sep 7, 2021 at 3:41 AM Ulf Hansson wrote: > > On Sat, 4 Sept 2021 at 02:05, Saravana Kannan wrote: > > > > fw_devlink could end up creating device links for bus only devices. > > However, bus only devices don't get probed and can block probe() or > > sync_state() [1] call backs of other devices. To avoid this, probe these > > devices using the simple-pm-bus driver. > > > > However, there are instances of devices that are not simple buses (they > > get probed by their specific drivers) that also list the "simple-bus" > > (or other bus only compatible strings) in their compatible property to > > automatically populate their child devices. We still want these devices > > to get probed by their specific drivers. So, we make sure this driver > > only probes devices that are only buses. > > > > [1] - https://lore.kernel.org/lkml/CAPDyKFo9Bxremkb1dDrr4OcXSpE0keVze94Cm=zrkOVxHHxBmQ@mail.gmail.com/ > > Signed-off-by: Saravana Kannan > > Tested-by: Saravana Kannan > > Reviewed-by: Ulf Hansson > > I will run some tests as soon as I can and let you know the results. Thanks. -Saravana > > Kind regards > Uffe > > > --- > > drivers/bus/simple-pm-bus.c | 32 +++++++++++++++++++++++++++++--- > > 1 file changed, 29 insertions(+), 3 deletions(-) > > > > diff --git a/drivers/bus/simple-pm-bus.c b/drivers/bus/simple-pm-bus.c > > index 01a3d0cd08ed..3e086a9f34cb 100644 > > --- a/drivers/bus/simple-pm-bus.c > > +++ b/drivers/bus/simple-pm-bus.c > > @@ -13,11 +13,26 @@ > > #include > > #include > > > > - > > static int simple_pm_bus_probe(struct platform_device *pdev) > > { > > - const struct of_dev_auxdata *lookup = dev_get_platdata(&pdev->dev); > > - struct device_node *np = pdev->dev.of_node; > > + const struct device *dev = &pdev->dev; > > + const struct of_dev_auxdata *lookup = dev_get_platdata(dev); > > + struct device_node *np = dev->of_node; > > + const struct of_device_id *match; > > + > > + match = of_match_device(dev->driver->of_match_table, dev); > > + > > + /* > > + * These are transparent bus devices (not simple-pm-bus matches) that > > + * have their child nodes populated automatically. So, don't need to > > + * do anything more. > > + */ > > + if (match && match->data) { > > + if (of_property_match_string(np, "compatible", match->compatible) == 0) > > + return 0; > > + else > > + return -ENODEV; > > + } > > > > dev_dbg(&pdev->dev, "%s\n", __func__); > > > > @@ -31,14 +46,25 @@ static int simple_pm_bus_probe(struct platform_device *pdev) > > > > static int simple_pm_bus_remove(struct platform_device *pdev) > > { > > + const void *data = of_device_get_match_data(&pdev->dev); > > + > > + if (data) > > + return 0; > > + > > dev_dbg(&pdev->dev, "%s\n", __func__); > > > > pm_runtime_disable(&pdev->dev); > > return 0; > > } > > > > +#define ONLY_BUS ((void *) 1) /* Match if the device is only a bus. */ > > + > > static const struct of_device_id simple_pm_bus_of_match[] = { > > { .compatible = "simple-pm-bus", }, > > + { .compatible = "simple-bus", .data = ONLY_BUS }, > > + { .compatible = "simple-mfd", .data = ONLY_BUS }, > > + { .compatible = "isa", .data = ONLY_BUS }, > > + { .compatible = "arm,amba-bus", .data = ONLY_BUS }, > > { /* sentinel */ } > > }; > > MODULE_DEVICE_TABLE(of, simple_pm_bus_of_match); > > -- > > 2.33.0.153.gba50c8fa24-goog > >