From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DF530357A3C for ; Wed, 19 Nov 2025 18:47:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763578056; cv=none; b=X96mj5Y9gUn0C9cgnCUIZpLWw0rw8gpoX1iopnGY8zLGYVtE5GSYR6GrvhnU99UJmPsOvgY9Q2+0nxroN+OsqkBPTssf9PK918mGFYUFE8DRbcXUPE4uaf+XlwTlGgtBcOoVDsIVM/51l+csjSnk9cjWnPDMr06ywPpULWdIEHw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763578056; c=relaxed/simple; bh=+hRqRvA5Ob6QZcAxsY5uZZs5qvLXUDj57wjaBm65mbM=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=CjRYK4UBfoIR7B4y5PH7DpY28cgeR3a6UXgWPPvFgS5uZBbwHTqG+hnKRfMhw62Fiq6llJTQUW46IqiQjFINqiBb24mNJz9GPbovdcM0YEqNChNvpr3qKj6oG6FiKe/OofzolF5a7Zce66/zlA+/jfaldWceqIkFKPuNI3xE9nI= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=YTo+lTKo; arc=none smtp.client-ip=209.85.128.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="YTo+lTKo" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-4779cc419b2so953085e9.3 for ; Wed, 19 Nov 2025 10:47:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763578043; x=1764182843; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=CmYSXdfN2Ja/nm2Msv1+BGjsxCvmxF+b0Biwj6Rcb2Q=; b=YTo+lTKoxd3FdmeVqyfLEfzjm81Hg5ZMNaAcj2hAaCFePLaSxMOvTzsFuJSA4Z/cpB qPwBDi+Pz8/ToSJzDvH6ErjtmE5pGMaXBqIDDGbBEiElPNcBfqbmReIDHm66rPEdYNHp 4ToityM/qUBwcqfRg/bd5vNrVEozBOlO02iwnaZ5FGh3W5HZ/50X9CvYDXav8jV6log0 F7Dcbbk7gqhOksRJ27g8NOAKymQ6OIRntn9B8Px//ymGX+VrM89owZnHpYS4j6mVo25A 5dq/xRBrZEC1hXQ0UB2ZUAb1Q6KrEhmXQJbhJ5P3R2ydRRbT6ChDKoNGxxBxGysRzdUq pEHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763578043; x=1764182843; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=CmYSXdfN2Ja/nm2Msv1+BGjsxCvmxF+b0Biwj6Rcb2Q=; b=axdTg3wV5MjWPCNiOf+QwEUjaInaCUb1kSdtxUz6DmSOLUsrSyQCH1QTOfNM39n46o IakjtxIm06/GymWMYvDKMs0syrlZWHlpwPVgbc1SKEGMyWTx0oSCHVQb37xnRM9dM94y b5LdsL42U7Sc/C9RST4zvlCCS23HjNXFfzqbzGXnF95MCSiAK0Q1Q5mHvmKlHAnnknTH fMFwqtzb06VM0TZAZhWmysKAlL1HkyBpxZ9rY6l8ewgmg8WC1y6VVmY9EVLhk9UZD3tv vYCr3gHtQHPCh2at/M41bc2gDxC1MZpkE9RXRhHJmOQKCJqtv1rv8n2hAfyiNKwkV/5A lb1Q== X-Gm-Message-State: AOJu0YzjXcsqydpBCWH9lbLsRoqa0we9h9NLKllTT2nPaiv0lrlSHOlq kksfhBO+V/joIyxTuWX7Oft59GhUBXkmWPfvlvLeHadZd63BWUiM01v+HFlPdZbK X-Gm-Gg: ASbGncuUR6+jxWkHERztSh1J3mSZsKhIQqU38tC6aTJUAryaasY1KW/WKIsQVGsMVkI Vc68EYILEi6EwInvEwGoTz2Ul8ziUAQV/EWv1arl7WfpbCwRsgKsSio5Zw6vLLXcNQYVBFgd9Qa grh4a6lgSFgEJjUs4jtFzg5G3rfr/xo0VxhY6t1ifqVczFmFz6gU4hjjnvCBXSp7jP16k34ylVF 2QhzUrkOdVHUUeP+eOx00mOuS9sCa0d5dTmXgmzXvV2aF4AmCgdPWZjPMjuHN7TRZ1DgJLV+neO TrAwcmZ2toLGfG/Owy4D1GepBZeegHJ4ICvTqpGFBCDdrLPwp4k8G4MrZ6UeStRUH60CYeAVOPZ G84zYByDJjV8kDt1D40bKsm0WItXRG06+VwRTIneDipbgveAknnG6K5B7HGUvy62buz+4cAX2TG fyyZgaFKxirSKulf3EhsG3uZHe5XzBH5Bw7x+qI/2cn+zBCZJGLeSYN7Nzo2SSk5+nPsgITdLx6 oOT9cd+eC8wvLktKnIiggdgnq2GESW9C90= X-Google-Smtp-Source: AGHT+IFnLZhy+yX/aZGJYa09bejnAMrPid7rEcBMkFMdth51macEXUw6ZxkmvFTNhRjmgTb5LJTjzw== X-Received: by 2002:a05:600c:1d05:b0:477:63a4:88fe with SMTP id 5b1f17b1804b1-477b8a5189cmr3256465e9.2.1763578042850; Wed, 19 Nov 2025 10:47:22 -0800 (PST) Received: from iris-Ian.fritz.box (p200300eb5f27c400b58af32dfc3cbd97.dip0.t-ipconnect.de. [2003:eb:5f27:c400:b58a:f32d:fc3c:bd97]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477b82e8ea6sm4909795e9.8.2025.11.19.10.47.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Nov 2025 10:47:22 -0800 (PST) From: iansdannapel@gmail.com To: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-fpga@vger.kernel.org, mdf@kernel.org, yilun.xu@intel.com, trix@redhat.com, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, heiko@sntech.de, neil.armstrong@linaro.org, mani@kernel.org, kever.yang@rock-chips.com, dev@kael-k.io, iansdannapel@gmail.com Subject: [PATCH v5 0/3] Add Efinix FPGA SPI programming support Date: Wed, 19 Nov 2025 19:47:03 +0100 Message-ID: <20251119184708.566461-1-iansdannapel@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Ian Dannapel Hi all, This is the v5 version of the series that adds support for programming Efinix FPGAs over SPI using the fpga-mgr subsystem. The driver implements the passive-serial configuration protocol and allows loading full bitstreams via an SPI controller. The binding describes the Efinix Trion SPI interface and documents the DT requirements for enabling the driver. All v4 remarks should now be adressed. Please let me know if further adjustments are needed. Testing: - Verified on an Efinix Trion T13 custom board - Tested full bitstream configuration over SPI at 25 MHz Changelog since v4: dt-bindings: fpga: Add Efinix SPI programming bindings: - efinix,spi.yaml: remove unused binding efinix,fpga-spi - Rename efinix,spi.yaml to match a compatible (efinix,trion-spi.yaml) - efinix,trion-spi.yaml: remove notes not relevant to hardware description fpga-mgr: Add Efinix SPI programming driver - efinix-spi.c: improve driver description header - efinix-spi.c: replace hardcoded numbers with macros - efinix-spi.c: use spi_message_init_with_transfers instead of spi message init + tail - efinix-spi.c: rework write logic to avoid deasserting the cs or resetting the hardware in between write chunks Ian Dannapel (3): dt-bindings: vendor-prefix: Add prefix for Efinix, Inc. dt-bindings: fpga: Add Efinix SPI programming bindings fpga-mgr: Add Efinix SPI programming driver .../bindings/fpga/efinix,trion-spi.yaml | 77 ++++++ .../devicetree/bindings/vendor-prefixes.yaml | 2 + drivers/fpga/Kconfig | 7 + drivers/fpga/Makefile | 1 + drivers/fpga/efinix-spi.c | 256 ++++++++++++++++++ 5 files changed, 343 insertions(+) create mode 100644 Documentation/devicetree/bindings/fpga/efinix,trion-spi.yaml create mode 100644 drivers/fpga/efinix-spi.c -- 2.43.0