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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 00913C433F5 for ; Sun, 26 Dec 2021 20:02:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232667AbhLZUCq (ORCPT ); Sun, 26 Dec 2021 15:02:46 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34542 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232690AbhLZT7h (ORCPT ); Sun, 26 Dec 2021 14:59:37 -0500 Received: from polaris.svanheule.net (polaris.svanheule.net [IPv6:2a00:c98:2060:a004:1::200]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8178BC06173E for ; Sun, 26 Dec 2021 11:59:37 -0800 (PST) Received: from terra.local.svanheule.net (unknown [IPv6:2a02:a03f:eafe:c901:201f:9f28:b747:b33a]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: sander@svanheule.net) by polaris.svanheule.net (Postfix) with ESMTPSA id 784A2288176; Sun, 26 Dec 2021 20:59:35 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=svanheule.net; s=mail1707; t=1640548775; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=YhFl1HSPo01ZnFhZbm1q0BwTt+dtDmUDaRbMk0PbM0o=; b=4q8SwDYhpdTaj3LfEZPnyKDfwXzRfbYJ/cfjy2FoQAYTJgBoU+kuhU60I+1z9INpX1aDGu +NhGgtKeP60rktNbFL9x+MpOsdYMMGURY9Dopze2htrWY/vYTUhjGrDlIpJS+xamaDbwWD x2yUPR+mlXsb6y513k2+sXMe2vXKIGh53L+GrewoyveqYVcBfddU44cyhvN1z3Q+S4NH2N cEagDPKdOvGgsXFbMMKnQ3FCvlR6vtHUJgflBbpxXo3hsU0bwI+r+uEm2r+4KW8xeu5x+w /Iq3NRcwPR1mYZzgU868M/kaaRiX0Y9lBMT7iaTdIB1dB6anH1J5Av/XEkNV7g== From: Sander Vanheule To: Thomas Gleixner , Marc Zyngier , Rob Herring , devicetree@vger.kernel.org Cc: Birger Koblitz , Bert Vermeulen , John Crispin , linux-kernel@vger.kernel.org, Sander Vanheule Subject: [RFC PATCH v2 4/5] dt-bindings: interrupt-controller: realtek,rtl-intc: map output lines Date: Sun, 26 Dec 2021 20:59:27 +0100 Message-Id: <0a91967d40d486bb8cccd0dcf5a817df11317cf0.1640548009.git.sander@svanheule.net> X-Mailer: git-send-email 2.33.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Amend the binding to also require a list of parent interrupts, and an optional mask to specify which parent is mapped to which output. Without this information, any driver would have to make an assumption on which parent interrupt is connected to which output. Additionally, extend (or add) the relevant descriptions to more clearly describe the inputs and outputs of this router. Signed-off-by: Sander Vanheule --- Since it does not properly describe the hardware, I would still really rather get rid of "interrupt-map", even though that would mean breaking ABI for this binding. As we've argued before [1], that is our prefered solution, and would enable us to not carry more (hacky) code because of a mistake with the initial submission. Vendors don't ship independent DT blobs for devices with this hardware, so the independent devicetree/kernel upgrades issue is really rather theoretical here. Realtek isn't driving the development of the bindings and associated drivers for this platform. They have their SDK and seem to care very little about proper kernel integration. Furthermore, there are currently no device descriptions in the kernel using this binding. There are in OpenWrt, but OpenWrt firmware images for this platform always contain both the kernel and the appended DTB, so there's also no breakage to worry about. [1] https://lore.kernel.org/all/9c169aad-3c7b-2ffb-90a2-1ca791a3f411@phrozen.org/ Differences with v1: - Don't drop the "interrupt-map" property - Add the "realtek,output-valid-mask" property --- .../realtek,rtl-intc.yaml | 38 ++++++++++++++++--- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/Documentation/devicetree/bindings/interrupt-controller/realtek,rtl-intc.yaml b/Documentation/devicetree/bindings/interrupt-controller/realtek,rtl-intc.yaml index 9e76fff20323..29014673c34e 100644 --- a/Documentation/devicetree/bindings/interrupt-controller/realtek,rtl-intc.yaml +++ b/Documentation/devicetree/bindings/interrupt-controller/realtek,rtl-intc.yaml @@ -6,6 +6,10 @@ $schema: http://devicetree.org/meta-schemas/core.yaml# title: Realtek RTL SoC interrupt controller devicetree bindings +description: + Interrupt router for Realtek MIPS SoCs, allowing up to 32 SoC interrupts to + be routed to one of up to 15 parent interrupts, or left disconnected. + maintainers: - Birger Koblitz - Bert Vermeulen @@ -22,7 +26,11 @@ properties: maxItems: 1 interrupts: - maxItems: 1 + minItems: 1 + maxItems: 15 + description: + List of parent interrupts, in the order that they are connected to this + interrupt router's outputs. interrupt-controller: true @@ -30,7 +38,21 @@ properties: const: 0 interrupt-map: - description: Describes mapping from SoC interrupts to CPU interrupts + description: + List of tuples, where "soc_int" + is the interrupt input line number as provided by this controller. + "parent_phandle" and "parent_args" specify which parent interrupt this + line should be routed to. Note that interrupt specifiers should be + identical to the parents specified in the "interrupts" property. + + realtek,output-valid-mask: + $ref: /schemas/types.yaml#/definitions/uint32 + description: + Optional bit mask indicating which outputs are connected to the parent + interrupts. The lowest set bit indicates which output line the first + interrupt from "interrupts" is connected to, the second lowest set bit + for the second interrupt, etc. If not provided, parent interrupts will be + assigned sequentially to the outputs. required: - compatible @@ -39,6 +61,7 @@ required: - interrupt-controller - "#address-cells" - interrupt-map + - interrupts additionalProperties: false @@ -49,9 +72,14 @@ examples: #interrupt-cells = <1>; interrupt-controller; reg = <0x3000 0x20>; + + interrupt-parent = <&cpuintc>; + interrupts = <1>, <2>, <5>; + realtek,output-valid-mask = <0x13>; + #address-cells = <0>; interrupt-map = - <31 &cpuintc 2>, - <30 &cpuintc 1>, - <29 &cpuintc 5>; + <31 &cpuintc 2>, /* connect to cpuintc 2 via output 1 */ + <30 &cpuintc 1>, /* connect to cpuintc 1 via output 0 */ + <29 &cpuintc 5>; /* connect to cpuintc 5 via output 4 */ }; -- 2.33.1