mbox series

[v6,0/3] Migrate the PCIe-IDIO-24 and WS16C48 GPIO drivers to the regmap API

Message ID cover.1680708357.git.william.gray@linaro.org
Headers show
Series Migrate the PCIe-IDIO-24 and WS16C48 GPIO drivers to the regmap API | expand

Message

William Breathitt Gray April 5, 2023, 3:45 p.m. UTC
Changes in v6:
 - Wrap lines to 80 characters rather than 100 for set_type_config()
 - Remove regmap_config max_register lines as superfluous
 - Enable use_raw_spinlock to prevent deadlocks when running -rt kernels
 - Check regmap_update_bit() ret value before goto exit_unlock
 - Rename exit_early label to the more descriptive exit_unlock
 - Add sparse annotations for lock acquire/release in
   ws16c48_handle_pre_irq() and ws16c48_handle_post_irq()
 - Explicitly add 0 to WS16C48_ENAB in ws16c48_irq_init_hw() for sake of
   symmetry to match the other WS16C48_ENAB operations 
Changes in v5:
 - Refactor for map parameter removal from handle_mask_sync()
 - Cleanups and line wrappings to 100 characters rather than 80
 - Adjust to change mutex/spinlock_t type locks to raw_spin_lock_t type
 - Remove pex8311_intcsr table configurations as superfluous
 - Adjust to set pex8311_intcsr_regmap_config reg_base to
   PLX_PEX8311_PCI_LCS_INTCSR
 - Rename PAGE_FIELD_PAGE_* defines to POL_PAGE, ENAB_PAGE, and
   INT_ID_PAGE
Changes in v4:
 - Allocate idio24gpio before using it in idio_24_probe()
Changes in v3:
 - Drop map from set_type_config() parameter list; regmap can be passed
   by irq_drv_data instead
 - Adjust idio_24_set_type_config() for parameter list
 - Add mutex to prevent clobbering the COS_ENABLE register when masking
   IRQ and setting their type configuration
Changes in v2:
 - Simplify PCIe-IDIO-24 register offset defines to remove superfluous
   arithmetic
 - Check for NULL pointer after chip->irq_drv_data allocation
 - Set gpio_regmap drvdata and use gpio_regmap_get_drvdata() to get the
   regmap in idio_24_reg_map_xlate()

The regmap API supports IO port accessors so we can take advantage of
regmap abstractions rather than handling access to the device registers
directly in the driver.

A patch to pass irq_drv_data as a parameter for struct regmap_irq_chip
set_type_config() is included. This is needed by the
idio_24_set_type_config() and ws16c48_set_type_config() callbacks in
order to update the type configuration on their respective devices.

This patchset depends on the "Drop map from handle_mask_sync()
parameters" patchset [0].

[0] https://lore.kernel.org/all/cover.1679323449.git.william.gray@linaro.org/

William Breathitt Gray (3):
  regmap: Pass irq_drv_data as a parameter for set_type_config()
  gpio: pcie-idio-24: Migrate to the regmap API
  gpio: ws16c48: Migrate to the regmap API

 drivers/base/regmap/regmap-irq.c |   8 +-
 drivers/gpio/Kconfig             |   6 +
 drivers/gpio/gpio-pcie-idio-24.c | 677 +++++++++++--------------------
 drivers/gpio/gpio-ws16c48.c      | 552 +++++++++----------------
 include/linux/regmap.h           |   6 +-
 5 files changed, 447 insertions(+), 802 deletions(-)


base-commit: 7b59bdbc3965ca8add53e084af394c13a2be22a8
prerequisite-patch-id: cd19046150b7cff1be4ac7152198777aa960a3df
prerequisite-patch-id: bd3e3830d9ce4f3876a77483364d7190b7fdffa7

Comments

Mark Brown April 6, 2023, 5:23 p.m. UTC | #1
On Wed, Apr 05, 2023 at 11:45:42AM -0400, William Breathitt Gray wrote:
> Allow the struct regmap_irq_chip set_type_config() callback to access
> irq_drv_data by passing it as a parameter.

The following changes since commit e8d018dd0257f744ca50a729e3d042cf2ec9da65:

  Linux 6.3-rc3 (2023-03-19 13:27:55 -0700)

are available in the Git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap.git tags/regmap-set-type-irq-drv-data

for you to fetch changes up to 7697c64b9e4908196f0ae68aa6d423dd40607973:

  regmap: Pass irq_drv_data as a parameter for set_type_config() (2023-04-05 17:19:24 +0100)

----------------------------------------------------------------
regmap: Pass irq_drv_data as a parameter for set_type_config()

Allow callbacks to access irq_drv_data.

----------------------------------------------------------------
William Breathitt Gray (1):
      regmap: Pass irq_drv_data as a parameter for set_type_config()

 drivers/base/regmap/regmap-irq.c | 8 +++++---
 include/linux/regmap.h           | 6 ++++--
 2 files changed, 9 insertions(+), 5 deletions(-)