From: Anatolij Gustschin <agust@denx.de>
To: linux-usb@vger.kernel.org, linux-spi@vger.kernel.org,
linux-fpga@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: gregkh@linuxfoundation.org, broonie@kernel.org, atull@kernel.org,
mdf@kernel.org
Subject: [PATCH v3 0/3] Add support for ARRI FPGA configuration
Date: Tue, 27 Nov 2018 18:54:35 +0100 [thread overview]
Message-ID: <20181127175438.16116-1-agust@denx.de> (raw)
This series adds drivers and FPGA manager support required
for FT232H based ARRI FPGA configuration adapters.
Patch 1/3 adds FT232H interface driver (for ARRI USB PIDs)
implementing commonly used FTDI USB transfer operations and
ACBUS/MPSSE GPIO controllers. Depending on USB PIDs it creates
platform devices for MPSSE SPI bus with attached SPI slaves
or platform devices for ARRI FPP FPGA manager.
Patch 2/3 adds MPSSE SPI controller driver which registers
an FTDI USB-SPI bus with attached SPI slaves from description
in platform data, so existing SPI protocol drivers can be
used for these slave devices (in our case altera-ps-spi).
Via interface driver in patch 1/3 it is easily possible to add
support for other slave devices using custom USB PIDs (e.g.
spi-nor flash W25Q32 with m25p80 driver has beed used for
testing MPSSE SPI controller driver).
Patch 3/3 adds FPGA manager driver for ARRI FPP adapters for
FPGA configuration via Altera fast passive parallel interface.
Changes since v2:
Patch 1/3
- use unsigned type for baudrate and clk divider calculation
(don't mix signed/unsigned types)
- switch to unsigned int for 'encoded_divisor'
- use DIV_ROUND_CLOSEST() in ftdi_to_clkbits()
- update error messages in ftdi_convert_baudrate()
- update return code check of ftdi_to_clkbits()
- fix boolconv coccinelle warning
- add and use macro for MPSSE GPIOs number
- update struct mpsse_spi_platform_data to drop pin description
fields and add mpsse_spi_dev_data struct instead. This allows
easier pin description and init for multiple SPI devices with
multiple control pins. Pass pin description via platform_data
of spi_bus_info for esier IO pin init code in MPSSE driver.
Update spi_board_info table accordingly
- keep Makefile entry sorted
Patch 2/3
- keep Makefile entry sorted
- make the entire comment block a C++ one
- don't use magic number for the size of the lookup table
- use sizeof() instead of magic number for the buffer size
- rework gpio chip select function to use it as .set_cs()
- convert to use transfer_one instead of transfer_one_message
- update dev_*() to use MPSSE platform device prefix
- s/spi_master/spi_controller
- use u16 for chip_select vars and update dev_dbg format
- use unsigned type for index vars
- reduce arguments number for ftdi_spi_tx()/ftdi_spi_rx()
- fix ftdi_spi_tx() to send all buffer data correctly even if
the USB driver signals transfer of less data than requested
- update ftdi_spi_init_io() to differentiate between platform
data for devices using MPSSE I/O pins and other SPI devices
(e.g. using flash_platform_data, mmc_spi_platform_data, etc.).
This makes the driver more generic and allows using multiple
SPI slaves on the MPSSE bus
- reduce !xfer->len checks
Patch 3/3
fix 'specified bound 8 equals destination size' gcc 8 warning
Changes since v1:
Patch 1/3
- add myself as a maintainer for these drivers
- update copyright line to include 2018
- include required linux headers
- fix gcc 7.3.0 build warnings -Wunused-const-variable=
- make ftdi functions and spi_board_info struct static
- use KBUILD_MODNAME in drivers struct
- use dev_err() for error messages instead of dev_info()
- drop not needed output about number of used MPSSE pins
since it is constant (not configurable)
- remove ftdi function prototypes from header ft232h-intf.h
as these are not exported anymore
- update comments (don't use kernel-doc format as we do not
export symbols anymore and functions are "static")
Patch 2/3
- fix build breakage when building with ARCH=i386 allmodconfig
- add checks for ops->lock/ops->unlock presence in pdata
- update copyright line to include 2018
- remove printing numbers in parentheses (%d)
Patch 3/3
- update copyright line to include 2018
- add sysfs ABI documentation
Changes since initial version (MFD based):
- don't use MFD framework
- don't use original FT232H USB PID (it is too generic and collides
with existing ftdi_sio driver)
- don't add separate CBUS GPIO driver based on FT232H MFD device
- redesign/rework the drivers as described under [4]
- add basic FT232H interface driver under drivers/usb/misc/
- use custom reserved USB PIDs in the USB driver for adapter devices
- add notes about borrowed protocol code from libftdi to commit log
and header file
- add MPSSE SPI controller driver supporting USB-SPI bus with
dynamically added SPI slaves from description in platform data
(the initial attempt didn't include USB SPI bus support for PS-
SPI FPGA configuration via USB)
- rework FPP fpga manager driver based on new FT232H interface
driver and extend it according to CPLD changes for additional
support of new hardware revision B.
Anatolij Gustschin (3):
usb: misc: add driver for FT232H based FPGA configuration devices
spi: add FTDI MPSSE SPI controller driver
fpga: Add fpga manager driver for ARRI Altera FPP
.../ABI/testing/sysfs-driver-ftdi-fifo-fpp | 7 +
MAINTAINERS | 8 +
drivers/fpga/Kconfig | 7 +
drivers/fpga/Makefile | 1 +
drivers/fpga/ftdi-fifo-fpp.c | 594 +++++++
drivers/spi/Kconfig | 7 +
drivers/spi/Makefile | 1 +
drivers/spi/spi-ftdi-mpsse.c | 651 ++++++++
drivers/usb/misc/Kconfig | 9 +
drivers/usb/misc/Makefile | 1 +
drivers/usb/misc/ft232h-intf.c | 1467 +++++++++++++++++
include/linux/usb/ft232h-intf.h | 206 +++
12 files changed, 2959 insertions(+)
create mode 100644 Documentation/ABI/testing/sysfs-driver-ftdi-fifo-fpp
create mode 100644 drivers/fpga/ftdi-fifo-fpp.c
create mode 100644 drivers/spi/spi-ftdi-mpsse.c
create mode 100644 drivers/usb/misc/ft232h-intf.c
create mode 100644 include/linux/usb/ft232h-intf.h
--
2.17.1
next reply other threads:[~2018-11-27 17:54 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-27 17:54 Anatolij Gustschin [this message]
2018-11-27 17:54 ` [PATCH v3 1/3] usb: misc: add driver for FT232H based FPGA configuration devices Anatolij Gustschin
2018-11-27 17:54 ` [PATCH v3 2/3] spi: add FTDI MPSSE SPI controller driver Anatolij Gustschin
2018-12-05 10:25 ` Anatolij Gustschin
2018-11-27 17:54 ` [PATCH v3 3/3] fpga: Add fpga manager driver for ARRI Altera FPP Anatolij Gustschin
2018-12-05 9:50 ` Anatolij Gustschin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181127175438.16116-1-agust@denx.de \
--to=agust@denx.de \
--cc=atull@kernel.org \
--cc=broonie@kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=linux-fpga@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-spi@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=mdf@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).