From: sebastian.hesselbarth@gmail.com (Sebastian Hesselbarth)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 3/7] pinctrl: berlin: add the BG2 pinctrl driver
Date: Sat, 26 Apr 2014 11:33:49 +0200 [thread overview]
Message-ID: <535B7D7D.4080807@gmail.com> (raw)
In-Reply-To: <1398268276-9696-4-git-send-email-antoine.tenart@free-electrons.com>
On 04/23/2014 05:51 PM, Antoine T?nart wrote:
> Add the pin-controller driver for the Berlin BG2 SoC, with definition
> of its groups and functions. This uses the core Berlin pinctrl driver.
>
> Signed-off-by: Antoine T?nart <antoine.tenart@free-electrons.com>
> ---
[...]
> diff --git a/drivers/pinctrl/berlin/berlin-bg2.c b/drivers/pinctrl/berlin/berlin-bg2.c
> new file mode 100644
> index 000000000000..4a4efdc2232d
> --- /dev/null
> +++ b/drivers/pinctrl/berlin/berlin-bg2.c
> @@ -0,0 +1,251 @@
> +/*
> + * Marvell Berlin BG2 pinctrl driver.
> + *
> + * Copyright (C) 2014 Marvell Technology Group Ltd.
> + *
> + * Antoine T?nart <antoine.tenart@free-electrons.com>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2. This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +#include <linux/module.h>
> +#include <linux/of_device.h>
> +#include <linux/platform_device.h>
> +
> +#include "berlin.h"
> +
> +static const struct berlin_desc_group berlin2_soc_pinctrl_groups[] = {
> + /* G */
> + BERLIN_PINCTRL_GROUP("G0", 0x00, 0x1, 0x00,
> + BERLIN_PINCTRL_FUNCTION(0x0, "spi1"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "gpio")),
> + BERLIN_PINCTRL_GROUP("G1", 0x00, 0x2, 0x01,
> + BERLIN_PINCTRL_FUNCTION(0x0, "spi1"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "usb1")),
> + BERLIN_PINCTRL_GROUP("G2", 0x00, 0x2, 0x02,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "spi1"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "pwm"),
> + BERLIN_PINCTRL_FUNCTION(0x3, "i2s0")),
> + BERLIN_PINCTRL_GROUP("G3", 0x00, 0x2, 0x04,
> + BERLIN_PINCTRL_FUNCTION(0x0, "soc"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "spi1"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x3, "i2s1")),
> + BERLIN_PINCTRL_GROUP("G4", 0x00, 0x2, 0x06,
> + BERLIN_PINCTRL_FUNCTION(0x0, "spi1"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "pwm")),
> + BERLIN_PINCTRL_GROUP("G5", 0x00, 0x3, 0x08,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "sts1"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "et"),
> + /*
> + * Mode 0x3 mux i2s2 mclk *and* i2s3 mclk:
> + * add two functions so it can be used with other groups
> + * within the same subnode in the device tree
> + */
> + BERLIN_PINCTRL_FUNCTION(0x3, "i2s2"),
> + BERLIN_PINCTRL_FUNCTION(0x3, "i2s3")),
> + BERLIN_PINCTRL_GROUP("G6", 0x00, 0x2, 0x0b,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "sts0"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "et")),
> + BERLIN_PINCTRL_GROUP("G7", 0x00, 0x3, 0x0d,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "sts0"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "et"),
> + BERLIN_PINCTRL_FUNCTION(0x3, "vdac")),
> + BERLIN_PINCTRL_GROUP("G8", 0x00, 0x3, 0x10,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "sd0"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "et"),
> + BERLIN_PINCTRL_FUNCTION(0x3, "usb0_dbg"),
> + BERLIN_PINCTRL_FUNCTION(0x4, "sata_dbg"),
> + BERLIN_PINCTRL_FUNCTION(0x7, "usb1_dbg")),
> + BERLIN_PINCTRL_GROUP("G9", 0x00, 0x3, 0x13,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "sd0"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "et"),
> + BERLIN_PINCTRL_FUNCTION(0x3, "usb0_dbg"),
> + BERLIN_PINCTRL_FUNCTION(0x4, "sata_dbg"),
> + BERLIN_PINCTRL_FUNCTION(0x7, "usb1_dbg")),
> + BERLIN_PINCTRL_GROUP("G10", 0x00, 0x2, 0x16,
> + BERLIN_PINCTRL_FUNCTION(0x0, "soc"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "tw0"),
s/tw/twsi/ and all below.
> + BERLIN_PINCTRL_FUNCTION(0x2, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x3, "ptp")),
> + BERLIN_PINCTRL_GROUP("G11", 0x00, 0x2, 0x18,
> + BERLIN_PINCTRL_FUNCTION(0x0, "soc"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "tw1"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x3, "eddc")),
> + BERLIN_PINCTRL_GROUP("G12", 0x00, 0x3, 0x1a,
> + BERLIN_PINCTRL_FUNCTION(0x0, "sts2"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "sata"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "sd1"),
> + BERLIN_PINCTRL_FUNCTION(0x3, "usb0_dbg"),
> + BERLIN_PINCTRL_FUNCTION(0x4, "sts1"),
> + BERLIN_PINCTRL_FUNCTION(0x7, "usb1_dbg")),
> + BERLIN_PINCTRL_GROUP("G13", 0x04, 0x3, 0x00,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "sata"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "sd1"),
> + BERLIN_PINCTRL_FUNCTION(0x3, "usb0_dbg"),
> + BERLIN_PINCTRL_FUNCTION(0x4, "sts1"),
> + BERLIN_PINCTRL_FUNCTION(0x7, "usb1_dbg")),
> + BERLIN_PINCTRL_GROUP("G14", 0x04, 0x1, 0x03,
> + BERLIN_PINCTRL_FUNCTION_UNKNOW),
> + BERLIN_PINCTRL_GROUP("G15", 0x04, 0x2, 0x04,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "et"),
> + BERLIN_PINCTRL_FUNCTION(0x3, "osco")),
> + BERLIN_PINCTRL_GROUP("G16", 0x04, 0x3, 0x06,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "dvio"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "fp")),
> + BERLIN_PINCTRL_GROUP("G17", 0x04, 0x3, 0x09,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "dvio"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "fp")),
> + BERLIN_PINCTRL_GROUP("G18", 0x04, 0x1, 0x0c,
> + BERLIN_PINCTRL_FUNCTION(0x0, "pll"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "i2s0")),
> + BERLIN_PINCTRL_GROUP("G19", 0x04, 0x1, 0x0d,
> + BERLIN_PINCTRL_FUNCTION(0x0, "i2s0"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "pwm")),
> + BERLIN_PINCTRL_GROUP("G20", 0x04, 0x1, 0x0e,
> + BERLIN_PINCTRL_FUNCTION(0x0, "spdif"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "arc")),
> + BERLIN_PINCTRL_GROUP("G21", 0x04, 0x3, 0x0f,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "dvio"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "fp"),
> + BERLIN_PINCTRL_FUNCTION(0x3, "adac_dbg"),
> + BERLIN_PINCTRL_FUNCTION(0x4, "pdm_a"), /* gpio17..19,pdm */
> + BERLIN_PINCTRL_FUNCTION(0x7, "pdm_b")), /* gpio12..14,pdm */
> + BERLIN_PINCTRL_GROUP("G22", 0x04, 0x3, 0x12,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "dv0"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "fp"),
> + BERLIN_PINCTRL_FUNCTION(0x3, "tw0"),
> + BERLIN_PINCTRL_FUNCTION(0x4, "pwm")),
> + BERLIN_PINCTRL_GROUP("G23", 0x04, 0x3, 0x15,
> + BERLIN_PINCTRL_FUNCTION(0x0, "vclki"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "dv0"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "fp"),
> + BERLIN_PINCTRL_FUNCTION(0x3, "i2s0"),
> + BERLIN_PINCTRL_FUNCTION(0x4, "pwm"),
> + BERLIN_PINCTRL_FUNCTION(0x7, "pdm")),
> + BERLIN_PINCTRL_GROUP("G24", 0x04, 0x2, 0x18,
> + BERLIN_PINCTRL_FUNCTION(0x0, "i2s2"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "i2s1")),
> + BERLIN_PINCTRL_GROUP("G25", 0x04, 0x2, 0x1a,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "nand"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "i2s2")),
> + BERLIN_PINCTRL_GROUP("G26", 0x04, 0x1, 0x1c,
> + BERLIN_PINCTRL_FUNCTION(0x0, "nand"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "emmc")),
> + BERLIN_PINCTRL_GROUP("G27", 0x04, 0x1, 0x1d,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "nand")),
> + BERLIN_PINCTRL_GROUP("G28", 0x04, 0x2, 0x1e,
> + BERLIN_PINCTRL_FUNCTION(0x0, "dvo"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "sp")),
> +};
> +
> +static const struct berlin_desc_group berlin2_sysmgr_pinctrl_groups[] = {
> + /* GSM */
> + BERLIN_PINCTRL_GROUP("GSM0", 0x40, 0x2, 0x00,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "spi2"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "eth1")),
> + BERLIN_PINCTRL_GROUP("GSM1", 0x40, 0x2, 0x02,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "spi2"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "eth1")),
> + BERLIN_PINCTRL_GROUP("GSM2", 0x40, 0x2, 0x04,
> + BERLIN_PINCTRL_FUNCTION(0x0, "tw2"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "spi2")),
> + BERLIN_PINCTRL_GROUP("GSM3", 0x40, 0x2, 0x06,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "uart0"), /* CTS/RDS */
s/RDS/RTS/
Sebastian
> + BERLIN_PINCTRL_FUNCTION(0x2, "uart2"), /* RX/TX */
> + BERLIN_PINCTRL_FUNCTION(0x3, "tw2")),
> + BERLIN_PINCTRL_GROUP("GSM4", 0x40, 0x2, 0x08,
> + BERLIN_PINCTRL_FUNCTION(0x0, "uart0"), /* RX/TX */
> + BERLIN_PINCTRL_FUNCTION(0x1, "irda0")),
> + BERLIN_PINCTRL_GROUP("GSM5", 0x40, 0x2, 0x0a,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "uart1"), /* RX/TX */
> + BERLIN_PINCTRL_FUNCTION(0x2, "irda1"),
> + BERLIN_PINCTRL_FUNCTION(0x3, "tw3")),
> + BERLIN_PINCTRL_GROUP("GSM6", 0x40, 0x2, 0x0c,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "spi2"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "clki")),
> + BERLIN_PINCTRL_GROUP("GSM7", 0x40, 0x1, 0x0e,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "hdmi")),
> + BERLIN_PINCTRL_GROUP("GSM8", 0x40, 0x1, 0x0f,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "hdmi")),
> + BERLIN_PINCTRL_GROUP("GSM9", 0x40, 0x1, 0x10,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "led")),
> + BERLIN_PINCTRL_GROUP("GSM10", 0x40, 0x1, 0x11,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "led")),
> + BERLIN_PINCTRL_GROUP("GSM11", 0x40, 0x1, 0x12,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "led")),
> +};
> +
> +static const struct berlin_pinctrl_desc berlin2_soc_pinctrl_data = {
> + .groups = berlin2_soc_pinctrl_groups,
> + .ngroups = ARRAY_SIZE(berlin2_soc_pinctrl_groups),
> +};
> +
> +static const struct berlin_pinctrl_desc berlin2_sysmgr_pinctrl_data = {
> + .groups = berlin2_sysmgr_pinctrl_groups,
> + .ngroups = ARRAY_SIZE(berlin2_sysmgr_pinctrl_groups),
> +};
> +
> +static const struct of_device_id berlin2_pinctrl_match[] = {
> + {
> + .compatible = "marvell,berlin2-soc-pinctrl",
> + .data = &berlin2_soc_pinctrl_data
> + },
> + {
> + .compatible = "marvell,berlin2-sysmgr-pinctrl",
> + .data = &berlin2_sysmgr_pinctrl_data
> + },
> + {}
> +};
> +MODULE_DEVICE_TABLE(of, berlin2_pinctrl_match);
> +
> +static int berlin2_pinctrl_probe(struct platform_device *pdev)
> +{
> + const struct of_device_id
> + *device = of_match_device(berlin2_pinctrl_match, &pdev->dev);
> +
> + return berlin_pinctrl_probe(pdev, device->data);
> +}
> +
> +static struct platform_driver berlin2_pinctrl_driver = {
> + .probe = berlin2_pinctrl_probe,
> + .driver = {
> + .name = "berlin-bg2-pinctrl",
> + .owner = THIS_MODULE,
> + .of_match_table = berlin2_pinctrl_match,
> + },
> +};
> +module_platform_driver(berlin2_pinctrl_driver);
> +
> +MODULE_AUTHOR("Antoine T?nart <antoine.tenart@free-electrons.com>");
> +MODULE_DESCRIPTION("Marvell Berlin BG2 pinctrl driver");
> +MODULE_LICENSE("GPL");
>
WARNING: multiple messages have this Message-ID (diff)
From: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
To: "Antoine Ténart" <antoine.tenart@free-electrons.com>,
linus.walleij@linaro.org
Cc: alexandre.belloni@free-electrons.com, zmxu@marvell.com,
jszhang@marvell.com, linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 3/7] pinctrl: berlin: add the BG2 pinctrl driver
Date: Sat, 26 Apr 2014 11:33:49 +0200 [thread overview]
Message-ID: <535B7D7D.4080807@gmail.com> (raw)
In-Reply-To: <1398268276-9696-4-git-send-email-antoine.tenart@free-electrons.com>
On 04/23/2014 05:51 PM, Antoine Ténart wrote:
> Add the pin-controller driver for the Berlin BG2 SoC, with definition
> of its groups and functions. This uses the core Berlin pinctrl driver.
>
> Signed-off-by: Antoine Ténart <antoine.tenart@free-electrons.com>
> ---
[...]
> diff --git a/drivers/pinctrl/berlin/berlin-bg2.c b/drivers/pinctrl/berlin/berlin-bg2.c
> new file mode 100644
> index 000000000000..4a4efdc2232d
> --- /dev/null
> +++ b/drivers/pinctrl/berlin/berlin-bg2.c
> @@ -0,0 +1,251 @@
> +/*
> + * Marvell Berlin BG2 pinctrl driver.
> + *
> + * Copyright (C) 2014 Marvell Technology Group Ltd.
> + *
> + * Antoine Ténart <antoine.tenart@free-electrons.com>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2. This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +#include <linux/module.h>
> +#include <linux/of_device.h>
> +#include <linux/platform_device.h>
> +
> +#include "berlin.h"
> +
> +static const struct berlin_desc_group berlin2_soc_pinctrl_groups[] = {
> + /* G */
> + BERLIN_PINCTRL_GROUP("G0", 0x00, 0x1, 0x00,
> + BERLIN_PINCTRL_FUNCTION(0x0, "spi1"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "gpio")),
> + BERLIN_PINCTRL_GROUP("G1", 0x00, 0x2, 0x01,
> + BERLIN_PINCTRL_FUNCTION(0x0, "spi1"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "usb1")),
> + BERLIN_PINCTRL_GROUP("G2", 0x00, 0x2, 0x02,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "spi1"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "pwm"),
> + BERLIN_PINCTRL_FUNCTION(0x3, "i2s0")),
> + BERLIN_PINCTRL_GROUP("G3", 0x00, 0x2, 0x04,
> + BERLIN_PINCTRL_FUNCTION(0x0, "soc"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "spi1"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x3, "i2s1")),
> + BERLIN_PINCTRL_GROUP("G4", 0x00, 0x2, 0x06,
> + BERLIN_PINCTRL_FUNCTION(0x0, "spi1"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "pwm")),
> + BERLIN_PINCTRL_GROUP("G5", 0x00, 0x3, 0x08,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "sts1"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "et"),
> + /*
> + * Mode 0x3 mux i2s2 mclk *and* i2s3 mclk:
> + * add two functions so it can be used with other groups
> + * within the same subnode in the device tree
> + */
> + BERLIN_PINCTRL_FUNCTION(0x3, "i2s2"),
> + BERLIN_PINCTRL_FUNCTION(0x3, "i2s3")),
> + BERLIN_PINCTRL_GROUP("G6", 0x00, 0x2, 0x0b,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "sts0"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "et")),
> + BERLIN_PINCTRL_GROUP("G7", 0x00, 0x3, 0x0d,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "sts0"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "et"),
> + BERLIN_PINCTRL_FUNCTION(0x3, "vdac")),
> + BERLIN_PINCTRL_GROUP("G8", 0x00, 0x3, 0x10,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "sd0"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "et"),
> + BERLIN_PINCTRL_FUNCTION(0x3, "usb0_dbg"),
> + BERLIN_PINCTRL_FUNCTION(0x4, "sata_dbg"),
> + BERLIN_PINCTRL_FUNCTION(0x7, "usb1_dbg")),
> + BERLIN_PINCTRL_GROUP("G9", 0x00, 0x3, 0x13,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "sd0"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "et"),
> + BERLIN_PINCTRL_FUNCTION(0x3, "usb0_dbg"),
> + BERLIN_PINCTRL_FUNCTION(0x4, "sata_dbg"),
> + BERLIN_PINCTRL_FUNCTION(0x7, "usb1_dbg")),
> + BERLIN_PINCTRL_GROUP("G10", 0x00, 0x2, 0x16,
> + BERLIN_PINCTRL_FUNCTION(0x0, "soc"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "tw0"),
s/tw/twsi/ and all below.
> + BERLIN_PINCTRL_FUNCTION(0x2, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x3, "ptp")),
> + BERLIN_PINCTRL_GROUP("G11", 0x00, 0x2, 0x18,
> + BERLIN_PINCTRL_FUNCTION(0x0, "soc"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "tw1"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x3, "eddc")),
> + BERLIN_PINCTRL_GROUP("G12", 0x00, 0x3, 0x1a,
> + BERLIN_PINCTRL_FUNCTION(0x0, "sts2"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "sata"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "sd1"),
> + BERLIN_PINCTRL_FUNCTION(0x3, "usb0_dbg"),
> + BERLIN_PINCTRL_FUNCTION(0x4, "sts1"),
> + BERLIN_PINCTRL_FUNCTION(0x7, "usb1_dbg")),
> + BERLIN_PINCTRL_GROUP("G13", 0x04, 0x3, 0x00,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "sata"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "sd1"),
> + BERLIN_PINCTRL_FUNCTION(0x3, "usb0_dbg"),
> + BERLIN_PINCTRL_FUNCTION(0x4, "sts1"),
> + BERLIN_PINCTRL_FUNCTION(0x7, "usb1_dbg")),
> + BERLIN_PINCTRL_GROUP("G14", 0x04, 0x1, 0x03,
> + BERLIN_PINCTRL_FUNCTION_UNKNOW),
> + BERLIN_PINCTRL_GROUP("G15", 0x04, 0x2, 0x04,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "et"),
> + BERLIN_PINCTRL_FUNCTION(0x3, "osco")),
> + BERLIN_PINCTRL_GROUP("G16", 0x04, 0x3, 0x06,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "dvio"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "fp")),
> + BERLIN_PINCTRL_GROUP("G17", 0x04, 0x3, 0x09,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "dvio"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "fp")),
> + BERLIN_PINCTRL_GROUP("G18", 0x04, 0x1, 0x0c,
> + BERLIN_PINCTRL_FUNCTION(0x0, "pll"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "i2s0")),
> + BERLIN_PINCTRL_GROUP("G19", 0x04, 0x1, 0x0d,
> + BERLIN_PINCTRL_FUNCTION(0x0, "i2s0"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "pwm")),
> + BERLIN_PINCTRL_GROUP("G20", 0x04, 0x1, 0x0e,
> + BERLIN_PINCTRL_FUNCTION(0x0, "spdif"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "arc")),
> + BERLIN_PINCTRL_GROUP("G21", 0x04, 0x3, 0x0f,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "dvio"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "fp"),
> + BERLIN_PINCTRL_FUNCTION(0x3, "adac_dbg"),
> + BERLIN_PINCTRL_FUNCTION(0x4, "pdm_a"), /* gpio17..19,pdm */
> + BERLIN_PINCTRL_FUNCTION(0x7, "pdm_b")), /* gpio12..14,pdm */
> + BERLIN_PINCTRL_GROUP("G22", 0x04, 0x3, 0x12,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "dv0"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "fp"),
> + BERLIN_PINCTRL_FUNCTION(0x3, "tw0"),
> + BERLIN_PINCTRL_FUNCTION(0x4, "pwm")),
> + BERLIN_PINCTRL_GROUP("G23", 0x04, 0x3, 0x15,
> + BERLIN_PINCTRL_FUNCTION(0x0, "vclki"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "dv0"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "fp"),
> + BERLIN_PINCTRL_FUNCTION(0x3, "i2s0"),
> + BERLIN_PINCTRL_FUNCTION(0x4, "pwm"),
> + BERLIN_PINCTRL_FUNCTION(0x7, "pdm")),
> + BERLIN_PINCTRL_GROUP("G24", 0x04, 0x2, 0x18,
> + BERLIN_PINCTRL_FUNCTION(0x0, "i2s2"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "i2s1")),
> + BERLIN_PINCTRL_GROUP("G25", 0x04, 0x2, 0x1a,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "nand"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "i2s2")),
> + BERLIN_PINCTRL_GROUP("G26", 0x04, 0x1, 0x1c,
> + BERLIN_PINCTRL_FUNCTION(0x0, "nand"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "emmc")),
> + BERLIN_PINCTRL_GROUP("G27", 0x04, 0x1, 0x1d,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "nand")),
> + BERLIN_PINCTRL_GROUP("G28", 0x04, 0x2, 0x1e,
> + BERLIN_PINCTRL_FUNCTION(0x0, "dvo"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "sp")),
> +};
> +
> +static const struct berlin_desc_group berlin2_sysmgr_pinctrl_groups[] = {
> + /* GSM */
> + BERLIN_PINCTRL_GROUP("GSM0", 0x40, 0x2, 0x00,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "spi2"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "eth1")),
> + BERLIN_PINCTRL_GROUP("GSM1", 0x40, 0x2, 0x02,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "spi2"),
> + BERLIN_PINCTRL_FUNCTION(0x2, "eth1")),
> + BERLIN_PINCTRL_GROUP("GSM2", 0x40, 0x2, 0x04,
> + BERLIN_PINCTRL_FUNCTION(0x0, "tw2"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "spi2")),
> + BERLIN_PINCTRL_GROUP("GSM3", 0x40, 0x2, 0x06,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "uart0"), /* CTS/RDS */
s/RDS/RTS/
Sebastian
> + BERLIN_PINCTRL_FUNCTION(0x2, "uart2"), /* RX/TX */
> + BERLIN_PINCTRL_FUNCTION(0x3, "tw2")),
> + BERLIN_PINCTRL_GROUP("GSM4", 0x40, 0x2, 0x08,
> + BERLIN_PINCTRL_FUNCTION(0x0, "uart0"), /* RX/TX */
> + BERLIN_PINCTRL_FUNCTION(0x1, "irda0")),
> + BERLIN_PINCTRL_GROUP("GSM5", 0x40, 0x2, 0x0a,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "uart1"), /* RX/TX */
> + BERLIN_PINCTRL_FUNCTION(0x2, "irda1"),
> + BERLIN_PINCTRL_FUNCTION(0x3, "tw3")),
> + BERLIN_PINCTRL_GROUP("GSM6", 0x40, 0x2, 0x0c,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "spi2"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "clki")),
> + BERLIN_PINCTRL_GROUP("GSM7", 0x40, 0x1, 0x0e,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "hdmi")),
> + BERLIN_PINCTRL_GROUP("GSM8", 0x40, 0x1, 0x0f,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "hdmi")),
> + BERLIN_PINCTRL_GROUP("GSM9", 0x40, 0x1, 0x10,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "led")),
> + BERLIN_PINCTRL_GROUP("GSM10", 0x40, 0x1, 0x11,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "led")),
> + BERLIN_PINCTRL_GROUP("GSM11", 0x40, 0x1, 0x12,
> + BERLIN_PINCTRL_FUNCTION(0x0, "gpio"),
> + BERLIN_PINCTRL_FUNCTION(0x1, "led")),
> +};
> +
> +static const struct berlin_pinctrl_desc berlin2_soc_pinctrl_data = {
> + .groups = berlin2_soc_pinctrl_groups,
> + .ngroups = ARRAY_SIZE(berlin2_soc_pinctrl_groups),
> +};
> +
> +static const struct berlin_pinctrl_desc berlin2_sysmgr_pinctrl_data = {
> + .groups = berlin2_sysmgr_pinctrl_groups,
> + .ngroups = ARRAY_SIZE(berlin2_sysmgr_pinctrl_groups),
> +};
> +
> +static const struct of_device_id berlin2_pinctrl_match[] = {
> + {
> + .compatible = "marvell,berlin2-soc-pinctrl",
> + .data = &berlin2_soc_pinctrl_data
> + },
> + {
> + .compatible = "marvell,berlin2-sysmgr-pinctrl",
> + .data = &berlin2_sysmgr_pinctrl_data
> + },
> + {}
> +};
> +MODULE_DEVICE_TABLE(of, berlin2_pinctrl_match);
> +
> +static int berlin2_pinctrl_probe(struct platform_device *pdev)
> +{
> + const struct of_device_id
> + *device = of_match_device(berlin2_pinctrl_match, &pdev->dev);
> +
> + return berlin_pinctrl_probe(pdev, device->data);
> +}
> +
> +static struct platform_driver berlin2_pinctrl_driver = {
> + .probe = berlin2_pinctrl_probe,
> + .driver = {
> + .name = "berlin-bg2-pinctrl",
> + .owner = THIS_MODULE,
> + .of_match_table = berlin2_pinctrl_match,
> + },
> +};
> +module_platform_driver(berlin2_pinctrl_driver);
> +
> +MODULE_AUTHOR("Antoine Ténart <antoine.tenart@free-electrons.com>");
> +MODULE_DESCRIPTION("Marvell Berlin BG2 pinctrl driver");
> +MODULE_LICENSE("GPL");
>
next prev parent reply other threads:[~2014-04-26 9:33 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-23 15:51 [PATCH v2 0/7] ARM: berlin: add pinctrl support Antoine Ténart
2014-04-23 15:51 ` Antoine Ténart
2014-04-23 15:51 ` [PATCH v2 1/7] pinctrl: berlin: add the core pinctrl driver for Marvell Berlin SoCs Antoine Ténart
2014-04-23 15:51 ` Antoine Ténart
2014-04-26 9:17 ` Sebastian Hesselbarth
2014-04-26 9:17 ` Sebastian Hesselbarth
2014-04-28 17:06 ` Antoine Ténart
2014-04-23 15:51 ` [PATCH v2 2/7] pinctrl: berlin: add the BG2Q pinctrl driver Antoine Ténart
2014-04-23 15:51 ` Antoine Ténart
2014-04-26 9:29 ` Sebastian Hesselbarth
2014-04-26 9:29 ` Sebastian Hesselbarth
2014-04-28 17:03 ` Antoine Ténart
2014-04-23 15:51 ` [PATCH v2 3/7] pinctrl: berlin: add the BG2 " Antoine Ténart
2014-04-23 15:51 ` Antoine Ténart
2014-04-26 9:33 ` Sebastian Hesselbarth [this message]
2014-04-26 9:33 ` Sebastian Hesselbarth
2014-04-23 15:51 ` [PATCH v2 4/7] pinctrl: berlin: add the BG2CD " Antoine Ténart
2014-04-23 15:51 ` Antoine Ténart
2014-04-26 9:40 ` Sebastian Hesselbarth
2014-04-26 9:40 ` Sebastian Hesselbarth
2014-04-23 15:51 ` [PATCH v2 5/7] ARM: berlin: add the pinctrl dependency for the Marvell Berlin SoCs Antoine Ténart
2014-04-23 15:51 ` Antoine Ténart
2014-04-23 15:51 ` [PATCH v2 6/7] Documentation: add the Marvell Berlin pinctrl documentation Antoine Ténart
2014-04-23 15:51 ` Antoine Ténart
2014-04-26 9:44 ` Sebastian Hesselbarth
2014-04-26 9:44 ` Sebastian Hesselbarth
2014-04-28 17:05 ` Antoine Ténart
2014-04-23 15:51 ` [PATCH v2 7/7] ARM: dts: berlin: add the pinctrl node and muxing setup for uarts Antoine Ténart
2014-04-23 15:51 ` Antoine Ténart
2014-04-23 15:51 ` Antoine Ténart
2014-04-26 9:51 ` Sebastian Hesselbarth
2014-04-26 9:51 ` Sebastian Hesselbarth
2014-04-26 9:51 ` Sebastian Hesselbarth
2014-04-24 12:52 ` [PATCH v2 0/7] ARM: berlin: add pinctrl support Linus Walleij
2014-04-24 12:52 ` Linus Walleij
2014-04-24 13:08 ` Russell King - ARM Linux
2014-04-24 13:08 ` Russell King - ARM Linux
2014-04-24 13:23 ` Sebastian Hesselbarth
2014-04-24 13:23 ` Sebastian Hesselbarth
2014-04-24 13:26 ` Thomas Petazzoni
2014-04-24 13:26 ` Thomas Petazzoni
2014-04-25 9:13 ` Linus Walleij
2014-04-25 9:13 ` Linus Walleij
2014-04-26 9:53 ` Sebastian Hesselbarth
2014-04-26 9:53 ` Sebastian Hesselbarth
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=535B7D7D.4080807@gmail.com \
--to=sebastian.hesselbarth@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.