[PATCH v2 00/15] pinctrl: samsung: Usability and extensibiltiy improvements
Tomasz Figa
t.figa at samsung.com
Thu Oct 11 19:11:06 EST 2012
This patch series is a work on improving usability and extensibiltiy of
the pinctrl-samsung driver. It consists of three main parts:
- improving flexibility of SoC-specific data specification
- converting the driver to one GPIO chip and IRQ domain per pin bank
- improving wake-up IRQ setup and handling
1) What the first part does, in addition to various related fixes, is
removing any unnecessary static data from pinctrl-exynos driver.
This is achieved mostly thanks to assigning pin numbers dynamically,
with help of only pin counts of particular banks. It also simplifies
adding next SoC variants, since much less static data needs to be
specified.
2) The second part attempts to simplify usage of the driver and fix several
problems of current implementation, in particular:
- Simplifies GPIO pin specification in device tree by using pin
namespace local to pin bank instead of local to pin controller, e.g.
gpios = <&gpj0 3 0>;
instead of
gpios = <&pinctrl0 115 0>;
- Simplifies GPIO interrupt specification in device tree by using
namespace local to pin bank (and equal to GPIO namespace), e.g.
interrupt-parent = <&gpj0>;
interrupts = <3 0>;
instead of
interrupt-parent = <&pinctrl0>;
interrupts = <115 0>;
- Simplifies internal GPIO pin to bank translation thanks to
correspondence of particular GPIO chips to pin banks. This allows
to remove the (costly in case of GPIO bit-banging drivers) lookup
over all banks to find the one that the pin is from.
3) Third part is focused on removing the hard-coded description of wake-up
interrupt layout.
It moves wake-up interrupt description to bank struct and device tree,
which allows to specify which pin banks support wake-up interrupts and
how they are handled (direct or multiplexed/chained).
See particular patches for more detailed descriptions and the last patch for
updated device tree bindings.
Changes since v1:
- dropped moving SoC-specific data to device tree
(might be added in further patches)
- dropped per-bank specification of configuration register offsets
(thus limiting scope of the driver to Exynos SoCs; will be added in
further patches)
Tomasz Figa (15):
pinctrl: samsung: Detect and handle unsupported configuration types
pinctrl: samsung: Do not pass gpio_chip to pin_to_reg_bank
pinctrl: samsung: Assing pin numbers dynamically
pinctrl: samsung: Remove static pin enumerations
pinctrl: samsung: Distinguish between pin group and bank nodes
ARM: dts: exynos4210-pinctrl: Add nodes for pin banks
pinctrl: samsung: Match pin banks with their device nodes
pinctrl: samsung: Hold pointer to driver data in bank struct
pinctrl: samsung: Include bank-specific eint offset in bank struct
pinctrl: exynos: Use one IRQ domain per pin bank
pinctrl: samsung: Use one GPIO chip per pin bank
pinctrl: samsung: Use per-bank IRQ domain for wake-up interrupts
pinctrl: exynos: Set pin function to EINT in irq_set_type of wake-up
EINT
pinctrl: samsung: Add GPIO to IRQ translation
Documentation: Update samsung-pinctrl device tree bindings
documentation
.../bindings/pinctrl/samsung-pinctrl.txt | 118 +++++--
arch/arm/boot/dts/exynos4210-pinctrl.dtsi | 278 ++++++++++++++++
arch/arm/boot/dts/exynos4210.dtsi | 241 +-------------
drivers/pinctrl/pinctrl-exynos.c | 367 ++++++++++-----------
drivers/pinctrl/pinctrl-exynos.h | 170 ++--------
drivers/pinctrl/pinctrl-samsung.c | 203 ++++++++----
drivers/pinctrl/pinctrl-samsung.h | 29 +-
7 files changed, 741 insertions(+), 665 deletions(-)
--
1.7.12
More information about the devicetree-discuss
mailing list