From patchwork Thu Dec 9 04:32:44 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hector Martin X-Patchwork-Id: 12695436 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id F245FC433EF for ; Thu, 9 Dec 2021 04:35:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=pGqRj6dq/Qaf+IYv6bl57/aAUoQP5UbQ+JBMPyAx6do=; b=nddYdlEIPlblbR /m11qHOhS2Hy+/aCcaq2XaavJQzj3ZtAZmK3jVeL/SS0DMKQJoRcCjE4o5P/ZWJkzRSJ3T66ETNKB iaS2muXIBK2VGcQiOECoG7OKgQMz2iWLINIxMV8THZyC5+VKp9rLGyhwEdBN4tvn7a6cHqmKTLMnb dRDJXbwXyyW1jBbZm/ca7KrYA3lp61HcW8014fQU3HaUG3nRpo6cwyjWMzPwgsAoPfV5dPcI/5fch j5u/lLS0Y7aE3nvesQ3CiFgWPK20dIgEw1qYnmMbAxS/jKK6iebV/5+WXUgCTD0hUPVTrKJlQFlvq 6uqechEBOonKACfSXxrw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mvB7h-00EsUp-PK; Thu, 09 Dec 2021 04:33:37 +0000 Received: from marcansoft.com ([212.63.210.85] helo=mail.marcansoft.com) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mvB7T-00EsQU-LE for linux-arm-kernel@lists.infradead.org; Thu, 09 Dec 2021 04:33:25 +0000 Received: from [127.0.0.1] (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: hector@marcansoft.com) by mail.marcansoft.com (Postfix) with ESMTPSA id BB7A541EA2; Thu, 9 Dec 2021 04:33:17 +0000 (UTC) From: Hector Martin To: Thomas Gleixner , Marc Zyngier , Rob Herring Cc: Hector Martin , Sven Peter , Alyssa Rosenzweig , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org Subject: [PATCH 1/6] dt-bindings: interrupt-controller: apple, aic: Add apple, aic2 support Date: Thu, 9 Dec 2021 13:32:44 +0900 Message-Id: <20211209043249.65474-2-marcan@marcan.st> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20211209043249.65474-1-marcan@marcan.st> References: <20211209043249.65474-1-marcan@marcan.st> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211208_203323_889793_3EA6AF00 X-CRM114-Status: GOOD ( 13.67 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org This new incompatible revision of the AIC peripheral introduces multi-die support. To handle that, we introduce an optional 4-argument interrupt-cells form. Also add an apple,event-reg property to specify the offset of the event register. Inexplicably, the capability registers allow us to compute other register offsets, but not this one. This allows us to keep forward-compatibility with future SoCs that will likely implement different die counts, thus shifting the event register. Apple do the same thing in their device tree... Signed-off-by: Hector Martin --- .../interrupt-controller/apple,aic.yaml | 62 +++++++++++++++---- 1 file changed, 49 insertions(+), 13 deletions(-) diff --git a/Documentation/devicetree/bindings/interrupt-controller/apple,aic.yaml b/Documentation/devicetree/bindings/interrupt-controller/apple,aic.yaml index 97359024709a..6a8dd213e59a 100644 --- a/Documentation/devicetree/bindings/interrupt-controller/apple,aic.yaml +++ b/Documentation/devicetree/bindings/interrupt-controller/apple,aic.yaml @@ -18,38 +18,44 @@ description: | - Level-triggered hardware IRQs wired to SoC blocks - Single mask bit per IRQ - - Per-IRQ affinity setting + - Per-IRQ affinity setting (AICv1 only) - Automatic masking on event delivery (auto-ack) - Software triggering (ORed with hw line) - 2 per-CPU IPIs (meant as "self" and "other", but they are interchangeable - if not symmetric) + if not symmetric) (AICv1 only) - Automatic prioritization (single event/ack register per CPU, lower IRQs = higher priority) - Automatic masking on ack - - Default "this CPU" register view and explicit per-CPU views + - Default "this CPU" register view and explicit per-CPU views (AICv1 only) This device also represents the FIQ interrupt sources on platforms using AIC, - which do not go through a discrete interrupt controller. - -allOf: - - $ref: /schemas/interrupt-controller.yaml# + which do not go through a discrete interrupt controller. It also handles + FIQ-based Fast IPIs on supported chips. properties: compatible: - items: - - const: apple,t8103-aic - - const: apple,aic + oneOf: + - items: + - const: apple,t8103-aic + - const: apple,aic + - items: + - const: apple,t6000-aic + - const: apple,aic2 interrupt-controller: true '#interrupt-cells': - const: 3 + minimum: 3 + maximum: 4 description: | The 1st cell contains the interrupt type: - 0: Hardware IRQ - 1: FIQ - The 2nd cell contains the interrupt number. + The optional 2nd cell contains the die ID (apple,aic2 only). + If not present, it defaults to 0. + + The next cell contains the interrupt number. - HW IRQs: interrupt number - FIQs: - 0: physical HV timer @@ -57,7 +63,7 @@ properties: - 2: physical guest timer - 3: virtual guest timer - The 3rd cell contains the interrupt flags. This is normally + The last cell contains the interrupt flags. This is normally IRQ_TYPE_LEVEL_HIGH (4). reg: @@ -68,6 +74,13 @@ properties: power-domains: maxItems: 1 + apple,event-reg: + $ref: /schemas/types.yaml#/definitions/uint32 + description: + Specifies the offset of the event register, which lies after all the + implemented die register sets, page aligned. This is not computable from + capability register values, so we have to specify it explicitly. + required: - compatible - '#interrupt-cells' @@ -76,6 +89,29 @@ required: additionalProperties: false +allOf: + - $ref: /schemas/interrupt-controller.yaml# + - if: + properties: + compatible: + contains: + enum: + - apple,aic + then: + properties: + '#interrupt-cells': + const: 3 + + - if: + properties: + compatible: + contains: + enum: + - apple,aic2 + then: + required: + - apple,event-reg + examples: - | soc {