From patchwork Wed Mar 13 22:57:34 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Charles Perry X-Patchwork-Id: 13591966 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 5126BC54E58 for ; Wed, 13 Mar 2024 22:58:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=lF7oNv9k/vTkFpmOrP1UigDusOU9MzFFJExYySA+iCs=; b=mKea7v8LKTUpu9 6blr8gGwXVFqJQDfUUZZtvePhqQ9XI5HvxmXKxpxcDtZaTcDTwT2Si5rJ5HmyswWYzt89FDB3k6qK etnfVOTWkD82jDR3un+QW+ySs8kgYnDygUUkzpsvSXB2+rx7OfCjGYMDSyNNA9+YIeuMenqb+5mhb nUI03mI4XZk2DcATvRTvVSaPW8zEQBQgvHoNuGbXH0gdhqMky7dOPYMkINcQjTzMDcE8Cer/VuOoq eumOAFbZq83Qx3AIBYbEDGTl/UVD3vqwKHYEb078A8y7k6E9DTmPTELWSIc+K7KFwCXmSUnz+w5xx jQiksTx7eCrfKs6juAJg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rkXY3-0000000CBxT-2HTl; Wed, 13 Mar 2024 22:58:11 +0000 Received: from mail.savoirfairelinux.com ([208.88.110.44]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rkXXz-0000000CBwB-2UE0 for linux-arm-kernel@lists.infradead.org; Wed, 13 Mar 2024 22:58:09 +0000 Received: from localhost (localhost [127.0.0.1]) by mail.savoirfairelinux.com (Postfix) with ESMTP id E42799C5407; Wed, 13 Mar 2024 18:58:05 -0400 (EDT) Received: from mail.savoirfairelinux.com ([127.0.0.1]) by localhost (mail.savoirfairelinux.com [127.0.0.1]) (amavis, port 10032) with ESMTP id GQK12bhKmEjB; Wed, 13 Mar 2024 18:58:04 -0400 (EDT) Received: from localhost (localhost [127.0.0.1]) by mail.savoirfairelinux.com (Postfix) with ESMTP id C84579C5408; Wed, 13 Mar 2024 18:58:04 -0400 (EDT) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.savoirfairelinux.com C84579C5408 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=savoirfairelinux.com; s=DFC430D2-D198-11EC-948E-34200CB392D2; t=1710370684; bh=97KZ5z74c3lbzDnakMs1DMShyFWjem5Wy7L0iY46aP4=; h=From:To:Date:Message-ID:MIME-Version; b=B/JbgPi3B/ukHDPSMrFnDvgwqK3lJvqOyu8EIVDTaUrb1ynXEF2Zk6iG/OI5/aJ5x k4STfR+WFK1UuRA+ujM6r0RVcgL8+KmB5bmFjIaxx8O4DAard1f7TIRZZUUC3r6GuJ EFtcVvivpVEYpvcx1MxlN4XObnep6xA9GWRj8p3P22kFq8jO88sljoJepZcRSom3ib IvriScrkGWZ5wRWNill/0pDDSKW34BRhjkhqSCJhFrpl7QPkPB6XMZPOAAQ4P5GqTF VP3ia043aqlj1kSo8Jsr7aV9ElrzyaRpTj/LdhY7m9ahs/k9H/YYWwXeZUxciValwf 3y6RbNjZfUDTQ== X-Virus-Scanned: amavis at mail.savoirfairelinux.com Received: from mail.savoirfairelinux.com ([127.0.0.1]) by localhost (mail.savoirfairelinux.com [127.0.0.1]) (amavis, port 10026) with ESMTP id L4cIaLZuadW8; Wed, 13 Mar 2024 18:58:04 -0400 (EDT) Received: from pcperry.mtl.sfl (unknown [192.168.51.254]) by mail.savoirfairelinux.com (Postfix) with ESMTPSA id 97A6E9C5407; Wed, 13 Mar 2024 18:58:04 -0400 (EDT) From: Charles Perry To: mdf@kernel.org Cc: avandiver@markem-imaje.com, bcody@markem-imaje.com, Charles Perry , Wu Hao , Xu Yilun , Tom Rix , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Michal Simek , linux-fpga@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v5 0/3] fpga: xilinx-selectmap: add new driver Date: Wed, 13 Mar 2024 18:57:34 -0400 Message-ID: <20240313225746.489253-1-charles.perry@savoirfairelinux.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240313_155807_946848_FD99747E X-CRM114-Status: GOOD ( 17.51 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hello, This patchset adds a new driver for the 7 series FPGA's SelectMAP interface. The SelectMAP interface shares a common GPIO protocol with the SPI interface which is already in the kernel (drivers/fpga/xilinx-spi.c). The approach proposed in this patchset is to refactor xilinx-spi.c into xilinx-core.c which would handle the common GPIO protocol. This is then used to build two drivers, the already existing xilinx-spi.c driver and a newly added xilinx-selectmap.c driver. The SelectMAP driver proposed only supports 8 bit mode. This is because the 16 and 32 bits mode have limitations with regards to compressed bitstream support as well as introducing endianness considerations. I'm testing xilinx-selectmap.c on a custom i.MX6 board connected to an Artix 7 FPGA. Flashing a 913K bitstream takes 0.44 seconds. Changes since v4: (from Yilun and Krzysztof review) * xilinx-core: use sizeof() instead of hardcoded immediate * xilinx-core: fix module compilation (EXPORT_SYMBOL_GPL, MODULE_LICENSE, MODULE_AUTHOR, MODULE_DESCRIPTION) * xilinx-core: add private/public qualifiers for struct xilinx_fpga_core * xilinx-spi: remove struct xilinx_spi_conf. This struct isn't needed as the struct spi_device* can be retrieved from the struct device*. * dt-bindings: remove usage of "_b" and "-b" for the new driver. We agreed that the spi and selectmap driver will use different bindings which will be handled by the driver core and that the legacy names will be used only for the spi compatible. * xilinx-core: select between prog/init and prog_b/init-b Changes since v3: (from Rob Herring review) * Fix an error in the DT binding example compatible. * Drop the renaming of "prog_b" to "prog" and "init-b" to "init". Patches 2 and 3 are removed. Changes since v2: * Inserted patch 2 and 3 which rename "prog_b" and "init-b" into "prog" and "init" for the SPI driver. * From Krzysztof Kozlowski review's: * Use more specific compatible names * Remove other missing occurences of the slave word missed in v2. * From Xu Yilun review's: * Fix vertical whitespace in get_done_gpio(). * Combine write() and write_one_dummy_byte() together. * Eliminate most of the xilinx_core_probe() arguments, the driver needs to populate those directly into the xilinx_fpga_core struct. Added some documentation to struct xilinx_fpga_core to clarify this. * Removed typedefs from xilinx-core.h. * Moved null checks in xilinx_core_probe() to first patch. * Move csi_b and rdwr_b out of xilinx_selectmap_conf as they are not used out of the probe function. Changes since v1: (from Krzysztof Kozlowski review's) * Use more conventional names for gpio DT bindings * fix example in DT bindings * add mc-peripheral-props.yaml to DT bindings * fix various formatting mistakes * Remove all occurences of the "slave" word. Charles Perry (3): fpga: xilinx-spi: extract a common driver core dt-bindings: fpga: xlnx,fpga-selectmap: add DT schema fpga: xilinx-selectmap: add new driver .../bindings/fpga/xlnx,fpga-selectmap.yaml | 86 +++++++ drivers/fpga/Kconfig | 12 + drivers/fpga/Makefile | 2 + drivers/fpga/xilinx-core.c | 238 ++++++++++++++++++ drivers/fpga/xilinx-core.h | 30 +++ drivers/fpga/xilinx-selectmap.c | 97 +++++++ drivers/fpga/xilinx-spi.c | 220 +--------------- 7 files changed, 478 insertions(+), 207 deletions(-) create mode 100644 Documentation/devicetree/bindings/fpga/xlnx,fpga-selectmap.yaml create mode 100644 drivers/fpga/xilinx-core.c create mode 100644 drivers/fpga/xilinx-core.h create mode 100644 drivers/fpga/xilinx-selectmap.c --- 2.43.0