From patchwork Wed Nov 20 06:59:21 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yash Shah X-Patchwork-Id: 11253297 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 561D014DB for ; Wed, 20 Nov 2019 06:59:27 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 32D23222A9 for ; Wed, 20 Nov 2019 06:59:27 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="fycdq7N1"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=sifive.com header.i=@sifive.com header.b="CGYV2yfF" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 32D23222A9 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=sifive.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-riscv-bounces+patchwork-linux-riscv=patchwork.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:References: Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=k7PjLo96lEetd0DY08H1hLCryx7X9GjvAlUAMUPZ1FA=; b=fycdq7N1sH7uIb vf+GoOScWtaQNMMqNSTpdPSyQzKJ7MghF0cQz0zwp0dTdJWL9D0RswLHPp5leVa7VIgO93QGG3dGR J8U1Xr+2+MrPvDz15AOYLcduiGIRkmKpZx6KuOQqKeS7O/hpXFp5du1D2rRj0kJ7KojF0yapXh6Sv v0UgO6HznZI7bV8QnTu127KuqqoLupRVjHWTCKzbPZPWVeapOfjA+eerlid0VsqhAOqwWcVf/PXGq zv36Rme7YrBw25CXuBixaP4xj3e1m8rVrIie4l7nLvHflwlu59t9Oy7IGcNQEyQrPidnBwyl7UQNp d39TEUWSInmMs02Ri8DQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1iXJxW-0003xH-9e; Wed, 20 Nov 2019 06:59:26 +0000 Received: from mail-eopbgr740089.outbound.protection.outlook.com ([40.107.74.89] helo=NAM01-BN3-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1iXJxT-0003vr-MI for linux-riscv@lists.infradead.org; Wed, 20 Nov 2019 06:59:25 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QX+4wT884k5kA85/56LsU/e3G1bVM8GvSl7WqlkcL5/wmX3yOmr6m7SloLJBijv7kfE5CqxIj9zgKFEMC0s/l0225DGlU1mk53rbE2yFU1UPU9GL1awFamkE5EFX2cAUEnfjbfx7m0n3vMELFjWRNiFJLgrx1Ulj0POyAhSeuYKANu2jQKEoYUo/UCaS+UACns6dbwRxjRvRHR1AExqTH1I5tKfSfDFQKrVS6Z9Zs2nDD0oU+5nKK+wm+efHQzV+yQxEdQrW+jtXrMMozAeadHRWIR6OedZNWN3PCid6Zvt7sMeMnBKlIW2ZuDQBnMkuHSj71iV+ezXh+yLbvaKFDA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=uUJLzYO7FlrPU6UtYAl030j6WY1EKyN58vXYO8xgU/U=; b=iM1tQIRLDeoNwOHcDck7gm5EVimYCyGCFZ0VNP7BKRuDPKHcotw71SKPzj6Oex4ed0EDEsGEKrHn+Crn2nzMW+jBx9oNkPcbyEn20d/Vleijdl/KMwvn4iWFKna/Pw3MIJZHfjUeM4O0YlSqHGtlKBgGOQlztVN12Jp/b2+Dqc4HzwWVwMMBJOUjLIKXHCkkufSp4BaIcGhYL28OdoF3RiGCS9iKqoEiHhe3PwxGATfWdZGuzLiBFPaAQ8bPHb+UvJEszKXKCtbnHkrcoVficyr6JyiFxLIxpSZoqWtiUDyK1VbRxok5hf7MElVJ6hmUYQqmgg38ci81OByCVc0qOA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=sifive.com; dmarc=pass action=none header.from=sifive.com; dkim=pass header.d=sifive.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=uUJLzYO7FlrPU6UtYAl030j6WY1EKyN58vXYO8xgU/U=; b=CGYV2yfFrLsuJptPj7O5t1DBwCJA6AQuMb5fmppbD7XgEGOuVyXuWwQTaBnHZAAJFn/qfh3XYXuMpGRTYxvaK3RbxYto+YGTv9p1yS2x8cGnt2k/f77VH5vSSzYQ8f9lQGlutZbmyKEmBQR7n5Id+mrh9PTVNjCR/4NwnMGatik= Received: from CH2PR13MB3368.namprd13.prod.outlook.com (52.132.246.90) by CH2PR13MB3415.namprd13.prod.outlook.com (52.132.246.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2474.8; Wed, 20 Nov 2019 06:59:21 +0000 Received: from CH2PR13MB3368.namprd13.prod.outlook.com ([fe80::853e:1256:311e:d29]) by CH2PR13MB3368.namprd13.prod.outlook.com ([fe80::853e:1256:311e:d29%7]) with mapi id 15.20.2474.015; Wed, 20 Nov 2019 06:59:21 +0000 From: Yash Shah To: "linus.walleij@linaro.org" , "bgolaszewski@baylibre.com" , "robh+dt@kernel.org" , "mark.rutland@arm.com" , "palmer@dabbelt.com" , "Paul Walmsley ( Sifive)" Subject: [PATCH v2 1/5] genirq: introduce irq_domain_translate_onecell Thread-Topic: [PATCH v2 1/5] genirq: introduce irq_domain_translate_onecell Thread-Index: AQHVn3AJHBiRD+wuIUSzxWzN0+e/fg== Date: Wed, 20 Nov 2019 06:59:21 +0000 Message-ID: <1574233128-28114-2-git-send-email-yash.shah@sifive.com> References: <1574233128-28114-1-git-send-email-yash.shah@sifive.com> In-Reply-To: <1574233128-28114-1-git-send-email-yash.shah@sifive.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: LO2P265CA0208.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:9e::28) To CH2PR13MB3368.namprd13.prod.outlook.com (2603:10b6:610:2c::26) authentication-results: spf=none (sender IP is ) smtp.mailfrom=yash.shah@sifive.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.7.4 x-originating-ip: [114.143.65.226] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: c866b0bd-d336-4db2-1f56-08d76d872b55 x-ms-traffictypediagnostic: CH2PR13MB3415: x-ld-processed: 22f88e9d-ae0d-4ed9-b984-cdc9be1529f1,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3173; x-forefront-prvs: 02272225C5 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39840400004)(376002)(366004)(136003)(396003)(346002)(199004)(189003)(486006)(71200400001)(316002)(8676002)(6636002)(71190400001)(7416002)(8936002)(25786009)(99286004)(2906002)(54906003)(52116002)(76176011)(50226002)(2501003)(478600001)(110136005)(66066001)(86362001)(36756003)(81156014)(81166006)(386003)(6506007)(26005)(4326008)(102836004)(5660300002)(6512007)(476003)(446003)(11346002)(6486002)(186003)(2616005)(6116002)(3846002)(7736002)(305945005)(6436002)(66476007)(66446008)(66946007)(66556008)(44832011)(64756008)(107886003)(256004)(14454004); DIR:OUT; SFP:1101; SCL:1; SRVR:CH2PR13MB3415; H:CH2PR13MB3368.namprd13.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: sifive.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: slLBVNJvOlBeUf6r7rLz+tB4xUiKV8JpS/iJPaCMmNvfK0NWkOr7DzBqKhJsD3dwBMh0nT0jg2VY/5wzw91YSi/imA4NQdV7RpmIY63VB9TLmkPgrNAd93r4LQjjrTB7kQ4UQ9QirvD3RhFkUI33jcscbq92JI5k81UydRDNC5Slnscg9f/hBg2Bel6GbQTSsBlPmxHlhWWAiP9dmCRix+IWifWe5EcCjJqU8et8i/JhXdTNR8rPRr+RPwS1YQag/zMAmA0qsrO9681vWxuR0IrpxkWjG4zsGHW0hDV0qr8tDShs42PK8slpyWWX2aedYCY9mDmxwnJg0SybqWcTO6yctU14VJZ4joKXrw0BtGpuc/lsxly2uJ/9ydJITfzObH5ILodS345adgwIwvLDYGliSjiOeuW5o+2BJFK1t/DTd59HyQcj2eRY0YUgIbGU MIME-Version: 1.0 X-OriginatorOrg: sifive.com X-MS-Exchange-CrossTenant-Network-Message-Id: c866b0bd-d336-4db2-1f56-08d76d872b55 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Nov 2019 06:59:21.4174 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 22f88e9d-ae0d-4ed9-b984-cdc9be1529f1 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: WXiS0orDLFaEUmtZPePYSyCXSBwbkIfC9+sycPanLtksB/w1l/Ryu4aQFIwFcx+iIp/bZxXT1DX4o8h75Dl4fw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR13MB3415 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20191119_225923_739438_5D02F4D6 X-CRM114-Status: UNSURE ( 9.14 ) X-CRM114-Notice: Please train this message. X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.2 on bombadil.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [40.107.74.89 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "devicetree@vger.kernel.org" , "aou@eecs.berkeley.edu" , "jason@lakedaemon.net" , "linux-gpio@vger.kernel.org" , "maz@kernel.org" , "linux-kernel@vger.kernel.org" , "atish.patra@wdc.com" , Yash Shah , Sagar Kadam , "tglx@linutronix.de" , "bmeng.cn@gmail.com" , "linux-riscv@lists.infradead.org" , Sachin Ghadi Sender: "linux-riscv" Errors-To: linux-riscv-bounces+patchwork-linux-riscv=patchwork.kernel.org@lists.infradead.org Add a new function irq_domain_translate_onecell() that is to be used as the translate function in struct irq_domain_ops for the v2 IRQ API. Signed-off-by: Yash Shah --- include/linux/irqdomain.h | 5 +++++ kernel/irq/irqdomain.c | 20 ++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h index 583e7ab..cad9eb8 100644 --- a/include/linux/irqdomain.h +++ b/include/linux/irqdomain.h @@ -426,6 +426,11 @@ int irq_domain_translate_twocell(struct irq_domain *d, unsigned long *out_hwirq, unsigned int *out_type); +int irq_domain_translate_onecell(struct irq_domain *d, + struct irq_fwspec *fwspec, + unsigned long *out_hwirq, + unsigned int *out_type); + /* IPI functions */ int irq_reserve_ipi(struct irq_domain *domain, const struct cpumask *dest); int irq_destroy_ipi(unsigned int irq, const struct cpumask *dest); diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c index 132672b..6972a48 100644 --- a/kernel/irq/irqdomain.c +++ b/kernel/irq/irqdomain.c @@ -987,6 +987,26 @@ const struct irq_domain_ops irq_domain_simple_ops = { EXPORT_SYMBOL_GPL(irq_domain_simple_ops); /** + * irq_domain_translate_onecell() - Generic translate for direct one cell + * bindings + * + * Device Tree IRQ specifier translation function which works with one cell + * bindings where the cell values map directly to the hwirq number. + */ +int irq_domain_translate_onecell(struct irq_domain *d, + struct irq_fwspec *fwspec, + unsigned long *out_hwirq, + unsigned int *out_type) +{ + if (WARN_ON(fwspec->param_count < 1)) + return -EINVAL; + *out_hwirq = fwspec->param[0]; + *out_type = IRQ_TYPE_NONE; + return 0; +} +EXPORT_SYMBOL_GPL(irq_domain_translate_onecell); + +/** * irq_domain_translate_twocell() - Generic translate for direct two cell * bindings * From patchwork Wed Nov 20 06:59:28 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yash Shah X-Patchwork-Id: 11253299 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7E75914DB for ; Wed, 20 Nov 2019 06:59:33 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 58EE82245B for ; Wed, 20 Nov 2019 06:59:33 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="BriAJTq0"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=sifive.com header.i=@sifive.com header.b="dMK+uuUe" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 58EE82245B Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=sifive.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-riscv-bounces+patchwork-linux-riscv=patchwork.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:References: Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=oZoLb+M1oa1ZvRWTQN5lWJdlvbimQ3KHETgP5f6jEDI=; b=BriAJTq0/e6YcH kqH81aVRDQGx4oNgrQJaV21PPf6D4i93pENPfArrckNCQYPzCC+caN/C0g/wA4+7PWEzHp/YyUYLX 0cczFr56/vXuM+FYerxWE/BV8UkME8CYj/lkSOSSk9raqA9lOs4DDitH/H/kvVlnROAPmUxN7pDxF VWYfUoluL3n7DW1uVhtXUpfSxarVZ5lOngqjCrb/0SgKEfXphHs64Lue5dWJPVN5CjfsTwykJnUY8 bVF/gx294l9ZW+Aypm1C+UWM9C9E8W8laViyFAOI9Y0DWNyo56qkcpSC/SA1uNEpP122KD1EmM6JH HjpteDP4/RiBIJd+ah9A==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1iXJxc-000423-Ca; Wed, 20 Nov 2019 06:59:32 +0000 Received: from mail-eopbgr740059.outbound.protection.outlook.com ([40.107.74.59] helo=NAM01-BN3-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1iXJxa-00040W-BU for linux-riscv@lists.infradead.org; Wed, 20 Nov 2019 06:59:31 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XPhd5IguzPmM1ROZIyirRKxgR7xbIHYtV+wmeC89A5LzVKMGNQcYmWvDtFKkkfAlyhJrT1AtPO9tRNFLjA+lq6hcusS00Tjz7T+X806pJqmllnLuhp/egsZ5/BoEvEaDc55NuUQIBD2ZHZ9jt8I2bnS6+jLaaiCUvhByArdV6WmIEE64jukXHHyndYB3PfcEIsib+4AmjD7Bnsf83/b/8QnWMZMXwmTZzh3EyxoZlvBiw+DO7GLxhJaYY7zyBb6ucq6U6qi3s7IhtXdZEjle0oSkhk54KmWsRZtB8amYxN35EECgtRrL9tvEKet1wughFSY53fvvAqAvw1fKdGUIaA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=EdFG3ywbIWl8L8/pPBsiTq0inxwz+ga2fa1CTBFhD7Q=; b=I1I5HQrr2CXHRM0IHtZi1YCjvw5B9KQ11F4i8PwelKs4I55DGe9d4U42VWfCYLBA9HxKC8cp9WcW2E+Gqil9n3ZbQ+2arT65bSz2H4eDaCTibxq5QAO1MLSsE3yNnF9KnUp8Xw/JycfXJesYi4zarix5j+nRh1TNKfCY4p7YEF6uqodAJhsFsoPrbJKYZTDyhGCBN4ILUwCMNAk3mZZWD+5oMuH/gmrRR6JURYnhGCC9V9X3nDn4o5L9SC50yu61jfQLXtlarQN5zvdDxsbOPZN5xggNOeipNFiPzvVotLCSamqvafm7RXFBcVlKK68g3/VLJi8B7eHsxj+mb678Nw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=sifive.com; dmarc=pass action=none header.from=sifive.com; dkim=pass header.d=sifive.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=EdFG3ywbIWl8L8/pPBsiTq0inxwz+ga2fa1CTBFhD7Q=; b=dMK+uuUebl5piTtlFNAIRMLptih3NYWT7ShbAAe09fk8Pbfz2o8jqMN4RKcfop74FT3ITEEEdX6h3w9puM3IJGvZO0vEfPOIgXwG6Fa3EBoyrM2jRTwwkfDp7iAf07YeX3IW5MYVH+rBfK+K9iN0KZIfYgzCkosh9lZoZPUMkXQ= Received: from CH2PR13MB3368.namprd13.prod.outlook.com (52.132.246.90) by CH2PR13MB3415.namprd13.prod.outlook.com (52.132.246.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2474.8; Wed, 20 Nov 2019 06:59:28 +0000 Received: from CH2PR13MB3368.namprd13.prod.outlook.com ([fe80::853e:1256:311e:d29]) by CH2PR13MB3368.namprd13.prod.outlook.com ([fe80::853e:1256:311e:d29%7]) with mapi id 15.20.2474.015; Wed, 20 Nov 2019 06:59:28 +0000 From: Yash Shah To: "linus.walleij@linaro.org" , "bgolaszewski@baylibre.com" , "robh+dt@kernel.org" , "mark.rutland@arm.com" , "palmer@dabbelt.com" , "Paul Walmsley ( Sifive)" Subject: [PATCH v2 2/5] irqchip: sifive: Support hierarchy irq domain Thread-Topic: [PATCH v2 2/5] irqchip: sifive: Support hierarchy irq domain Thread-Index: AQHVn3ANvAc498he10C+K+BReEuyxA== Date: Wed, 20 Nov 2019 06:59:28 +0000 Message-ID: <1574233128-28114-3-git-send-email-yash.shah@sifive.com> References: <1574233128-28114-1-git-send-email-yash.shah@sifive.com> In-Reply-To: <1574233128-28114-1-git-send-email-yash.shah@sifive.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: LO2P265CA0208.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:9e::28) To CH2PR13MB3368.namprd13.prod.outlook.com (2603:10b6:610:2c::26) authentication-results: spf=none (sender IP is ) smtp.mailfrom=yash.shah@sifive.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.7.4 x-originating-ip: [114.143.65.226] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 789e57ac-365a-4bad-51ab-08d76d872f55 x-ms-traffictypediagnostic: CH2PR13MB3415: x-ld-processed: 22f88e9d-ae0d-4ed9-b984-cdc9be1529f1,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4714; x-forefront-prvs: 02272225C5 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39840400004)(376002)(366004)(136003)(396003)(346002)(199004)(189003)(486006)(71200400001)(316002)(8676002)(6636002)(71190400001)(7416002)(8936002)(25786009)(99286004)(2906002)(54906003)(52116002)(76176011)(50226002)(2501003)(478600001)(110136005)(66066001)(86362001)(36756003)(81156014)(81166006)(386003)(6506007)(26005)(4326008)(102836004)(5660300002)(6512007)(476003)(446003)(11346002)(6486002)(186003)(2616005)(6116002)(3846002)(7736002)(305945005)(6436002)(66476007)(66446008)(66946007)(66556008)(44832011)(64756008)(107886003)(256004)(14454004); DIR:OUT; SFP:1101; SCL:1; SRVR:CH2PR13MB3415; H:CH2PR13MB3368.namprd13.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: sifive.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Hnhu0R/zc1evdBv3x+j/MfQUC1Co35W6xtBVdfuTBUZn5Q1E+47vGHsw2+QgI6RYeTOd32MOsWp1fLlGMStqyhaqb/YGx6pPM4dsSuHiQtsdYhW2xFLyr6dSCvaVfgY1IbF00divfO0pu5opLoRZvF3UM+Y+Wif2+H+hedoGOLEF4d9K6de7gAuE/Np10a1lvsZ0aDdZuBC8zp4akmYtKq+He3rf2ygDXk9XhlqhUPL2mkRhWygbaW4LVuL4cvpK2D4lBRwFPW0Rv/0I8g1wYt8+fr/QxBqZWDPk0YyXI+W27gWx6UiPseVoFI2/wrAMEE7mWZvurx5kzaTSmGJvowic4mMBR6+kFev3R2kQmoq8ZpsuG9JlPyfCsB80zYWB8kskOlSsn1zvMwLQiaSrQmBNb7i5pRduYlHB92gezT+LczFZYcgql9OZFMWvBcyZ MIME-Version: 1.0 X-OriginatorOrg: sifive.com X-MS-Exchange-CrossTenant-Network-Message-Id: 789e57ac-365a-4bad-51ab-08d76d872f55 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Nov 2019 06:59:28.1405 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 22f88e9d-ae0d-4ed9-b984-cdc9be1529f1 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: tYSXgLfmitjcQNMWvdpzCI7nG7WszDmn7+ygAZa2DdVRnPr+nAFQgmPH3TF6hZRjZ/mAbppJA0gaGrIRvhxvWg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR13MB3415 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20191119_225930_400268_ED729BA2 X-CRM114-Status: GOOD ( 12.23 ) X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.2 on bombadil.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [40.107.74.59 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "devicetree@vger.kernel.org" , "aou@eecs.berkeley.edu" , "jason@lakedaemon.net" , "linux-gpio@vger.kernel.org" , "maz@kernel.org" , "linux-kernel@vger.kernel.org" , "atish.patra@wdc.com" , Yash Shah , Sagar Kadam , "tglx@linutronix.de" , "bmeng.cn@gmail.com" , "linux-riscv@lists.infradead.org" , Sachin Ghadi Sender: "linux-riscv" Errors-To: linux-riscv-bounces+patchwork-linux-riscv=patchwork.kernel.org@lists.infradead.org Add support for hierarchy irq domains. This is needed as pre-requisite for gpio-sifive driver. Signed-off-by: Yash Shah --- drivers/irqchip/Kconfig | 1 + drivers/irqchip/irq-sifive-plic.c | 30 ++++++++++++++++++++++++++---- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/drivers/irqchip/Kconfig b/drivers/irqchip/Kconfig index ccbb897..a398552 100644 --- a/drivers/irqchip/Kconfig +++ b/drivers/irqchip/Kconfig @@ -488,6 +488,7 @@ endmenu config SIFIVE_PLIC bool "SiFive Platform-Level Interrupt Controller" depends on RISCV + select IRQ_DOMAIN_HIERARCHY help This enables support for the PLIC chip found in SiFive (and potentially other) RISC-V systems. The PLIC controls devices diff --git a/drivers/irqchip/irq-sifive-plic.c b/drivers/irqchip/irq-sifive-plic.c index 7d0a12f..750e366 100644 --- a/drivers/irqchip/irq-sifive-plic.c +++ b/drivers/irqchip/irq-sifive-plic.c @@ -154,15 +154,37 @@ static struct irq_chip plic_chip = { static int plic_irqdomain_map(struct irq_domain *d, unsigned int irq, irq_hw_number_t hwirq) { - irq_set_chip_and_handler(irq, &plic_chip, handle_fasteoi_irq); - irq_set_chip_data(irq, NULL); + irq_domain_set_info(d, irq, hwirq, &plic_chip, d->host_data, + handle_fasteoi_irq, NULL, NULL); irq_set_noprobe(irq); return 0; } +static int plic_irq_domain_alloc(struct irq_domain *domain, unsigned int virq, + unsigned int nr_irqs, void *arg) +{ + int i, ret; + irq_hw_number_t hwirq; + unsigned int type = IRQ_TYPE_NONE; + struct irq_fwspec *fwspec = arg; + + ret = irq_domain_translate_onecell(domain, fwspec, &hwirq, &type); + if (ret) + return ret; + + for (i = 0; i < nr_irqs; i++) { + ret = plic_irqdomain_map(domain, virq + i, hwirq + i); + if (ret) + return ret; + } + + return 0; +} + static const struct irq_domain_ops plic_irqdomain_ops = { - .map = plic_irqdomain_map, - .xlate = irq_domain_xlate_onecell, + .translate = irq_domain_translate_onecell, + .alloc = plic_irq_domain_alloc, + .free = irq_domain_free_irqs_top, }; static struct irq_domain *plic_irqdomain; From patchwork Wed Nov 20 06:59:35 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yash Shah X-Patchwork-Id: 11253301 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 37DDA14DB for ; Wed, 20 Nov 2019 06:59:40 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 1595621D7F for ; Wed, 20 Nov 2019 06:59:40 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="soce0jir"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=sifive.com header.i=@sifive.com header.b="QUZULLmt" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1595621D7F Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=sifive.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-riscv-bounces+patchwork-linux-riscv=patchwork.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:References: Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=ora92hci7bHDx44Srz1MvNVrMVMrVzE+txr1Ltkvcro=; b=soce0jirvLZ2lY nQaHCMeysJbxeSTtACI1YZAGkGzZRLhMCrkxzrTEkzUIH9yofMPSOQW7TT+KRdb8xS4g4qjJFWv3E WKDg6dmrbXqthb3Ne6Je4rgxg2/QbI+fskuw4Gvk4h8PhvL7k2Qkrp9z/6KfsqBMs/aiGd+B65QYh ofboG7z9Uy+h3Vk5jALYDb6GPiztStEApAdUTf9YBNYv+2EQXi7jv1t0eoFJxkpeFc8RuZ3WIPYj4 IoTFBgOSA+d/vgEpWiZgPjj+BrFaxTwuAi4Jdy3qMpdxVTxmNn2zPtnHXNqoNB016yMvLQbHTo8jw a3otzzh94JLK1EHeiFXQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1iXJxj-00046j-8e; Wed, 20 Nov 2019 06:59:39 +0000 Received: from mail-eopbgr740040.outbound.protection.outlook.com ([40.107.74.40] helo=NAM01-BN3-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1iXJxg-00045U-UE for linux-riscv@lists.infradead.org; Wed, 20 Nov 2019 06:59:38 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lQFOUUeT2UpBIbQI0ZAeMyREofNxJ1IhKZgvPDmJ8pSNj+ngT9RedFBn8ATeHAlJnMWBJKxWwUneHTVrDgRVBGv2/FTMyyayaek5gLuAMwRbHYmgoc8Kt2iL1T9kra08RubyqHwnZj8BhwN0w/v40IzQJ0l04sV2MjsOjRj8eeIhFo2vlPJ7WkkE20IueCt1DeveutMa63lCegAwyYoClFxPTykFCSVZsQxvx1siZ/6dbyZkPGZdYNMgQzbwoNwhpDfth3yD4BGDeWxLEpKy6sMjwgBfiDIsAn2VgxCD8037MOQ84ANyFlLCtWweEu98ZgH++TIh0mpvC7MfXVjlQg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IOOah1TvueSfyqsytPOgIXbJSpfUJF94Jx72tziVDQI=; b=WP85ZWBjNKz9cXneGiSxHsVSu4Wo5ke2P4fqxb4BRaDIfgpd4RY37jJRFxFqrzHU5xWduFFlmjSVSlpLlCGM7T3XkJFxWT2BT4GHKu5VtYHIzwxT0SlU4JfUXCrLcC/H0YMF0WIFFvtJfmNnQq14oG0lac80HO0qprJKgxajBxPQrgjj2QgqTRb8xOCo1px6ImlbiJAOp5VMx0NxxFjGLDvfd+Sz6wvwNlQen2f1co16ONHCjTRHoiQFu7N7Sc1OsGDuNsqVDIV4RQv33z99c8yBne8cQkA5rTfuBPzkgRzTBEPLtQnZ9IoqGZVNcD80AG2+07rAz2ZnUT9vpLn57w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=sifive.com; dmarc=pass action=none header.from=sifive.com; dkim=pass header.d=sifive.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IOOah1TvueSfyqsytPOgIXbJSpfUJF94Jx72tziVDQI=; b=QUZULLmt03fRxKA7z87iEIE21fuC86QUsUz7J559hHEfFi12XVso69bhm1p53+ncmqFu5HENgiPmPStIf6bY0ouw1pwz6jz6IeGfb59MZr/PyHVvHbwPRU9uoBkBcHTkXfGH3Zqd3sFEG8g5cdZYT4l+ICY4YeOKOK+CKzT8h68= Received: from CH2PR13MB3368.namprd13.prod.outlook.com (52.132.246.90) by CH2PR13MB3415.namprd13.prod.outlook.com (52.132.246.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2474.8; Wed, 20 Nov 2019 06:59:35 +0000 Received: from CH2PR13MB3368.namprd13.prod.outlook.com ([fe80::853e:1256:311e:d29]) by CH2PR13MB3368.namprd13.prod.outlook.com ([fe80::853e:1256:311e:d29%7]) with mapi id 15.20.2474.015; Wed, 20 Nov 2019 06:59:35 +0000 From: Yash Shah To: "linus.walleij@linaro.org" , "bgolaszewski@baylibre.com" , "robh+dt@kernel.org" , "mark.rutland@arm.com" , "palmer@dabbelt.com" , "Paul Walmsley ( Sifive)" Subject: [PATCH v2 3/5] gpio: sifive: Add DT documentation for SiFive GPIO Thread-Topic: [PATCH v2 3/5] gpio: sifive: Add DT documentation for SiFive GPIO Thread-Index: AQHVn3ARzeUqKpAPb0atlM8yq0m+pw== Date: Wed, 20 Nov 2019 06:59:35 +0000 Message-ID: <1574233128-28114-4-git-send-email-yash.shah@sifive.com> References: <1574233128-28114-1-git-send-email-yash.shah@sifive.com> In-Reply-To: <1574233128-28114-1-git-send-email-yash.shah@sifive.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: LO2P265CA0208.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:9e::28) To CH2PR13MB3368.namprd13.prod.outlook.com (2603:10b6:610:2c::26) authentication-results: spf=none (sender IP is ) smtp.mailfrom=yash.shah@sifive.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.7.4 x-originating-ip: [114.143.65.226] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: b177c5ad-390b-41b5-555e-08d76d873384 x-ms-traffictypediagnostic: CH2PR13MB3415: x-ms-exchange-purlcount: 2 x-ld-processed: 22f88e9d-ae0d-4ed9-b984-cdc9be1529f1,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:1079; x-forefront-prvs: 02272225C5 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(6029001)(39840400004)(376002)(366004)(136003)(396003)(346002)(199004)(189003)(486006)(71200400001)(316002)(8676002)(6636002)(71190400001)(966005)(7416002)(8936002)(25786009)(99286004)(2906002)(54906003)(52116002)(76176011)(50226002)(2501003)(478600001)(110136005)(66066001)(86362001)(36756003)(81156014)(81166006)(386003)(6506007)(26005)(4326008)(102836004)(6306002)(5660300002)(6512007)(476003)(446003)(11346002)(6486002)(186003)(2616005)(6116002)(3846002)(7736002)(305945005)(6436002)(66476007)(66446008)(66946007)(66556008)(14444005)(44832011)(64756008)(107886003)(256004)(14454004); DIR:OUT; SFP:1101; SCL:1; SRVR:CH2PR13MB3415; H:CH2PR13MB3368.namprd13.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: sifive.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Z8G5sJM9WZaKOpPhVFWCefRcCXqnX9OZRbC4qpmOrnj6rIjN/1nO6+FwBH3wfaIXTwSmF2rD/Zw0IS92NQoYaajq5+zIGjbSUYDPAgSlneBYpwDYSpvkFRDQG61XUehRr2apq2zS8hiDyg/j1juY/xnGTqq/Rkg4XT4xMcf/u8tBqqSSAxrlIEX0BTTG0u6WdOZO3S2RZeQ9EFZ7yrKohWR10QYVr/dJglnIPl9gj+pzGBI3BntSVlyPOAWCkIR3iQG0mquDZaVYDlMYH0I2cG2D6DuRptXW9X7ZtIh/BpOfE9jo/v+qyWHgT6fq42ztDB+KGITfpxPIHvQ+Z4lgCSvlLsi/tAcA5Zg0NnK6SrU5hoG2Zqsif1Mpe+LgOAq8cqw5qafBsbMsFnlj7LNAjkH8D7wBQ/GOjk+ATYXsBw0AMVXm8hy2vsxGjYwRbW1AcDMYW2BQf9YcIC9LnR5ol1gSNa6mLYy+C80Fi68Ws+w= MIME-Version: 1.0 X-OriginatorOrg: sifive.com X-MS-Exchange-CrossTenant-Network-Message-Id: b177c5ad-390b-41b5-555e-08d76d873384 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Nov 2019 06:59:35.1326 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 22f88e9d-ae0d-4ed9-b984-cdc9be1529f1 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: UcLxIdPglgSM9rYpuuU/QLfyKY1/ojFU7cgeFOqhAqXcuUUL5qcSgTJXfCaLdaXNncBLBZNV3CZAURite1p3lA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR13MB3415 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20191119_225936_978434_6554EC8E X-CRM114-Status: UNSURE ( 8.08 ) X-CRM114-Notice: Please train this message. X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.2 on bombadil.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [40.107.74.40 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "devicetree@vger.kernel.org" , "aou@eecs.berkeley.edu" , "jason@lakedaemon.net" , "linux-gpio@vger.kernel.org" , "maz@kernel.org" , "linux-kernel@vger.kernel.org" , "atish.patra@wdc.com" , Yash Shah , Sagar Kadam , "tglx@linutronix.de" , "bmeng.cn@gmail.com" , "linux-riscv@lists.infradead.org" , Sachin Ghadi Sender: "linux-riscv" Errors-To: linux-riscv-bounces+patchwork-linux-riscv=patchwork.kernel.org@lists.infradead.org DT json-schema for GPIO controller added. Signed-off-by: Wesley W. Terpstra [Atish: Compatible string update] Signed-off-by: Atish Patra Signed-off-by: Yash Shah --- .../devicetree/bindings/gpio/gpio-sifive.yaml | 69 ++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 Documentation/devicetree/bindings/gpio/gpio-sifive.yaml diff --git a/Documentation/devicetree/bindings/gpio/gpio-sifive.yaml b/Documentation/devicetree/bindings/gpio/gpio-sifive.yaml new file mode 100644 index 0000000..49214bb --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/gpio-sifive.yaml @@ -0,0 +1,69 @@ +# SPDX-License-Identifier: GPL-2.0 +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/gpio/gpio-sifive.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: SiFive GPIO controller + +maintainers: + - Yash Shah + - Paul Walmsley + +properties: + compatible: + items: + - const: sifive,fu540-c000-gpio + - const: sifive,gpio0 + + reg: + maxItems: 1 + + interrupts: + description: + interrupt mapping one per GPIO. Maximum 16 GPIOs. + maxItems: 1 + + interrupt-controller: true + + "#interrupt-cells": + const: 2 + + clocks: + maxItems: 1 + + clock-names: true + + "#gpio-cells": + const: 2 + + gpio-controller: true + +required: + - compatible + - reg + - interrupts + - interrupt-controller + - "#interrupt-cells" + - clocks + - "#gpio-cells" + - gpio-controller + +additionalProperties: false + +examples: + - | + #include + gpio@10060000 { + compatible = "sifive,fu540-c000-gpio", "sifive,gpio0"; + interrupt-parent = <&plic>; + interrupts = <7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22>; + reg = <0x0 0x10060000 0x0 0x1000>; + clocks = <&tlclk PRCI_CLK_TLCLK>; + gpio-controller; + #gpio-cells = <2>; + interrupt-controller; + #interrupt-cells = <2>; + }; + +... From patchwork Wed Nov 20 06:59:42 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yash Shah X-Patchwork-Id: 11253303 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9777C14E5 for ; Wed, 20 Nov 2019 06:59:48 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 729582245B for ; Wed, 20 Nov 2019 06:59:48 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="GcFqp4NK"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=sifive.com header.i=@sifive.com header.b="rYhNFu5z" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 729582245B Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=sifive.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-riscv-bounces+patchwork-linux-riscv=patchwork.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:References: Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=dkawTH6A2OTT1mXmHwINXCJbix0BA2AsyAxLATtfVgs=; b=GcFqp4NKl7cFg9 F2tHbmdL0HyEmFKw7O1iZ/utJ5XRubK0KwUwHO6xfQ8WAADky2ZsmQI+cO8ex9xadEkkYTV9KScb8 mby8aSK/HybOkRPennyVub4XeVOmftqNNI/u4J9m9WSTAA7pLWnvM4esPOFqqE61qusnPqqki/NTG BjWFgiXXk8mr3BFlI/3NesukRnrxy8KlB/5UySMfbKx1HNqnwlIIJU+vWxDNBSjjLTuOwNze3x6WP 059JEwogXMc0hbdkT5oP5sHCsWNMrVLZ6wYImhk2za88OCMUIuVw+BayPinCXiGQaIIPt8Mv0+HKA 62TLoIwcL4R89GAcDMSA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1iXJxr-0004At-BP; Wed, 20 Nov 2019 06:59:47 +0000 Received: from mail-eopbgr740053.outbound.protection.outlook.com ([40.107.74.53] helo=NAM01-BN3-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1iXJxo-00049u-8c for linux-riscv@lists.infradead.org; Wed, 20 Nov 2019 06:59:46 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fBtpIfx/nfi69C8xH8rmU2kOW/OokNaS6aUSTbV4ZCfZRljv/CAM/nMNO+3UUoJ2GGA0HRsVa11DwdfOAemy//HrTQPQl+7xi9IoTzNz+7WD18A7zmXD7RAwyzSdLJ24HB0jZ6a31Luq6sss+4aAkQCsnAkQhwC8woMm+oFoBAhOmaQfAiCaWZBOg+u2HZvafs5aAe37Z/t/riPXoqklapBygjGljmX4AVL4fYAfOBesuaJ6UoJ8zD7utjObBkuZm/3pcF4Ltsmj8vAGuPoSP/nJTurPUdGmU8QDFJyuvoa9VQmBxGzx5PUTVRRPBtQUPxGMOz/AWqBjbH2qEmC9yA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IAcKBpV3Htwgn7F/RHYKPBRsx8XBkETN5f60QQms1Dk=; b=CDR3MTbGXGUMkJRXCM4jKYYBTWsgtflSwqih8hEMABLYdwYIqck8df92gKUl2+xPXziv6xTYkR0LPIBNUmLIp+9hqBJtj9yGwHL8J/D8ZDfH5dkMQRuC4PhwENQ9MWHXUfpLA6Gg1Tl2uOjtrqiF4JOd2iQJBB4gNIauxk7VY2mduTtcPLpC6+MFSDeAeFkNxGQd/5WbMf5+pf/AiXlLYmJ8ecda4KHQBsWWIxD/6FofVykUomkKqB4aSdS876zINVaqDBDIArS2gVNLGer6PI2mIg9+FXiM2PPjSIHB4804VGwWOHYw0kFzD447q4Oj9OkKMZGqRcQ/1TkMFbCpoQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=sifive.com; dmarc=pass action=none header.from=sifive.com; dkim=pass header.d=sifive.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IAcKBpV3Htwgn7F/RHYKPBRsx8XBkETN5f60QQms1Dk=; b=rYhNFu5zy4PFOVs8zbDZcGWhJRvhtlhHkIAF71mPVyWmwhPO/BdmODBi2sfxaAAslWMschTC7wVMyEajh4pAr1QJ2wUTMvu/qLVzx37aKlUw2kCe5mIlE+2B2Mq7eB4JJn5YDdyjLepKxFqUKLInPkWnA5vxZXcSYItV6alo+aY= Received: from CH2PR13MB3368.namprd13.prod.outlook.com (52.132.246.90) by CH2PR13MB3415.namprd13.prod.outlook.com (52.132.246.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2474.8; Wed, 20 Nov 2019 06:59:42 +0000 Received: from CH2PR13MB3368.namprd13.prod.outlook.com ([fe80::853e:1256:311e:d29]) by CH2PR13MB3368.namprd13.prod.outlook.com ([fe80::853e:1256:311e:d29%7]) with mapi id 15.20.2474.015; Wed, 20 Nov 2019 06:59:42 +0000 From: Yash Shah To: "linus.walleij@linaro.org" , "bgolaszewski@baylibre.com" , "robh+dt@kernel.org" , "mark.rutland@arm.com" , "palmer@dabbelt.com" , "Paul Walmsley ( Sifive)" Subject: [PATCH v2 4/5] gpio: sifive: Add GPIO driver for SiFive SoCs Thread-Topic: [PATCH v2 4/5] gpio: sifive: Add GPIO driver for SiFive SoCs Thread-Index: AQHVn3AVOu1YvEqrSUK2kxGeF7Rovw== Date: Wed, 20 Nov 2019 06:59:42 +0000 Message-ID: <1574233128-28114-5-git-send-email-yash.shah@sifive.com> References: <1574233128-28114-1-git-send-email-yash.shah@sifive.com> In-Reply-To: <1574233128-28114-1-git-send-email-yash.shah@sifive.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: LO2P265CA0208.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:9e::28) To CH2PR13MB3368.namprd13.prod.outlook.com (2603:10b6:610:2c::26) authentication-results: spf=none (sender IP is ) smtp.mailfrom=yash.shah@sifive.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.7.4 x-originating-ip: [114.143.65.226] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: c5e9b2fa-a74f-40e4-a3e0-08d76d8737a3 x-ms-traffictypediagnostic: CH2PR13MB3415: x-ld-processed: 22f88e9d-ae0d-4ed9-b984-cdc9be1529f1,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2733; x-forefront-prvs: 02272225C5 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(6029001)(39840400004)(376002)(366004)(136003)(396003)(346002)(199004)(189003)(486006)(71200400001)(316002)(8676002)(6636002)(71190400001)(7416002)(8936002)(25786009)(99286004)(2906002)(54906003)(52116002)(76176011)(50226002)(2501003)(478600001)(110136005)(66066001)(86362001)(36756003)(81156014)(81166006)(386003)(6506007)(26005)(4326008)(102836004)(5660300002)(6512007)(476003)(446003)(11346002)(6486002)(186003)(2616005)(6116002)(3846002)(7736002)(305945005)(6436002)(66476007)(66446008)(66946007)(66556008)(14444005)(44832011)(64756008)(107886003)(256004)(14454004); DIR:OUT; SFP:1101; SCL:1; SRVR:CH2PR13MB3415; H:CH2PR13MB3368.namprd13.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: sifive.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: s9qBylCBdRLousmUGLWEDXaIgqFaqGx2DImm5OfCRdjPMWI7F0A/YMLTGjduEmLyKr8DsqtHKgZrn14R6fGdoJFAfIL0SGJfIo0L4rO1t/FQ/P+8uavo5Yivrh6odLft+K6zCZNvSLsrEvJoSeto9flDh4rvup3DBPTuW62xNy7EXu/Rg/1ebSCksdCKD8QMzWINcafjbEboz9ruXBx8VCY/K4KqFsmhvpYfcRxx4faJv+5KQw1PMEUsdCTWGpIA/I6YLWC3QWLFZnhDKb1iL4V2omC/sMMPjscUfAuJfGxaT1D6YqWqx2RHxghxThaU+8qfhgcTx80+urPAFFOtWoDo6IfIiFU9lz0AoYE2lz7AFNZHcexM6S0GwQ7mra4zCHBKQfycYyU25/yKhzJ6Vin21kaR7/U2grZokppyzFYHZ0FXB4rOcpAQODkvBCNh MIME-Version: 1.0 X-OriginatorOrg: sifive.com X-MS-Exchange-CrossTenant-Network-Message-Id: c5e9b2fa-a74f-40e4-a3e0-08d76d8737a3 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Nov 2019 06:59:42.0606 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 22f88e9d-ae0d-4ed9-b984-cdc9be1529f1 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: +p4FfUBtLsVxwQ7F2sZ7fReiFfau3QUlc836E6EztLgWHOiBZoA3y8GOCZpf6oM1zejf7aFFVwHwvz3IL8xqRw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR13MB3415 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20191119_225944_376290_7A9EF105 X-CRM114-Status: GOOD ( 14.23 ) X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.2 on bombadil.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [40.107.74.53 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "devicetree@vger.kernel.org" , "aou@eecs.berkeley.edu" , "jason@lakedaemon.net" , "linux-gpio@vger.kernel.org" , "maz@kernel.org" , "linux-kernel@vger.kernel.org" , "atish.patra@wdc.com" , Yash Shah , Sagar Kadam , "tglx@linutronix.de" , "bmeng.cn@gmail.com" , "linux-riscv@lists.infradead.org" , Sachin Ghadi Sender: "linux-riscv" Errors-To: linux-riscv-bounces+patchwork-linux-riscv=patchwork.kernel.org@lists.infradead.org Adds the GPIO driver for SiFive RISC-V SoCs. Signed-off-by: Wesley W. Terpstra [Atish: Various fixes and code cleanup] Signed-off-by: Atish Patra Signed-off-by: Yash Shah --- drivers/gpio/Kconfig | 9 ++ drivers/gpio/Makefile | 1 + drivers/gpio/gpio-sifive.c | 256 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 266 insertions(+) create mode 100644 drivers/gpio/gpio-sifive.c diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig index 38e096e..05e8a41 100644 --- a/drivers/gpio/Kconfig +++ b/drivers/gpio/Kconfig @@ -453,6 +453,15 @@ config GPIO_SAMA5D2_PIOBU The difference from regular GPIOs is that they maintain their value during backup/self-refresh. +config GPIO_SIFIVE + bool "SiFive GPIO support" + depends on OF_GPIO + select GPIO_GENERIC + select GPIOLIB_IRQCHIP + select REGMAP_MMIO + help + Say yes here to support the GPIO device on SiFive SoCs. + config GPIO_SIOX tristate "SIOX GPIO support" depends on SIOX diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile index d2fd19c..bf7984e 100644 --- a/drivers/gpio/Makefile +++ b/drivers/gpio/Makefile @@ -121,6 +121,7 @@ obj-$(CONFIG_ARCH_SA1100) += gpio-sa1100.o obj-$(CONFIG_GPIO_SAMA5D2_PIOBU) += gpio-sama5d2-piobu.o obj-$(CONFIG_GPIO_SCH311X) += gpio-sch311x.o obj-$(CONFIG_GPIO_SCH) += gpio-sch.o +obj-$(CONFIG_GPIO_SIFIVE) += gpio-sifive.o obj-$(CONFIG_GPIO_SIOX) += gpio-siox.o obj-$(CONFIG_GPIO_SODAVILLE) += gpio-sodaville.o obj-$(CONFIG_GPIO_SPEAR_SPICS) += gpio-spear-spics.o diff --git a/drivers/gpio/gpio-sifive.c b/drivers/gpio/gpio-sifive.c new file mode 100644 index 0000000..02666ae --- /dev/null +++ b/drivers/gpio/gpio-sifive.c @@ -0,0 +1,256 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2019 SiFive + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define GPIO_INPUT_VAL 0x00 +#define GPIO_INPUT_EN 0x04 +#define GPIO_OUTPUT_EN 0x08 +#define GPIO_OUTPUT_VAL 0x0C +#define GPIO_RISE_IE 0x18 +#define GPIO_RISE_IP 0x1C +#define GPIO_FALL_IE 0x20 +#define GPIO_FALL_IP 0x24 +#define GPIO_HIGH_IE 0x28 +#define GPIO_HIGH_IP 0x2C +#define GPIO_LOW_IE 0x30 +#define GPIO_LOW_IP 0x34 +#define GPIO_OUTPUT_XOR 0x40 + +#define MAX_GPIO 32 +#define SIFIVE_GPIO_IRQ_OFFSET 7 + +struct sifive_gpio { + void __iomem *base; + struct gpio_chip gc; + struct regmap *regs; + u32 enabled; + unsigned int trigger[MAX_GPIO]; + unsigned int irq_parent[MAX_GPIO]; +}; + +static void sifive_set_ie(struct sifive_gpio *chip, unsigned int offset) +{ + unsigned long flags; + unsigned int trigger; + + spin_lock_irqsave(&chip->gc.bgpio_lock, flags); + trigger = (chip->enabled & BIT(offset)) ? chip->trigger[offset] : 0; + regmap_update_bits(chip->regs, GPIO_RISE_IE, BIT(offset), + (trigger & IRQ_TYPE_EDGE_RISING) ? BIT(offset) : 0); + regmap_update_bits(chip->regs, GPIO_FALL_IE, BIT(offset), + (trigger & IRQ_TYPE_EDGE_FALLING) ? BIT(offset) : 0); + regmap_update_bits(chip->regs, GPIO_HIGH_IE, BIT(offset), + (trigger & IRQ_TYPE_LEVEL_HIGH) ? BIT(offset) : 0); + regmap_update_bits(chip->regs, GPIO_LOW_IE, BIT(offset), + (trigger & IRQ_TYPE_LEVEL_LOW) ? BIT(offset) : 0); + spin_unlock_irqrestore(&chip->gc.bgpio_lock, flags); +} + +static int sifive_irq_set_type(struct irq_data *d, unsigned int trigger) +{ + struct gpio_chip *gc = irq_data_get_irq_chip_data(d); + struct sifive_gpio *chip = gpiochip_get_data(gc); + int offset = irqd_to_hwirq(d); + + if (offset < 0 || offset >= gc->ngpio) + return -EINVAL; + + chip->trigger[offset] = trigger; + sifive_set_ie(chip, offset); + return 0; +} + +static void sifive_irq_enable(struct irq_data *d) +{ + struct gpio_chip *gc = irq_data_get_irq_chip_data(d); + struct sifive_gpio *chip = gpiochip_get_data(gc); + int offset = irqd_to_hwirq(d) % MAX_GPIO; + u32 bit = BIT(offset); + unsigned long flags; + + irq_chip_enable_parent(d); + + /* Switch to input */ + gc->direction_input(gc, offset); + + spin_lock_irqsave(&gc->bgpio_lock, flags); + /* Clear any sticky pending interrupts */ + regmap_write(chip->regs, GPIO_RISE_IP, bit); + regmap_write(chip->regs, GPIO_FALL_IP, bit); + regmap_write(chip->regs, GPIO_HIGH_IP, bit); + regmap_write(chip->regs, GPIO_LOW_IP, bit); + spin_unlock_irqrestore(&gc->bgpio_lock, flags); + + /* Enable interrupts */ + assign_bit(offset, (unsigned long *)&chip->enabled, 1); + sifive_set_ie(chip, offset); +} + +static void sifive_irq_disable(struct irq_data *d) +{ + struct gpio_chip *gc = irq_data_get_irq_chip_data(d); + struct sifive_gpio *chip = gpiochip_get_data(gc); + int offset = irqd_to_hwirq(d) % MAX_GPIO; + + assign_bit(offset, (unsigned long *)&chip->enabled, 0); + sifive_set_ie(chip, offset); + irq_chip_disable_parent(d); +} + +static void sifive_irq_eoi(struct irq_data *d) +{ + struct gpio_chip *gc = irq_data_get_irq_chip_data(d); + struct sifive_gpio *chip = gpiochip_get_data(gc); + int offset = irqd_to_hwirq(d) % MAX_GPIO; + u32 bit = BIT(offset); + unsigned long flags; + + spin_lock_irqsave(&gc->bgpio_lock, flags); + /* Clear all pending interrupts */ + regmap_write(chip->regs, GPIO_RISE_IP, bit); + regmap_write(chip->regs, GPIO_FALL_IP, bit); + regmap_write(chip->regs, GPIO_HIGH_IP, bit); + regmap_write(chip->regs, GPIO_LOW_IP, bit); + spin_unlock_irqrestore(&gc->bgpio_lock, flags); + + irq_chip_eoi_parent(d); +} + +static struct irq_chip sifive_irqchip = { + .name = "sifive-gpio", + .irq_set_type = sifive_irq_set_type, + .irq_mask = irq_chip_mask_parent, + .irq_unmask = irq_chip_unmask_parent, + .irq_enable = sifive_irq_enable, + .irq_disable = sifive_irq_disable, + .irq_eoi = sifive_irq_eoi, +}; + +static int sifive_gpio_child_to_parent_hwirq(struct gpio_chip *gc, + unsigned int child, + unsigned int child_type, + unsigned int *parent, + unsigned int *parent_type) +{ + *parent_type = IRQ_TYPE_NONE; + *parent = child + SIFIVE_GPIO_IRQ_OFFSET; + return 0; +} + +static const struct regmap_config sifive_gpio_regmap_config = { + .reg_bits = 32, + .reg_stride = 4, + .val_bits = 32, + .fast_io = true, + .disable_locking = true, +}; + +static int sifive_gpio_probe(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + struct device_node *node = pdev->dev.of_node; + struct device_node *irq_parent; + struct irq_domain *parent; + struct gpio_irq_chip *girq; + struct sifive_gpio *chip; + struct resource *res; + unsigned long flags; + int ret, ngpio; + + chip = devm_kzalloc(dev, sizeof(*chip), GFP_KERNEL); + if (!chip) + return -ENOMEM; + + chip->base = devm_platform_ioremap_resource(pdev, 0); + if (IS_ERR(chip->base)) { + dev_err(dev, "failed to allocate device memory\n"); + return PTR_ERR(chip->base); + } + + chip->regs = devm_regmap_init_mmio(dev, chip->base, + &sifive_gpio_regmap_config); + if (IS_ERR(chip->regs)) + return PTR_ERR(chip->regs); + + ngpio = of_irq_count(node); + if (ngpio >= MAX_GPIO) { + dev_err(dev, "Too many GPIO interrupts (max=%d)\n", MAX_GPIO); + return -ENXIO; + } + + irq_parent = of_irq_find_parent(node); + if (!irq_parent) { + dev_err(dev, "no IRQ parent node\n"); + return -ENODEV; + } + parent = irq_find_host(irq_parent); + if (!parent) { + dev_err(dev, "no IRQ parent domain\n"); + return -ENODEV; + } + + ret = bgpio_init(&chip->gc, dev, 4, + chip->base + GPIO_INPUT_VAL, + chip->base + GPIO_OUTPUT_VAL, + NULL, + chip->base + GPIO_OUTPUT_EN, + chip->base + GPIO_INPUT_EN, + 0); + if (ret) { + dev_err(dev, "unable to init generic GPIO\n"); + return ret; + } + + spin_lock_irqsave(&chip->gc.bgpio_lock, flags); + /* Disable all GPIO interrupts before enabling parent interrupts */ + regmap_write(chip->regs, GPIO_RISE_IE, 0); + regmap_write(chip->regs, GPIO_FALL_IE, 0); + regmap_write(chip->regs, GPIO_HIGH_IE, 0); + regmap_write(chip->regs, GPIO_LOW_IE, 0); + spin_unlock_irqrestore(&chip->gc.bgpio_lock, flags); + chip->enabled = 0; + + chip->gc.base = -1; + chip->gc.ngpio = ngpio; + chip->gc.label = dev_name(dev); + chip->gc.parent = dev; + chip->gc.owner = THIS_MODULE; + girq = &chip->gc.irq; + girq->chip = &sifive_irqchip; + girq->fwnode = of_node_to_fwnode(node); + girq->parent_domain = parent; + girq->child_to_parent_hwirq = sifive_gpio_child_to_parent_hwirq; + girq->handler = handle_bad_irq; + girq->default_type = IRQ_TYPE_NONE; + + platform_set_drvdata(pdev, chip); + return gpiochip_add_data(&chip->gc, chip); +} + +static const struct of_device_id sifive_gpio_match[] = { + { .compatible = "sifive,gpio0" }, + { .compatible = "sifive,fu540-c000-gpio" }, + { }, +}; + +static struct platform_driver sifive_gpio_driver = { + .probe = sifive_gpio_probe, + .driver = { + .name = "sifive_gpio", + .of_match_table = of_match_ptr(sifive_gpio_match), + }, +}; +builtin_platform_driver(sifive_gpio_driver) From patchwork Wed Nov 20 06:59:54 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yash Shah X-Patchwork-Id: 11253305 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id C5B3014E5 for ; Wed, 20 Nov 2019 06:59:59 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id A39242245B for ; Wed, 20 Nov 2019 06:59:59 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="UBS7U++L"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=sifive.com header.i=@sifive.com header.b="kbYDpGR2" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A39242245B Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=sifive.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-riscv-bounces+patchwork-linux-riscv=patchwork.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:References: Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=ShefsYA7SwVdAzHrKPys6T2nvcy9evdL6A5V00BQATQ=; b=UBS7U++LqSpycz iNdfR5ITMSeXRwXCFyv+kgBlrGUdb++6pUIWb1fYQOcznFNaIMBc8yuVRaHLfw+0cwN0HntvjM9rf CxpFMK2UQJ36724P/AU+8N/jZWUsvbr/S23EhHZm/n40P1QC2XceeOziX4ALH9TIRx11EXe2NP59D wkaYOK1RmoelQQMJ9Ag3g7QtB+FbZZ0IffMcgmqd8QwQTS0owz1jlMktvxB9CIvzmj7rmlxTzsoWo pK8XrszGFR+KUzT0jG9ZiwG3jnBRloSkSSWpzFg8Ta1O6L4OeNRYE+oG3NSGsGOmYrUyQcuTb1XiA YISY7T067+3fU6lzzyxw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1iXJy2-0004FE-Ff; Wed, 20 Nov 2019 06:59:58 +0000 Received: from mail-eopbgr740071.outbound.protection.outlook.com ([40.107.74.71] helo=NAM01-BN3-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1iXJy0-0004Eg-Hz for linux-riscv@lists.infradead.org; Wed, 20 Nov 2019 06:59:57 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QudJtLN5gZkL0Q0uYE88gbELJwtZd2Lq0YDHcd9BB8SbXxGwAqB6c3LqEyYfzlxur0HzFDWHTZOtKblgUOlOfcK57U4XSfod4b2De9KnBJcT0qbAH522rBCWg9q6bXo2bonCz0pNnTSn13fdvYdKTB/zv/aAVefYdNwJbZxUnwzIaUYQsBRnjdboV0iY3wQV87U+jeMtDdVDIJYPp6amm+dV3gA+aP5WgB5b2gQ7ET4xav+cQz84eVJCoywWYI1lTzHJSTiX+3Z/gW3JU/OHK35slOqzXR6eIzjB13GviGT9InOcwaDH5vdOMjDeKPOnmiIbsTt/l9j8Sw7BHGHnag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=eZtNaULOgo5BlFOvij4pkR5P0UvZDV4dwCoW0GuDIds=; b=LhDPPfaH4YSezCfTnlfV1UnRgpj9keXsVJ6Hr2Qz77/w0c6cliYtURBZM60RTR8VEXAx5VcfRDbVXnQ1fLqf/sQcMr9Kd6a/jC8YlA7MZd8YZfvC2cV2TMvpns6jaA42Pz9RrJAyUqIRFYEe88BD6w/C2NDEdTZKlPQdXk05wc5uVzPXla6iPPCNd0uFd/G4P6LxSRT64T4biAgAStROHZ7bScptdfunyDVdoD4rKdgyD5ERMmLQXEDO9KS1clLwlCflULkSow27icVZA8f84JEovGIGXR2zSUAIYpwCwmAB0rwJPgfrJKmysM42u6NvT4QkO/KmlG3GpHOF5el1QQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=sifive.com; dmarc=pass action=none header.from=sifive.com; dkim=pass header.d=sifive.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=eZtNaULOgo5BlFOvij4pkR5P0UvZDV4dwCoW0GuDIds=; b=kbYDpGR2mYzCJMx0dHws+iexY+MThCW+0Zsb9MXLmYdwDr55/pATUjgkt81AnonPr6IsX4xLO1L1mbvSt6MpKUm7kh0asKQY71j8R93mZhNl49kUM/QPRGTUvDYm+fF3mweYEHMn1sbOxmUNAG1Pe7+YKFDn6e11gQKsDFBgzjU= Received: from CH2PR13MB3368.namprd13.prod.outlook.com (52.132.246.90) by CH2PR13MB3415.namprd13.prod.outlook.com (52.132.246.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2474.8; Wed, 20 Nov 2019 06:59:54 +0000 Received: from CH2PR13MB3368.namprd13.prod.outlook.com ([fe80::853e:1256:311e:d29]) by CH2PR13MB3368.namprd13.prod.outlook.com ([fe80::853e:1256:311e:d29%7]) with mapi id 15.20.2474.015; Wed, 20 Nov 2019 06:59:54 +0000 From: Yash Shah To: "linus.walleij@linaro.org" , "bgolaszewski@baylibre.com" , "robh+dt@kernel.org" , "mark.rutland@arm.com" , "palmer@dabbelt.com" , "Paul Walmsley ( Sifive)" Subject: [PATCH v2 5/5] riscv: dts: Add DT support for SiFive FU540 GPIO driver Thread-Topic: [PATCH v2 5/5] riscv: dts: Add DT support for SiFive FU540 GPIO driver Thread-Index: AQHVn3AcQeUBZ0Ytu0eVtL/jFebGtg== Date: Wed, 20 Nov 2019 06:59:54 +0000 Message-ID: <1574233128-28114-6-git-send-email-yash.shah@sifive.com> References: <1574233128-28114-1-git-send-email-yash.shah@sifive.com> In-Reply-To: <1574233128-28114-1-git-send-email-yash.shah@sifive.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: LO2P265CA0208.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:9e::28) To CH2PR13MB3368.namprd13.prod.outlook.com (2603:10b6:610:2c::26) authentication-results: spf=none (sender IP is ) smtp.mailfrom=yash.shah@sifive.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.7.4 x-originating-ip: [114.143.65.226] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 1f318d4e-c5fb-413e-ac20-08d76d873f38 x-ms-traffictypediagnostic: CH2PR13MB3415: x-ld-processed: 22f88e9d-ae0d-4ed9-b984-cdc9be1529f1,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3513; x-forefront-prvs: 02272225C5 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(6029001)(39850400004)(376002)(366004)(136003)(396003)(346002)(199004)(189003)(486006)(71200400001)(316002)(8676002)(6636002)(71190400001)(7416002)(8936002)(25786009)(99286004)(2906002)(54906003)(52116002)(76176011)(50226002)(2501003)(478600001)(110136005)(66066001)(86362001)(36756003)(81156014)(81166006)(386003)(6506007)(26005)(4326008)(102836004)(5660300002)(6512007)(476003)(446003)(11346002)(6486002)(186003)(2616005)(6116002)(3846002)(7736002)(305945005)(6436002)(66476007)(66446008)(66946007)(66556008)(14444005)(44832011)(64756008)(107886003)(256004)(14454004); DIR:OUT; SFP:1101; SCL:1; SRVR:CH2PR13MB3415; H:CH2PR13MB3368.namprd13.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: sifive.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Fvvcx2Ee1oXlgGkchxJfkVUnrIEuXl82YPIZVKWU+0ssqbhZuzIr5dF2/eAg02IpDIZpZdkn3FS4bu5jvLrdH0f44yQXVH6Y+jjVn/VeOd1iySg25Y6yA/4TYzz9x3MhAvg6gUj9W7VOAB7fv1G1JJaSbiQYJOYweeauVpfSb+YLXzm9j/hZ2TbfhQEpl/laZzUeeEDOobWf6yOUonhjCg49XUcEHjqLiuqTGmpoxtSUdfC0oxCej8FW+UCiW5EhoL8wpUn5HG+c/9TRx7AmG9fNkAcJQRC3c5QKPhFdihZpbLs4O4l2Zzct7chpXg1ll9+iK26wlY3ymTDWT2CQoRBAGWr3M9VjqwW0c4jY7yYIM59xjC7k4aHjdLyAV85cQl6mjaklT8xuGSPGuMX5FG85cZrXEiiOiYRie0uE5Y9fKIKVrRne1m2tFtyV86jc MIME-Version: 1.0 X-OriginatorOrg: sifive.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1f318d4e-c5fb-413e-ac20-08d76d873f38 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Nov 2019 06:59:54.7814 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 22f88e9d-ae0d-4ed9-b984-cdc9be1529f1 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: RVZ7l/Xxvn6s7QRaWf3FMKOVCS9bzXtpmmTGRpSS8WvAOYwJYSYkuD276z0SPm3fw9MNzZaEYS/o7QzBguFNkQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR13MB3415 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20191119_225956_598952_82EED530 X-CRM114-Status: UNSURE ( 8.13 ) X-CRM114-Notice: Please train this message. X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.2 on bombadil.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [40.107.74.71 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "devicetree@vger.kernel.org" , "aou@eecs.berkeley.edu" , "jason@lakedaemon.net" , "linux-gpio@vger.kernel.org" , "maz@kernel.org" , "linux-kernel@vger.kernel.org" , "atish.patra@wdc.com" , Yash Shah , Sagar Kadam , "tglx@linutronix.de" , "bmeng.cn@gmail.com" , "linux-riscv@lists.infradead.org" , Sachin Ghadi Sender: "linux-riscv" Errors-To: linux-riscv-bounces+patchwork-linux-riscv=patchwork.kernel.org@lists.infradead.org Add the gpio DT node in SiFive FU540 soc-specific DT file. Enable the gpio node in HiFive Unleashed board-specific DT file. Signed-off-by: Yash Shah --- arch/riscv/boot/dts/sifive/fu540-c000.dtsi | 14 +++++++++++++- arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts | 4 ++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/arch/riscv/boot/dts/sifive/fu540-c000.dtsi b/arch/riscv/boot/dts/sifive/fu540-c000.dtsi index afa43c7..2d7c284 100644 --- a/arch/riscv/boot/dts/sifive/fu540-c000.dtsi +++ b/arch/riscv/boot/dts/sifive/fu540-c000.dtsi @@ -246,6 +246,18 @@ #pwm-cells = <3>; status = "disabled"; }; - + gpio: gpio@10060000 { + compatible = "sifive,fu540-c000-gpio", "sifive,gpio0"; + interrupt-parent = <&plic0>; + interrupts = <7 8 9 10 11 12 13 14 15 + 16 17 18 19 20 21 22>; + reg = <0x0 0x10060000 0x0 0x1000>; + gpio-controller; + #gpio-cells = <2>; + interrupt-controller; + #interrupt-cells = <2>; + clocks = <&prci PRCI_CLK_TLCLK>; + status = "disabled"; + }; }; }; diff --git a/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts b/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts index 88cfcb9..609198c 100644 --- a/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts +++ b/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts @@ -94,3 +94,7 @@ &pwm1 { status = "okay"; }; + +&gpio { + status = "okay"; +};