From patchwork Wed Feb 26 00:41:17 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yixun Lan X-Patchwork-Id: 13991180 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 A0E60C021B2 for ; Wed, 26 Feb 2025 00:42:27 +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:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:To:In-Reply-To:References:Message-Id: MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=uVYGYh4C7u6EzKv0MnxiwCnhhGxs/Sw57Ed3jTZ/Dvo=; b=bvwHmTcZYWsDnM 7DMG4o+bIT7s/ZOxprWAVh1bLTlPXwcHy9Flq6+0UDITVDz8FoHViSFR4eAjN1RMHtBhEGfHhPisD bX1ZdpsIavnnKZnceVoiBCE06D47ObclZYIbJHC1xR7VA0f85hw/jfXzRs5DApYDA2GlUCzhtNZic ZYa6oF5HD+vILudF8mrFjVSUVrXFXptWijIPSPssFTZOk5fqEi/TNqgkh2R7559XuQJ8sGs/tjTLr 563rFg3I5nJlJLrweD9cUqYcAyYrji5oR5Ll2P9lBVaXci4XWFpZ4kltu8osgXjTqkoELUrTiJ3LZ ycH5VX7VnPHUsbsiTRwA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tn5VG-00000001tV4-3Mpz; Wed, 26 Feb 2025 00:42:22 +0000 Received: from smtp.gentoo.org ([2001:470:ea4a:1:5054:ff:fec7:86e4]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tn5VE-00000001tU1-0gwQ for linux-riscv@lists.infradead.org; Wed, 26 Feb 2025 00:42:21 +0000 Received: from [127.0.0.1] (unknown [116.232.55.252]) (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: dlan) by smtp.gentoo.org (Postfix) with ESMTPSA id F2706343294; Wed, 26 Feb 2025 00:42:11 +0000 (UTC) From: Yixun Lan Date: Wed, 26 Feb 2025 08:41:17 +0800 Subject: [PATCH v7 1/4] dt-bindings: gpio: spacemit: add support for K1 SoC MIME-Version: 1.0 Message-Id: <20250226-03-k1-gpio-v7-1-be489c4a609b@gentoo.org> References: <20250226-03-k1-gpio-v7-0-be489c4a609b@gentoo.org> In-Reply-To: <20250226-03-k1-gpio-v7-0-be489c4a609b@gentoo.org> To: Linus Walleij , Bartosz Golaszewski , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Conor Dooley , Paul Walmsley , Palmer Dabbelt X-Mailer: b4 0.15-dev X-Developer-Signature: v=1; a=openpgp-sha256; l=2915; i=dlan@gentoo.org; h=from:subject:message-id; bh=WH0/VTh61l0QsJuNF/iOodgWqrXFSar6PL7qgSyL8ko=; b=owEBzQIy/ZANAwAKATGq6kdZTbvtAcsmYgBnvmNPdiA4mYGMfmM105DDB61to2aFpYc6rNj8O vq4OAncV+mJApMEAAEKAH0WIQS1urjJwxtxFWcCI9wxqupHWU277QUCZ75jT18UgAAAAAAuAChp c3N1ZXItZnByQG5vdGF0aW9ucy5vcGVucGdwLmZpZnRoaG9yc2VtYW4ubmV0QjVCQUI4QzlDMzF CNzExNTY3MDIyM0RDMzFBQUVBNDc1OTREQkJFRAAKCRAxqupHWU277QTrD/9uUg+iXLPceiw9Bx PER7uARndL4Pl8uSJagG9FH0xw6hmmNo/mev6u+JqbiNw3+imPKA9u2ctvIwNR0MA54KC8+lBFy 77AJ3jEFosyR5DbQtFuqFLl5GFllMFyoBJ4yhHP5U1j/IihB5IjqMvC4VChFLk0ox0GZ3hx5C26 B088HnYGiywI0ZmswNW8q1tmqcILFiY7TEdizNkvKJ3Z78ICJqBjax7ltly/IWG5Ssevy35/EC8 EbzME60ot+J2xAvtFYR7l1iUz0qk95mYOU0FPJcBkB4yeijqOtplRYJmT0OORQSligeAK4x6IXh qw9jMK5yUdjvqI/54hVN1Doq66yqpIYOithvrNWQs6p77E1Y7sGtgAcXgzjilc2kio9criqnxzL XBeWX1cBVy2PEmfsSGvLruywdlqYKu5XApJTpGc69Hph1bstwwYpvew6RBRqibU8vImM1tbdnNK eUuru9pxk8frLFPsiXGsSaWp1WECmBm5BFzFxB9DCTA+Yua3FoSJ0Ekte8plW/pjkE6Tie45p+1 sxcI6qBagkbNuAhkKKvSdxEfg0jU6gja1uj9jPChO5nW+OkvbCvZ10U4MIKe+6rgCnGvrAX8HcF p3k7wNC4Np5tVEDXyhPdteHvAopsNH4GyGKklEXoeHWCG+AbAph/rvLUdMmKWKNsgAsg== X-Developer-Key: i=dlan@gentoo.org; a=openpgp; fpr=50B03A1A5CBCD33576EF8CD7920C0DBCAABEFD55 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250225_164220_240673_4AB2B9FC X-CRM114-Status: GOOD ( 13.21 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, Meng Zhang , Yixun Lan , Alex Elder , linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, Jesse Taube , Yangyu Chen , Inochi Amaoto , Jisheng Zhang , linux-riscv@lists.infradead.org, spacemit@lists.linux.dev Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org The GPIO controller of K1 support basic functions as input/output, all pins can be used as interrupt which route to one IRQ line, trigger type can be select between rising edge, falling edge, or both. There are four GPIO banks, each consisting of 32 pins. Reviewed-by: Linus Walleij Signed-off-by: Yixun Lan Reviewed-by: Rob Herring (Arm) --- .../devicetree/bindings/gpio/spacemit,k1-gpio.yaml | 79 ++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/Documentation/devicetree/bindings/gpio/spacemit,k1-gpio.yaml b/Documentation/devicetree/bindings/gpio/spacemit,k1-gpio.yaml new file mode 100644 index 0000000000000000000000000000000000000000..dc28135e008a2acaadf0366b9d50d1c2e4954b21 --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/spacemit,k1-gpio.yaml @@ -0,0 +1,79 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/gpio/spacemit,k1-gpio.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: SpacemiT K1 GPIO controller + +maintainers: + - Yixun Lan + +description: + The controller's registers are organized as sets of eight 32-bit + registers with each set of port controlling 32 pins. A single + interrupt line is shared for all of the pins by the controller. + +properties: + $nodename: + pattern: "^gpio@[0-9a-f]+$" + + compatible: + const: spacemit,k1-gpio + + reg: + maxItems: 1 + + gpio-controller: true + + "#gpio-cells": + const: 3 + description: + The first two cells are the GPIO bank index and offset inside the bank, + the third cell should specify GPIO flag. + + gpio-ranges: true + + interrupts: + maxItems: 1 + + interrupt-controller: true + + "#interrupt-cells": + const: 3 + description: + The first two cells are the GPIO bank index and offset inside the bank, + the third cell should specify interrupt flag. The controller does not + support level interrupts, so flags of IRQ_TYPE_LEVEL_HIGH, + IRQ_TYPE_LEVEL_LOW should not be used. + Refer for valid flags. + +required: + - compatible + - reg + - gpio-controller + - "#gpio-cells" + - interrupts + - interrupt-controller + - "#interrupt-cells" + - gpio-ranges + +additionalProperties: false + +examples: + - | + gpio@d4019000 { + compatible = "spacemit,k1-gpio"; + reg = <0xd4019000 0x800>; + gpio-controller; + #gpio-cells = <3>; + interrupts = <58>; + interrupt-controller; + interrupt-parent = <&plic>; + #interrupt-cells = <3>; + gpio-ranges = <&pinctrl 0 0 0 32>, + <&pinctrl 1 0 32 32>, + <&pinctrl 2 0 64 32>, + <&pinctrl 3 0 96 32>; + }; +... From patchwork Wed Feb 26 00:41:18 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yixun Lan X-Patchwork-Id: 13991181 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 31C69C021B2 for ; Wed, 26 Feb 2025 00:42:33 +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:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:To:In-Reply-To:References:Message-Id: MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=iTu0cqVBMoTof8tP2JLENQL0DqQVnCYvsVERCZP5XC0=; b=PKRCwtFNZBp9Os EsJlQjxLy3vg2sHDHRb4bQe/vEtAMF9OX/E20Hmgy8gy8d8ggbxjjCuSQD1Sknpwfo3MM8krENJQ4 V6JqR+10ZLDOhmnBHH/6TUuFiUBbQqR/oWhCvRXWfEdOAp/bJ2l/pOHjD1C9Kq//jjRwq6QOATJgx NwP87nznnNMWBEC2KUNyxQIBr6Ly4J6EcaOpfqnPQAEWq4FY/J3p1ONG14UjiIDCXw2J0qB6iJJd+ LJxnjMfJd1RwKYgYA/Cq6aTef50+asSPWenN8Z+QlCT00PcvoheskLCXhBNEjWN9rFFbheByoI7K3 whd4Rhs53vj67WID/CXQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tn5VM-00000001tXR-1lLI; Wed, 26 Feb 2025 00:42:28 +0000 Received: from dev.gentoo.org ([2001:470:ea4a:1:5054:ff:fec7:86e4] helo=smtp.gentoo.org) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tn5VJ-00000001tWN-2DcR for linux-riscv@lists.infradead.org; Wed, 26 Feb 2025 00:42:27 +0000 Received: from [127.0.0.1] (unknown [116.232.55.252]) (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: dlan) by smtp.gentoo.org (Postfix) with ESMTPSA id A83E33432A8; Wed, 26 Feb 2025 00:42:18 +0000 (UTC) From: Yixun Lan Date: Wed, 26 Feb 2025 08:41:18 +0800 Subject: [PATCH v7 2/4] gpio: spacemit: add support for K1 SoC MIME-Version: 1.0 Message-Id: <20250226-03-k1-gpio-v7-2-be489c4a609b@gentoo.org> References: <20250226-03-k1-gpio-v7-0-be489c4a609b@gentoo.org> In-Reply-To: <20250226-03-k1-gpio-v7-0-be489c4a609b@gentoo.org> To: Linus Walleij , Bartosz Golaszewski , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Conor Dooley , Paul Walmsley , Palmer Dabbelt X-Mailer: b4 0.15-dev X-Developer-Signature: v=1; a=openpgp-sha256; l=10255; i=dlan@gentoo.org; h=from:subject:message-id; bh=t7TfzK7BJ2SmpytcMwQWzds4O+cqQoSAfNTnG0/n340=; b=owEBzQIy/ZANAwAKATGq6kdZTbvtAcsmYgBnvmNTHUOwXU/irEHa1K+p6akGy3bapKG3GPzlm aqMRAuRKWmJApMEAAEKAH0WIQS1urjJwxtxFWcCI9wxqupHWU277QUCZ75jU18UgAAAAAAuAChp c3N1ZXItZnByQG5vdGF0aW9ucy5vcGVucGdwLmZpZnRoaG9yc2VtYW4ubmV0QjVCQUI4QzlDMzF CNzExNTY3MDIyM0RDMzFBQUVBNDc1OTREQkJFRAAKCRAxqupHWU277TcGEACOP7groJr8IIH0v+ teVshJiZXi9tFNCoyrsKKDdivYGzA+7d/fRpto4TtuYT/fWy2yP/dNIH77LF6LnSlH9qP1jiTPP 923VKJVCsa0Wez7WfRwCWw8hGcs91UANsjD7n2CDmY3DOdIJHbuQtwBuCiGlwSZGmJsapn3kq5z mQswyAY/nWDz4GRnA5nv9Xo5j85lCXvMXvCfOK2ZPrn5KpLIHX9a0GhIptYxl0nqt+cx78mNAcv MCah9legt7+Ctvingb4jgXaOeo4jeyyAM00WQSMfgIg2jM/P4o3wgwWyBzEpUKjrgPDube8GN5G ltivktFD28rXrnjx9yPH0Z7eGTpL8z1uTUk8lecjflvz1ABC37n+kNVp2lcFnTwjQ3ZciVfpG5Y JgzsO2Ws8XeouO+bGGeQA2vsi8LANsFtvEI7WstDIjvZDXTwULklt42iUGfHF3PqNvieOboGJ+2 r0ildO/OTA5Fd8MU5AymZcdiIGFKmQaN9BaZ7fUrMx+K+bWrLwb3eyk+XvoHGrsFjh6I3WzlCs9 /AmHIfxWnGc2QQWEg5fTQ5fctexGzvIDFdmQVDAIsulw8OOkK2+tA/fkp2k4hUVuegORKCABec2 44Ix+khJHZG4e0FsgUr/q93G2c2V/0rgbt2DK7OZ4X4gzJ4TbWVEedRtJ4Eo/jOO82Ag== X-Developer-Key: i=dlan@gentoo.org; a=openpgp; fpr=50B03A1A5CBCD33576EF8CD7920C0DBCAABEFD55 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250225_164225_610033_6081B4A7 X-CRM114-Status: GOOD ( 22.47 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, Meng Zhang , Yixun Lan , Alex Elder , linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, Jesse Taube , Yangyu Chen , Inochi Amaoto , Jisheng Zhang , linux-riscv@lists.infradead.org, spacemit@lists.linux.dev Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org Implement GPIO functionality which capable of setting pin as input, output. Also, each pin can be used as interrupt which support rising, falling, or both edge type trigger. Reviewed-by: Alex Elder Reviewed-by: Linus Walleij Signed-off-by: Yixun Lan --- drivers/gpio/Kconfig | 8 ++ drivers/gpio/Makefile | 1 + drivers/gpio/gpio-spacemit-k1.c | 277 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 286 insertions(+) diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig index add5ad29a673c09082a913cb2404073b2034af48..eaae729eec00a3d6d2b83769aed3e2b0ca9927e5 100644 --- a/drivers/gpio/Kconfig +++ b/drivers/gpio/Kconfig @@ -655,6 +655,14 @@ config GPIO_SNPS_CREG where only several fields in register belong to GPIO lines and each GPIO line owns a field with different length and on/off value. +config GPIO_SPACEMIT_K1 + bool "SPACEMIT K1 GPIO support" + depends on ARCH_SPACEMIT || COMPILE_TEST + depends on OF_GPIO + select GPIOLIB_IRQCHIP + help + Say yes here to support the SpacemiT's K1 GPIO device. + config GPIO_SPEAR_SPICS bool "ST SPEAr13xx SPI Chip Select as GPIO support" depends on PLAT_SPEAR diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile index af3ba4d81b583842893ea69e677fbe2abf31bc7b..6709ce511a0cf10310a94521c85a2d382dcfa696 100644 --- a/drivers/gpio/Makefile +++ b/drivers/gpio/Makefile @@ -156,6 +156,7 @@ obj-$(CONFIG_GPIO_SIOX) += gpio-siox.o obj-$(CONFIG_GPIO_SL28CPLD) += gpio-sl28cpld.o obj-$(CONFIG_GPIO_SLOPPY_LOGIC_ANALYZER) += gpio-sloppy-logic-analyzer.o obj-$(CONFIG_GPIO_SODAVILLE) += gpio-sodaville.o +obj-$(CONFIG_GPIO_SPACEMIT_K1) += gpio-spacemit-k1.o obj-$(CONFIG_GPIO_SPEAR_SPICS) += gpio-spear-spics.o obj-$(CONFIG_GPIO_SPRD) += gpio-sprd.o obj-$(CONFIG_GPIO_STMPE) += gpio-stmpe.o diff --git a/drivers/gpio/gpio-spacemit-k1.c b/drivers/gpio/gpio-spacemit-k1.c new file mode 100644 index 0000000000000000000000000000000000000000..c64ed9628162c46dce7dda59a02ca305facc2917 --- /dev/null +++ b/drivers/gpio/gpio-spacemit-k1.c @@ -0,0 +1,277 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* + * Copyright (C) 2023-2025 SpacemiT (Hangzhou) Technology Co. Ltd + * Copyright (C) 2025 Yixun Lan + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +/* register offset */ +#define SPACEMIT_GPLR 0x00 /* port level - R */ +#define SPACEMIT_GPDR 0x0c /* port direction - R/W */ +#define SPACEMIT_GPSR 0x18 /* port set - W */ +#define SPACEMIT_GPCR 0x24 /* port clear - W */ +#define SPACEMIT_GRER 0x30 /* port rising edge R/W */ +#define SPACEMIT_GFER 0x3c /* port falling edge R/W */ +#define SPACEMIT_GEDR 0x48 /* edge detect status - R/W1C */ +#define SPACEMIT_GSDR 0x54 /* (set) direction - W */ +#define SPACEMIT_GCDR 0x60 /* (clear) direction - W */ +#define SPACEMIT_GSRER 0x6c /* (set) rising edge detect enable - W */ +#define SPACEMIT_GCRER 0x78 /* (clear) rising edge detect enable - W */ +#define SPACEMIT_GSFER 0x84 /* (set) falling edge detect enable - W */ +#define SPACEMIT_GCFER 0x90 /* (clear) falling edge detect enable - W */ +#define SPACEMIT_GAPMASK 0x9c /* interrupt mask , 0 disable, 1 enable - R/W */ + +#define SPACEMIT_NR_BANKS 4 +#define SPACEMIT_NR_GPIOS_PER_BANK 32 + +#define to_spacemit_gpio_bank(x) container_of((x), struct spacemit_gpio_bank, gc) + +struct spacemit_gpio; + +struct spacemit_gpio_bank { + struct gpio_chip gc; + struct spacemit_gpio *sg; + void __iomem *base; + u32 irq_mask; + u32 irq_rising_edge; + u32 irq_falling_edge; +}; + +struct spacemit_gpio { + struct device *dev; + struct spacemit_gpio_bank sgb[SPACEMIT_NR_BANKS]; +}; + +static u32 spacemit_gpio_bank_index(struct spacemit_gpio_bank *gb) +{ + return (u32)(gb - gb->sg->sgb); +} + +static irqreturn_t spacemit_gpio_irq_handler(int irq, void *dev_id) +{ + struct spacemit_gpio_bank *gb = dev_id; + unsigned long pending; + u32 n, gedr; + + gedr = readl(gb->base + SPACEMIT_GEDR); + if (!gedr) + return IRQ_NONE; + writel(gedr, gb->base + SPACEMIT_GEDR); + + pending = gedr & gb->irq_mask; + if (!pending) + return IRQ_NONE; + + for_each_set_bit(n, &pending, BITS_PER_LONG) + handle_nested_irq(irq_find_mapping(gb->gc.irq.domain, n)); + + return IRQ_HANDLED; +} + +static void spacemit_gpio_irq_ack(struct irq_data *d) +{ + struct spacemit_gpio_bank *gb = irq_data_get_irq_chip_data(d); + + writel(BIT(irqd_to_hwirq(d)), gb->base + SPACEMIT_GEDR); +} + +static void spacemit_gpio_irq_mask(struct irq_data *d) +{ + struct spacemit_gpio_bank *gb = irq_data_get_irq_chip_data(d); + u32 bit = BIT(irqd_to_hwirq(d)); + + gb->irq_mask &= ~bit; + writel(gb->irq_mask, gb->base + SPACEMIT_GAPMASK); + + if (bit & gb->irq_rising_edge) + writel(bit, gb->base + SPACEMIT_GCRER); + + if (bit & gb->irq_falling_edge) + writel(bit, gb->base + SPACEMIT_GCFER); +} + +static void spacemit_gpio_irq_unmask(struct irq_data *d) +{ + struct spacemit_gpio_bank *gb = irq_data_get_irq_chip_data(d); + u32 bit = BIT(irqd_to_hwirq(d)); + + gb->irq_mask |= bit; + + if (bit & gb->irq_rising_edge) + writel(bit, gb->base + SPACEMIT_GSRER); + + if (bit & gb->irq_falling_edge) + writel(bit, gb->base + SPACEMIT_GSFER); + + writel(gb->irq_mask, gb->base + SPACEMIT_GAPMASK); +} + +static int spacemit_gpio_irq_set_type(struct irq_data *d, unsigned int type) +{ + struct spacemit_gpio_bank *gb = irq_data_get_irq_chip_data(d); + u32 bit = BIT(irqd_to_hwirq(d)); + + if (type & IRQ_TYPE_EDGE_RISING) { + gb->irq_rising_edge |= bit; + writel(bit, gb->base + SPACEMIT_GSRER); + } else { + gb->irq_rising_edge &= ~bit; + writel(bit, gb->base + SPACEMIT_GCRER); + } + + if (type & IRQ_TYPE_EDGE_FALLING) { + gb->irq_falling_edge |= bit; + writel(bit, gb->base + SPACEMIT_GSFER); + } else { + gb->irq_falling_edge &= ~bit; + writel(bit, gb->base + SPACEMIT_GCFER); + } + + return 0; +} + +static void spacemit_gpio_irq_print_chip(struct irq_data *data, struct seq_file *p) +{ + struct spacemit_gpio_bank *gb = irq_data_get_irq_chip_data(data); + + seq_printf(p, "%s-%d", dev_name(gb->gc.parent), spacemit_gpio_bank_index(gb)); +} + +static struct irq_chip spacemit_gpio_chip = { + .name = "k1-gpio-irqchip", + .irq_ack = spacemit_gpio_irq_ack, + .irq_mask = spacemit_gpio_irq_mask, + .irq_unmask = spacemit_gpio_irq_unmask, + .irq_set_type = spacemit_gpio_irq_set_type, + .irq_print_chip = spacemit_gpio_irq_print_chip, + .flags = IRQCHIP_IMMUTABLE | IRQCHIP_SKIP_SET_WAKE, + GPIOCHIP_IRQ_RESOURCE_HELPERS, +}; + +static bool spacemit_of_node_instance_match(struct gpio_chip *gc, unsigned int i) +{ + struct spacemit_gpio_bank *gb = gpiochip_get_data(gc); + struct spacemit_gpio *sg = gb->sg; + + if (i >= SPACEMIT_NR_BANKS) + return false; + + return (gc == &sg->sgb[i].gc); +} + +static int spacemit_gpio_add_bank(struct spacemit_gpio *sg, + void __iomem *regs, + int index, int irq) +{ + struct spacemit_gpio_bank *gb = &sg->sgb[index]; + struct gpio_chip *gc = &gb->gc; + struct device *dev = sg->dev; + struct gpio_irq_chip *girq; + void __iomem *dat, *set, *clr, *dirin, *dirout; + int ret, bank_base[] = { 0x0, 0x4, 0x8, 0x100 }; + + gb->base = regs + bank_base[index]; + + dat = gb->base + SPACEMIT_GPLR; + set = gb->base + SPACEMIT_GPSR; + clr = gb->base + SPACEMIT_GPCR; + dirin = gb->base + SPACEMIT_GCDR; + dirout = gb->base + SPACEMIT_GSDR; + + /* This registers 32 GPIO lines per bank */ + ret = bgpio_init(gc, dev, 4, dat, set, clr, dirout, dirin, + BGPIOF_UNREADABLE_REG_SET | BGPIOF_UNREADABLE_REG_DIR); + if (ret) + return dev_err_probe(dev, ret, "failed to init gpio chip\n"); + + gb->sg = sg; + + gc->label = dev_name(dev); + gc->request = gpiochip_generic_request; + gc->free = gpiochip_generic_free; + gc->ngpio = SPACEMIT_NR_GPIOS_PER_BANK; + gc->base = -1; + gc->of_gpio_n_cells = 3; + gc->of_node_instance_match = spacemit_of_node_instance_match; + + girq = &gc->irq; + girq->threaded = true; + girq->handler = handle_simple_irq; + + gpio_irq_chip_set_chip(girq, &spacemit_gpio_chip); + + /* Disable Interrupt */ + writel(0, gb->base + SPACEMIT_GAPMASK); + /* Disable Edge Detection Settings */ + writel(0x0, gb->base + SPACEMIT_GRER); + writel(0x0, gb->base + SPACEMIT_GFER); + /* Clear Interrupt */ + writel(0xffffffff, gb->base + SPACEMIT_GCRER); + writel(0xffffffff, gb->base + SPACEMIT_GCFER); + + ret = devm_request_threaded_irq(dev, irq, NULL, + spacemit_gpio_irq_handler, + IRQF_ONESHOT | IRQF_SHARED, + gb->gc.label, gb); + if (ret < 0) + return dev_err_probe(dev, ret, "failed to register IRQ\n"); + + return devm_gpiochip_add_data(dev, gc, gb); +} + +static int spacemit_gpio_probe(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + struct spacemit_gpio *sg; + struct resource *res; + void __iomem *regs; + int i, irq, ret; + + sg = devm_kzalloc(dev, sizeof(*sg), GFP_KERNEL); + if (!sg) + return -ENOMEM; + + regs = devm_platform_get_and_ioremap_resource(pdev, 0, &res); + if (IS_ERR(regs)) + return PTR_ERR(regs); + + irq = platform_get_irq(pdev, 0); + if (irq < 0) + return irq; + + sg->dev = dev; + + for (i = 0; i < SPACEMIT_NR_BANKS; i++) { + ret = spacemit_gpio_add_bank(sg, regs, i, irq); + if (ret) + return ret; + } + + return 0; +} + +static const struct of_device_id spacemit_gpio_dt_ids[] = { + { .compatible = "spacemit,k1-gpio" }, + { /* sentinel */ } +}; + +static struct platform_driver spacemit_gpio_driver = { + .probe = spacemit_gpio_probe, + .driver = { + .name = "k1-gpio", + .of_match_table = spacemit_gpio_dt_ids, + }, +}; +module_platform_driver(spacemit_gpio_driver); + +MODULE_AUTHOR("Yixun Lan "); +MODULE_DESCRIPTION("GPIO driver for SpacemiT K1 SoC"); +MODULE_LICENSE("GPL"); From patchwork Wed Feb 26 00:41:19 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yixun Lan X-Patchwork-Id: 13991182 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 2353AC021B2 for ; Wed, 26 Feb 2025 00:42:38 +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:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:To:In-Reply-To:References:Message-Id: MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=t8f12ASwibT2Sir2QEexISuTbQ4fkWBJYe3cILAvCUE=; b=laftDncIvfGofP mfxQJMjg6jH9Uq5b2dGjBPLyoxI4+XrkZ3tj16eUEwknYcieSFTV7nh+SleDK8dD/bWXw62u12Z8R pUZ4a1m/zkslRwjocT5qYwzhXVVD+hrGtpeohefWWZQeYTnZpYwCuHgyKMZya1qlMcZ1HipM12+ic MGmzIsrZiNMQIthUBYjhqR0QKA5jho9/o/KxLeOEhzmH59lfQjZ6OiyJpXaULNUSl8VFCYJmhbcGY /7igkTC5gITUXMZhmAOr0qNLUFoUvyIzszxUM3Xcle+M8wXAnlbeNtPbmsN1wdtQ25DFsPDtjjtmn ywdMsihRumCc1GzOR97w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tn5VS-00000001tZc-04aw; Wed, 26 Feb 2025 00:42:34 +0000 Received: from mail.gentoo.org ([2001:470:ea4a:1:5054:ff:fec7:86e4] helo=smtp.gentoo.org) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tn5VQ-00000001tYz-1HV9 for linux-riscv@lists.infradead.org; Wed, 26 Feb 2025 00:42:33 +0000 Received: from [127.0.0.1] (unknown [116.232.55.252]) (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: dlan) by smtp.gentoo.org (Postfix) with ESMTPSA id 6CBD634328D; Wed, 26 Feb 2025 00:42:25 +0000 (UTC) From: Yixun Lan Date: Wed, 26 Feb 2025 08:41:19 +0800 Subject: [PATCH v7 3/4] riscv: dts: spacemit: add gpio support for K1 SoC MIME-Version: 1.0 Message-Id: <20250226-03-k1-gpio-v7-3-be489c4a609b@gentoo.org> References: <20250226-03-k1-gpio-v7-0-be489c4a609b@gentoo.org> In-Reply-To: <20250226-03-k1-gpio-v7-0-be489c4a609b@gentoo.org> To: Linus Walleij , Bartosz Golaszewski , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Conor Dooley , Paul Walmsley , Palmer Dabbelt X-Mailer: b4 0.15-dev X-Developer-Signature: v=1; a=openpgp-sha256; l=1793; i=dlan@gentoo.org; h=from:subject:message-id; bh=wtQfZAe5q6h9LIhqpr/DAcv/omJD+9pnXTTCbG9Weq4=; b=owEBzQIy/ZANAwAKATGq6kdZTbvtAcsmYgBnvmNWpIvhLttfG+OcyZDHMaFSCVhiEqUJ37eqg FoqOuZbbueJApMEAAEKAH0WIQS1urjJwxtxFWcCI9wxqupHWU277QUCZ75jVl8UgAAAAAAuAChp c3N1ZXItZnByQG5vdGF0aW9ucy5vcGVucGdwLmZpZnRoaG9yc2VtYW4ubmV0QjVCQUI4QzlDMzF CNzExNTY3MDIyM0RDMzFBQUVBNDc1OTREQkJFRAAKCRAxqupHWU277QodEACfHfF/cioRYR1L2V xxhQBNB1YbZ8Ew32kU/vUM7EIXQPNlOK7cWyLp3DWMTMeyfVVG27EkllUyUJAumYAj8v8VBLfV+ jkl8MmiDMIFkc4JuhAiGiv5D9+jHayg3ULM3C0hIzPrnLsz78oED/XsjZ/xNq6YLTDDdsiFd4hO Lxv4ngPUJXE3UQTyJTwIQV9RR/EOV4Aal/AgQsFPrWMHYH9n9V48MF5/Z6fznPHVCbdSTp5cHBu Y6/rP1LGlaD+vLOqCpn5d5lCdWXBIF1cqYdkooVYATId0S7ypaL27tNrSv5hH5QL9t/fpjZAfk/ YL7Po2frOW7NxOzP6mlcaORBRUuHPYlkp9HwJQ4Bz9rs934T2mG26MJ3Mifs0EdgKKOg/q0yI0C 5scq6w2gLDkPb6lcruzF5e3Yw6oxw4/5dGHLZ5j8NYGPTrhpkChuS+lnLQYy+U5HU12aFtwfpeS b4DvQd93xIsb24cNw8MNM/ONrsM5JTRNORYxvzIHu5T2MoNvOwLq1fQ7pCD0vzjmjUnIFxSex/0 3xIemiAv0G7ikiz2yqeGNK0o0oz9jp6b3xYV94QNwiO9auaY8aRdDliU6WxCfZqxIbupU9S4H0c RDLF+IzZt/HuJleXojA3O67zIf1zkOpIfvnpZ2DgtHA8CRiTNrTcdnVtG66GwnJNNi3g== X-Developer-Key: i=dlan@gentoo.org; a=openpgp; fpr=50B03A1A5CBCD33576EF8CD7920C0DBCAABEFD55 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250225_164232_373047_2B5D65F5 X-CRM114-Status: UNSURE ( 8.43 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, Meng Zhang , Yixun Lan , Alex Elder , linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, Jesse Taube , Yangyu Chen , Inochi Amaoto , Jisheng Zhang , linux-riscv@lists.infradead.org, spacemit@lists.linux.dev Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org Populate the GPIO node in the device tree for SpacemiT K1 SoC. Each of 32 pins will act as one bank and map pins to pinctrl controller. Signed-off-by: Yixun Lan --- arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi | 3 +++ arch/riscv/boot/dts/spacemit/k1.dtsi | 15 +++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi b/arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi index a8eac5517f8578d60cb45214589ccb45ac376b9a..283663647a86ff137917ced8bfe79a129c86342a 100644 --- a/arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi +++ b/arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi @@ -7,6 +7,9 @@ #define K1_PADCONF(pin, func) (((pin) << 16) | (func)) +/* Map GPIO pin to each bank's */ +#define K1_GPIO(x) (x / 32) (x % 32) + &pinctrl { uart0_2_cfg: uart0-2-cfg { uart0-2-pins { diff --git a/arch/riscv/boot/dts/spacemit/k1.dtsi b/arch/riscv/boot/dts/spacemit/k1.dtsi index c670ebf8fa12917aa6493fcd89fdd1409529538b..ff86a02c25f2e0818a48ed56c75e911d8612f6d1 100644 --- a/arch/riscv/boot/dts/spacemit/k1.dtsi +++ b/arch/riscv/boot/dts/spacemit/k1.dtsi @@ -404,6 +404,21 @@ uart9: serial@d4017800 { status = "disabled"; }; + gpio: gpio@d4019000 { + compatible = "spacemit,k1-gpio"; + reg = <0x0 0xd4019000 0x0 0x100>; + gpio-controller; + #gpio-cells = <3>; + interrupts = <58>; + interrupt-parent = <&plic>; + interrupt-controller; + #interrupt-cells = <3>; + gpio-ranges = <&pinctrl 0 0 0 32>, + <&pinctrl 1 0 32 32>, + <&pinctrl 2 0 64 32>, + <&pinctrl 3 0 96 32>; + }; + pinctrl: pinctrl@d401e000 { compatible = "spacemit,k1-pinctrl"; reg = <0x0 0xd401e000 0x0 0x400>; From patchwork Wed Feb 26 00:41:20 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yixun Lan X-Patchwork-Id: 13991183 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 AB3B6C021B2 for ; Wed, 26 Feb 2025 00:42:45 +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:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:To:In-Reply-To:References:Message-Id: MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=wKRhjWZfFOvrhyRW8mV2nuNOPQlotX4RIgiAsBjHGEg=; b=wJ5zbSEj8c3j8y 2UrUcXooPt7vhJFX35NMFqUVRwEMqygfOsX72uIku7NH/9dlu2/NXegu9ImRtZgWTfYEMiRluxO5W QAEXlRT6y7JGL6QgVYvfSB2nSjCotA8VZgAG9E3vUIaqx+fqYUd8/bB+ylsIZquoVdf77Vtd4rigK 5b1x1ngGvK7JoiXAmZdiKEIjmj5Vj0AvymVeJhHnI8gkK3YYpGTN6dZCbNgTRDDexETq6kmo5bUMS x4KpiqSehavcEJbjPAtTvIWJGyERHRHhKyAWmeXk8Q4BZOgu5iMmSAz1jdZ2Y+twZErARUA5eY5bs pEZeg7U7lBFbat3dGpdQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tn5VZ-00000001teS-2TNU; Wed, 26 Feb 2025 00:42:41 +0000 Received: from mail.gentoo.org ([2001:470:ea4a:1:5054:ff:fec7:86e4] helo=smtp.gentoo.org) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tn5VW-00000001tcF-2Z2v for linux-riscv@lists.infradead.org; Wed, 26 Feb 2025 00:42:39 +0000 Received: from [127.0.0.1] (unknown [116.232.55.252]) (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: dlan) by smtp.gentoo.org (Postfix) with ESMTPSA id 22E3E343295; Wed, 26 Feb 2025 00:42:31 +0000 (UTC) From: Yixun Lan Date: Wed, 26 Feb 2025 08:41:20 +0800 Subject: [PATCH v7 4/4] riscv: dts: spacemit: add gpio LED for system heartbeat MIME-Version: 1.0 Message-Id: <20250226-03-k1-gpio-v7-4-be489c4a609b@gentoo.org> References: <20250226-03-k1-gpio-v7-0-be489c4a609b@gentoo.org> In-Reply-To: <20250226-03-k1-gpio-v7-0-be489c4a609b@gentoo.org> To: Linus Walleij , Bartosz Golaszewski , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Conor Dooley , Paul Walmsley , Palmer Dabbelt X-Mailer: b4 0.15-dev X-Developer-Signature: v=1; a=openpgp-sha256; l=866; i=dlan@gentoo.org; h=from:subject:message-id; bh=Npl1hf2K8C0HFRJz0IJdWyuqL8ZWAqWbXOrkZ95CiDc=; b=owEBzQIy/ZANAwAKATGq6kdZTbvtAcsmYgBnvmNZyVtJ2VkRubp+5r3iGXn4YIW33afvNJoLu PpABgGjFHSJApMEAAEKAH0WIQS1urjJwxtxFWcCI9wxqupHWU277QUCZ75jWV8UgAAAAAAuAChp c3N1ZXItZnByQG5vdGF0aW9ucy5vcGVucGdwLmZpZnRoaG9yc2VtYW4ubmV0QjVCQUI4QzlDMzF CNzExNTY3MDIyM0RDMzFBQUVBNDc1OTREQkJFRAAKCRAxqupHWU277dtjD/9mTDjJxgSN+JWk6p 5DGO6MfgMO5FXvUJDioNmC4UiQlPyFCqlrCTIVF/yuh92AVykFESB2Rh6Puwh+w91fYpC0kYKfq KAVAI8NWvfDLdPEZB+IRopU2AECe6B+QoEIt5nHROZ0PFMY5uf/kcGe6bP4tjBd43VX/eiBhffS Ta+9Tg13OAWa8UmcyxZPAEvEoZpbh1rCXnQhpF728CAOlADJJ9OZECgWqzsUSTwVZd5jsKPe90g gujQ12U5Nqkte3haRonoLlMz4HnwugjaWjqWscQcWBK3COEHya+S5N99Uvm+eYjDO122uZMAhlI NZDngPEvmcy0+hQ7dbGH7S2ZRZIPR7Jil7lm4bIIlgyfA72gMbVd4H+khRAkQleKFMHMeTFhQSM S+xqrOF/GpxYDfYwo4avTCXn9UXdDODkVp/YXfINlIbhZqtElmp/unxc6DAwNtmOJbTAEn+MbSX zr5SgVYhnek33iMswimiP/1TL9HEsH7IwmiQpmRnRq25uNqEnV8aah5b37Ob+BgwSdIBsdwZI3s sv8HGDG0iwd6y1/wXk3qYm1/cpzKl/S+OHbur869f6yZVGZK0TH2MfaXWPN79r0jewj+qT6MNmI MrMRZaVw/mWwkv7JbaLSlvKIEdIfEMFIZm41rDjD4968cui5ENqenHCP0mRxgwHacm8A== X-Developer-Key: i=dlan@gentoo.org; a=openpgp; fpr=50B03A1A5CBCD33576EF8CD7920C0DBCAABEFD55 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250225_164238_690234_D195EFDB X-CRM114-Status: UNSURE ( 7.65 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, Meng Zhang , Yixun Lan , Alex Elder , linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, Jesse Taube , Yangyu Chen , Inochi Amaoto , Jisheng Zhang , linux-riscv@lists.infradead.org, spacemit@lists.linux.dev Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org Leverage GPIO to support system LED to indicate activity of CPUs. Signed-off-by: Yixun Lan --- arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts index 1d617b40a2d51ee464b57234d248798aeb218643..816ef1bc358ec490aff184d5915d680dbd9f00cb 100644 --- a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts +++ b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts @@ -17,6 +17,17 @@ aliases { chosen { stdout-path = "serial0"; }; + + leds { + compatible = "gpio-leds"; + + led1 { + label = "sys-led"; + gpios = <&gpio K1_GPIO(96) GPIO_ACTIVE_HIGH>; + linux,default-trigger = "heartbeat"; + default-state = "on"; + }; + }; }; &uart0 {