Linux-GPIO Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH v3 00/10] gpio: dwapb: Refactor GPIO resources initialization
@ 2020-07-30 15:27 Serge Semin
  2020-07-30 15:27 ` [PATCH v3 01/10] dt-bindings: gpio: dwapb: Add ngpios property support Serge Semin
                   ` (10 more replies)
  0 siblings, 11 replies; 14+ messages in thread
From: Serge Semin @ 2020-07-30 15:27 UTC (permalink / raw)
  To: Hoan Tran, Linus Walleij, Bartosz Golaszewski
  Cc: Serge Semin, Serge Semin, Andy Shevchenko, Andy Shevchenko,
	Alexey Malahov, Pavel Parkhomenko, Rob Herring, linux-gpio,
	devicetree, linux-kernel

This series is about the DW APB GPIO device initialization procedure
cleaning up. First of all it has been discovered that having a
vendor-specific "snps,nr-gpios" property isn't only redundant but also
might be dangerous (see the commit log for details). Instead we suggest to
use the generic "ngpios" property to define a number of GPIOs each DW APB
GPIO controller port supports. Secondly seeing a tendency of the other
GPIO drivers getting converted to using the GPIO-lib-based IRQ-chip
interface this series provides a patch, which replaces the DW APB GPIO
driver Generic IRQ-chip implementation with the GPIO-lib IRQ-chip one.
Finally the DW APB GPIO device probe procedure is simplified by
converting the code to be using the device managed resources for the
reference clocks initialization, reset control assertion/de-assertion
and GPIO-chip registration.

Some additional cleanups like replacing a number of GPIOs literal with a
corresponding macro and grouping the IRQ handlers up in a single place of
the driver are also introduced in this patchset.

Link: https://lore.kernel.org/linux-gpio/20200723013858.10766-1-Sergey.Semin@baikalelectronics.ru/
Changelog v2:
- Replace gc->to_irq() with irq_find_mapping() method.
- Refactor dwapb_irq_set_type() method to directly set IRQ flow handler
  instead of using a temporary variable.
- Initialize GPIOlib IRQ-chip settings before calling request_irq()
  method.
- Add a notice regarding regression of commit 6a2f4b7dadd5 ("gpio:
  dwapb: use a second irq chip").
- Move the acpi_gpiochip_{request,free}_interrupts() methods invocation
  removal to a dedicated patch.
- Move GPIO-chip to_irq callback removal to a dedicated patch.
- Add a patch which replaces a max number of GPIO literals with a macro.
- Introduce dwapb_convert_irqs() method to convert the sparse parental
  IRQs array into an array of linearly distributed IRQs correctly
  perceived by GPIO-lib.

Link: https://lore.kernel.org/linux-gpio/20200730135536.19747-1-Sergey.Semin@baikalelectronics.ru
Changelog v3:
- Fix patches SoB's.
- Add Andy' Suggested-by to the patch: "gpio: dwapb: Add max GPIOs macro"
- Add blank lines to the IRQ-chip conversion commit message to make it
  more readable.
- Dynamically allocate memory for the IRQ-chip-related data.

Signed-off-by: Serge Semin <Sergey.Semin@baikalelectronics.ru>
Cc: Andy Shevchenko <andy.shevchenko@gmail.com>
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: Alexey Malahov <Alexey.Malahov@baikalelectronics.ru>
Cc: Pavel Parkhomenko <Pavel.Parkhomenko@baikalelectronics.ru>
Cc: Rob Herring <robh+dt@kernel.org>
Cc: linux-gpio@vger.kernel.org
Cc: devicetree@vger.kernel.org
Cc: linux-kernel@vger.kernel.org

Serge Semin (10):
  dt-bindings: gpio: dwapb: Add ngpios property support
  gpio: dwapb: Add ngpios DT-property support
  gpio: dwapb: Move MFD-specific IRQ handler
  gpio: dwapb: Add max GPIOs macro
  gpio: dwapb: Convert driver to using the GPIO-lib-based IRQ-chip
  gpio: dwapb: Discard GPIO-to-IRQ mapping function
  gpio: dwapb: Discard ACPI GPIO-chip IRQs request
  gpio: dwapb: Get reset control by means of resource managed interface
  gpio: dwapb: Get clocks by means of resource managed interface
  gpio: dwapb: Use resource managed GPIO-chip add data method

 .../bindings/gpio/snps,dw-apb-gpio.yaml       |   6 +
 drivers/gpio/Kconfig                          |   2 +-
 drivers/gpio/gpio-dwapb.c                     | 352 +++++++++---------
 include/linux/platform_data/gpio-dwapb.h      |   4 +-
 4 files changed, 191 insertions(+), 173 deletions(-)

-- 
2.27.0


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, back to index

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-30 15:27 [PATCH v3 00/10] gpio: dwapb: Refactor GPIO resources initialization Serge Semin
2020-07-30 15:27 ` [PATCH v3 01/10] dt-bindings: gpio: dwapb: Add ngpios property support Serge Semin
2020-07-30 15:27 ` [PATCH v3 02/10] gpio: dwapb: Add ngpios DT-property support Serge Semin
2020-07-30 15:28 ` [PATCH v3 03/10] gpio: dwapb: Move MFD-specific IRQ handler Serge Semin
2020-07-30 15:28 ` [PATCH v3 04/10] gpio: dwapb: Add max GPIOs macro Serge Semin
2020-07-30 15:42   ` Andy Shevchenko
2020-07-30 15:28 ` [PATCH v3 05/10] gpio: dwapb: Convert driver to using the GPIO-lib-based IRQ-chip Serge Semin
2020-07-30 15:45   ` Andy Shevchenko
2020-07-30 15:28 ` [PATCH v3 06/10] gpio: dwapb: Discard GPIO-to-IRQ mapping function Serge Semin
2020-07-30 15:28 ` [PATCH v3 07/10] gpio: dwapb: Discard ACPI GPIO-chip IRQs request Serge Semin
2020-07-30 15:28 ` [PATCH v3 08/10] gpio: dwapb: Get reset control by means of resource managed interface Serge Semin
2020-07-30 15:28 ` [PATCH v3 09/10] gpio: dwapb: Get clocks " Serge Semin
2020-07-30 15:28 ` [PATCH v3 10/10] gpio: dwapb: Use resource managed GPIO-chip add data method Serge Semin
2020-08-27  8:34 ` [PATCH v3 00/10] gpio: dwapb: Refactor GPIO resources initialization Linus Walleij

Linux-GPIO Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-gpio/0 linux-gpio/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-gpio linux-gpio/ https://lore.kernel.org/linux-gpio \
		linux-gpio@vger.kernel.org
	public-inbox-index linux-gpio

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-gpio


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git