[PATCH v5 0/4] gpio: mpsse: add support for bryx brik

Mary Strodl posted 4 patches 2 months ago
drivers/gpio/gpio-mpsse.c | 229 ++++++++++++++++++++++++++++++++++++--
1 file changed, 217 insertions(+), 12 deletions(-)
[PATCH v5 0/4] gpio: mpsse: add support for bryx brik
Posted by Mary Strodl 2 months ago
Hey all,

This series adds support for the Bryx Radio Interface Kit to the gpio-mpsse
driver

Here are some of the major differences compared to the sealevel device this
driver currently supports:
* Uses an FT232HL chip instead of FT2232HL (this is easy, just populates as
  only one interface rather than two)
* There are only two exposed GPIO lines, and each is hardware restricted to
  a particular direction.
* This is an external device, therefore hotpluggable. This caused me to
  discover the race condition in the polling worker teradown, which
  accounts for the bulk of the changes.

Other than the locking changes, this series also adds a generic "quirk"
system like I have seen in similar drivers for providing device-specific
line labels and direction restrictions. This should enable easier
integration of new devices in the future.

Lastly, I changed the device label format to expose useful device
information like the device serial number, vid, and pid to userspace. If
there is a better way to get this information (perhaps through udev?), I'm
all ears.

I also noticed a little bug where gpio_mpsse_direction_input wasn't
actually propagating errors, so I have a quick fix for that too.

Changes since v4:
* Reviewed-by: Dan Carpenter <dan.carpenter@linaro.org>
* Reviewed-by: Linus Walleij <linus.walleij@linaro.org>

Changes since v3:
* Refactor supported line quirk logic (1 is supported now)

Changes since v2:
* No more RCU, just use a spinlock to protect the stuff that matters
* Now using _safe variants of list iteration helpers where appropriate
* Use GFP_NOWAIT kmalloc flag
* Move repeated code into new gpio_mpsse_stop_all_except method
* Move little bugfix for direction_input error propagation into its own
  patch

Changes since v1:
* Break out into separate patches
* Fix RCU/concurrency soundness mistakes I noticed (list add/del were not
  protected by a lock, so now there is a separate spin lock, which we can
  use in irq context)
* Use guards for rcu read locks

Let me know what you think!

Mary Strodl (4):
  gpio: mpsse: propagate error from direction_input
  gpio: mpsse: ensure worker is torn down
  gpio: mpsse: add quirk support
  gpio: mpsse: support bryx radio interface kit

 drivers/gpio/gpio-mpsse.c | 229 ++++++++++++++++++++++++++++++++++++--
 1 file changed, 217 insertions(+), 12 deletions(-)

-- 
2.47.0
Re: [PATCH v5 0/4] gpio: mpsse: add support for bryx brik
Posted by Bartosz Golaszewski 1 month, 3 weeks ago
From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>


On Tue, 14 Oct 2025 09:35:26 -0400, Mary Strodl wrote:
> Hey all,
> 
> This series adds support for the Bryx Radio Interface Kit to the gpio-mpsse
> driver
> 
> Here are some of the major differences compared to the sealevel device this
> driver currently supports:
> * Uses an FT232HL chip instead of FT2232HL (this is easy, just populates as
>   only one interface rather than two)
> * There are only two exposed GPIO lines, and each is hardware restricted to
>   a particular direction.
> * This is an external device, therefore hotpluggable. This caused me to
>   discover the race condition in the polling worker teradown, which
>   accounts for the bulk of the changes.
> 
> [...]

Applied, thanks!

[1/4] gpio: mpsse: propagate error from direction_input
      https://git.kernel.org/brgl/linux/c/523ebae1cdcf8056dfe090f31284d1e5f5d1b73f
[2/4] gpio: mpsse: ensure worker is torn down
      https://git.kernel.org/brgl/linux/c/179ef1127d7a4f09f0e741fa9f30b8a8e7886271
[3/4] gpio: mpsse: add quirk support
      https://git.kernel.org/brgl/linux/c/f13b0f72af238d63bb9a2e417657da8b45d72544
[4/4] gpio: mpsse: support bryx radio interface kit
      https://git.kernel.org/brgl/linux/c/03ac8183c9a5f0a635184d3f4eceb47480fcd4a7

Best regards,
-- 
Bartosz Golaszewski <bartosz.golaszewski@linaro.org>