Received: by 2002:a05:6358:489b:b0:bb:da1:e618 with SMTP id x27csp1911192rwn; Fri, 16 Sep 2022 02:46:50 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7M5kPN++Zl1Cx3Ai1TIYLZCOJ1VC6wSs43klzVzJiUCkKb6+DEvSe8zpAkaZST1MxxmpTf X-Received: by 2002:a17:903:2451:b0:178:4423:af32 with SMTP id l17-20020a170903245100b001784423af32mr3878708pls.51.1663321610761; Fri, 16 Sep 2022 02:46:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1663321610; cv=none; d=google.com; s=arc-20160816; b=R1Dj/Cx9KX+yFpIIAk+I3Lmf6O9A62udEF91pRvIrtoaaZHVsf9Y10uebT16F0fa9a MLuUTj+ltXThsOXdIIwy5KZtLn2oAXHeLimH8745SbVlI3UZxNOuKU6Sq1AfqCVHw+jd YjaNtvFgdX3Mi8jV2ev4w82W57eojqI+Zwy+qKvqQGajQy+TOvDPow7FHzpqAxDazxEb jlBBhuGbd/bH+tkEVj87dvPBvg8g11cfE41aUPTBHmUUTUUd7La6IUTDVk3e+ZypraxK q68tsEaQJuYc4HoiXMWx+3UMyJAW7BaKSGWLyS5cFe8ehZAonXCimRWvHB2ltVMYBp96 Uvuw== 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; bh=+/XEAMiWRwxwhpo7j5vuI3VBFxUtIq1EjuI+e+esQzo=; b=nf4FT+tbT3tqiGyuPtWbv/7dFEUXvehkMc3W81ibGtuHxhYq0fXuKvjOseUpLsvuU5 tuEdxbHLTdpQvp52+SIwd0STQsyUP0bP9D7SBiMv4ma9lOEJYpcBVTV39Gy60qw66Z9G oxxAsxaxIlgBIg5tB9JEcKpqw5214DSYDu2gyeimgP7ufRzRDom3Q4GfbinZOcZdeXb7 CBo9lMikaOme9mi6To4LebfklNd9H3wHMyipFmetzLgGU0wRyADzA1vnXNRnKIDKt69D SgYTu15xt1yV4Kb0dBrhp57wCAFtVCh4ySTEa07ictNbUecdn/cXwJmvho+vTc/jKikx L5NA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id 69-20020a630148000000b00438e26dd702si18123792pgb.468.2022.09.16.02.46.37; Fri, 16 Sep 2022 02:46:50 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229511AbiIPJmS (ORCPT + 99 others); Fri, 16 Sep 2022 05:42:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51274 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230104AbiIPJl7 (ORCPT ); Fri, 16 Sep 2022 05:41:59 -0400 Received: from soltyk.jannau.net (soltyk.jannau.net [144.76.91.90]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AD5F6A6C6A for ; Fri, 16 Sep 2022 02:41:57 -0700 (PDT) Received: from robin.home.jannau.net (unknown [91.200.110.112]) by soltyk.jannau.net (Postfix) with ESMTPSA id 534BF26F077; Fri, 16 Sep 2022 11:41:56 +0200 (CEST) From: Janne Grunau To: iommu@lists.linux.dev Cc: Konrad Dybcio , asahi@lists.linux.dev, Sven Peter , Alyssa Rosenzweig , Hector Martin , Joerg Roedel , Will Deacon , iommu@lists.linux-foundation.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 5/5] iommu: dart: Support t6000 variant Date: Fri, 16 Sep 2022 11:41:52 +0200 Message-Id: <20220916094152.87137-6-j@jannau.net> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220916094152.87137-1-j@jannau.net> References: <20220916094152.87137-1-j@jannau.net> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Sven Peter The M1 Pro/Max/Ultra SoCs come with a new variant of DART which supports a larger physical address space with a different PTE format. Pass through the correct paddr address space size and the PTE format to the io-pgtable code which will take care of the rest. Signed-off-by: Sven Peter Co-developed-by: Janne Grunau Signed-off-by: Janne Grunau --- (no changes since v3) Changes in v3: - apply change to io-pgtable-dart.c Changes in v2: - use APPLE_DART2 PTE format for dart-t6000 drivers/iommu/apple-dart.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/drivers/iommu/apple-dart.c b/drivers/iommu/apple-dart.c index 8af0242a90d9..e5793c0d08b4 100644 --- a/drivers/iommu/apple-dart.c +++ b/drivers/iommu/apple-dart.c @@ -81,10 +81,16 @@ #define DART_TTBR_VALID BIT(31) #define DART_TTBR_SHIFT 12 +struct apple_dart_hw { + u32 oas; + enum io_pgtable_fmt fmt; +}; + /* * Private structure associated with each DART device. * * @dev: device struct + * @hw: SoC-specific hardware data * @regs: mapped MMIO region * @irq: interrupt number, can be shared with other DARTs * @clks: clocks associated with this DART @@ -98,6 +104,7 @@ */ struct apple_dart { struct device *dev; + const struct apple_dart_hw *hw; void __iomem *regs; @@ -421,13 +428,13 @@ static int apple_dart_finalize_domain(struct iommu_domain *domain, pgtbl_cfg = (struct io_pgtable_cfg){ .pgsize_bitmap = dart->pgsize, .ias = 32, - .oas = 36, + .oas = dart->hw->oas, .coherent_walk = 1, .iommu_dev = dart->dev, }; dart_domain->pgtbl_ops = - alloc_io_pgtable_ops(APPLE_DART, &pgtbl_cfg, domain); + alloc_io_pgtable_ops(dart->hw->fmt, &pgtbl_cfg, domain); if (!dart_domain->pgtbl_ops) { ret = -ENOMEM; goto done; @@ -858,6 +865,7 @@ static int apple_dart_probe(struct platform_device *pdev) return -ENOMEM; dart->dev = dev; + dart->hw = of_device_get_match_data(dev); spin_lock_init(&dart->lock); dart->regs = devm_platform_get_and_ioremap_resource(pdev, 0, &res); @@ -946,8 +954,18 @@ static int apple_dart_remove(struct platform_device *pdev) return 0; } +static const struct apple_dart_hw apple_dart_hw_t8103 = { + .oas = 36, + .fmt = APPLE_DART, +}; +static const struct apple_dart_hw apple_dart_hw_t6000 = { + .oas = 42, + .fmt = APPLE_DART2, +}; + static const struct of_device_id apple_dart_of_match[] = { - { .compatible = "apple,t8103-dart", .data = NULL }, + { .compatible = "apple,t8103-dart", .data = &apple_dart_hw_t8103 }, + { .compatible = "apple,t6000-dart", .data = &apple_dart_hw_t6000 }, {}, }; MODULE_DEVICE_TABLE(of, apple_dart_of_match); -- 2.35.1