Received: by 2002:a05:6a10:d5a5:0:0:0:0 with SMTP id gn37csp663521pxb; Wed, 6 Oct 2021 12:42:20 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwq5kMD8/i4ysZWA5FdcfHiwKqviyG9eOgoWypDF9Wl6ry5t9OgM7lrvebOaPCkRY4Njb9a X-Received: by 2002:a17:90b:17d0:: with SMTP id me16mr669350pjb.152.1633549340179; Wed, 06 Oct 2021 12:42:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1633549340; cv=none; d=google.com; s=arc-20160816; b=eBqlT2TkIuAgbgddkep4s4ocEn7ioW0hgnQlEtX6v+eceEhKzA865QODUfhLrqX7Un Ef2mq2W41p9AjjbX7zgSDYaXjCWlPVjCMufy3T6N+u0GwdFhUyYm7RV1g+s0x9IvsWyz JsPsIxOJbWsCFWurtAjkNMjrS8IunfqvHqiNwDiLGnUnnUi7+run0EqaNT3zlLYTk7gY lQlfg7JYybtQREp2xraQSiSwwKEpEv71ADw+wSMIRbEl+13jsxmTsRedlD9IyWf8Z29e jE/ax4mm3sOUngfF8dQv4ZJsTDT/91pNOD1Lj1gpNtpGgXdGA+sG4SMSIJmzebWnugHi tJ7g== 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=HoQjuHREWvjsK8rKG+0w83Xi8iEfhBhp3a3+GSxKR9Y=; b=DGpTxvLhKfgDKr5hply1+SkEARoY/lbHEz3rLp3LGDqagyXZhZP99+ww11HqoKskDE sRI/GydG7R0cWBMLhSLzMiuSsUzgBvBgVi7MDjKJC0fJhFI7R8IIqCvHS8c+V1hooWhz SFWsZ89JvSTDyJTvkbb0sOkHyAc685eK2NHreL38dgT6ej+D7XH3ASJHv6TOPK0Qpbv0 LvXyP1+/3xpVcSfvaRzV58Iyak4it7AgfzUwWdCi4CvmtXMxWw1iC1L+2R4FHAqmpRYm 9gVD0rwbEVPH14n0dlqyWKx7XZegOR9lBmVvJgL1h40OYbdlShN0O04/BsN/ZPM+19Uo BwVg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=WVsXT9YP; 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 i9si6995040pjx.52.2021.10.06.12.42.06; Wed, 06 Oct 2021 12:42:20 -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=WVsXT9YP; 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 S239805AbhJFTlt (ORCPT + 99 others); Wed, 6 Oct 2021 15:41:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53860 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239668AbhJFTlG (ORCPT ); Wed, 6 Oct 2021 15:41:06 -0400 Received: from mail-pg1-x532.google.com (mail-pg1-x532.google.com [IPv6:2607:f8b0:4864:20::532]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 079D9C06177A for ; Wed, 6 Oct 2021 12:38:54 -0700 (PDT) Received: by mail-pg1-x532.google.com with SMTP id s11so3381502pgr.11 for ; Wed, 06 Oct 2021 12:38:54 -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=HoQjuHREWvjsK8rKG+0w83Xi8iEfhBhp3a3+GSxKR9Y=; b=WVsXT9YPaOq6lbwor7C76akvY+2k/VH9yJnA2hvETtzvwXFjJa3PrLl0B5Ce5dPfXC je7l6/8GgIsVihohh2eSAciaEEEpOrrNQUbmt/RkQLQLT/i1+WOw7BoAAVAqo0kTTExd t6hnsTdsmOSgmHtdWXFcrJS/dfE2+Mb3FIkbU= 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=HoQjuHREWvjsK8rKG+0w83Xi8iEfhBhp3a3+GSxKR9Y=; b=fUv1RxpfPByW0HYu6vVaUjlU8Y06fuMyRoBXy8CU9PxMBNQalkgeio2AsiTrtA1YPW pYzlvMyVSNPPeMCRfDYrDndMWoqxPNBcVIdWVRXfZ0/yX1jRMAzkcyJ/3PaeyzhthVzx k6M8Gan0ak6ingC+DdEjlteJm6+2eV0+EZRduAXhjfX6tv9kZbOYwHgP9bqwLsijEvPb bvfBwLUil8PtVtJkG0eJKzEqU0zkbOx81yCrDBhMnfsZ9i+/8zIsg2PESSka/L4bKEl7 fdAD3k0tFpCCWeNHXzMRIjp4ExGT9SGUY7B5jMv4/NN46zdxq2bT/69N3TgIhloFmosS 1Rrw== X-Gm-Message-State: AOAM532BOlDhWK3R5M4OwNMr+BApoHhM1XMv4q3y3My/AzP0jpGbkaVY GiEE6cHMAEr21YcX/hVodXTsrA== X-Received: by 2002:aa7:9250:0:b0:44c:27d1:7f0f with SMTP id 16-20020aa79250000000b0044c27d17f0fmr166036pfp.41.1633549133593; Wed, 06 Oct 2021 12:38:53 -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.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Oct 2021 12:38:53 -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, Yong Wu , Joerg Roedel , Will Deacon , Daniel Vetter , "Rafael J. Wysocki" , Rob Clark , Russell King , Saravana Kannan Subject: [PATCH v2 26/34] iommu/mtk: Migrate to aggregate driver Date: Wed, 6 Oct 2021 12:38:11 -0700 Message-Id: <20211006193819.2654854-27-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: Yong Wu Cc: Joerg Roedel Cc: Will Deacon Cc: Daniel Vetter Cc: "Rafael J. Wysocki" Cc: Rob Clark Cc: Russell King Cc: Saravana Kannan Signed-off-by: Stephen Boyd --- drivers/iommu/mtk_iommu.c | 14 +++++++++----- drivers/iommu/mtk_iommu.h | 6 ++++-- drivers/iommu/mtk_iommu_v1.c | 14 +++++++++----- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/drivers/iommu/mtk_iommu.c b/drivers/iommu/mtk_iommu.c index d837adfd1da5..8b303c388a9b 100644 --- a/drivers/iommu/mtk_iommu.c +++ b/drivers/iommu/mtk_iommu.c @@ -750,9 +750,13 @@ static int mtk_iommu_hw_init(const struct mtk_iommu_data *data) return 0; } -static const struct component_master_ops mtk_iommu_com_ops = { - .bind = mtk_iommu_bind, - .unbind = mtk_iommu_unbind, +static struct aggregate_driver mtk_iommu_aggregate_driver = { + .probe = mtk_iommu_bind, + .remove = mtk_iommu_unbind, + .driver = { + .name = "mtk_iommu_agg", + .owner = THIS_MODULE, + }, }; static int mtk_iommu_probe(struct platform_device *pdev) @@ -893,7 +897,7 @@ static int mtk_iommu_probe(struct platform_device *pdev) goto out_list_del; } - ret = component_master_add_with_match(dev, &mtk_iommu_com_ops, match); + ret = component_aggregate_register(dev, &mtk_iommu_aggregate_driver, match); if (ret) goto out_bus_set_null; return ret; @@ -926,7 +930,7 @@ static int mtk_iommu_remove(struct platform_device *pdev) device_link_remove(data->smicomm_dev, &pdev->dev); pm_runtime_disable(&pdev->dev); devm_free_irq(&pdev->dev, data->irq, data); - component_master_del(&pdev->dev, &mtk_iommu_com_ops); + component_aggregate_unregister(&pdev->dev, &mtk_iommu_aggregate_driver); return 0; } diff --git a/drivers/iommu/mtk_iommu.h b/drivers/iommu/mtk_iommu.h index f81fa8862ed0..064fd4f4eade 100644 --- a/drivers/iommu/mtk_iommu.h +++ b/drivers/iommu/mtk_iommu.h @@ -94,15 +94,17 @@ static inline void release_of(struct device *dev, void *data) of_node_put(data); } -static inline int mtk_iommu_bind(struct device *dev) +static inline int mtk_iommu_bind(struct aggregate_device *adev) { + struct device *dev = adev->parent; struct mtk_iommu_data *data = dev_get_drvdata(dev); return component_bind_all(dev, &data->larb_imu); } -static inline void mtk_iommu_unbind(struct device *dev) +static inline void mtk_iommu_unbind(struct aggregate_device *adev) { + struct device *dev = adev->parent; struct mtk_iommu_data *data = dev_get_drvdata(dev); component_unbind_all(dev, &data->larb_imu); diff --git a/drivers/iommu/mtk_iommu_v1.c b/drivers/iommu/mtk_iommu_v1.c index be22fcf988ce..5fb29058a165 100644 --- a/drivers/iommu/mtk_iommu_v1.c +++ b/drivers/iommu/mtk_iommu_v1.c @@ -534,9 +534,13 @@ static const struct of_device_id mtk_iommu_of_ids[] = { {} }; -static const struct component_master_ops mtk_iommu_com_ops = { - .bind = mtk_iommu_bind, - .unbind = mtk_iommu_unbind, +static struct aggregate_driver mtk_iommu_aggregate_driver = { + .probe = mtk_iommu_bind, + .remove = mtk_iommu_unbind, + .driver = { + .name = "mtk_iommu_agg", + .owner = THIS_MODULE, + }, }; static int mtk_iommu_probe(struct platform_device *pdev) @@ -624,7 +628,7 @@ static int mtk_iommu_probe(struct platform_device *pdev) goto out_dev_unreg; } - ret = component_master_add_with_match(dev, &mtk_iommu_com_ops, match); + ret = component_aggregate_register(dev, &mtk_iommu_aggregate_driver, match); if (ret) goto out_bus_set_null; return ret; @@ -650,7 +654,7 @@ static int mtk_iommu_remove(struct platform_device *pdev) clk_disable_unprepare(data->bclk); devm_free_irq(&pdev->dev, data->irq, data); - component_master_del(&pdev->dev, &mtk_iommu_com_ops); + component_aggregate_unregister(&pdev->dev, &mtk_iommu_aggregate_driver); return 0; } -- https://chromeos.dev