pinctrl: samsung: Protect bank registers with a spinlock

Certain pin control registers can be accessed from different contexts,
i.e. pinctrl, gpio and irq functions. This makes the locking provided by
pin control core insufficient.

This patch adds necessary locking using a per bank spinlock as it was
done in the old Samsung GPIO driver.

Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
pinctrl: samsung: Include pinctrl-exynos* only when pinctrl-exynos is enabled

Since pinctrl-samsung is a common part of the pin control support for
several Samsung SoCs, it can be compiled without Exynos support enabled.

This patch surrounds Exynos-specific driver data with ifdefs to include
them only when support for Exynos is enabled.

Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
pinctrl: samsung: Split pin bank description into two structures

This patch splits pin bank description into two structures, one
describing bank type (currently only bitfield widths), which can be
shared across multiple banks and second containing bank-specific
parameters including a pointer to a bank type struct.

It is a prerequisite for further patch removing the statically hardcoded
register offsets, making it impossible to support SoCs with different
set and order of pin control registers.

Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
pinctrl: samsung: Remove hardcoded register offsets

This patch replaces statically hardcoded register offsets of Exynos SoCs
with an array of register offsets in samsung_pin_bank_type struct.

Thanks to this change, support for SoCs with other set and order of
registers can be added (e.g. S3C24xx and S3C64xx).

Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
pinctrl: samsung: Handle banks with two configuration registers

This patch adds support for banks that have more than one function
configuration registers, e.g. some of the banks of S3C64xx SoCs.

Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
ARM: s3c64xx: Skip legacy EINT setup if pinctrl-s3c64xx driver is present

The new pinctrl-s3c64xx is responsible for EINT handling on DT-enabled
platforms.

Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
gpio: samsung: Skip legacy GPIO registration if pinctrl-s3c64xx is present

The new driver handles GPIO on DT-enabled platforms.

Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
pinctrl: Add pinctrl-s3c64xx driver

This patch adds pinctrl-s3c64xx driver which implements pin control
interface for Samsung S3C64xx SoCs.

Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
ARM: dts: s3c64xx: Add pin control node

This patch adds pin control node for the pin controller present on the
S3C64xx SoCs.

Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
ARM: dts: s3c6410-mini6410: Add pinctrl properties to device nodes

This patch adds pin control properties to existing device nodes to allow
pin configuration using pinctrl-s3c64xx driver.

Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
ARM: dts: s3c6410-mini6410: Add device node for gpio keys

This patch adds device tree node for GPIO keys available on mini6410
board.

Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
ARM: dts: s3c6410-mini6410: Add device node for GPIO leds

This patch adds device tree node for GPIO LEDs available on mini6410
board.

Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
[DEV] ARM: s3c64xx: mini6410: Add machine descriptor for Tiny6410

Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
[DEV] ARM: s3c64xx: mini6410: Disable hsmmc1 temporarily

Somehow hsmmc1 enabled breaks hsmmc0.

Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
clk: samsung: Add clock driver for S3C64xx SoCs

Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
ARM: SAMSUNG: Add soc_is_s3c6400/s3c6410 macros

This patch adds soc_is_s3c6400() and soc_is_s3c6410() macros that allow
to distinguish between specific SoCs from s3c64xx series that is needed
to handle differences between them.

Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
ARM: SAMSUNG: Fix WDT clock handling in watchdog-reset code

Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
ARM: dts: s3c64xx: Update device tree for new clock driver

Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
ARM: s3c64xx: Migrate clock handling to Common Clock Framework

Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
ARM: s3c64xx: dma: Use clk_prepare_enable/clk_disable_unprepare

This patch modifies s3c64xx DMA driver to prepare and unprepare clocks
in addition to enableind and disabling, since it is required by common
clock framework.

Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>