[PATCHv2] pinctrl: exynos: Add support for Exynos4415
Chanwoo Choi
cw00.choi at samsung.com
Thu Nov 6 22:23:40 PST 2014
Dear Linus,
Could you please review this patch?
Best Regards,
Chanwoo Choi
On 10/27/2014 10:21 AM, Chanwoo Choi wrote:
> From: Tomasz Figa <tomasz.figa at gmail.com>
>
> The pin controllers of Exynos4415 are similar to Exynos4412, but certain
> differences cause the need to create separate driver data for it. This
> patch adds pin controller and bank descriptor arrays to the driver to
> support the new SoC.
>
> Cc: Tomasz Figa <tomasz.figa at gmail.com>
> Cc: Thomas Abraham <thomas.abraham at linaro.org>
> Cc: Linus Walleij <linus.walleij at linaro.org>
> Signed-off-by: Tomasz Figa <tomasz.figa at gmail.com>
> [cw00.choi: Rebase it on mainline kernel]
> Signed-off-by: Chanwoo Choi <cw00.choi at samsung.com>
> Acked-by: Kyungmin Park <kyungmin.park at samsung.com>
> ---
> Changes from v1:
> - Separate only pinctrl patch from Exynos4415 patchset[1]
> [1] [PATCH 0/5] Support new Exynos4415 SoC based on Cortex-A9 quad cores
> : https://lkml.org/lkml/2014/10/19/253
>
> drivers/pinctrl/samsung/pinctrl-exynos.c | 78 +++++++++++++++++++++++++++++++
> drivers/pinctrl/samsung/pinctrl-samsung.c | 2 +
> drivers/pinctrl/samsung/pinctrl-samsung.h | 1 +
> 3 files changed, 81 insertions(+)
>
> diff --git a/drivers/pinctrl/samsung/pinctrl-exynos.c b/drivers/pinctrl/samsung/pinctrl-exynos.c
> index d7154ed..065eee0 100644
> --- a/drivers/pinctrl/samsung/pinctrl-exynos.c
> +++ b/drivers/pinctrl/samsung/pinctrl-exynos.c
> @@ -920,6 +920,84 @@ struct samsung_pin_ctrl exynos4x12_pin_ctrl[] = {
> },
> };
>
> +/* pin banks of exynos4415 pin-controller 0 */
> +static struct samsung_pin_bank exynos4415_pin_banks0[] = {
> + EXYNOS_PIN_BANK_EINTG(8, 0x000, "gpa0", 0x00),
> + EXYNOS_PIN_BANK_EINTG(6, 0x020, "gpa1", 0x04),
> + EXYNOS_PIN_BANK_EINTG(8, 0x040, "gpb", 0x08),
> + EXYNOS_PIN_BANK_EINTG(5, 0x060, "gpc0", 0x0c),
> + EXYNOS_PIN_BANK_EINTG(5, 0x080, "gpc1", 0x10),
> + EXYNOS_PIN_BANK_EINTG(4, 0x0A0, "gpd0", 0x14),
> + EXYNOS_PIN_BANK_EINTG(4, 0x0C0, "gpd1", 0x18),
> + EXYNOS_PIN_BANK_EINTG(8, 0x180, "gpf0", 0x30),
> + EXYNOS_PIN_BANK_EINTG(8, 0x1A0, "gpf1", 0x34),
> + EXYNOS_PIN_BANK_EINTG(1, 0x1C0, "gpf2", 0x38),
> +};
> +
> +/* pin banks of exynos4415 pin-controller 1 */
> +static struct samsung_pin_bank exynos4415_pin_banks1[] = {
> + EXYNOS_PIN_BANK_EINTG(8, 0x040, "gpk0", 0x08),
> + EXYNOS_PIN_BANK_EINTG(7, 0x060, "gpk1", 0x0c),
> + EXYNOS_PIN_BANK_EINTG(7, 0x080, "gpk2", 0x10),
> + EXYNOS_PIN_BANK_EINTG(7, 0x0A0, "gpk3", 0x14),
> + EXYNOS_PIN_BANK_EINTG(4, 0x0C0, "gpl0", 0x18),
> + EXYNOS_PIN_BANK_EINTN(6, 0x120, "mp00"),
> + EXYNOS_PIN_BANK_EINTN(4, 0x140, "mp01"),
> + EXYNOS_PIN_BANK_EINTN(6, 0x160, "mp02"),
> + EXYNOS_PIN_BANK_EINTN(8, 0x180, "mp03"),
> + EXYNOS_PIN_BANK_EINTN(8, 0x1A0, "mp04"),
> + EXYNOS_PIN_BANK_EINTN(8, 0x1C0, "mp05"),
> + EXYNOS_PIN_BANK_EINTN(8, 0x1E0, "mp06"),
> + EXYNOS_PIN_BANK_EINTG(8, 0x260, "gpm0", 0x24),
> + EXYNOS_PIN_BANK_EINTG(7, 0x280, "gpm1", 0x28),
> + EXYNOS_PIN_BANK_EINTG(5, 0x2A0, "gpm2", 0x2c),
> + EXYNOS_PIN_BANK_EINTG(8, 0x2C0, "gpm3", 0x30),
> + EXYNOS_PIN_BANK_EINTG(8, 0x2E0, "gpm4", 0x34),
> + EXYNOS_PIN_BANK_EINTW(8, 0xC00, "gpx0", 0x00),
> + EXYNOS_PIN_BANK_EINTW(8, 0xC20, "gpx1", 0x04),
> + EXYNOS_PIN_BANK_EINTW(8, 0xC40, "gpx2", 0x08),
> + EXYNOS_PIN_BANK_EINTW(8, 0xC60, "gpx3", 0x0c),
> +};
> +
> +/* pin banks of exynos4415 pin-controller 2 */
> +static struct samsung_pin_bank exynos4415_pin_banks2[] = {
> + EXYNOS_PIN_BANK_EINTG(7, 0x000, "gpz", 0x00),
> + EXYNOS_PIN_BANK_EINTN(2, 0x000, "etc1"),
> +};
> +
> +/*
> + * Samsung pinctrl driver data for Exynos4415 SoC. Exynos4415 SoC includes
> + * three gpio/pin-mux/pinconfig controllers.
> + */
> +struct samsung_pin_ctrl exynos4415_pin_ctrl[] = {
> + {
> + /* pin-controller instance 0 data */
> + .pin_banks = exynos4415_pin_banks0,
> + .nr_banks = ARRAY_SIZE(exynos4415_pin_banks0),
> + .eint_gpio_init = exynos_eint_gpio_init,
> + .suspend = exynos_pinctrl_suspend,
> + .resume = exynos_pinctrl_resume,
> + .label = "exynos4415-gpio-ctrl0",
> + }, {
> + /* pin-controller instance 1 data */
> + .pin_banks = exynos4415_pin_banks1,
> + .nr_banks = ARRAY_SIZE(exynos4415_pin_banks1),
> + .eint_gpio_init = exynos_eint_gpio_init,
> + .eint_wkup_init = exynos_eint_wkup_init,
> + .suspend = exynos_pinctrl_suspend,
> + .resume = exynos_pinctrl_resume,
> + .label = "exynos4415-gpio-ctrl1",
> + }, {
> + /* pin-controller instance 2 data */
> + .pin_banks = exynos4415_pin_banks2,
> + .nr_banks = ARRAY_SIZE(exynos4415_pin_banks2),
> + .eint_gpio_init = exynos_eint_gpio_init,
> + .suspend = exynos_pinctrl_suspend,
> + .resume = exynos_pinctrl_resume,
> + .label = "exynos4415-gpio-ctrl2",
> + },
> +};
> +
> /* pin banks of exynos5250 pin-controller 0 */
> static struct samsung_pin_bank exynos5250_pin_banks0[] = {
> EXYNOS_PIN_BANK_EINTG(8, 0x000, "gpa0", 0x00),
> diff --git a/drivers/pinctrl/samsung/pinctrl-samsung.c b/drivers/pinctrl/samsung/pinctrl-samsung.c
> index 2d37c8f..d9b3e0c 100644
> --- a/drivers/pinctrl/samsung/pinctrl-samsung.c
> +++ b/drivers/pinctrl/samsung/pinctrl-samsung.c
> @@ -1218,6 +1218,8 @@ static const struct of_device_id samsung_pinctrl_dt_match[] = {
> .data = (void *)exynos4210_pin_ctrl },
> { .compatible = "samsung,exynos4x12-pinctrl",
> .data = (void *)exynos4x12_pin_ctrl },
> + { .compatible = "samsung,exynos4415-pinctrl",
> + .data = (void *)exynos4415_pin_ctrl },
> { .compatible = "samsung,exynos5250-pinctrl",
> .data = (void *)exynos5250_pin_ctrl },
> { .compatible = "samsung,exynos5260-pinctrl",
> diff --git a/drivers/pinctrl/samsung/pinctrl-samsung.h b/drivers/pinctrl/samsung/pinctrl-samsung.h
> index 5cedc9d..10b720d 100644
> --- a/drivers/pinctrl/samsung/pinctrl-samsung.h
> +++ b/drivers/pinctrl/samsung/pinctrl-samsung.h
> @@ -239,6 +239,7 @@ struct samsung_pmx_func {
> extern struct samsung_pin_ctrl exynos3250_pin_ctrl[];
> extern struct samsung_pin_ctrl exynos4210_pin_ctrl[];
> extern struct samsung_pin_ctrl exynos4x12_pin_ctrl[];
> +extern struct samsung_pin_ctrl exynos4415_pin_ctrl[];
> extern struct samsung_pin_ctrl exynos5250_pin_ctrl[];
> extern struct samsung_pin_ctrl exynos5260_pin_ctrl[];
> extern struct samsung_pin_ctrl exynos5420_pin_ctrl[];
>
More information about the linux-arm-kernel
mailing list