Received: by 2002:a05:6a10:d5a5:0:0:0:0 with SMTP id gn37csp663198pxb; Wed, 6 Oct 2021 12:41:59 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxiCAyU1UhLmrDlx9CflFcbqK3QQY+imCac//2zDM4bZDmR+n9sewA7g4KyZGOnL5n9ktIp X-Received: by 2002:a17:902:7246:b0:138:a6ed:66cc with SMTP id c6-20020a170902724600b00138a6ed66ccmr12878238pll.22.1633549319639; Wed, 06 Oct 2021 12:41:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1633549319; cv=none; d=google.com; s=arc-20160816; b=0dn9Mlktb4/UtOAxlin3fN7D0XD2bcypmy2mGcXqbbu26aEanGhIwqb1tPxK5VDkc7 g8503j98yC7fUGdtQIXXWmPzdtEC/X6F7+bHWiNSqO6zjqHKXdsQUaij6173JVa91vfS 9Z+JEltoyP0+kb52XBUQE02vHSnUjY2NrIr5J+g1XrPDbUTnzkWqhYAekpOsJapqumH+ 7Yz+5XGbqTd5kndIC23ruiN/UXZezC/xG7JTUB0AsgYipazZVSUeL6Afsodt5gLinHO0 zg1aW93Wh8K05hecNSjedn5GJtslIMA8G2437ZfORO/LPzm/aTxT6R6w3ByksME53Rh9 CLTQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=5Xg9zrUyKFMa3ddbem3zPmmRQ2IkXwWBatRdclbFjwA=; b=vDA9E8er6v4UBG6yobmJxjssZZqir8h5SNIiWjrGRD1EK6f2ONcmtJjxHHNh8e9zh9 Qvu845E9K8uQwuB1ZRAj2IjUam4j1A6E4/Me5zal3JkxUPSH70NzF/V7WVhkdOTEhhLg 5WRLaqt9ZBwaNxvmZeRlPOthM0ulUMqRsS1YCU+1RlqUXDKO9wxB7u2H4gepcB0XK1W7 OZNymOpvA5q2VthfhPVeyLc6/2VyY8tttyl5c7468EGnzRzWbGVJPB30M0IAMRq8yIpE iAK+1JlvoNCinsGJ3eh9Sk6cVITeGoJkAlfi/P2tJ2GQdZWoyPq6gCSrhcop0LyJ/ZeX ufSA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=kvwXt6r4; 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=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y8si1246020plg.28.2021.10.06.12.41.47; Wed, 06 Oct 2021 12:41:59 -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=@chromium.org header.s=google header.b=kvwXt6r4; 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=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239610AbhJFTlO (ORCPT + 99 others); Wed, 6 Oct 2021 15:41:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53848 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239553AbhJFTkl (ORCPT ); Wed, 6 Oct 2021 15:40:41 -0400 Received: from mail-pg1-x535.google.com (mail-pg1-x535.google.com [IPv6:2607:f8b0:4864:20::535]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4952AC061753 for ; Wed, 6 Oct 2021 12:38:44 -0700 (PDT) Received: by mail-pg1-x535.google.com with SMTP id 66so3382298pgc.9 for ; Wed, 06 Oct 2021 12:38:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5Xg9zrUyKFMa3ddbem3zPmmRQ2IkXwWBatRdclbFjwA=; b=kvwXt6r49WGoKov+1kI1YQK6kLMveUPCoAiuryNLL6xUFBMjdpH1ukw3oV2k5sLg6I dHeQY2F+HemCVFPE3sVuz6U0zd+8VMt9aRLOKI0S7NmYBQQMlsfJxyNxP7XJ2wmmDZEW 7MSIJ5B0mlWDqqFeK+H26hmoLDYHLgkSf6Ne8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5Xg9zrUyKFMa3ddbem3zPmmRQ2IkXwWBatRdclbFjwA=; b=ns+paL7/4V8E64kcLMk3Khvpf72lYd1EIzJg9iiGp5lHASs8BN7bVFfKBx4GzWLiKV ZJI9x3qRBOvOCZS4Xj7w435tXCILVG7QtAqFqOx4BIcHCvc+wjwo84t/IIUihLY1PnWt UFtcxhUwQA3TT7mmpIcSlCG0jOsmF6l6gH/ZYEswJXH9YNvny4VchAIOh9fFsJ8aeDtH YjG4OnPOoEkI3OeKdyzfCCBs0/BTbpXaQtH1C42hYuUE9lfebtD8E2dxXam3VOq2Ugvf 3NNnHsHSt6l1SuO9MlvxD4lzgm57B3PLdSHCdXglB5lRf23qMT8tvcx9Ppso9cT+jx9s x1GQ== X-Gm-Message-State: AOAM531XCe2tfXlJa6/sLuNcU5pgZ4SY0Lj+tMMZHIkrGPCQRejIFdUd fFmYwhMdlebIFLq4iyR7qaNJ7A== X-Received: by 2002:a05:6a00:216f:b0:44b:6212:4967 with SMTP id r15-20020a056a00216f00b0044b62124967mr39153114pff.23.1633549123847; Wed, 06 Oct 2021 12:38:43 -0700 (PDT) Received: from smtp.gmail.com ([2620:15c:202:201:d412:c5eb:4aca:4738]) by smtp.gmail.com with ESMTPSA id o14sm22011296pfh.84.2021.10.06.12.38.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Oct 2021 12:38:43 -0700 (PDT) From: Stephen Boyd To: Greg Kroah-Hartman Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, Neil Armstrong , Daniel Vetter , "Rafael J. Wysocki" , Rob Clark , Russell King , Saravana Kannan Subject: [PATCH v2 18/34] drm/meson: Migrate to aggregate driver Date: Wed, 6 Oct 2021 12:38:03 -0700 Message-Id: <20211006193819.2654854-19-swboyd@chromium.org> X-Mailer: git-send-email 2.33.0.800.g4c38ced690-goog In-Reply-To: <20211006193819.2654854-1-swboyd@chromium.org> References: <20211006193819.2654854-1-swboyd@chromium.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Use an aggregate driver instead of component ops so that we can get proper driver probe ordering of the aggregate device with respect to all the component devices that make up the aggregate device. Cc: Neil Armstrong Cc: Daniel Vetter Cc: "Rafael J. Wysocki" Cc: Rob Clark Cc: Russell King Cc: Saravana Kannan Signed-off-by: Stephen Boyd --- drivers/gpu/drm/meson/meson_drv.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c index bc0d60df04ae..109fb9d057e3 100644 --- a/drivers/gpu/drm/meson/meson_drv.c +++ b/drivers/gpu/drm/meson/meson_drv.c @@ -357,13 +357,16 @@ static int meson_drv_bind_master(struct device *dev, bool has_components) return ret; } -static int meson_drv_bind(struct device *dev) +static int meson_drv_bind(struct aggregate_device *adev) { + struct device *dev = adev->parent; + return meson_drv_bind_master(dev, true); } -static void meson_drv_unbind(struct device *dev) +static void meson_drv_unbind(struct aggregate_device *adev) { + struct device *dev = adev->parent; struct meson_drm *priv = dev_get_drvdata(dev); struct drm_device *drm = priv->drm; @@ -387,9 +390,13 @@ static void meson_drv_unbind(struct device *dev) } } -static const struct component_master_ops meson_drv_master_ops = { - .bind = meson_drv_bind, - .unbind = meson_drv_unbind, +static struct aggregate_driver meson_aggregate_drv = { + .probe = meson_drv_bind, + .remove = meson_drv_unbind, + .driver = { + .name = "meson_drm", + .owner = THIS_MODULE, + }, }; static int __maybe_unused meson_drv_pm_suspend(struct device *dev) @@ -503,9 +510,7 @@ static int meson_drv_probe(struct platform_device *pdev) if (count) { dev_info(&pdev->dev, "Queued %d outputs on vpu\n", count); - return component_master_add_with_match(&pdev->dev, - &meson_drv_master_ops, - match); + return component_aggregate_register(&pdev->dev, &meson_aggregate_drv, match); } /* If no output endpoints were available, simply bail out */ -- https://chromeos.dev