From patchwork Mon Sep 26 08:44:26 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wei Yongjun X-Patchwork-Id: 609415 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 EFD32C6FA82 for ; Mon, 26 Sep 2022 08:27:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234233AbiIZI1c (ORCPT ); Mon, 26 Sep 2022 04:27:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59310 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234201AbiIZI12 (ORCPT ); Mon, 26 Sep 2022 04:27:28 -0400 Received: from dggsgout11.his.huawei.com (dggsgout11.his.huawei.com [45.249.212.51]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CDCDA371A6; Mon, 26 Sep 2022 01:27:24 -0700 (PDT) Received: from mail02.huawei.com (unknown [172.30.67.153]) by dggsgout11.his.huawei.com (SkyGuard) with ESMTP id 4MbbRj0rs2zl6QP; Mon, 26 Sep 2022 16:25:37 +0800 (CST) Received: from huaweicloud.com (unknown [10.175.102.38]) by APP4 (Coremail) with SMTP id gCh0CgAHf45oYjFjX1aNBQ--.36343S5; Mon, 26 Sep 2022 16:27:21 +0800 (CST) From: Wei Yongjun To: Bartosz Golaszewski , Thomas Gleixner , Linus Walleij Cc: Wei Yongjun , linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 1/3] genirq/irq_sim: Allow both one and two cell bindings Date: Mon, 26 Sep 2022 08:44:26 +0000 Message-Id: <20220926084428.1792815-2-weiyongjun@huaweicloud.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220926084428.1792815-1-weiyongjun@huaweicloud.com> References: <20220926084428.1792815-1-weiyongjun@huaweicloud.com> MIME-Version: 1.0 X-CM-TRANSID: gCh0CgAHf45oYjFjX1aNBQ--.36343S5 X-Coremail-Antispam: 1UD129KBjvdXoW7Gw4ftw17Ar1DAF1kJr1DZFb_yoW3Zwb_ur WrGFsxWr15Ar1Sva4rCr4SqrsYqryvqayvg343ZayrA34Yqwn5Aws5ZasxJrZ8WrW7A34x AFZ8Cws3Gry8XjkaLaAFLSUrUUUUUb8apTn2vfkv8UJUUUU8Yxn0WfASr-VFAUDa7-sFnT 9fnUUIcSsGvfJTRUUUbV8YFVCjjxCrM7AC8VAFwI0_Gr0_Xr1l1xkIjI8I6I8E6xAIw20E Y4v20xvaj40_JFC_Wr1l1IIY67AEw4v_Jr0_Jr4l82xGYIkIc2x26280x7IE14v26r18M2 8IrcIa0xkI8VCY1x0267AKxVWUCVW8JwA2ocxC64kIII0Yj41l84x0c7CEw4AK67xGY2AK 021l84ACjcxK6xIIjxv20xvE14v26w1j6s0DM28EF7xvwVC0I7IYx2IY6xkF7I0E14v26r 4UJVWxJr1l84ACjcxK6I8E87Iv67AKxVW0oVCq3wA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_ GcCE3s1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqx4xG64xvF2IEw4CE5I8CrVC2j2WlYx 0E2Ix0cI8IcVAFwI0_Jr0_Jr4lYx0Ex4A2jsIE14v26r1j6r4UMcvjeVCFs4IE7xkEbVWU JVW8JwACjcxG0xvY0x0EwIxGrwCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJV W8JwC20s026c02F40E14v26r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI8E67AF67kF 1VAFwI0_JF0_Jw1lIxkGc2Ij64vIr41lIxAIcVC0I7IYx2IY67AKxVWUJVWUCwCI42IY6x IIjxv20xvEc7CjxVAFwI0_Gr0_Cr1lIxAIcVCF04k26cxKx2IYs7xG6r1j6r1xMIIF0xvE x4A2jsIE14v26r1j6r4UMIIF0xvEx4A2jsIEc7CjxVAFwI0_Gr0_Gr1UYxBIdaVFxhVjvj DU0xZFpf9x07U_pnPUUUUU= X-CM-SenderInfo: 5zhl50pqjm3046kxt4xhlfz01xgou0bp/ X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org From: Wei Yongjun The IRQ simulator only support one cell binding now, this patch make it works with either one or two cell bindings, where the cell values map directly to the irq number and irq flags. Signed-off-by: Wei Yongjun --- kernel/irq/irq_sim.c | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/irq/irq_sim.c b/kernel/irq/irq_sim.c index dd76323ea3fd..73a90b7b6022 100644 --- a/kernel/irq/irq_sim.c +++ b/kernel/irq/irq_sim.c @@ -149,6 +149,7 @@ static void irq_sim_domain_unmap(struct irq_domain *domain, unsigned int virq) static const struct irq_domain_ops irq_sim_domain_ops = { .map = irq_sim_domain_map, .unmap = irq_sim_domain_unmap, + .xlate = irq_domain_xlate_onetwocell, }; /** From patchwork Mon Sep 26 08:44:27 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wei Yongjun X-Patchwork-Id: 609848 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 1DD7AC6FA8E for ; Mon, 26 Sep 2022 08:27:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234186AbiIZI1b (ORCPT ); Mon, 26 Sep 2022 04:27:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59312 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234103AbiIZI12 (ORCPT ); Mon, 26 Sep 2022 04:27:28 -0400 Received: from dggsgout12.his.huawei.com (dggsgout12.his.huawei.com [45.249.212.56]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7F50536DCA; Mon, 26 Sep 2022 01:27:24 -0700 (PDT) Received: from mail02.huawei.com (unknown [172.30.67.153]) by dggsgout12.his.huawei.com (SkyGuard) with ESMTP id 4MbbRM6b5zz6R5HH; Mon, 26 Sep 2022 16:25:19 +0800 (CST) Received: from huaweicloud.com (unknown [10.175.102.38]) by APP4 (Coremail) with SMTP id gCh0CgAHf45oYjFjX1aNBQ--.36343S6; Mon, 26 Sep 2022 16:27:22 +0800 (CST) From: Wei Yongjun To: Bartosz Golaszewski , Thomas Gleixner , Linus Walleij Cc: Wei Yongjun , linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 2/3] gpio: sim: make gpio simulator can be used as interrupt controller Date: Mon, 26 Sep 2022 08:44:27 +0000 Message-Id: <20220926084428.1792815-3-weiyongjun@huaweicloud.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220926084428.1792815-1-weiyongjun@huaweicloud.com> References: <20220926084428.1792815-1-weiyongjun@huaweicloud.com> MIME-Version: 1.0 X-CM-TRANSID: gCh0CgAHf45oYjFjX1aNBQ--.36343S6 X-Coremail-Antispam: 1UD129KBjvdXoW7Gw4ftr1Dur1fXryUAFy7ZFb_yoWfurc_ur y8trsrJw1UKFyFqasI9FW2vF9Fy34kur1kCanavFWrtFyDX3sa9wnrZr95JrnrWrW5JF9r Wa1Sqr4FywsxGjkaLaAFLSUrUUUUUb8apTn2vfkv8UJUUUU8Yxn0WfASr-VFAUDa7-sFnT 9fnUUIcSsGvfJTRUUUbV8YFVCjjxCrM7AC8VAFwI0_Xr0_Wr1l1xkIjI8I6I8E6xAIw20E Y4v20xvaj40_JFC_Wr1l1IIY67AEw4v_Jr0_Jr4l82xGYIkIc2x26280x7IE14v26r15M2 8IrcIa0xkI8VCY1x0267AKxVW8JVW5JwA2ocxC64kIII0Yj41l84x0c7CEw4AK67xGY2AK 021l84ACjcxK6xIIjxv20xvE14v26w1j6s0DM28EF7xvwVC0I7IYx2IY6xkF7I0E14v26r 4UJVWxJr1l84ACjcxK6I8E87Iv67AKxVW0oVCq3wA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_ GcCE3s1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqx4xG64xvF2IEw4CE5I8CrVC2j2WlYx 0E2Ix0cI8IcVAFwI0_Jr0_Jr4lYx0Ex4A2jsIE14v26r1j6r4UMcvjeVCFs4IE7xkEbVWU JVW8JwACjcxG0xvY0x0EwIxGrwCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJV W8JwC20s026c02F40E14v26r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI8E67AF67kF 1VAFwI0_JF0_Jw1lIxkGc2Ij64vIr41lIxAIcVC0I7IYx2IY67AKxVWUJVWUCwCI42IY6x IIjxv20xvEc7CjxVAFwI0_Gr0_Cr1lIxAIcVCF04k26cxKx2IYs7xG6r1j6r1xMIIF0xvE x4A2jsIE14v26r1j6r4UMIIF0xvEx4A2jsIEc7CjxVAFwI0_Gr0_Gr1UYxBIdaVFxhVjvj DU0xZFpf9x07jeWlkUUUUU= X-CM-SenderInfo: 5zhl50pqjm3046kxt4xhlfz01xgou0bp/ X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org From: Wei Yongjun Some devices using GPIO as interrupt controller, such as mcp2515 CAN device. To mockup those devices, gpio simulator should extend to be used as interrupt controller form device tree. Signed-off-by: Wei Yongjun --- drivers/gpio/gpio-sim.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpio/gpio-sim.c b/drivers/gpio/gpio-sim.c index 1020c2feb249..f3cf6cec6207 100644 --- a/drivers/gpio/gpio-sim.c +++ b/drivers/gpio/gpio-sim.c @@ -398,7 +398,7 @@ static int gpio_sim_add_bank(struct fwnode_handle *swnode, struct device *dev) if (!chip->pull_map) return -ENOMEM; - chip->irq_sim = devm_irq_domain_create_sim(dev, NULL, num_lines); + chip->irq_sim = devm_irq_domain_create_sim(dev, swnode, num_lines); if (IS_ERR(chip->irq_sim)) return PTR_ERR(chip->irq_sim); From patchwork Mon Sep 26 08:44:28 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wei Yongjun X-Patchwork-Id: 609847 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 86405C6FA82 for ; Mon, 26 Sep 2022 08:27:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234264AbiIZI1e (ORCPT ); Mon, 26 Sep 2022 04:27:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59444 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234218AbiIZI12 (ORCPT ); Mon, 26 Sep 2022 04:27:28 -0400 Received: from dggsgout11.his.huawei.com (dggsgout11.his.huawei.com [45.249.212.51]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CDF24371B8; Mon, 26 Sep 2022 01:27:24 -0700 (PDT) Received: from mail02.huawei.com (unknown [172.30.67.153]) by dggsgout11.his.huawei.com (SkyGuard) with ESMTP id 4MbbRj5Klgzl7ZR; Mon, 26 Sep 2022 16:25:37 +0800 (CST) Received: from huaweicloud.com (unknown [10.175.102.38]) by APP4 (Coremail) with SMTP id gCh0CgAHf45oYjFjX1aNBQ--.36343S7; Mon, 26 Sep 2022 16:27:22 +0800 (CST) From: Wei Yongjun To: Bartosz Golaszewski , Thomas Gleixner , Linus Walleij Cc: Wei Yongjun , linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 3/3] gpio: sim: document use case for interrupt controller Date: Mon, 26 Sep 2022 08:44:28 +0000 Message-Id: <20220926084428.1792815-4-weiyongjun@huaweicloud.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220926084428.1792815-1-weiyongjun@huaweicloud.com> References: <20220926084428.1792815-1-weiyongjun@huaweicloud.com> MIME-Version: 1.0 X-CM-TRANSID: gCh0CgAHf45oYjFjX1aNBQ--.36343S7 X-Coremail-Antispam: 1UD129KBjvJXoW7urWDXrWrZr1rCry7XF1fJFb_yoW8Wr4fpF 1DKryIqw1kGF17C3yFyF4Sk3sxZw1rGrZ5u3Z2kF4rJFyrtryvq3yjyryrXF18XrWUXay5 ZrZa9F10kr1qyw7anT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUvGb4IE77IF4wAFF20E14v26rWj6s0DM7CY07I20VC2zVCF04k2 6cxKx2IYs7xG6r1S6rWUM7CIcVAFz4kK6r1j6r18M28IrcIa0xkI8VA2jI8067AKxVWUWw A2048vs2IY020Ec7CjxVAFwI0_Gr0_Xr1l8cAvFVAK0II2c7xJM28CjxkF64kEwVA0rcxS w2x7M28EF7xvwVC0I7IYx2IY67AKxVWDJVCq3wA2z4x0Y4vE2Ix0cI8IcVCY1x0267AKxV W8Jr0_Cr1UM28EF7xvwVC2z280aVAFwI0_GcCE3s1l84ACjcxK6I8E87Iv6xkF7I0E14v2 6rxl6s0DM2AIxVAIcxkEcVAq07x20xvEncxIr21l5I8CrVACY4xI64kE6c02F40Ex7xfMc Ij6xIIjxv20xvE14v26r1j6r18McIj6I8E87Iv67AKxVWUJVW8JwAm72CE4IkC6x0Yz7v_ Jr0_Gr1lF7xvr2IYc2Ij64vIr41l42xK82IYc2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr 0_Gr1lx2IqxVAqx4xG67AKxVWUJVWUGwC20s026x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY 17CE14v26r126r1DMIIYrxkI7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcV C0I7IYx2IY6xkF7I0E14v26r4j6F4UMIIF0xvE42xK8VAvwI8IcIk0rVWUJVWUCwCI42IY 6I8E87Iv67AKxVWUJVW8JwCI42IY6I8E87Iv6xkF7I0E14v26r4j6r4UJbIYCTnIWIevJa 73UjIFyTuYvjxU2PEfUUUUU X-CM-SenderInfo: 5zhl50pqjm3046kxt4xhlfz01xgou0bp/ X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org From: Wei Yongjun Add document for using GPIO sim as interrupt controller. Signed-off-by: Wei Yongjun --- Documentation/admin-guide/gpio/gpio-sim.rst | 44 +++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/Documentation/admin-guide/gpio/gpio-sim.rst b/Documentation/admin-guide/gpio/gpio-sim.rst index d8a90c81b9ee..7ccb3f80c90e 100644 --- a/Documentation/admin-guide/gpio/gpio-sim.rst +++ b/Documentation/admin-guide/gpio/gpio-sim.rst @@ -132,3 +132,47 @@ group there are two attibutes: ``value`` - allows to read the current value of the line which may be different from the pull if the line is being driven from user-space + +An example device-tree code defining a GPIO simulator as interrupt controller: + +.. code-block :: none + + gpio-sim { + compatible = "gpio-simulator"; + + bank0 { + gpio-controller; + #gpio-cells = <2>; + ngpios = <16>; + + interrupt-controller; + #interrupt-cells = <2>; + + line0 { + gpio-hog; + gpios = <0 1>; + input; + line-name = "irq-sim"; + } + }; + }; + + spi: spi { + compatible = "spi-mockup"; + #address-cells = <1>; + #size-cells = <0>; + + can0: can@1 { + compatible = "microchip,mcp2515"; + reg = <1>; + interrupt-parent = <&bank0>; + interrupts = <0 IRQ_TYPE_EDGE_BOTH>; + } + }; + +Trigger irq by writing value to pull setting: + +.. code-block :: none + + $ echo pull-down > /sys/devices/platform/gpio-sim/gpiochipX/sim_gpio0/pull + $ echo pull-up > /sys/devices/platform/gpio-sim/gpiochipX/sim_gpio0/pull