* [PATCH V2 0/5] pinctrl: imx: add generic pin config and imx7ulp support
@ 2017-05-19 7:05 Dong Aisheng
2017-05-19 7:05 ` [PATCH V2 1/5] pinctrl: imx: fix debug message for SHARE_MUX_CONF_REG case Dong Aisheng
` (5 more replies)
0 siblings, 6 replies; 26+ messages in thread
From: Dong Aisheng @ 2017-05-19 7:05 UTC (permalink / raw)
To: linux-arm-kernel
This patch series intends to add the generic pin config support for imx
platforms.
The design is based on the exist architecture that the core will
provide a uniformed way to decode the generic pin config into platform
config register raw data according to the imx_cfg_params_decode maps
registered by platform.
Two useful macros, IMX_CFG_PARAMS_DECODE and IMX_CFG_PARAMS_DECODE_INVERT,
are created for platform to register decode map conveniently.
In order to cope with some special case, a platform specific fixup()
function is also available to use.
The series also added the imx7ulp pinctrl support which only supports
generic pin config.
ChangeLog:
v1->v2:
Minor changes including:
* comments/commit messages improvement
* add more descriptions in binding doc
* move dt-bindings/pinctrl/imx7ulp-pinfunc.h to arch/arm/boot/dts
See individual for details.
* Patch 5 moved to patch 1 in new series
Dong Aisheng (5):
pinctrl: imx: fix debug message for SHARE_MUX_CONF_REG case
pinctrl: imx: add generic pin config core support
pinctrl: imx: add soc specific mux_mode mask and shift property
dt-bindings: pinctrl: add imx7ulp pinctrl binding doc
pinctrl: imx: add imx7ulp driver
.../bindings/pinctrl/fsl,imx7ulp-pinctrl.txt | 63 +++
arch/arm/boot/dts/imx7ulp-pinfunc.h | 468 +++++++++++++++++++++
drivers/pinctrl/freescale/Kconfig | 9 +-
drivers/pinctrl/freescale/Makefile | 1 +
drivers/pinctrl/freescale/pinctrl-imx.c | 130 +++++-
drivers/pinctrl/freescale/pinctrl-imx.h | 29 ++
drivers/pinctrl/freescale/pinctrl-imx7ulp.c | 358 ++++++++++++++++
drivers/pinctrl/freescale/pinctrl-vf610.c | 2 +
8 files changed, 1040 insertions(+), 20 deletions(-)
create mode 100644 Documentation/devicetree/bindings/pinctrl/fsl,imx7ulp-pinctrl.txt
create mode 100644 arch/arm/boot/dts/imx7ulp-pinfunc.h
create mode 100644 drivers/pinctrl/freescale/pinctrl-imx7ulp.c
--
2.7.4
^ permalink raw reply [flat|nested] 26+ messages in thread
* [PATCH V2 1/5] pinctrl: imx: fix debug message for SHARE_MUX_CONF_REG case
2017-05-19 7:05 [PATCH V2 0/5] pinctrl: imx: add generic pin config and imx7ulp support Dong Aisheng
@ 2017-05-19 7:05 ` Dong Aisheng
2017-05-21 9:27 ` Shawn Guo
2017-05-22 9:02 ` Linus Walleij
2017-05-19 7:05 ` [PATCH V2 2/5] pinctrl: imx: add generic pin config core support Dong Aisheng
` (4 subsequent siblings)
5 siblings, 2 replies; 26+ messages in thread
From: Dong Aisheng @ 2017-05-19 7:05 UTC (permalink / raw)
To: linux-arm-kernel
The original implemented debug message does not work for
SHARE_MUX_CONF_REG case. This patch fixes it.
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Shawn Guo <shawnguo@kernel.org>
Fixes: bf5a530971af ("pinctrl: imx: add VF610 support to imx pinctrl framework")
Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
---
* no changes
---
drivers/pinctrl/freescale/pinctrl-imx.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/drivers/pinctrl/freescale/pinctrl-imx.c b/drivers/pinctrl/freescale/pinctrl-imx.c
index a7ace9e..6882644 100644
--- a/drivers/pinctrl/freescale/pinctrl-imx.c
+++ b/drivers/pinctrl/freescale/pinctrl-imx.c
@@ -199,11 +199,13 @@ static int imx_pmx_set(struct pinctrl_dev *pctldev, unsigned selector,
reg &= ~(0x7 << 20);
reg |= (pin->mux_mode << 20);
writel(reg, ipctl->base + pin_reg->mux_reg);
+ dev_dbg(ipctl->dev, "write: offset 0x%x val 0x%x\n",
+ pin_reg->mux_reg, reg);
} else {
writel(pin->mux_mode, ipctl->base + pin_reg->mux_reg);
+ dev_dbg(ipctl->dev, "write: offset 0x%x val 0x%x\n",
+ pin_reg->mux_reg, pin->mux_mode);
}
- dev_dbg(ipctl->dev, "write: offset 0x%x val 0x%x\n",
- pin_reg->mux_reg, pin->mux_mode);
/*
* If the select input value begins with 0xff, it's a quirky
@@ -405,11 +407,13 @@ static int imx_pinconf_set(struct pinctrl_dev *pctldev,
reg &= ~0xffff;
reg |= configs[i];
writel(reg, ipctl->base + pin_reg->conf_reg);
+ dev_dbg(ipctl->dev, "write: offset 0x%x val 0x%x\n",
+ pin_reg->conf_reg, reg);
} else {
writel(configs[i], ipctl->base + pin_reg->conf_reg);
+ dev_dbg(ipctl->dev, "write: offset 0x%x val 0x%lx\n",
+ pin_reg->conf_reg, configs[i]);
}
- dev_dbg(ipctl->dev, "write: offset 0x%x val 0x%lx\n",
- pin_reg->conf_reg, configs[i]);
} /* for each config */
return 0;
--
2.7.4
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH V2 2/5] pinctrl: imx: add generic pin config core support
2017-05-19 7:05 [PATCH V2 0/5] pinctrl: imx: add generic pin config and imx7ulp support Dong Aisheng
2017-05-19 7:05 ` [PATCH V2 1/5] pinctrl: imx: fix debug message for SHARE_MUX_CONF_REG case Dong Aisheng
@ 2017-05-19 7:05 ` Dong Aisheng
2017-05-21 9:27 ` Shawn Guo
2017-05-22 9:04 ` Linus Walleij
2017-05-19 7:05 ` [PATCH V2 3/5] pinctrl: imx: add soc specific mux_mode mask and shift property Dong Aisheng
` (3 subsequent siblings)
5 siblings, 2 replies; 26+ messages in thread
From: Dong Aisheng @ 2017-05-19 7:05 UTC (permalink / raw)
To: linux-arm-kernel
The design is based on the exist architecture that the core will
provide a uniformed way to decode the generic pin config into platform
config register raw data according to the imx_cfg_params_decode maps
registered by platform.
Two useful macros, IMX_CFG_PARAMS_DECODE and IMX_CFG_PARAMS_DECODE_INVERT,
are created for platform to register decode map conveniently.
In order to cope with some special case, a platform specific fixup()
function is also available to use.
Note that rather than fully utilizing the generic pinconf support
provided by pinctrl core, IMX only adopts the device tree bindings
of generic pinconf. The config used in .pin_config_get[set] are raw
register data instead of generic one which makes us align the exist
using. And that's also why we cannot set pinconf_ops.is_generic.
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Shawn Guo <shawnguo@kernel.org>
Cc: Bai Ping <ping.bai@nxp.com>
Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
---
ChangeLog:
v1->v2:
Minor changes including:
* rename 'offset' field to 'shift' in structure imx_cfg_params_decode
* comments improvement
* add more clearer information about imx generic pin config in
commmit message.
---
drivers/pinctrl/freescale/Kconfig | 2 +-
drivers/pinctrl/freescale/pinctrl-imx.c | 108 +++++++++++++++++++++++++++++---
drivers/pinctrl/freescale/pinctrl-imx.h | 25 ++++++++
3 files changed, 124 insertions(+), 11 deletions(-)
diff --git a/drivers/pinctrl/freescale/Kconfig b/drivers/pinctrl/freescale/Kconfig
index cae05e7..0b266b2 100644
--- a/drivers/pinctrl/freescale/Kconfig
+++ b/drivers/pinctrl/freescale/Kconfig
@@ -2,7 +2,7 @@ config PINCTRL_IMX
bool
select GENERIC_PINCTRL_GROUPS
select GENERIC_PINMUX_FUNCTIONS
- select PINCONF
+ select GENERIC_PINCONF
select REGMAP
config PINCTRL_IMX1_CORE
diff --git a/drivers/pinctrl/freescale/pinctrl-imx.c b/drivers/pinctrl/freescale/pinctrl-imx.c
index 6882644..6d5a517 100644
--- a/drivers/pinctrl/freescale/pinctrl-imx.c
+++ b/drivers/pinctrl/freescale/pinctrl-imx.c
@@ -27,6 +27,7 @@
#include <linux/regmap.h>
#include "../core.h"
+#include "../pinconf.h"
#include "../pinmux.h"
#include "pinctrl-imx.h"
@@ -361,6 +362,62 @@ static const struct pinmux_ops imx_pmx_ops = {
.gpio_set_direction = imx_pmx_gpio_set_direction,
};
+/* decode generic config into raw register values */
+static u32 imx_pinconf_decode_generic_config(struct imx_pinctrl *ipctl,
+ unsigned long *configs,
+ unsigned int num_configs)
+{
+ struct imx_pinctrl_soc_info *info = ipctl->info;
+ struct imx_cfg_params_decode *decode;
+ enum pin_config_param param;
+ u32 raw_config = 0;
+ u32 param_val;
+ int i, j;
+
+ WARN_ON(num_configs > info->num_decodes);
+
+ for (i = 0; i < num_configs; i++) {
+ param = pinconf_to_config_param(configs[i]);
+ param_val = pinconf_to_config_argument(configs[i]);
+ decode = info->decodes;
+ for (j = 0; j < info->num_decodes; j++) {
+ if (param == decode->param) {
+ if (decode->invert)
+ param_val = !param_val;
+ raw_config |= (param_val << decode->shift)
+ & decode->mask;
+ break;
+ }
+ decode++;
+ }
+ }
+
+ if (info->fixup)
+ info->fixup(configs, num_configs, &raw_config);
+
+ return raw_config;
+}
+
+static u32 imx_pinconf_parse_generic_config(struct device_node *np,
+ struct imx_pinctrl *ipctl)
+{
+ struct imx_pinctrl_soc_info *info = ipctl->info;
+ struct pinctrl_dev *pctl = ipctl->pctl;
+ unsigned int num_configs;
+ unsigned long *configs;
+ int ret;
+
+ if (!info->generic_pinconf)
+ return 0;
+
+ ret = pinconf_generic_parse_dt_config(np, pctl, &configs,
+ &num_configs);
+ if (ret)
+ return 0;
+
+ return imx_pinconf_decode_generic_config(ipctl, configs, num_configs);
+}
+
static int imx_pinconf_get(struct pinctrl_dev *pctldev,
unsigned pin_id, unsigned long *config)
{
@@ -479,9 +536,10 @@ static const struct pinconf_ops imx_pinconf_ops = {
static int imx_pinctrl_parse_groups(struct device_node *np,
struct group_desc *grp,
- struct imx_pinctrl_soc_info *info,
+ struct imx_pinctrl *ipctl,
u32 index)
{
+ struct imx_pinctrl_soc_info *info = ipctl->info;
int size, pin_size;
const __be32 *list;
int i;
@@ -493,25 +551,44 @@ static int imx_pinctrl_parse_groups(struct device_node *np,
pin_size = SHARE_FSL_PIN_SIZE;
else
pin_size = FSL_PIN_SIZE;
+
+ if (info->generic_pinconf)
+ pin_size -= 4;
+
/* Initialise group */
grp->name = np->name;
/*
* the binding format is fsl,pins = <PIN_FUNC_ID CONFIG ...>,
* do sanity check and calculate pins number
+ *
+ * First try legacy 'fsl,pins' property, then fall back to the
+ * generic 'pins'.
+ *
+ * Note: for generic 'pins' case, there's no CONFIG part in
+ * the binding format.
*/
list = of_get_property(np, "fsl,pins", &size);
if (!list) {
- dev_err(info->dev, "no fsl,pins property in node %s\n", np->full_name);
- return -EINVAL;
+ list = of_get_property(np, "pins", &size);
+ if (!list) {
+ dev_err(info->dev,
+ "no fsl,pins and pins property in node %s\n",
+ np->full_name);
+ return -EINVAL;
+ }
}
/* we do not check return since it's safe node passed down */
if (!size || size % pin_size) {
- dev_err(info->dev, "Invalid fsl,pins property in node %s\n", np->full_name);
+ dev_err(info->dev, "Invalid fsl,pins or pins property in node %s\n",
+ np->full_name);
return -EINVAL;
}
+ /* first try to parse the generic pin config */
+ config = imx_pinconf_parse_generic_config(np, ipctl);
+
grp->num_pins = size / pin_size;
grp->data = devm_kzalloc(info->dev, grp->num_pins *
sizeof(struct imx_pin), GFP_KERNEL);
@@ -548,11 +625,18 @@ static int imx_pinctrl_parse_groups(struct device_node *np,
pin->mux_mode = be32_to_cpu(*list++);
pin->input_val = be32_to_cpu(*list++);
- /* SION bit is in mux register */
- config = be32_to_cpu(*list++);
- if (config & IMX_PAD_SION)
- pin->mux_mode |= IOMUXC_CONFIG_SION;
- pin->config = config & ~IMX_PAD_SION;
+ if (info->generic_pinconf) {
+ /* generic pin config decoded */
+ pin->config = config;
+ } else {
+ /* legacy pin config read from devicetree */
+ config = be32_to_cpu(*list++);
+
+ /* SION bit is in mux register */
+ if (config & IMX_PAD_SION)
+ pin->mux_mode |= IOMUXC_CONFIG_SION;
+ pin->config = config & ~IMX_PAD_SION;
+ }
dev_dbg(info->dev, "%s: 0x%x 0x%08lx", info->pins[pin_id].name,
pin->mux_mode, pin->config);
@@ -602,7 +686,7 @@ static int imx_pinctrl_parse_functions(struct device_node *np,
info->group_index++, grp);
mutex_unlock(&info->mutex);
- imx_pinctrl_parse_groups(child, grp, info, i++);
+ imx_pinctrl_parse_groups(child, grp, ipctl, i++);
}
return 0;
@@ -773,6 +857,10 @@ int imx_pinctrl_probe(struct platform_device *pdev,
imx_pinctrl_desc->confops = &imx_pinconf_ops;
imx_pinctrl_desc->owner = THIS_MODULE;
+ /* for generic pinconf */
+ imx_pinctrl_desc->custom_params = info->custom_params;
+ imx_pinctrl_desc->num_custom_params = info->num_custom_params;
+
mutex_init(&info->mutex);
ipctl->info = info;
diff --git a/drivers/pinctrl/freescale/pinctrl-imx.h b/drivers/pinctrl/freescale/pinctrl-imx.h
index ff2d3e5..38aa53c 100644
--- a/drivers/pinctrl/freescale/pinctrl-imx.h
+++ b/drivers/pinctrl/freescale/pinctrl-imx.h
@@ -15,6 +15,8 @@
#ifndef __DRIVERS_PINCTRL_IMX_H
#define __DRIVERS_PINCTRL_IMX_H
+#include <linux/pinctrl/pinconf-generic.h>
+
struct platform_device;
/**
@@ -44,6 +46,14 @@ struct imx_pin_reg {
s16 conf_reg;
};
+/* decode a generic config into raw register value */
+struct imx_cfg_params_decode {
+ enum pin_config_param param;
+ u32 mask;
+ u8 shift;
+ bool invert;
+};
+
struct imx_pinctrl_soc_info {
struct device *dev;
const struct pinctrl_pin_desc *pins;
@@ -53,8 +63,23 @@ struct imx_pinctrl_soc_info {
unsigned int flags;
const char *gpr_compatible;
struct mutex mutex;
+
+ /* generic pinconf */
+ bool generic_pinconf;
+ const struct pinconf_generic_params *custom_params;
+ unsigned int num_custom_params;
+ struct imx_cfg_params_decode *decodes;
+ unsigned int num_decodes;
+ void (*fixup)(unsigned long *configs, unsigned int num_configs,
+ u32 *raw_config);
};
+#define IMX_CFG_PARAMS_DECODE(p, m, o) \
+ { .param = p, .mask = m, .shift = o, .invert = false, }
+
+#define IMX_CFG_PARAMS_DECODE_INVERT(p, m, o) \
+ { .param = p, .mask = m, .shift = o, .invert = true, }
+
#define SHARE_MUX_CONF_REG 0x1
#define ZERO_OFFSET_VALID 0x2
--
2.7.4
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH V2 3/5] pinctrl: imx: add soc specific mux_mode mask and shift property
2017-05-19 7:05 [PATCH V2 0/5] pinctrl: imx: add generic pin config and imx7ulp support Dong Aisheng
2017-05-19 7:05 ` [PATCH V2 1/5] pinctrl: imx: fix debug message for SHARE_MUX_CONF_REG case Dong Aisheng
2017-05-19 7:05 ` [PATCH V2 2/5] pinctrl: imx: add generic pin config core support Dong Aisheng
@ 2017-05-19 7:05 ` Dong Aisheng
2017-05-21 9:28 ` Shawn Guo
2017-05-22 9:06 ` Linus Walleij
2017-05-19 7:05 ` [PATCH V2 4/5] dt-bindings: pinctrl: add imx7ulp pinctrl binding doc Dong Aisheng
` (2 subsequent siblings)
5 siblings, 2 replies; 26+ messages in thread
From: Dong Aisheng @ 2017-05-19 7:05 UTC (permalink / raw)
To: linux-arm-kernel
MX7ULP MUX mode mask and shift bit is different from VF610.
Let's make it a platform specific property for the later easy of
adding MX7ULP support.
One trick in exist code that Vybrid hardcoded the config part
as 0xffff because its mux_config register BIT[15-0] are all configs
part. But it's not true in ULP, so use mux_mask instead to address
the difference.
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Shawn Guo <shawnguo@kernel.org>
Cc: Stefan Agner <stefan@agner.ch>
Cc: Bai Ping <ping.bai@nxp.com>
Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
---
ChangeLog:
v1->v2:
Minor changes:
* add more explanation about Vybrid trick in commit message.
---
drivers/pinctrl/freescale/pinctrl-imx.c | 10 +++++-----
drivers/pinctrl/freescale/pinctrl-imx.h | 4 ++++
drivers/pinctrl/freescale/pinctrl-vf610.c | 2 ++
3 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/drivers/pinctrl/freescale/pinctrl-imx.c b/drivers/pinctrl/freescale/pinctrl-imx.c
index 6d5a517..bb7c625 100644
--- a/drivers/pinctrl/freescale/pinctrl-imx.c
+++ b/drivers/pinctrl/freescale/pinctrl-imx.c
@@ -197,8 +197,8 @@ static int imx_pmx_set(struct pinctrl_dev *pctldev, unsigned selector,
if (info->flags & SHARE_MUX_CONF_REG) {
u32 reg;
reg = readl(ipctl->base + pin_reg->mux_reg);
- reg &= ~(0x7 << 20);
- reg |= (pin->mux_mode << 20);
+ reg &= ~info->mux_mask;
+ reg |= (pin->mux_mode << info->mux_shift);
writel(reg, ipctl->base + pin_reg->mux_reg);
dev_dbg(ipctl->dev, "write: offset 0x%x val 0x%x\n",
pin_reg->mux_reg, reg);
@@ -290,7 +290,7 @@ static int imx_pmx_gpio_request_enable(struct pinctrl_dev *pctldev,
mux_pin:
reg = readl(ipctl->base + pin_reg->mux_reg);
- reg &= ~(0x7 << 20);
+ reg &= ~info->mux_mask;
reg |= imx_pin->config;
writel(reg, ipctl->base + pin_reg->mux_reg);
@@ -434,7 +434,7 @@ static int imx_pinconf_get(struct pinctrl_dev *pctldev,
*config = readl(ipctl->base + pin_reg->conf_reg);
if (info->flags & SHARE_MUX_CONF_REG)
- *config &= 0xffff;
+ *config &= ~info->mux_mask;
return 0;
}
@@ -461,7 +461,7 @@ static int imx_pinconf_set(struct pinctrl_dev *pctldev,
if (info->flags & SHARE_MUX_CONF_REG) {
u32 reg;
reg = readl(ipctl->base + pin_reg->conf_reg);
- reg &= ~0xffff;
+ reg &= info->mux_mask;
reg |= configs[i];
writel(reg, ipctl->base + pin_reg->conf_reg);
dev_dbg(ipctl->dev, "write: offset 0x%x val 0x%x\n",
diff --git a/drivers/pinctrl/freescale/pinctrl-imx.h b/drivers/pinctrl/freescale/pinctrl-imx.h
index 38aa53c..880bba7 100644
--- a/drivers/pinctrl/freescale/pinctrl-imx.h
+++ b/drivers/pinctrl/freescale/pinctrl-imx.h
@@ -64,6 +64,10 @@ struct imx_pinctrl_soc_info {
const char *gpr_compatible;
struct mutex mutex;
+ /* MUX_MODE shift and mask in case SHARE_MUX_CONF_REG */
+ unsigned int mux_mask;
+ u8 mux_shift;
+
/* generic pinconf */
bool generic_pinconf;
const struct pinconf_generic_params *custom_params;
diff --git a/drivers/pinctrl/freescale/pinctrl-vf610.c b/drivers/pinctrl/freescale/pinctrl-vf610.c
index 2b1e198..3bd8556 100644
--- a/drivers/pinctrl/freescale/pinctrl-vf610.c
+++ b/drivers/pinctrl/freescale/pinctrl-vf610.c
@@ -299,6 +299,8 @@ static struct imx_pinctrl_soc_info vf610_pinctrl_info = {
.pins = vf610_pinctrl_pads,
.npins = ARRAY_SIZE(vf610_pinctrl_pads),
.flags = SHARE_MUX_CONF_REG | ZERO_OFFSET_VALID,
+ .mux_mask = 0x700000,
+ .mux_shift = 20,
};
static const struct of_device_id vf610_pinctrl_of_match[] = {
--
2.7.4
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH V2 4/5] dt-bindings: pinctrl: add imx7ulp pinctrl binding doc
2017-05-19 7:05 [PATCH V2 0/5] pinctrl: imx: add generic pin config and imx7ulp support Dong Aisheng
` (2 preceding siblings ...)
2017-05-19 7:05 ` [PATCH V2 3/5] pinctrl: imx: add soc specific mux_mode mask and shift property Dong Aisheng
@ 2017-05-19 7:05 ` Dong Aisheng
2017-05-21 9:30 ` Shawn Guo
` (2 more replies)
2017-05-19 7:05 ` [PATCH V2 5/5] pinctrl: imx: add imx7ulp driver Dong Aisheng
2017-05-23 7:41 ` [PATCH V2 0/5] pinctrl: imx: add generic pin config and imx7ulp support Linus Walleij
5 siblings, 3 replies; 26+ messages in thread
From: Dong Aisheng @ 2017-05-19 7:05 UTC (permalink / raw)
To: linux-arm-kernel
i.MX 7ULP has three IOMUXC instances: IOMUXC0 for M4 ports,
IOMUXC1 for A7 ports and IOMUXC DDR for DDR interface.
This patch adds the IOMUXC1 support for A7.
Cc: Rob Herring <robh+dt@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: devicetree at vger.kernel.org
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Shawn Guo <shawnguo@kernel.org>
Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
---
ChangeLog:
v1->v2:
* add more descriptions in binding doc
* add missed prefix for private properties.
* move dt-bindings/pinctrl/imx7ulp-pinfunc.h to arch/arm/boot/dts
---
.../bindings/pinctrl/fsl,imx7ulp-pinctrl.txt | 63 +++
arch/arm/boot/dts/imx7ulp-pinfunc.h | 468 +++++++++++++++++++++
2 files changed, 531 insertions(+)
create mode 100644 Documentation/devicetree/bindings/pinctrl/fsl,imx7ulp-pinctrl.txt
create mode 100644 arch/arm/boot/dts/imx7ulp-pinfunc.h
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx7ulp-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,imx7ulp-pinctrl.txt
new file mode 100644
index 0000000..7fbf367
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/fsl,imx7ulp-pinctrl.txt
@@ -0,0 +1,63 @@
+* Freescale i.MX7ULP IOMUX Controller
+
+i.MX 7ULP has three IOMUXC instances: IOMUXC0 for M4 ports, IOMUXC1 for A7
+ports and IOMUXC DDR for DDR interface.
+
+Note:
+This binding doc is only for the IOMUXC1 support in A7 Domain and it only
+supports generic pin config.
+
+Please also refer to fsl,imx-pinctrl.txt in this directory for IMX common
+binding part and pinctrl-bindings.txt for the generic config binding.
+
+=== Pin Controller Node ===
+
+Required properties:
+- compatible: "fsl,imx7ulp-iomuxc1"
+- reg: Should contain the base physical address and size of the iomuxc
+ registers.
+
+=== Pin Configuration Node ===
+- pins: One integers array, represents a group of pins mux setting.
+ The format is fsl,pins = <PIN_FUNC_ID>, PIN_FUNC_ID is a pin working on
+ a specific function.
+
+ NOTE: i.MX7ULP PIN_FUNC_ID consists of 4 integers as it shares one mux
+ and config register as follows:
+ <mux_conf_reg input_reg mux_mode input_val>
+
+ Refer to imx7ulp-pinfunc.h in in device tree source folder for all
+ available imx7ulp PIN_FUNC_ID.
+
+Optional Properties:
+- nxp,output-buffer-enable: Bool. Output buffer enabled
+- nxp,input-buffer-enable: Bool. Input buffer enabled
+- drive-strength Integer. Controls Drive Strength
+ 0: Standard
+ 1: Hi Driver
+- drive-push-pull Bool. Enable Pin Push-pull
+- drive-open-drain Bool. Enable Pin Open-drian
+- slew-rate: Integer. Controls Slew Rate
+ 0: Standard
+ 1: Slow
+- bias-disable: Bool. Pull disabled
+- bias-pull-down: Bool. Pull down on pin
+- bias-pull-up: Bool. Pull up on pin
+
+Examples:
+#include "imx7ulp-pinfunc.h"
+
+/* Pin Controller Node */
+iomuxc1: iomuxc at 40ac0000 {
+ compatible = "fsl,imx7ulp-iomuxc1";
+ reg = <0x40ac0000 0x1000>;
+
+ /* Pin Configuration Node */
+ pinctrl_lpuart4: lpuart4grp {
+ pins = <
+ ULP1_PAD_PTC3__LPUART4_RX
+ ULP1_PAD_PTC2__LPUART4_TX
+ >;
+ bias-pull-up;
+ };
+};
diff --git a/arch/arm/boot/dts/imx7ulp-pinfunc.h b/arch/arm/boot/dts/imx7ulp-pinfunc.h
new file mode 100644
index 0000000..cafd3ed
--- /dev/null
+++ b/arch/arm/boot/dts/imx7ulp-pinfunc.h
@@ -0,0 +1,468 @@
+/*
+ * Copyright 2016 Freescale Semiconductor, Inc.
+ * Copyright 2017 NXP
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ */
+
+#ifndef __DTS_IMX7ULP_PINFUNC_H
+#define __DTS_IMX7ULP_PINFUNC_H
+
+/*
+ * The pin function ID is a tuple of
+ * <mux_conf_reg input_reg mux_mode input_val>
+ */
+
+#define ULP1_PAD_PTC0__PTC0 0x0000 0x0000 0x1 0x0
+#define ULP1_PAD_PTC0__TRACE_D15 0x0000 0x0000 0xa 0x0
+#define ULP1_PAD_PTC0__LPUART4_CTS_B 0x0000 0x0244 0x4 0x1
+#define ULP1_PAD_PTC0__LPI2C4_SCL 0x0000 0x0278 0x5 0x1
+#define ULP1_PAD_PTC0__TPM4_CLKIN 0x0000 0x0298 0x6 0x1
+#define ULP1_PAD_PTC0__FB_AD0 0x0000 0x0000 0x9 0x0
+#define ULP1_PAD_PTC1__PTC1 0x0004 0x0000 0x1 0x0
+#define ULP1_PAD_PTC1__TRACE_D14 0x0004 0x0000 0xa 0x0
+#define ULP1_PAD_PTC1__LPUART4_RTS_B 0x0004 0x0000 0x4 0x0
+#define ULP1_PAD_PTC1__LPI2C4_SDA 0x0004 0x027c 0x5 0x1
+#define ULP1_PAD_PTC1__TPM4_CH0 0x0004 0x0280 0x6 0x1
+#define ULP1_PAD_PTC1__FB_AD1 0x0004 0x0000 0x9 0x0
+#define ULP1_PAD_PTC2__PTC2 0x0008 0x0000 0x1 0x0
+#define ULP1_PAD_PTC2__TRACE_D13 0x0008 0x0000 0xa 0x0
+#define ULP1_PAD_PTC2__LPUART4_TX 0x0008 0x024c 0x4 0x1
+#define ULP1_PAD_PTC2__LPI2C4_HREQ 0x0008 0x0274 0x5 0x1
+#define ULP1_PAD_PTC2__TPM4_CH1 0x0008 0x0284 0x6 0x1
+#define ULP1_PAD_PTC2__FB_AD2 0x0008 0x0000 0x9 0x0
+#define ULP1_PAD_PTC3__PTC3 0x000c 0x0000 0x1 0x0
+#define ULP1_PAD_PTC3__TRACE_D12 0x000c 0x0000 0xa 0x0
+#define ULP1_PAD_PTC3__LPUART4_RX 0x000c 0x0248 0x4 0x1
+#define ULP1_PAD_PTC3__TPM4_CH2 0x000c 0x0288 0x6 0x1
+#define ULP1_PAD_PTC3__FB_AD3 0x000c 0x0000 0x9 0x0
+#define ULP1_PAD_PTC4__PTC4 0x0010 0x0000 0x1 0x0
+#define ULP1_PAD_PTC4__TRACE_D11 0x0010 0x0000 0xa 0x0
+#define ULP1_PAD_PTC4__FXIO1_D0 0x0010 0x0204 0x2 0x1
+#define ULP1_PAD_PTC4__LPSPI2_PCS1 0x0010 0x02a0 0x3 0x1
+#define ULP1_PAD_PTC4__LPUART5_CTS_B 0x0010 0x0250 0x4 0x1
+#define ULP1_PAD_PTC4__LPI2C5_SCL 0x0010 0x02bc 0x5 0x1
+#define ULP1_PAD_PTC4__TPM4_CH3 0x0010 0x028c 0x6 0x1
+#define ULP1_PAD_PTC4__FB_AD4 0x0010 0x0000 0x9 0x0
+#define ULP1_PAD_PTC5__PTC5 0x0014 0x0000 0x1 0x0
+#define ULP1_PAD_PTC5__TRACE_D10 0x0014 0x0000 0xa 0x0
+#define ULP1_PAD_PTC5__FXIO1_D1 0x0014 0x0208 0x2 0x1
+#define ULP1_PAD_PTC5__LPSPI2_PCS2 0x0014 0x02a4 0x3 0x1
+#define ULP1_PAD_PTC5__LPUART5_RTS_B 0x0014 0x0000 0x4 0x0
+#define ULP1_PAD_PTC5__LPI2C5_SDA 0x0014 0x02c0 0x5 0x1
+#define ULP1_PAD_PTC5__TPM4_CH4 0x0014 0x0290 0x6 0x1
+#define ULP1_PAD_PTC5__FB_AD5 0x0014 0x0000 0x9 0x0
+#define ULP1_PAD_PTC6__PTC6 0x0018 0x0000 0x1 0x0
+#define ULP1_PAD_PTC6__TRACE_D9 0x0018 0x0000 0xa 0x0
+#define ULP1_PAD_PTC6__FXIO1_D2 0x0018 0x020c 0x2 0x1
+#define ULP1_PAD_PTC6__LPSPI2_PCS3 0x0018 0x02a8 0x3 0x1
+#define ULP1_PAD_PTC6__LPUART5_TX 0x0018 0x0258 0x4 0x1
+#define ULP1_PAD_PTC6__LPI2C5_HREQ 0x0018 0x02b8 0x5 0x1
+#define ULP1_PAD_PTC6__TPM4_CH5 0x0018 0x0294 0x6 0x1
+#define ULP1_PAD_PTC6__FB_AD6 0x0018 0x0000 0x9 0x0
+#define ULP1_PAD_PTC7__PTC7 0x001c 0x0000 0x1 0x0
+#define ULP1_PAD_PTC7__TRACE_D8 0x001c 0x0000 0xa 0x0
+#define ULP1_PAD_PTC7__FXIO1_D3 0x001c 0x0210 0x2 0x1
+#define ULP1_PAD_PTC7__LPUART5_RX 0x001c 0x0254 0x4 0x1
+#define ULP1_PAD_PTC7__TPM5_CH1 0x001c 0x02c8 0x6 0x1
+#define ULP1_PAD_PTC7__FB_AD7 0x001c 0x0000 0x9 0x0
+#define ULP1_PAD_PTC8__PTC8 0x0020 0x0000 0x1 0x0
+#define ULP1_PAD_PTC8__TRACE_D7 0x0020 0x0000 0xa 0x0
+#define ULP1_PAD_PTC8__FXIO1_D4 0x0020 0x0214 0x2 0x1
+#define ULP1_PAD_PTC8__LPSPI2_SIN 0x0020 0x02b0 0x3 0x1
+#define ULP1_PAD_PTC8__LPUART6_CTS_B 0x0020 0x025c 0x4 0x1
+#define ULP1_PAD_PTC8__LPI2C6_SCL 0x0020 0x02fc 0x5 0x1
+#define ULP1_PAD_PTC8__TPM5_CLKIN 0x0020 0x02cc 0x6 0x1
+#define ULP1_PAD_PTC8__FB_AD8 0x0020 0x0000 0x9 0x0
+#define ULP1_PAD_PTC9__PTC9 0x0024 0x0000 0x1 0x0
+#define ULP1_PAD_PTC9__TRACE_D6 0x0024 0x0000 0xa 0x0
+#define ULP1_PAD_PTC9__FXIO1_D5 0x0024 0x0218 0x2 0x1
+#define ULP1_PAD_PTC9__LPSPI2_SOUT 0x0024 0x02b4 0x3 0x1
+#define ULP1_PAD_PTC9__LPUART6_RTS_B 0x0024 0x0000 0x4 0x0
+#define ULP1_PAD_PTC9__LPI2C6_SDA 0x0024 0x0300 0x5 0x1
+#define ULP1_PAD_PTC9__TPM5_CH0 0x0024 0x02c4 0x6 0x1
+#define ULP1_PAD_PTC9__FB_AD9 0x0024 0x0000 0x9 0x0
+#define ULP1_PAD_PTC10__PTC10 0x0028 0x0000 0x1 0x0
+#define ULP1_PAD_PTC10__TRACE_D5 0x0028 0x0000 0xa 0x0
+#define ULP1_PAD_PTC10__FXIO1_D6 0x0028 0x021c 0x2 0x1
+#define ULP1_PAD_PTC10__LPSPI2_SCK 0x0028 0x02ac 0x3 0x1
+#define ULP1_PAD_PTC10__LPUART6_TX 0x0028 0x0264 0x4 0x1
+#define ULP1_PAD_PTC10__LPI2C6_HREQ 0x0028 0x02f8 0x5 0x1
+#define ULP1_PAD_PTC10__TPM7_CH3 0x0028 0x02e8 0x6 0x1
+#define ULP1_PAD_PTC10__FB_AD10 0x0028 0x0000 0x9 0x0
+#define ULP1_PAD_PTC11__PTC11 0x002c 0x0000 0x1 0x0
+#define ULP1_PAD_PTC11__TRACE_D4 0x002c 0x0000 0xa 0x0
+#define ULP1_PAD_PTC11__FXIO1_D7 0x002c 0x0220 0x2 0x1
+#define ULP1_PAD_PTC11__LPSPI2_PCS0 0x002c 0x029c 0x3 0x1
+#define ULP1_PAD_PTC11__LPUART6_RX 0x002c 0x0260 0x4 0x1
+#define ULP1_PAD_PTC11__TPM7_CH4 0x002c 0x02ec 0x6 0x1
+#define ULP1_PAD_PTC11__FB_AD11 0x002c 0x0000 0x9 0x0
+#define ULP1_PAD_PTC12__PTC12 0x0030 0x0000 0x1 0x0
+#define ULP1_PAD_PTC12__TRACE_D3 0x0030 0x0000 0xa 0x0
+#define ULP1_PAD_PTC12__FXIO1_D8 0x0030 0x0224 0x2 0x1
+#define ULP1_PAD_PTC12__LPSPI3_PCS1 0x0030 0x0314 0x3 0x1
+#define ULP1_PAD_PTC12__LPUART7_CTS_B 0x0030 0x0268 0x4 0x1
+#define ULP1_PAD_PTC12__LPI2C7_SCL 0x0030 0x0308 0x5 0x1
+#define ULP1_PAD_PTC12__TPM7_CH5 0x0030 0x02f0 0x6 0x1
+#define ULP1_PAD_PTC12__FB_AD12 0x0030 0x0000 0x9 0x0
+#define ULP1_PAD_PTC13__PTC13 0x0034 0x0000 0x1 0x0
+#define ULP1_PAD_PTC13__TRACE_D2 0x0034 0x0000 0xa 0x0
+#define ULP1_PAD_PTC13__FXIO1_D9 0x0034 0x0228 0x2 0x1
+#define ULP1_PAD_PTC13__LPSPI3_PCS2 0x0034 0x0318 0x3 0x1
+#define ULP1_PAD_PTC13__LPUART7_RTS_B 0x0034 0x0000 0x4 0x0
+#define ULP1_PAD_PTC13__LPI2C7_SDA 0x0034 0x030c 0x5 0x1
+#define ULP1_PAD_PTC13__TPM7_CLKIN 0x0034 0x02f4 0x6 0x1
+#define ULP1_PAD_PTC13__FB_AD13 0x0034 0x0000 0x9 0x0
+#define ULP1_PAD_PTC14__PTC14 0x0038 0x0000 0x1 0x0
+#define ULP1_PAD_PTC14__TRACE_D1 0x0038 0x0000 0xa 0x0
+#define ULP1_PAD_PTC14__FXIO1_D10 0x0038 0x022c 0x2 0x1
+#define ULP1_PAD_PTC14__LPSPI3_PCS3 0x0038 0x031c 0x3 0x1
+#define ULP1_PAD_PTC14__LPUART7_TX 0x0038 0x0270 0x4 0x1
+#define ULP1_PAD_PTC14__LPI2C7_HREQ 0x0038 0x0304 0x5 0x1
+#define ULP1_PAD_PTC14__TPM7_CH0 0x0038 0x02dc 0x6 0x1
+#define ULP1_PAD_PTC14__FB_AD14 0x0038 0x0000 0x9 0x0
+#define ULP1_PAD_PTC15__PTC15 0x003c 0x0000 0x1 0x0
+#define ULP1_PAD_PTC15__TRACE_D0 0x003c 0x0000 0xa 0x0
+#define ULP1_PAD_PTC15__FXIO1_D11 0x003c 0x0230 0x2 0x1
+#define ULP1_PAD_PTC15__LPUART7_RX 0x003c 0x026c 0x4 0x1
+#define ULP1_PAD_PTC15__TPM7_CH1 0x003c 0x02e0 0x6 0x1
+#define ULP1_PAD_PTC15__FB_AD15 0x003c 0x0000 0x9 0x0
+#define ULP1_PAD_PTC16__PTC16 0x0040 0x0000 0x1 0x0
+#define ULP1_PAD_PTC16__TRACE_CLKOUT 0x0040 0x0000 0xa 0x0
+#define ULP1_PAD_PTC16__FXIO1_D12 0x0040 0x0234 0x2 0x1
+#define ULP1_PAD_PTC16__LPSPI3_SIN 0x0040 0x0324 0x3 0x1
+#define ULP1_PAD_PTC16__TPM7_CH2 0x0040 0x02e4 0x6 0x1
+#define ULP1_PAD_PTC16__FB_ALE_FB_CS1_B_FB_TS_B 0x0040 0x0000 0x9 0x0
+#define ULP1_PAD_PTC17__PTC17 0x0044 0x0000 0x1 0x0
+#define ULP1_PAD_PTC17__FXIO1_D13 0x0044 0x0238 0x2 0x1
+#define ULP1_PAD_PTC17__LPSPI3_SOUT 0x0044 0x0328 0x3 0x1
+#define ULP1_PAD_PTC17__TPM6_CLKIN 0x0044 0x02d8 0x6 0x1
+#define ULP1_PAD_PTC17__FB_CS0_B 0x0044 0x0000 0x9 0x0
+#define ULP1_PAD_PTC18__PTC18 0x0048 0x0000 0x1 0x0
+#define ULP1_PAD_PTC18__FXIO1_D14 0x0048 0x023c 0x2 0x1
+#define ULP1_PAD_PTC18__LPSPI3_SCK 0x0048 0x0320 0x3 0x1
+#define ULP1_PAD_PTC18__TPM6_CH0 0x0048 0x02d0 0x6 0x1
+#define ULP1_PAD_PTC18__FB_OE_B 0x0048 0x0000 0x9 0x0
+#define ULP1_PAD_PTC19__PTC19 0x004c 0x0000 0x1 0x0
+#define ULP1_PAD_PTC19__FXIO1_D15 0x004c 0x0240 0x2 0x1
+#define ULP1_PAD_PTC19__LPSPI3_PCS0 0x004c 0x0310 0x3 0x1
+#define ULP1_PAD_PTC19__TPM6_CH1 0x004c 0x02d4 0x6 0x1
+#define ULP1_PAD_PTC19__FB_A16 0x004c 0x0000 0x9 0x0
+#define ULP1_PAD_PTD0__PTD0 0x0080 0x0000 0x1 0x0
+#define ULP1_PAD_PTD0__SDHC0_RESET_B 0x0080 0x0000 0x8 0x0
+#define ULP1_PAD_PTD1__PTD1 0x0084 0x0000 0x1 0x0
+#define ULP1_PAD_PTD1__SDHC0_CMD 0x0084 0x0000 0x8 0x0
+#define ULP1_PAD_PTD2__PTD2 0x0088 0x0000 0x1 0x0
+#define ULP1_PAD_PTD2__SDHC0_CLK 0x0088 0x0000 0x8 0x0
+#define ULP1_PAD_PTD3__PTD3 0x008c 0x0000 0x1 0x0
+#define ULP1_PAD_PTD3__SDHC0_D7 0x008c 0x0000 0x8 0x0
+#define ULP1_PAD_PTD4__PTD4 0x0090 0x0000 0x1 0x0
+#define ULP1_PAD_PTD4__SDHC0_D6 0x0090 0x0000 0x8 0x0
+#define ULP1_PAD_PTD5__PTD5 0x0094 0x0000 0x1 0x0
+#define ULP1_PAD_PTD5__SDHC0_D5 0x0094 0x0000 0x8 0x0
+#define ULP1_PAD_PTD6__PTD6 0x0098 0x0000 0x1 0x0
+#define ULP1_PAD_PTD6__SDHC0_D4 0x0098 0x0000 0x8 0x0
+#define ULP1_PAD_PTD7__PTD7 0x009c 0x0000 0x1 0x0
+#define ULP1_PAD_PTD7__SDHC0_D3 0x009c 0x0000 0x8 0x0
+#define ULP1_PAD_PTD8__PTD8 0x00a0 0x0000 0x1 0x0
+#define ULP1_PAD_PTD8__TPM4_CLKIN 0x00a0 0x0298 0x6 0x2
+#define ULP1_PAD_PTD8__SDHC0_D2 0x00a0 0x0000 0x8 0x0
+#define ULP1_PAD_PTD9__PTD9 0x00a4 0x0000 0x1 0x0
+#define ULP1_PAD_PTD9__TPM4_CH0 0x00a4 0x0280 0x6 0x2
+#define ULP1_PAD_PTD9__SDHC0_D1 0x00a4 0x0000 0x8 0x0
+#define ULP1_PAD_PTD10__PTD10 0x00a8 0x0000 0x1 0x0
+#define ULP1_PAD_PTD10__TPM4_CH1 0x00a8 0x0284 0x6 0x2
+#define ULP1_PAD_PTD10__SDHC0_D0 0x00a8 0x0000 0x8 0x0
+#define ULP1_PAD_PTD11__PTD11 0x00ac 0x0000 0x1 0x0
+#define ULP1_PAD_PTD11__TPM4_CH2 0x00ac 0x0288 0x6 0x2
+#define ULP1_PAD_PTD11__SDHC0_DQS 0x00ac 0x0000 0x8 0x0
+#define ULP1_PAD_PTE0__PTE0 0x0100 0x0000 0x1 0x0
+#define ULP1_PAD_PTE0__FXIO1_D31 0x0100 0x0000 0x2 0x0
+#define ULP1_PAD_PTE0__LPSPI2_PCS1 0x0100 0x02a0 0x3 0x2
+#define ULP1_PAD_PTE0__LPUART4_CTS_B 0x0100 0x0244 0x4 0x2
+#define ULP1_PAD_PTE0__LPI2C4_SCL 0x0100 0x0278 0x5 0x2
+#define ULP1_PAD_PTE0__SDHC1_D1 0x0100 0x0000 0x8 0x0
+#define ULP1_PAD_PTE0__FB_A25 0x0100 0x0000 0x9 0x0
+#define ULP1_PAD_PTE1__PTE1 0x0104 0x0000 0x1 0x0
+#define ULP1_PAD_PTE1__FXIO1_D30 0x0104 0x0000 0x2 0x0
+#define ULP1_PAD_PTE1__LPSPI2_PCS2 0x0104 0x02a4 0x3 0x2
+#define ULP1_PAD_PTE1__LPUART4_RTS_B 0x0104 0x0000 0x4 0x0
+#define ULP1_PAD_PTE1__LPI2C4_SDA 0x0104 0x027c 0x5 0x2
+#define ULP1_PAD_PTE1__SDHC1_D0 0x0104 0x0000 0x8 0x0
+#define ULP1_PAD_PTE1__FB_A26 0x0104 0x0000 0x9 0x0
+#define ULP1_PAD_PTE2__PTE2 0x0108 0x0000 0x1 0x0
+#define ULP1_PAD_PTE2__FXIO1_D29 0x0108 0x0000 0x2 0x0
+#define ULP1_PAD_PTE2__LPSPI2_PCS3 0x0108 0x02a8 0x3 0x2
+#define ULP1_PAD_PTE2__LPUART4_TX 0x0108 0x024c 0x4 0x2
+#define ULP1_PAD_PTE2__LPI2C4_HREQ 0x0108 0x0274 0x5 0x2
+#define ULP1_PAD_PTE2__SDHC1_CLK 0x0108 0x0000 0x8 0x0
+#define ULP1_PAD_PTE3__PTE3 0x010c 0x0000 0x1 0x0
+#define ULP1_PAD_PTE3__FXIO1_D28 0x010c 0x0000 0x2 0x0
+#define ULP1_PAD_PTE3__LPUART4_RX 0x010c 0x0248 0x4 0x2
+#define ULP1_PAD_PTE3__TPM5_CH1 0x010c 0x02c8 0x6 0x2
+#define ULP1_PAD_PTE3__SDHC1_CMD 0x010c 0x0000 0x8 0x0
+#define ULP1_PAD_PTE4__PTE4 0x0110 0x0000 0x1 0x0
+#define ULP1_PAD_PTE4__FXIO1_D27 0x0110 0x0000 0x2 0x0
+#define ULP1_PAD_PTE4__LPSPI2_SIN 0x0110 0x02b0 0x3 0x2
+#define ULP1_PAD_PTE4__LPUART5_CTS_B 0x0110 0x0250 0x4 0x2
+#define ULP1_PAD_PTE4__LPI2C5_SCL 0x0110 0x02bc 0x5 0x2
+#define ULP1_PAD_PTE4__TPM5_CLKIN 0x0110 0x02cc 0x6 0x2
+#define ULP1_PAD_PTE4__SDHC1_D3 0x0110 0x0000 0x8 0x0
+#define ULP1_PAD_PTE5__PTE5 0x0114 0x0000 0x1 0x0
+#define ULP1_PAD_PTE5__FXIO1_D26 0x0114 0x0000 0x2 0x0
+#define ULP1_PAD_PTE5__LPSPI2_SOUT 0x0114 0x02b4 0x3 0x2
+#define ULP1_PAD_PTE5__LPUART5_RTS_B 0x0114 0x0000 0x4 0x0
+#define ULP1_PAD_PTE5__LPI2C5_SDA 0x0114 0x02c0 0x5 0x2
+#define ULP1_PAD_PTE5__TPM5_CH0 0x0114 0x02c4 0x6 0x2
+#define ULP1_PAD_PTE5__SDHC1_D2 0x0114 0x0000 0x8 0x0
+#define ULP1_PAD_PTE6__PTE6 0x0118 0x0000 0x1 0x0
+#define ULP1_PAD_PTE6__FXIO1_D25 0x0118 0x0000 0x2 0x0
+#define ULP1_PAD_PTE6__LPSPI2_SCK 0x0118 0x02ac 0x3 0x2
+#define ULP1_PAD_PTE6__LPUART5_TX 0x0118 0x0258 0x4 0x2
+#define ULP1_PAD_PTE6__LPI2C5_HREQ 0x0118 0x02b8 0x5 0x2
+#define ULP1_PAD_PTE6__TPM7_CH3 0x0118 0x02e8 0x6 0x2
+#define ULP1_PAD_PTE6__SDHC1_D4 0x0118 0x0000 0x8 0x0
+#define ULP1_PAD_PTE6__FB_A17 0x0118 0x0000 0x9 0x0
+#define ULP1_PAD_PTE7__PTE7 0x011c 0x0000 0x1 0x0
+#define ULP1_PAD_PTE7__TRACE_D7 0x011c 0x0000 0xa 0x0
+#define ULP1_PAD_PTE7__VIU_FID 0x011c 0x0000 0xc 0x0
+#define ULP1_PAD_PTE7__FXIO1_D24 0x011c 0x0000 0x2 0x0
+#define ULP1_PAD_PTE7__LPSPI2_PCS0 0x011c 0x029c 0x3 0x2
+#define ULP1_PAD_PTE7__LPUART5_RX 0x011c 0x0254 0x4 0x2
+#define ULP1_PAD_PTE7__TPM7_CH4 0x011c 0x02ec 0x6 0x2
+#define ULP1_PAD_PTE7__SDHC1_D5 0x011c 0x0000 0x8 0x0
+#define ULP1_PAD_PTE7__FB_A18 0x011c 0x0000 0x9 0x0
+#define ULP1_PAD_PTE8__PTE8 0x0120 0x0000 0x1 0x0
+#define ULP1_PAD_PTE8__TRACE_D6 0x0120 0x0000 0xa 0x0
+#define ULP1_PAD_PTE8__VIU_D16 0x0120 0x0000 0xc 0x0
+#define ULP1_PAD_PTE8__FXIO1_D23 0x0120 0x0000 0x2 0x0
+#define ULP1_PAD_PTE8__LPSPI3_PCS1 0x0120 0x0314 0x3 0x2
+#define ULP1_PAD_PTE8__LPUART6_CTS_B 0x0120 0x025c 0x4 0x2
+#define ULP1_PAD_PTE8__LPI2C6_SCL 0x0120 0x02fc 0x5 0x2
+#define ULP1_PAD_PTE8__TPM7_CH5 0x0120 0x02f0 0x6 0x2
+#define ULP1_PAD_PTE8__SDHC1_WP 0x0120 0x0200 0x7 0x1
+#define ULP1_PAD_PTE8__SDHC1_D6 0x0120 0x0000 0x8 0x0
+#define ULP1_PAD_PTE8__FB_CS3_B_FB_BE7_0_BLS31_24_B 0x0120 0x0000 0x9 0x0
+#define ULP1_PAD_PTE9__PTE9 0x0124 0x0000 0x1 0x0
+#define ULP1_PAD_PTE9__TRACE_D5 0x0124 0x0000 0xa 0x0
+#define ULP1_PAD_PTE9__VIU_D17 0x0124 0x0000 0xc 0x0
+#define ULP1_PAD_PTE9__FXIO1_D22 0x0124 0x0000 0x2 0x0
+#define ULP1_PAD_PTE9__LPSPI3_PCS2 0x0124 0x0318 0x3 0x2
+#define ULP1_PAD_PTE9__LPUART6_RTS_B 0x0124 0x0000 0x4 0x0
+#define ULP1_PAD_PTE9__LPI2C6_SDA 0x0124 0x0300 0x5 0x2
+#define ULP1_PAD_PTE9__TPM7_CLKIN 0x0124 0x02f4 0x6 0x2
+#define ULP1_PAD_PTE9__SDHC1_CD 0x0124 0x032c 0x7 0x1
+#define ULP1_PAD_PTE9__SDHC1_D7 0x0124 0x0000 0x8 0x0
+#define ULP1_PAD_PTE9__FB_TBST_B_FB_CS2_B_FB_BE15_8_BLS23_16_B 0x0124 0x0000 0x9 0x0
+#define ULP1_PAD_PTE10__PTE10 0x0128 0x0000 0x1 0x0
+#define ULP1_PAD_PTE10__TRACE_D4 0x0128 0x0000 0xa 0x0
+#define ULP1_PAD_PTE10__VIU_D18 0x0128 0x0000 0xc 0x0
+#define ULP1_PAD_PTE10__FXIO1_D21 0x0128 0x0000 0x2 0x0
+#define ULP1_PAD_PTE10__LPSPI3_PCS3 0x0128 0x031c 0x3 0x2
+#define ULP1_PAD_PTE10__LPUART6_TX 0x0128 0x0264 0x4 0x2
+#define ULP1_PAD_PTE10__LPI2C6_HREQ 0x0128 0x02f8 0x5 0x2
+#define ULP1_PAD_PTE10__TPM7_CH0 0x0128 0x02dc 0x6 0x2
+#define ULP1_PAD_PTE10__SDHC1_VS 0x0128 0x0000 0x7 0x0
+#define ULP1_PAD_PTE10__SDHC1_DQS 0x0128 0x0000 0x8 0x0
+#define ULP1_PAD_PTE10__FB_A19 0x0128 0x0000 0x9 0x0
+#define ULP1_PAD_PTE11__PTE11 0x012c 0x0000 0x1 0x0
+#define ULP1_PAD_PTE11__TRACE_D3 0x012c 0x0000 0xa 0x0
+#define ULP1_PAD_PTE11__VIU_D19 0x012c 0x0000 0xc 0x0
+#define ULP1_PAD_PTE11__FXIO1_D20 0x012c 0x0000 0x2 0x0
+#define ULP1_PAD_PTE11__LPUART6_RX 0x012c 0x0260 0x4 0x2
+#define ULP1_PAD_PTE11__TPM7_CH1 0x012c 0x02e0 0x6 0x2
+#define ULP1_PAD_PTE11__SDHC1_RESET_B 0x012c 0x0000 0x8 0x0
+#define ULP1_PAD_PTE11__FB_A20 0x012c 0x0000 0x9 0x0
+#define ULP1_PAD_PTE12__PTE12 0x0130 0x0000 0x1 0x0
+#define ULP1_PAD_PTE12__TRACE_D2 0x0130 0x0000 0xa 0x0
+#define ULP1_PAD_PTE12__VIU_D20 0x0130 0x0000 0xc 0x0
+#define ULP1_PAD_PTE12__FXIO1_D19 0x0130 0x0000 0x2 0x0
+#define ULP1_PAD_PTE12__LPSPI3_SIN 0x0130 0x0324 0x3 0x2
+#define ULP1_PAD_PTE12__LPUART7_CTS_B 0x0130 0x0268 0x4 0x2
+#define ULP1_PAD_PTE12__LPI2C7_SCL 0x0130 0x0308 0x5 0x2
+#define ULP1_PAD_PTE12__TPM7_CH2 0x0130 0x02e4 0x6 0x2
+#define ULP1_PAD_PTE12__SDHC1_WP 0x0130 0x0200 0x8 0x2
+#define ULP1_PAD_PTE12__FB_A21 0x0130 0x0000 0x9 0x0
+#define ULP1_PAD_PTE13__PTE13 0x0134 0x0000 0x1 0x0
+#define ULP1_PAD_PTE13__TRACE_D1 0x0134 0x0000 0xa 0x0
+#define ULP1_PAD_PTE13__VIU_D21 0x0134 0x0000 0xc 0x0
+#define ULP1_PAD_PTE13__FXIO1_D18 0x0134 0x0000 0x2 0x0
+#define ULP1_PAD_PTE13__LPSPI3_SOUT 0x0134 0x0328 0x3 0x2
+#define ULP1_PAD_PTE13__LPUART7_RTS_B 0x0134 0x0000 0x4 0x0
+#define ULP1_PAD_PTE13__LPI2C7_SDA 0x0134 0x030c 0x5 0x2
+#define ULP1_PAD_PTE13__TPM6_CLKIN 0x0134 0x02d8 0x6 0x2
+#define ULP1_PAD_PTE13__SDHC1_CD 0x0134 0x032c 0x8 0x2
+#define ULP1_PAD_PTE13__FB_A22 0x0134 0x0000 0x9 0x0
+#define ULP1_PAD_PTE14__PTE14 0x0138 0x0000 0x1 0x0
+#define ULP1_PAD_PTE14__TRACE_D0 0x0138 0x0000 0xa 0x0
+#define ULP1_PAD_PTE14__VIU_D22 0x0138 0x0000 0xc 0x0
+#define ULP1_PAD_PTE14__FXIO1_D17 0x0138 0x0000 0x2 0x0
+#define ULP1_PAD_PTE14__LPSPI3_SCK 0x0138 0x0320 0x3 0x2
+#define ULP1_PAD_PTE14__LPUART7_TX 0x0138 0x0270 0x4 0x2
+#define ULP1_PAD_PTE14__LPI2C7_HREQ 0x0138 0x0304 0x5 0x2
+#define ULP1_PAD_PTE14__TPM6_CH0 0x0138 0x02d0 0x6 0x2
+#define ULP1_PAD_PTE14__SDHC1_VS 0x0138 0x0000 0x8 0x0
+#define ULP1_PAD_PTE14__FB_A23 0x0138 0x0000 0x9 0x0
+#define ULP1_PAD_PTE15__PTE15 0x013c 0x0000 0x1 0x0
+#define ULP1_PAD_PTE15__TRACE_CLKOUT 0x013c 0x0000 0xa 0x0
+#define ULP1_PAD_PTE15__VIU_D23 0x013c 0x0000 0xc 0x0
+#define ULP1_PAD_PTE15__FXIO1_D16 0x013c 0x0000 0x2 0x0
+#define ULP1_PAD_PTE15__LPSPI3_PCS0 0x013c 0x0310 0x3 0x2
+#define ULP1_PAD_PTE15__LPUART7_RX 0x013c 0x026c 0x4 0x2
+#define ULP1_PAD_PTE15__TPM6_CH1 0x013c 0x02d4 0x6 0x2
+#define ULP1_PAD_PTE15__FB_A24 0x013c 0x0000 0x9 0x0
+#define ULP1_PAD_PTF0__PTF0 0x0180 0x0000 0x1 0x0
+#define ULP1_PAD_PTF0__VIU_DE 0x0180 0x0000 0xc 0x0
+#define ULP1_PAD_PTF0__LPUART4_CTS_B 0x0180 0x0244 0x4 0x3
+#define ULP1_PAD_PTF0__LPI2C4_SCL 0x0180 0x0278 0x5 0x3
+#define ULP1_PAD_PTF0__TPM4_CLKIN 0x0180 0x0298 0x6 0x3
+#define ULP1_PAD_PTF0__FB_RW_B 0x0180 0x0000 0x9 0x0
+#define ULP1_PAD_PTF1__PTF1 0x0184 0x0000 0x1 0x0
+#define ULP1_PAD_PTF1__VIU_HSYNC 0x0184 0x0000 0xc 0x0
+#define ULP1_PAD_PTF1__LPUART4_RTS_B 0x0184 0x0000 0x4 0x0
+#define ULP1_PAD_PTF1__LPI2C4_SDA 0x0184 0x027c 0x5 0x3
+#define ULP1_PAD_PTF1__TPM4_CH0 0x0184 0x0280 0x6 0x3
+#define ULP1_PAD_PTF1__CLKOUT 0x0184 0x0000 0x9 0x0
+#define ULP1_PAD_PTF2__PTF2 0x0188 0x0000 0x1 0x0
+#define ULP1_PAD_PTF2__VIU_VSYNC 0x0188 0x0000 0xc 0x0
+#define ULP1_PAD_PTF2__LPUART4_TX 0x0188 0x024c 0x4 0x3
+#define ULP1_PAD_PTF2__LPI2C4_HREQ 0x0188 0x0274 0x5 0x3
+#define ULP1_PAD_PTF2__TPM4_CH1 0x0188 0x0284 0x6 0x3
+#define ULP1_PAD_PTF2__FB_TSIZ1_FB_CS5_B_FB_BE23_16_BLS15_8_B 0x0188 0x0000 0x9 0x0
+#define ULP1_PAD_PTF3__PTF3 0x018c 0x0000 0x1 0x0
+#define ULP1_PAD_PTF3__VIU_PCLK 0x018c 0x0000 0xc 0x0
+#define ULP1_PAD_PTF3__LPUART4_RX 0x018c 0x0248 0x4 0x3
+#define ULP1_PAD_PTF3__TPM4_CH2 0x018c 0x0288 0x6 0x3
+#define ULP1_PAD_PTF3__FB_AD16 0x018c 0x0000 0x9 0x0
+#define ULP1_PAD_PTF4__PTF4 0x0190 0x0000 0x1 0x0
+#define ULP1_PAD_PTF4__VIU_D0 0x0190 0x0000 0xc 0x0
+#define ULP1_PAD_PTF4__FXIO1_D0 0x0190 0x0204 0x2 0x2
+#define ULP1_PAD_PTF4__LPSPI2_PCS1 0x0190 0x02a0 0x3 0x3
+#define ULP1_PAD_PTF4__LPUART5_CTS_B 0x0190 0x0250 0x4 0x3
+#define ULP1_PAD_PTF4__LPI2C5_SCL 0x0190 0x02bc 0x5 0x3
+#define ULP1_PAD_PTF4__TPM4_CH3 0x0190 0x028c 0x6 0x2
+#define ULP1_PAD_PTF4__FB_AD17 0x0190 0x0000 0x9 0x0
+#define ULP1_PAD_PTF5__PTF5 0x0194 0x0000 0x1 0x0
+#define ULP1_PAD_PTF5__VIU_D1 0x0194 0x0000 0xc 0x0
+#define ULP1_PAD_PTF5__FXIO1_D1 0x0194 0x0208 0x2 0x2
+#define ULP1_PAD_PTF5__LPSPI2_PCS2 0x0194 0x02a4 0x3 0x3
+#define ULP1_PAD_PTF5__LPUART5_RTS_B 0x0194 0x0000 0x4 0x0
+#define ULP1_PAD_PTF5__LPI2C5_SDA 0x0194 0x02c0 0x5 0x3
+#define ULP1_PAD_PTF5__TPM4_CH4 0x0194 0x0290 0x6 0x2
+#define ULP1_PAD_PTF5__FB_AD18 0x0194 0x0000 0x9 0x0
+#define ULP1_PAD_PTF6__PTF6 0x0198 0x0000 0x1 0x0
+#define ULP1_PAD_PTF6__VIU_D2 0x0198 0x0000 0xc 0x0
+#define ULP1_PAD_PTF6__FXIO1_D2 0x0198 0x020c 0x2 0x2
+#define ULP1_PAD_PTF6__LPSPI2_PCS3 0x0198 0x02a8 0x3 0x3
+#define ULP1_PAD_PTF6__LPUART5_TX 0x0198 0x0258 0x4 0x3
+#define ULP1_PAD_PTF6__LPI2C5_HREQ 0x0198 0x02b8 0x5 0x3
+#define ULP1_PAD_PTF6__TPM4_CH5 0x0198 0x0294 0x6 0x2
+#define ULP1_PAD_PTF6__FB_AD19 0x0198 0x0000 0x9 0x0
+#define ULP1_PAD_PTF7__PTF7 0x019c 0x0000 0x1 0x0
+#define ULP1_PAD_PTF7__VIU_D3 0x019c 0x0000 0xc 0x0
+#define ULP1_PAD_PTF7__FXIO1_D3 0x019c 0x0210 0x2 0x2
+#define ULP1_PAD_PTF7__LPUART5_RX 0x019c 0x0254 0x4 0x3
+#define ULP1_PAD_PTF7__TPM5_CH1 0x019c 0x02c8 0x6 0x3
+#define ULP1_PAD_PTF7__FB_AD20 0x019c 0x0000 0x9 0x0
+#define ULP1_PAD_PTF8__PTF8 0x01a0 0x0000 0x1 0x0
+#define ULP1_PAD_PTF8__USB1_ULPI_CLK 0x01a0 0x0000 0xb 0x0
+#define ULP1_PAD_PTF8__VIU_D4 0x01a0 0x0000 0xc 0x0
+#define ULP1_PAD_PTF8__FXIO1_D4 0x01a0 0x0214 0x2 0x2
+#define ULP1_PAD_PTF8__LPSPI2_SIN 0x01a0 0x02b0 0x3 0x3
+#define ULP1_PAD_PTF8__LPUART6_CTS_B 0x01a0 0x025c 0x4 0x3
+#define ULP1_PAD_PTF8__LPI2C6_SCL 0x01a0 0x02fc 0x5 0x3
+#define ULP1_PAD_PTF8__TPM5_CLKIN 0x01a0 0x02cc 0x6 0x3
+#define ULP1_PAD_PTF8__FB_AD21 0x01a0 0x0000 0x9 0x0
+#define ULP1_PAD_PTF9__PTF9 0x01a4 0x0000 0x1 0x0
+#define ULP1_PAD_PTF9__USB1_ULPI_NXT 0x01a4 0x0000 0xb 0x0
+#define ULP1_PAD_PTF9__VIU_D5 0x01a4 0x0000 0xc 0x0
+#define ULP1_PAD_PTF9__FXIO1_D5 0x01a4 0x0218 0x2 0x2
+#define ULP1_PAD_PTF9__LPSPI2_SOUT 0x01a4 0x02b4 0x3 0x3
+#define ULP1_PAD_PTF9__LPUART6_RTS_B 0x01a4 0x0000 0x4 0x0
+#define ULP1_PAD_PTF9__LPI2C6_SDA 0x01a4 0x0300 0x5 0x3
+#define ULP1_PAD_PTF9__TPM5_CH0 0x01a4 0x02c4 0x6 0x3
+#define ULP1_PAD_PTF9__FB_AD22 0x01a4 0x0000 0x9 0x0
+#define ULP1_PAD_PTF10__PTF10 0x01a8 0x0000 0x1 0x0
+#define ULP1_PAD_PTF10__USB1_ULPI_STP 0x01a8 0x0000 0xb 0x0
+#define ULP1_PAD_PTF10__VIU_D6 0x01a8 0x0000 0xc 0x0
+#define ULP1_PAD_PTF10__FXIO1_D6 0x01a8 0x021c 0x2 0x2
+#define ULP1_PAD_PTF10__LPSPI2_SCK 0x01a8 0x02ac 0x3 0x3
+#define ULP1_PAD_PTF10__LPUART6_TX 0x01a8 0x0264 0x4 0x3
+#define ULP1_PAD_PTF10__LPI2C6_HREQ 0x01a8 0x02f8 0x5 0x3
+#define ULP1_PAD_PTF10__TPM7_CH3 0x01a8 0x02e8 0x6 0x3
+#define ULP1_PAD_PTF10__FB_AD23 0x01a8 0x0000 0x9 0x0
+#define ULP1_PAD_PTF11__PTF11 0x01ac 0x0000 0x1 0x0
+#define ULP1_PAD_PTF11__USB1_ULPI_DIR 0x01ac 0x0000 0xb 0x0
+#define ULP1_PAD_PTF11__VIU_D7 0x01ac 0x0000 0xc 0x0
+#define ULP1_PAD_PTF11__FXIO1_D7 0x01ac 0x0220 0x2 0x2
+#define ULP1_PAD_PTF11__LPSPI2_PCS0 0x01ac 0x029c 0x3 0x3
+#define ULP1_PAD_PTF11__LPUART6_RX 0x01ac 0x0260 0x4 0x3
+#define ULP1_PAD_PTF11__TPM7_CH4 0x01ac 0x02ec 0x6 0x3
+#define ULP1_PAD_PTF11__FB_CS4_B_FB_TSIZ0_FB_BE31_24_BLS7_0_B 0x01ac 0x0000 0x9 0x0
+#define ULP1_PAD_PTF12__PTF12 0x01b0 0x0000 0x1 0x0
+#define ULP1_PAD_PTF12__USB1_ULPI_DATA0 0x01b0 0x0000 0xb 0x0
+#define ULP1_PAD_PTF12__VIU_D8 0x01b0 0x0000 0xc 0x0
+#define ULP1_PAD_PTF12__FXIO1_D8 0x01b0 0x0224 0x2 0x2
+#define ULP1_PAD_PTF12__LPSPI3_PCS1 0x01b0 0x0314 0x3 0x3
+#define ULP1_PAD_PTF12__LPUART7_CTS_B 0x01b0 0x0268 0x4 0x3
+#define ULP1_PAD_PTF12__LPI2C7_SCL 0x01b0 0x0308 0x5 0x3
+#define ULP1_PAD_PTF12__TPM7_CH5 0x01b0 0x02f0 0x6 0x3
+#define ULP1_PAD_PTF12__FB_AD24 0x01b0 0x0000 0x9 0x0
+#define ULP1_PAD_PTF13__PTF13 0x01b4 0x0000 0x1 0x0
+#define ULP1_PAD_PTF13__USB1_ULPI_DATA1 0x01b4 0x0000 0xb 0x0
+#define ULP1_PAD_PTF13__VIU_D9 0x01b4 0x0000 0xc 0x0
+#define ULP1_PAD_PTF13__FXIO1_D9 0x01b4 0x0228 0x2 0x2
+#define ULP1_PAD_PTF13__LPSPI3_PCS2 0x01b4 0x0318 0x3 0x3
+#define ULP1_PAD_PTF13__LPUART7_RTS_B 0x01b4 0x0000 0x4 0x0
+#define ULP1_PAD_PTF13__LPI2C7_SDA 0x01b4 0x030c 0x5 0x3
+#define ULP1_PAD_PTF13__TPM7_CLKIN 0x01b4 0x02f4 0x6 0x3
+#define ULP1_PAD_PTF13__FB_AD25 0x01b4 0x0000 0x9 0x0
+#define ULP1_PAD_PTF14__PTF14 0x01b8 0x0000 0x1 0x0
+#define ULP1_PAD_PTF14__USB1_ULPI_DATA2 0x01b8 0x0000 0xb 0x0
+#define ULP1_PAD_PTF14__VIU_D10 0x01b8 0x0000 0xc 0x0
+#define ULP1_PAD_PTF14__FXIO1_D10 0x01b8 0x022c 0x2 0x2
+#define ULP1_PAD_PTF14__LPSPI3_PCS3 0x01b8 0x031c 0x3 0x3
+#define ULP1_PAD_PTF14__LPUART7_TX 0x01b8 0x0270 0x4 0x3
+#define ULP1_PAD_PTF14__LPI2C7_HREQ 0x01b8 0x0304 0x5 0x3
+#define ULP1_PAD_PTF14__TPM7_CH0 0x01b8 0x02dc 0x6 0x3
+#define ULP1_PAD_PTF14__FB_AD26 0x01b8 0x0000 0x9 0x0
+#define ULP1_PAD_PTF15__PTF15 0x01bc 0x0000 0x1 0x0
+#define ULP1_PAD_PTF15__USB1_ULPI_DATA3 0x01bc 0x0000 0xb 0x0
+#define ULP1_PAD_PTF15__VIU_D11 0x01bc 0x0000 0xc 0x0
+#define ULP1_PAD_PTF15__FXIO1_D11 0x01bc 0x0230 0x2 0x2
+#define ULP1_PAD_PTF15__LPUART7_RX 0x01bc 0x026c 0x4 0x3
+#define ULP1_PAD_PTF15__TPM7_CH1 0x01bc 0x02e0 0x6 0x3
+#define ULP1_PAD_PTF15__FB_AD27 0x01bc 0x0000 0x9 0x0
+#define ULP1_PAD_PTF16__PTF16 0x01c0 0x0000 0x1 0x0
+#define ULP1_PAD_PTF16__USB1_ULPI_DATA4 0x01c0 0x0000 0xb 0x0
+#define ULP1_PAD_PTF16__VIU_D12 0x01c0 0x0000 0xc 0x0
+#define ULP1_PAD_PTF16__FXIO1_D12 0x01c0 0x0234 0x2 0x2
+#define ULP1_PAD_PTF16__LPSPI3_SIN 0x01c0 0x0324 0x3 0x3
+#define ULP1_PAD_PTF16__TPM7_CH2 0x01c0 0x02e4 0x6 0x3
+#define ULP1_PAD_PTF16__FB_AD28 0x01c0 0x0000 0x9 0x0
+#define ULP1_PAD_PTF17__PTF17 0x01c4 0x0000 0x1 0x0
+#define ULP1_PAD_PTF17__USB1_ULPI_DATA5 0x01c4 0x0000 0xb 0x0
+#define ULP1_PAD_PTF17__VIU_D13 0x01c4 0x0000 0xc 0x0
+#define ULP1_PAD_PTF17__FXIO1_D13 0x01c4 0x0238 0x2 0x2
+#define ULP1_PAD_PTF17__LPSPI3_SOUT 0x01c4 0x0328 0x3 0x3
+#define ULP1_PAD_PTF17__TPM6_CLKIN 0x01c4 0x02d8 0x6 0x3
+#define ULP1_PAD_PTF17__FB_AD29 0x01c4 0x0000 0x9 0x0
+#define ULP1_PAD_PTF18__PTF18 0x01c8 0x0000 0x1 0x0
+#define ULP1_PAD_PTF18__USB1_ULPI_DATA6 0x01c8 0x0000 0xb 0x0
+#define ULP1_PAD_PTF18__VIU_D14 0x01c8 0x0000 0xc 0x0
+#define ULP1_PAD_PTF18__FXIO1_D14 0x01c8 0x023c 0x2 0x2
+#define ULP1_PAD_PTF18__LPSPI3_SCK 0x01c8 0x0320 0x3 0x3
+#define ULP1_PAD_PTF18__TPM6_CH0 0x01c8 0x02d0 0x6 0x3
+#define ULP1_PAD_PTF18__FB_AD30 0x01c8 0x0000 0x9 0x0
+#define ULP1_PAD_PTF19__PTF19 0x01cc 0x0000 0x1 0x0
+#define ULP1_PAD_PTF19__USB1_ULPI_DATA7 0x01cc 0x0000 0xb 0x0
+#define ULP1_PAD_PTF19__VIU_D15 0x01cc 0x0000 0xc 0x0
+#define ULP1_PAD_PTF19__FXIO1_D15 0x01cc 0x0240 0x2 0x2
+#define ULP1_PAD_PTF19__LPSPI3_PCS0 0x01cc 0x0310 0x3 0x3
+#define ULP1_PAD_PTF19__TPM6_CH1 0x01cc 0x02d4 0x6 0x3
+#define ULP1_PAD_PTF19__FB_AD31 0x01cc 0x0000 0x9 0x0
+
+#endif /* __DTS_IMX7ULP_PINFUNC_H */
--
2.7.4
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH V2 5/5] pinctrl: imx: add imx7ulp driver
2017-05-19 7:05 [PATCH V2 0/5] pinctrl: imx: add generic pin config and imx7ulp support Dong Aisheng
` (3 preceding siblings ...)
2017-05-19 7:05 ` [PATCH V2 4/5] dt-bindings: pinctrl: add imx7ulp pinctrl binding doc Dong Aisheng
@ 2017-05-19 7:05 ` Dong Aisheng
2017-05-21 9:31 ` Shawn Guo
2017-05-23 7:41 ` [PATCH V2 0/5] pinctrl: imx: add generic pin config and imx7ulp support Linus Walleij
5 siblings, 1 reply; 26+ messages in thread
From: Dong Aisheng @ 2017-05-19 7:05 UTC (permalink / raw)
To: linux-arm-kernel
i.MX 7ULP has three IOMUXC instances: IOMUXC0 for M4 ports,
IOMUXC1 for A7 ports and IOMUXC DDR for DDR interface.
This patch adds the IOMUXC1 support for A7.
It only supports generic pin config.
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Shawn Guo <shawnguo@kernel.org>
Cc: Bai Ping <ping.bai@nxp.com>
Cc: Fugang Duan <fugang.duan@nxp.com>
Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
---
* no changes
---
drivers/pinctrl/freescale/Kconfig | 7 +
drivers/pinctrl/freescale/Makefile | 1 +
drivers/pinctrl/freescale/pinctrl-imx7ulp.c | 358 ++++++++++++++++++++++++++++
3 files changed, 366 insertions(+)
create mode 100644 drivers/pinctrl/freescale/pinctrl-imx7ulp.c
diff --git a/drivers/pinctrl/freescale/Kconfig b/drivers/pinctrl/freescale/Kconfig
index 0b266b2..4dbc576 100644
--- a/drivers/pinctrl/freescale/Kconfig
+++ b/drivers/pinctrl/freescale/Kconfig
@@ -103,6 +103,13 @@ config PINCTRL_IMX7D
help
Say Y here to enable the imx7d pinctrl driver
+config PINCTRL_IMX7ULP
+ bool "IMX7ULP pinctrl driver"
+ depends on SOC_IMX7ULP
+ select PINCTRL_IMX
+ help
+ Say Y here to enable the imx7ulp pinctrl driver
+
config PINCTRL_VF610
bool "Freescale Vybrid VF610 pinctrl driver"
depends on SOC_VF610
diff --git a/drivers/pinctrl/freescale/Makefile b/drivers/pinctrl/freescale/Makefile
index d44c9e2..525a5ff 100644
--- a/drivers/pinctrl/freescale/Makefile
+++ b/drivers/pinctrl/freescale/Makefile
@@ -14,6 +14,7 @@ obj-$(CONFIG_PINCTRL_IMX6SL) += pinctrl-imx6sl.o
obj-$(CONFIG_PINCTRL_IMX6SX) += pinctrl-imx6sx.o
obj-$(CONFIG_PINCTRL_IMX6UL) += pinctrl-imx6ul.o
obj-$(CONFIG_PINCTRL_IMX7D) += pinctrl-imx7d.o
+obj-$(CONFIG_PINCTRL_IMX7ULP) += pinctrl-imx7ulp.o
obj-$(CONFIG_PINCTRL_VF610) += pinctrl-vf610.o
obj-$(CONFIG_PINCTRL_MXS) += pinctrl-mxs.o
obj-$(CONFIG_PINCTRL_IMX23) += pinctrl-imx23.o
diff --git a/drivers/pinctrl/freescale/pinctrl-imx7ulp.c b/drivers/pinctrl/freescale/pinctrl-imx7ulp.c
new file mode 100644
index 0000000..dead416
--- /dev/null
+++ b/drivers/pinctrl/freescale/pinctrl-imx7ulp.c
@@ -0,0 +1,358 @@
+/*
+ * Copyright (C) 2016 Freescale Semiconductor, Inc.
+ * Copyright (C) 2017 NXP
+ *
+ * Author: Dong Aisheng <aisheng.dong@nxp.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ */
+
+#include <linux/err.h>
+#include <linux/init.h>
+#include <linux/io.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/of_device.h>
+#include <linux/pinctrl/pinctrl.h>
+
+#include "pinctrl-imx.h"
+
+enum imx7ulp_pads {
+ ULP1_PAD_PTC0 = 0,
+ ULP1_PAD_PTC1,
+ ULP1_PAD_PTC2,
+ ULP1_PAD_PTC3,
+ ULP1_PAD_PTC4,
+ ULP1_PAD_PTC5,
+ ULP1_PAD_PTC6,
+ ULP1_PAD_PTC7,
+ ULP1_PAD_PTC8,
+ ULP1_PAD_PTC9,
+ ULP1_PAD_PTC10,
+ ULP1_PAD_PTC11,
+ ULP1_PAD_PTC12,
+ ULP1_PAD_PTC13,
+ ULP1_PAD_PTC14,
+ ULP1_PAD_PTC15,
+ ULP1_PAD_PTC16,
+ ULP1_PAD_PTC17,
+ ULP1_PAD_PTC18,
+ ULP1_PAD_PTC19,
+ ULP1_PAD_RESERVE0,
+ ULP1_PAD_RESERVE1,
+ ULP1_PAD_RESERVE2,
+ ULP1_PAD_RESERVE3,
+ ULP1_PAD_RESERVE4,
+ ULP1_PAD_RESERVE5,
+ ULP1_PAD_RESERVE6,
+ ULP1_PAD_RESERVE7,
+ ULP1_PAD_RESERVE8,
+ ULP1_PAD_RESERVE9,
+ ULP1_PAD_RESERVE10,
+ ULP1_PAD_RESERVE11,
+ ULP1_PAD_PTD0,
+ ULP1_PAD_PTD1,
+ ULP1_PAD_PTD2,
+ ULP1_PAD_PTD3,
+ ULP1_PAD_PTD4,
+ ULP1_PAD_PTD5,
+ ULP1_PAD_PTD6,
+ ULP1_PAD_PTD7,
+ ULP1_PAD_PTD8,
+ ULP1_PAD_PTD9,
+ ULP1_PAD_PTD10,
+ ULP1_PAD_PTD11,
+ ULP1_PAD_RESERVE12,
+ ULP1_PAD_RESERVE13,
+ ULP1_PAD_RESERVE14,
+ ULP1_PAD_RESERVE15,
+ ULP1_PAD_RESERVE16,
+ ULP1_PAD_RESERVE17,
+ ULP1_PAD_RESERVE18,
+ ULP1_PAD_RESERVE19,
+ ULP1_PAD_RESERVE20,
+ ULP1_PAD_RESERVE21,
+ ULP1_PAD_RESERVE22,
+ ULP1_PAD_RESERVE23,
+ ULP1_PAD_RESERVE24,
+ ULP1_PAD_RESERVE25,
+ ULP1_PAD_RESERVE26,
+ ULP1_PAD_RESERVE27,
+ ULP1_PAD_RESERVE28,
+ ULP1_PAD_RESERVE29,
+ ULP1_PAD_RESERVE30,
+ ULP1_PAD_RESERVE31,
+ ULP1_PAD_PTE0,
+ ULP1_PAD_PTE1,
+ ULP1_PAD_PTE2,
+ ULP1_PAD_PTE3,
+ ULP1_PAD_PTE4,
+ ULP1_PAD_PTE5,
+ ULP1_PAD_PTE6,
+ ULP1_PAD_PTE7,
+ ULP1_PAD_PTE8,
+ ULP1_PAD_PTE9,
+ ULP1_PAD_PTE10,
+ ULP1_PAD_PTE11,
+ ULP1_PAD_PTE12,
+ ULP1_PAD_PTE13,
+ ULP1_PAD_PTE14,
+ ULP1_PAD_PTE15,
+ ULP1_PAD_RESERVE32,
+ ULP1_PAD_RESERVE33,
+ ULP1_PAD_RESERVE34,
+ ULP1_PAD_RESERVE35,
+ ULP1_PAD_RESERVE36,
+ ULP1_PAD_RESERVE37,
+ ULP1_PAD_RESERVE38,
+ ULP1_PAD_RESERVE39,
+ ULP1_PAD_RESERVE40,
+ ULP1_PAD_RESERVE41,
+ ULP1_PAD_RESERVE42,
+ ULP1_PAD_RESERVE43,
+ ULP1_PAD_RESERVE44,
+ ULP1_PAD_RESERVE45,
+ ULP1_PAD_RESERVE46,
+ ULP1_PAD_RESERVE47,
+ ULP1_PAD_PTF0,
+ ULP1_PAD_PTF1,
+ ULP1_PAD_PTF2,
+ ULP1_PAD_PTF3,
+ ULP1_PAD_PTF4,
+ ULP1_PAD_PTF5,
+ ULP1_PAD_PTF6,
+ ULP1_PAD_PTF7,
+ ULP1_PAD_PTF8,
+ ULP1_PAD_PTF9,
+ ULP1_PAD_PTF10,
+ ULP1_PAD_PTF11,
+ ULP1_PAD_PTF12,
+ ULP1_PAD_PTF13,
+ ULP1_PAD_PTF14,
+ ULP1_PAD_PTF15,
+ ULP1_PAD_PTF16,
+ ULP1_PAD_PTF17,
+ ULP1_PAD_PTF18,
+ ULP1_PAD_PTF19,
+};
+
+/* Pad names for the pinmux subsystem */
+static const struct pinctrl_pin_desc imx7ulp_pinctrl_pads[] = {
+ IMX_PINCTRL_PIN(ULP1_PAD_PTC0),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTC1),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTC2),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTC3),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTC4),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTC5),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTC6),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTC7),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTC8),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTC9),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTC10),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTC11),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTC12),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTC13),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTC14),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTC15),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTC16),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTC17),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTC18),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTC19),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE0),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE1),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE2),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE3),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE4),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE5),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE6),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE7),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE8),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE9),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE10),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE11),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTD0),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTD1),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTD2),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTD3),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTD4),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTD5),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTD6),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTD7),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTD8),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTD9),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTD10),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTD11),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE12),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE13),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE14),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE15),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE16),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE17),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE18),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE19),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE20),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE21),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE22),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE23),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE24),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE25),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE26),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE27),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE28),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE29),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE30),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE31),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTE0),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTE1),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTE2),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTE3),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTE4),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTE5),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTE6),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTE7),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTE8),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTE9),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTE10),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTE11),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTE12),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTE13),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTE14),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTE15),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE32),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE33),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE34),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE35),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE36),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE37),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE38),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE39),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE40),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE41),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE42),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE43),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE44),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE45),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE46),
+ IMX_PINCTRL_PIN(ULP1_PAD_RESERVE47),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTF0),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTF1),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTF2),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTF3),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTF4),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTF5),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTF6),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTF7),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTF8),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTF9),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTF10),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTF11),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTF12),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTF13),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTF14),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTF15),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTF16),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTF17),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTF18),
+ IMX_PINCTRL_PIN(ULP1_PAD_PTF19),
+};
+
+#define BM_LK_ENABLED BIT(15)
+#define BM_PULL_ENABLED BIT(1)
+
+enum imx7ulp_pinconf_param {
+ PIN_CONFIG_NXP_OUTPUT_BUFFER_ENABLE = PIN_CONFIG_END + 1,
+ PIN_CONFIG_NXP_INPUT_BUFFER_ENABLE,
+};
+
+static const struct pinconf_generic_params imx7ulp_cfg_params[] = {
+ {
+ .property = "nxp,output-buffer-enable",
+ .param = PIN_CONFIG_NXP_OUTPUT_BUFFER_ENABLE,
+ .default_value = 1,
+ }, {
+ .property = "nxp,input-buffer-enable",
+ .param = PIN_CONFIG_NXP_INPUT_BUFFER_ENABLE,
+ .default_value = 1,
+ },
+};
+
+struct imx_cfg_params_decode imx7ulp_cfg_decodes[] = {
+ IMX_CFG_PARAMS_DECODE(PIN_CONFIG_NXP_OUTPUT_BUFFER_ENABLE, BIT(17), 17),
+ IMX_CFG_PARAMS_DECODE(PIN_CONFIG_NXP_INPUT_BUFFER_ENABLE, BIT(16), 16),
+
+ IMX_CFG_PARAMS_DECODE(PIN_CONFIG_DRIVE_STRENGTH, BIT(6), 6),
+ IMX_CFG_PARAMS_DECODE(PIN_CONFIG_DRIVE_PUSH_PULL, BIT(5), 5),
+ IMX_CFG_PARAMS_DECODE(PIN_CONFIG_SLEW_RATE, BIT(2), 2),
+ IMX_CFG_PARAMS_DECODE(PIN_CONFIG_BIAS_DISABLE, BIT(1), 1),
+ IMX_CFG_PARAMS_DECODE(PIN_CONFIG_BIAS_PULL_UP, BIT(0), 0),
+
+ IMX_CFG_PARAMS_DECODE_INVERT(PIN_CONFIG_DRIVE_OPEN_DRAIN, BIT(5), 5),
+ IMX_CFG_PARAMS_DECODE_INVERT(PIN_CONFIG_BIAS_PULL_DOWN, BIT(0), 0),
+};
+
+static void imx7ulp_cfg_params_fixup(unsigned long *configs,
+ unsigned int num_configs,
+ u32 *raw_config)
+{
+ enum pin_config_param param;
+ u32 param_val;
+ int i;
+
+ /* lock field disabled */
+ *raw_config &= ~BM_LK_ENABLED;
+
+ for (i = 0; i < num_configs; i++) {
+ param = pinconf_to_config_param(configs[i]);
+ param_val = pinconf_to_config_argument(configs[i]);
+
+ if ((param == PIN_CONFIG_BIAS_PULL_UP) ||
+ (param == PIN_CONFIG_BIAS_PULL_DOWN)) {
+ /* pull enabled */
+ *raw_config |= BM_PULL_ENABLED;
+
+ return;
+ }
+ }
+}
+
+static struct imx_pinctrl_soc_info imx7ulp_pinctrl_info = {
+ .pins = imx7ulp_pinctrl_pads,
+ .npins = ARRAY_SIZE(imx7ulp_pinctrl_pads),
+ .flags = ZERO_OFFSET_VALID | SHARE_MUX_CONF_REG,
+ .mux_mask = 0xf00,
+ .mux_shift = 8,
+ .generic_pinconf = true,
+ .custom_params = imx7ulp_cfg_params,
+ .num_custom_params = ARRAY_SIZE(imx7ulp_cfg_params),
+ .decodes = imx7ulp_cfg_decodes,
+ .num_decodes = ARRAY_SIZE(imx7ulp_cfg_decodes),
+ .fixup = imx7ulp_cfg_params_fixup,
+};
+
+static const struct of_device_id imx7ulp_pinctrl_of_match[] = {
+ { .compatible = "fsl,imx7ulp-iomuxc1", },
+ { /* sentinel */ }
+};
+
+static int imx7ulp_pinctrl_probe(struct platform_device *pdev)
+{
+ return imx_pinctrl_probe(pdev, &imx7ulp_pinctrl_info);
+}
+
+static struct platform_driver imx7ulp_pinctrl_driver = {
+ .driver = {
+ .name = "imx7ulp-pinctrl",
+ .of_match_table = of_match_ptr(imx7ulp_pinctrl_of_match),
+ .suppress_bind_attrs = true,
+ },
+ .probe = imx7ulp_pinctrl_probe,
+};
+
+static int __init imx7ulp_pinctrl_init(void)
+{
+ return platform_driver_register(&imx7ulp_pinctrl_driver);
+}
+arch_initcall(imx7ulp_pinctrl_init);
--
2.7.4
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH V2 1/5] pinctrl: imx: fix debug message for SHARE_MUX_CONF_REG case
2017-05-19 7:05 ` [PATCH V2 1/5] pinctrl: imx: fix debug message for SHARE_MUX_CONF_REG case Dong Aisheng
@ 2017-05-21 9:27 ` Shawn Guo
2017-05-22 9:02 ` Linus Walleij
1 sibling, 0 replies; 26+ messages in thread
From: Shawn Guo @ 2017-05-21 9:27 UTC (permalink / raw)
To: linux-arm-kernel
On Fri, May 19, 2017 at 03:05:41PM +0800, Dong Aisheng wrote:
> The original implemented debug message does not work for
> SHARE_MUX_CONF_REG case. This patch fixes it.
>
> Cc: Linus Walleij <linus.walleij@linaro.org>
> Cc: Shawn Guo <shawnguo@kernel.org>
> Fixes: bf5a530971af ("pinctrl: imx: add VF610 support to imx pinctrl framework")
> Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
Acked-by: Shawn Guo <shawnguo@kernel.org>
^ permalink raw reply [flat|nested] 26+ messages in thread
* [PATCH V2 2/5] pinctrl: imx: add generic pin config core support
2017-05-19 7:05 ` [PATCH V2 2/5] pinctrl: imx: add generic pin config core support Dong Aisheng
@ 2017-05-21 9:27 ` Shawn Guo
2017-05-22 9:04 ` Linus Walleij
1 sibling, 0 replies; 26+ messages in thread
From: Shawn Guo @ 2017-05-21 9:27 UTC (permalink / raw)
To: linux-arm-kernel
On Fri, May 19, 2017 at 03:05:42PM +0800, Dong Aisheng wrote:
> The design is based on the exist architecture that the core will
> provide a uniformed way to decode the generic pin config into platform
> config register raw data according to the imx_cfg_params_decode maps
> registered by platform.
>
> Two useful macros, IMX_CFG_PARAMS_DECODE and IMX_CFG_PARAMS_DECODE_INVERT,
> are created for platform to register decode map conveniently.
>
> In order to cope with some special case, a platform specific fixup()
> function is also available to use.
>
> Note that rather than fully utilizing the generic pinconf support
> provided by pinctrl core, IMX only adopts the device tree bindings
> of generic pinconf. The config used in .pin_config_get[set] are raw
> register data instead of generic one which makes us align the exist
> using. And that's also why we cannot set pinconf_ops.is_generic.
>
> Cc: Linus Walleij <linus.walleij@linaro.org>
> Cc: Shawn Guo <shawnguo@kernel.org>
> Cc: Bai Ping <ping.bai@nxp.com>
> Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
Acked-by: Shawn Guo <shawnguo@kernel.org>
^ permalink raw reply [flat|nested] 26+ messages in thread
* [PATCH V2 3/5] pinctrl: imx: add soc specific mux_mode mask and shift property
2017-05-19 7:05 ` [PATCH V2 3/5] pinctrl: imx: add soc specific mux_mode mask and shift property Dong Aisheng
@ 2017-05-21 9:28 ` Shawn Guo
2017-05-22 9:06 ` Linus Walleij
1 sibling, 0 replies; 26+ messages in thread
From: Shawn Guo @ 2017-05-21 9:28 UTC (permalink / raw)
To: linux-arm-kernel
On Fri, May 19, 2017 at 03:05:43PM +0800, Dong Aisheng wrote:
> MX7ULP MUX mode mask and shift bit is different from VF610.
> Let's make it a platform specific property for the later easy of
> adding MX7ULP support.
>
> One trick in exist code that Vybrid hardcoded the config part
> as 0xffff because its mux_config register BIT[15-0] are all configs
> part. But it's not true in ULP, so use mux_mask instead to address
> the difference.
>
> Cc: Linus Walleij <linus.walleij@linaro.org>
> Cc: Shawn Guo <shawnguo@kernel.org>
> Cc: Stefan Agner <stefan@agner.ch>
> Cc: Bai Ping <ping.bai@nxp.com>
> Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
> Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
Acked-by: Shawn Guo <shawnguo@kernel.org>
^ permalink raw reply [flat|nested] 26+ messages in thread
* [PATCH V2 4/5] dt-bindings: pinctrl: add imx7ulp pinctrl binding doc
2017-05-19 7:05 ` [PATCH V2 4/5] dt-bindings: pinctrl: add imx7ulp pinctrl binding doc Dong Aisheng
@ 2017-05-21 9:30 ` Shawn Guo
2017-05-21 9:40 ` A.S. Dong
2017-05-22 9:27 ` Linus Walleij
2017-05-22 16:15 ` Stefan Agner
2 siblings, 1 reply; 26+ messages in thread
From: Shawn Guo @ 2017-05-21 9:30 UTC (permalink / raw)
To: linux-arm-kernel
On Fri, May 19, 2017 at 03:05:44PM +0800, Dong Aisheng wrote:
> i.MX 7ULP has three IOMUXC instances: IOMUXC0 for M4 ports,
> IOMUXC1 for A7 ports and IOMUXC DDR for DDR interface.
>
> This patch adds the IOMUXC1 support for A7.
>
> Cc: Rob Herring <robh+dt@kernel.org>
> Cc: Mark Rutland <mark.rutland@arm.com>
> Cc: devicetree at vger.kernel.org
> Cc: Linus Walleij <linus.walleij@linaro.org>
> Cc: Shawn Guo <shawnguo@kernel.org>
> Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
>
> ---
> ChangeLog:
> v1->v2:
> * add more descriptions in binding doc
> * add missed prefix for private properties.
> * move dt-bindings/pinctrl/imx7ulp-pinfunc.h to arch/arm/boot/dts
> ---
> .../bindings/pinctrl/fsl,imx7ulp-pinctrl.txt | 63 +++
> arch/arm/boot/dts/imx7ulp-pinfunc.h | 468 +++++++++++++++++++++
Rather than being part of bindings doc patch, this pinfunc header should
be included in dts patches that add imx7ulp SoC support.
Shawn
> 2 files changed, 531 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/pinctrl/fsl,imx7ulp-pinctrl.txt
> create mode 100644 arch/arm/boot/dts/imx7ulp-pinfunc.h
^ permalink raw reply [flat|nested] 26+ messages in thread
* [PATCH V2 5/5] pinctrl: imx: add imx7ulp driver
2017-05-19 7:05 ` [PATCH V2 5/5] pinctrl: imx: add imx7ulp driver Dong Aisheng
@ 2017-05-21 9:31 ` Shawn Guo
0 siblings, 0 replies; 26+ messages in thread
From: Shawn Guo @ 2017-05-21 9:31 UTC (permalink / raw)
To: linux-arm-kernel
On Fri, May 19, 2017 at 03:05:45PM +0800, Dong Aisheng wrote:
> i.MX 7ULP has three IOMUXC instances: IOMUXC0 for M4 ports,
> IOMUXC1 for A7 ports and IOMUXC DDR for DDR interface.
>
> This patch adds the IOMUXC1 support for A7.
> It only supports generic pin config.
>
> Cc: Linus Walleij <linus.walleij@linaro.org>
> Cc: Shawn Guo <shawnguo@kernel.org>
> Cc: Bai Ping <ping.bai@nxp.com>
> Cc: Fugang Duan <fugang.duan@nxp.com>
> Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
Acked-by: Shawn Guo <shawnguo@kernel.org>
^ permalink raw reply [flat|nested] 26+ messages in thread
* [PATCH V2 4/5] dt-bindings: pinctrl: add imx7ulp pinctrl binding doc
2017-05-21 9:30 ` Shawn Guo
@ 2017-05-21 9:40 ` A.S. Dong
2017-05-21 11:00 ` Shawn Guo
0 siblings, 1 reply; 26+ messages in thread
From: A.S. Dong @ 2017-05-21 9:40 UTC (permalink / raw)
To: linux-arm-kernel
> -----Original Message-----
> From: Shawn Guo [mailto:shawnguo at kernel.org]
> Sent: Sunday, May 21, 2017 5:31 PM
> To: A.S. Dong
> Cc: linux-gpio at vger.kernel.org; linux-arm-kernel at lists.infradead.org;
> linus.walleij at linaro.org; stefan at agner.ch; Jacky Bai; Andy Duan;
> kernel at pengutronix.de; Rob Herring; Mark Rutland;
> devicetree at vger.kernel.org
> Subject: Re: [PATCH V2 4/5] dt-bindings: pinctrl: add imx7ulp pinctrl
> binding doc
>
> On Fri, May 19, 2017 at 03:05:44PM +0800, Dong Aisheng wrote:
> > i.MX 7ULP has three IOMUXC instances: IOMUXC0 for M4 ports,
> > IOMUXC1 for A7 ports and IOMUXC DDR for DDR interface.
> >
> > This patch adds the IOMUXC1 support for A7.
> >
> > Cc: Rob Herring <robh+dt@kernel.org>
> > Cc: Mark Rutland <mark.rutland@arm.com>
> > Cc: devicetree at vger.kernel.org
> > Cc: Linus Walleij <linus.walleij@linaro.org>
> > Cc: Shawn Guo <shawnguo@kernel.org>
> > Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
> >
> > ---
> > ChangeLog:
> > v1->v2:
> > * add more descriptions in binding doc
> > * add missed prefix for private properties.
> > * move dt-bindings/pinctrl/imx7ulp-pinfunc.h to arch/arm/boot/dts
> > ---
> > .../bindings/pinctrl/fsl,imx7ulp-pinctrl.txt | 63 +++
> > arch/arm/boot/dts/imx7ulp-pinfunc.h | 468
> +++++++++++++++++++++
>
> Rather than being part of bindings doc patch, this pinfunc header should
> be included in dts patches that add imx7ulp SoC support.
>
Okay.
One question is that imx7ulp-pinfunc.h is mentioned in this binding doc,
that means after this patch applied, users still can't see it if separate,
Should we worry about this issue or not?
+ Refer to imx7ulp-pinfunc.h in in device tree source folder for all
+ available imx7ulp PIN_FUNC_ID.
Last, thx for other ACKs.
Regards
Dong Aisheng
> Shawn
>
> > 2 files changed, 531 insertions(+)
> > create mode 100644
> > Documentation/devicetree/bindings/pinctrl/fsl,imx7ulp-pinctrl.txt
> > create mode 100644 arch/arm/boot/dts/imx7ulp-pinfunc.h
^ permalink raw reply [flat|nested] 26+ messages in thread
* [PATCH V2 4/5] dt-bindings: pinctrl: add imx7ulp pinctrl binding doc
2017-05-21 9:40 ` A.S. Dong
@ 2017-05-21 11:00 ` Shawn Guo
0 siblings, 0 replies; 26+ messages in thread
From: Shawn Guo @ 2017-05-21 11:00 UTC (permalink / raw)
To: linux-arm-kernel
On Sun, May 21, 2017 at 09:40:25AM +0000, A.S. Dong wrote:
> > -----Original Message-----
> > From: Shawn Guo [mailto:shawnguo at kernel.org]
> > Sent: Sunday, May 21, 2017 5:31 PM
> > To: A.S. Dong
> > Cc: linux-gpio at vger.kernel.org; linux-arm-kernel at lists.infradead.org;
> > linus.walleij at linaro.org; stefan at agner.ch; Jacky Bai; Andy Duan;
> > kernel at pengutronix.de; Rob Herring; Mark Rutland;
> > devicetree at vger.kernel.org
> > Subject: Re: [PATCH V2 4/5] dt-bindings: pinctrl: add imx7ulp pinctrl
> > binding doc
> >
> > On Fri, May 19, 2017 at 03:05:44PM +0800, Dong Aisheng wrote:
> > > i.MX 7ULP has three IOMUXC instances: IOMUXC0 for M4 ports,
> > > IOMUXC1 for A7 ports and IOMUXC DDR for DDR interface.
> > >
> > > This patch adds the IOMUXC1 support for A7.
> > >
> > > Cc: Rob Herring <robh+dt@kernel.org>
> > > Cc: Mark Rutland <mark.rutland@arm.com>
> > > Cc: devicetree at vger.kernel.org
> > > Cc: Linus Walleij <linus.walleij@linaro.org>
> > > Cc: Shawn Guo <shawnguo@kernel.org>
> > > Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
> > >
> > > ---
> > > ChangeLog:
> > > v1->v2:
> > > * add more descriptions in binding doc
> > > * add missed prefix for private properties.
> > > * move dt-bindings/pinctrl/imx7ulp-pinfunc.h to arch/arm/boot/dts
> > > ---
> > > .../bindings/pinctrl/fsl,imx7ulp-pinctrl.txt | 63 +++
> > > arch/arm/boot/dts/imx7ulp-pinfunc.h | 468
> > +++++++++++++++++++++
> >
> > Rather than being part of bindings doc patch, this pinfunc header should
> > be included in dts patches that add imx7ulp SoC support.
> >
>
> Okay.
> One question is that imx7ulp-pinfunc.h is mentioned in this binding doc,
> that means after this patch applied, users still can't see it if separate,
> Should we worry about this issue or not?
>
> + Refer to imx7ulp-pinfunc.h in in device tree source folder for all
> + available imx7ulp PIN_FUNC_ID.
Ah, okay, there is a reason to have it in the bindings doc patch. If
LinusW and Rob have no problem with it, I'm fine then.
Acked-by: Shawn Guo <shawnguo@kernel.org>
^ permalink raw reply [flat|nested] 26+ messages in thread
* [PATCH V2 1/5] pinctrl: imx: fix debug message for SHARE_MUX_CONF_REG case
2017-05-19 7:05 ` [PATCH V2 1/5] pinctrl: imx: fix debug message for SHARE_MUX_CONF_REG case Dong Aisheng
2017-05-21 9:27 ` Shawn Guo
@ 2017-05-22 9:02 ` Linus Walleij
1 sibling, 0 replies; 26+ messages in thread
From: Linus Walleij @ 2017-05-22 9:02 UTC (permalink / raw)
To: linux-arm-kernel
On Fri, May 19, 2017 at 9:05 AM, Dong Aisheng <aisheng.dong@nxp.com> wrote:
> The original implemented debug message does not work for
> SHARE_MUX_CONF_REG case. This patch fixes it.
>
> Cc: Linus Walleij <linus.walleij@linaro.org>
> Cc: Shawn Guo <shawnguo@kernel.org>
> Fixes: bf5a530971af ("pinctrl: imx: add VF610 support to imx pinctrl framework")
> Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
Patch applied with Shawn's ACK.
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 26+ messages in thread
* [PATCH V2 2/5] pinctrl: imx: add generic pin config core support
2017-05-19 7:05 ` [PATCH V2 2/5] pinctrl: imx: add generic pin config core support Dong Aisheng
2017-05-21 9:27 ` Shawn Guo
@ 2017-05-22 9:04 ` Linus Walleij
1 sibling, 0 replies; 26+ messages in thread
From: Linus Walleij @ 2017-05-22 9:04 UTC (permalink / raw)
To: linux-arm-kernel
On Fri, May 19, 2017 at 9:05 AM, Dong Aisheng <aisheng.dong@nxp.com> wrote:
> The design is based on the exist architecture that the core will
> provide a uniformed way to decode the generic pin config into platform
> config register raw data according to the imx_cfg_params_decode maps
> registered by platform.
>
> Two useful macros, IMX_CFG_PARAMS_DECODE and IMX_CFG_PARAMS_DECODE_INVERT,
> are created for platform to register decode map conveniently.
>
> In order to cope with some special case, a platform specific fixup()
> function is also available to use.
>
> Note that rather than fully utilizing the generic pinconf support
> provided by pinctrl core, IMX only adopts the device tree bindings
> of generic pinconf. The config used in .pin_config_get[set] are raw
> register data instead of generic one which makes us align the exist
> using. And that's also why we cannot set pinconf_ops.is_generic.
>
> Cc: Linus Walleij <linus.walleij@linaro.org>
> Cc: Shawn Guo <shawnguo@kernel.org>
> Cc: Bai Ping <ping.bai@nxp.com>
> Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
Patch applied with Shawn's ACK.
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 26+ messages in thread
* [PATCH V2 3/5] pinctrl: imx: add soc specific mux_mode mask and shift property
2017-05-19 7:05 ` [PATCH V2 3/5] pinctrl: imx: add soc specific mux_mode mask and shift property Dong Aisheng
2017-05-21 9:28 ` Shawn Guo
@ 2017-05-22 9:06 ` Linus Walleij
1 sibling, 0 replies; 26+ messages in thread
From: Linus Walleij @ 2017-05-22 9:06 UTC (permalink / raw)
To: linux-arm-kernel
On Fri, May 19, 2017 at 9:05 AM, Dong Aisheng <aisheng.dong@nxp.com> wrote:
> MX7ULP MUX mode mask and shift bit is different from VF610.
> Let's make it a platform specific property for the later easy of
> adding MX7ULP support.
>
> One trick in exist code that Vybrid hardcoded the config part
> as 0xffff because its mux_config register BIT[15-0] are all configs
> part. But it's not true in ULP, so use mux_mask instead to address
> the difference.
>
> Cc: Linus Walleij <linus.walleij@linaro.org>
> Cc: Shawn Guo <shawnguo@kernel.org>
> Cc: Stefan Agner <stefan@agner.ch>
> Cc: Bai Ping <ping.bai@nxp.com>
> Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
> Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
>
> ---
> ChangeLog:
> v1->v2:
> Minor changes:
> * add more explanation about Vybrid trick in commit message.
Patch applied with Shawn's ACK.
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 26+ messages in thread
* [PATCH V2 4/5] dt-bindings: pinctrl: add imx7ulp pinctrl binding doc
2017-05-19 7:05 ` [PATCH V2 4/5] dt-bindings: pinctrl: add imx7ulp pinctrl binding doc Dong Aisheng
2017-05-21 9:30 ` Shawn Guo
@ 2017-05-22 9:27 ` Linus Walleij
2017-05-22 12:30 ` A.S. Dong
2017-05-22 16:15 ` Stefan Agner
2 siblings, 1 reply; 26+ messages in thread
From: Linus Walleij @ 2017-05-22 9:27 UTC (permalink / raw)
To: linux-arm-kernel
On Fri, May 19, 2017 at 9:05 AM, Dong Aisheng <aisheng.dong@nxp.com> wrote:
> i.MX 7ULP has three IOMUXC instances: IOMUXC0 for M4 ports,
> IOMUXC1 for A7 ports and IOMUXC DDR for DDR interface.
>
> This patch adds the IOMUXC1 support for A7.
>
> Cc: Rob Herring <robh+dt@kernel.org>
> Cc: Mark Rutland <mark.rutland@arm.com>
> Cc: devicetree at vger.kernel.org
> Cc: Linus Walleij <linus.walleij@linaro.org>
> Cc: Shawn Guo <shawnguo@kernel.org>
> Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
(...)
> +=== Pin Configuration Node ===
> +- pins: One integers array, represents a group of pins mux setting.
> + The format is fsl,pins = <PIN_FUNC_ID>, PIN_FUNC_ID is a pin working on
> + a specific function.
> +
> + NOTE: i.MX7ULP PIN_FUNC_ID consists of 4 integers as it shares one mux
> + and config register as follows:
> + <mux_conf_reg input_reg mux_mode input_val>
> +
> + Refer to imx7ulp-pinfunc.h in in device tree source folder for all
> + available imx7ulp PIN_FUNC_ID.
> +
> +Optional Properties:
> +- nxp,output-buffer-enable: Bool. Output buffer enabled
> +- nxp,input-buffer-enable: Bool. Input buffer enabled
> +- drive-strength Integer. Controls Drive Strength
> + 0: Standard
> + 1: Hi Driver
(...)
WELL LOOK AT THAT
Custom input/output buffer enable properties eh?
We had this really really long discussion with the Renesas people
about whether they make this a custom property or a generic
one or whether anyone else would ever have the same need.
This would be a vote for adding output-buffer-enable and
input-buffer-enable as generic properies hm?
UNLESS the existing device tree properties already cover the
usecases.
Andy has made some good points there.
Can you please read up on the discussion thread for subject
"[PATCH v5 01/10] pinctrl: generic: Add bi-directional and output-enable"
and contribute to this discussion?
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 26+ messages in thread
* [PATCH V2 4/5] dt-bindings: pinctrl: add imx7ulp pinctrl binding doc
2017-05-22 9:27 ` Linus Walleij
@ 2017-05-22 12:30 ` A.S. Dong
0 siblings, 0 replies; 26+ messages in thread
From: A.S. Dong @ 2017-05-22 12:30 UTC (permalink / raw)
To: linux-arm-kernel
> -----Original Message-----
> From: Linus Walleij [mailto:linus.walleij at linaro.org]
> Sent: Monday, May 22, 2017 5:27 PM
> To: A.S. Dong; Jacopo Mondi; Geert Uytterhoeven; Chris Brandt; Andy
> Shevchenko
> Cc: linux-gpio at vger.kernel.org; linux-arm-kernel at lists.infradead.org;
> Shawn Guo; Stefan Agner; Jacky Bai; Andy Duan; Sascha Hauer; Rob Herring;
> Mark Rutland; devicetree at vger.kernel.org
> Subject: Re: [PATCH V2 4/5] dt-bindings: pinctrl: add imx7ulp pinctrl
> binding doc
>
> On Fri, May 19, 2017 at 9:05 AM, Dong Aisheng <aisheng.dong@nxp.com> wrote:
>
> > i.MX 7ULP has three IOMUXC instances: IOMUXC0 for M4 ports,
> > IOMUXC1 for A7 ports and IOMUXC DDR for DDR interface.
> >
> > This patch adds the IOMUXC1 support for A7.
> >
> > Cc: Rob Herring <robh+dt@kernel.org>
> > Cc: Mark Rutland <mark.rutland@arm.com>
> > Cc: devicetree at vger.kernel.org
> > Cc: Linus Walleij <linus.walleij@linaro.org>
> > Cc: Shawn Guo <shawnguo@kernel.org>
> > Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
>
> (...)
> > +=== Pin Configuration Node ===
> > +- pins: One integers array, represents a group of pins mux setting.
> > + The format is fsl,pins = <PIN_FUNC_ID>, PIN_FUNC_ID is a pin
> working on
> > + a specific function.
> > +
> > + NOTE: i.MX7ULP PIN_FUNC_ID consists of 4 integers as it shares
> one mux
> > + and config register as follows:
> > + <mux_conf_reg input_reg mux_mode input_val>
> > +
> > + Refer to imx7ulp-pinfunc.h in in device tree source folder for
> all
> > + available imx7ulp PIN_FUNC_ID.
> > +
> > +Optional Properties:
> > +- nxp,output-buffer-enable: Bool. Output buffer enabled
> > +- nxp,input-buffer-enable: Bool. Input buffer enabled
> > +- drive-strength Integer. Controls Drive Strength
> > + 0: Standard
> > + 1: Hi Driver
> (...)
>
> WELL LOOK AT THAT
>
> Custom input/output buffer enable properties eh?
>
> We had this really really long discussion with the Renesas people about
> whether they make this a custom property or a generic one or whether
> anyone else would ever have the same need.
>
> This would be a vote for adding output-buffer-enable and input-buffer-
> enable as generic properies hm?
>
Yes, that would be good if they're made generic properties.
> UNLESS the existing device tree properties already cover the usecases.
>
> Andy has made some good points there.
>
> Can you please read up on the discussion thread for subject "[PATCH v5
> 01/10] pinctrl: generic: Add bi-directional and output-enable"
> and contribute to this discussion?
>
Sure, will find time to read it.
Thanks for the reminder.
Regards
Dong Aisheng
^ permalink raw reply [flat|nested] 26+ messages in thread
* [PATCH V2 4/5] dt-bindings: pinctrl: add imx7ulp pinctrl binding doc
2017-05-19 7:05 ` [PATCH V2 4/5] dt-bindings: pinctrl: add imx7ulp pinctrl binding doc Dong Aisheng
2017-05-21 9:30 ` Shawn Guo
2017-05-22 9:27 ` Linus Walleij
@ 2017-05-22 16:15 ` Stefan Agner
2017-05-23 10:37 ` A.S. Dong
2 siblings, 1 reply; 26+ messages in thread
From: Stefan Agner @ 2017-05-22 16:15 UTC (permalink / raw)
To: linux-arm-kernel
On 2017-05-19 00:05, Dong Aisheng wrote:
> i.MX 7ULP has three IOMUXC instances: IOMUXC0 for M4 ports,
> IOMUXC1 for A7 ports and IOMUXC DDR for DDR interface.
>
> This patch adds the IOMUXC1 support for A7.
>
> Cc: Rob Herring <robh+dt@kernel.org>
> Cc: Mark Rutland <mark.rutland@arm.com>
> Cc: devicetree at vger.kernel.org
> Cc: Linus Walleij <linus.walleij@linaro.org>
> Cc: Shawn Guo <shawnguo@kernel.org>
> Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
>
> ---
> ChangeLog:
> v1->v2:
> * add more descriptions in binding doc
> * add missed prefix for private properties.
> * move dt-bindings/pinctrl/imx7ulp-pinfunc.h to arch/arm/boot/dts
> ---
> .../bindings/pinctrl/fsl,imx7ulp-pinctrl.txt | 63 +++
> arch/arm/boot/dts/imx7ulp-pinfunc.h | 468 +++++++++++++++++++++
> 2 files changed, 531 insertions(+)
> create mode 100644
> Documentation/devicetree/bindings/pinctrl/fsl,imx7ulp-pinctrl.txt
> create mode 100644 arch/arm/boot/dts/imx7ulp-pinfunc.h
>
> diff --git
> a/Documentation/devicetree/bindings/pinctrl/fsl,imx7ulp-pinctrl.txt
> b/Documentation/devicetree/bindings/pinctrl/fsl,imx7ulp-pinctrl.txt
> new file mode 100644
> index 0000000..7fbf367
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/pinctrl/fsl,imx7ulp-pinctrl.txt
> @@ -0,0 +1,63 @@
> +* Freescale i.MX7ULP IOMUX Controller
> +
> +i.MX 7ULP has three IOMUXC instances: IOMUXC0 for M4 ports, IOMUXC1 for A7
> +ports and IOMUXC DDR for DDR interface.
> +
> +Note:
> +This binding doc is only for the IOMUXC1 support in A7 Domain and it only
> +supports generic pin config.
> +
> +Please also refer to fsl,imx-pinctrl.txt in this directory for IMX common
> +binding part and pinctrl-bindings.txt for the generic config binding.
> +
> +=== Pin Controller Node ===
> +
> +Required properties:
> +- compatible: "fsl,imx7ulp-iomuxc1"
> +- reg: Should contain the base physical address and size of the iomuxc
> + registers.
> +
> +=== Pin Configuration Node ===
> +- pins: One integers array, represents a group of pins mux setting.
> + The format is fsl,pins = <PIN_FUNC_ID>, PIN_FUNC_ID is a pin working on
> + a specific function.
> +
> + NOTE: i.MX7ULP PIN_FUNC_ID consists of 4 integers as it shares one mux
> + and config register as follows:
> + <mux_conf_reg input_reg mux_mode input_val>
> +
> + Refer to imx7ulp-pinfunc.h in in device tree source folder for all
> + available imx7ulp PIN_FUNC_ID.
> +
> +Optional Properties:
> +- nxp,output-buffer-enable: Bool. Output buffer enabled
> +- nxp,input-buffer-enable: Bool. Input buffer enabled
> +- drive-strength Integer. Controls Drive Strength
> + 0: Standard
> + 1: Hi Driver
> +- drive-push-pull Bool. Enable Pin Push-pull
> +- drive-open-drain Bool. Enable Pin Open-drian
> +- slew-rate: Integer. Controls Slew Rate
> + 0: Standard
> + 1: Slow
> +- bias-disable: Bool. Pull disabled
> +- bias-pull-down: Bool. Pull down on pin
> +- bias-pull-up: Bool. Pull up on pin
> +
> +Examples:
> +#include "imx7ulp-pinfunc.h"
> +
> +/* Pin Controller Node */
> +iomuxc1: iomuxc at 40ac0000 {
> + compatible = "fsl,imx7ulp-iomuxc1";
> + reg = <0x40ac0000 0x1000>;
> +
> + /* Pin Configuration Node */
> + pinctrl_lpuart4: lpuart4grp {
> + pins = <
> + ULP1_PAD_PTC3__LPUART4_RX
> + ULP1_PAD_PTC2__LPUART4_TX
> + >;
> + bias-pull-up;
> + };
> +};
> diff --git a/arch/arm/boot/dts/imx7ulp-pinfunc.h
> b/arch/arm/boot/dts/imx7ulp-pinfunc.h
> new file mode 100644
> index 0000000..cafd3ed
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx7ulp-pinfunc.h
> @@ -0,0 +1,468 @@
> +/*
> + * Copyright 2016 Freescale Semiconductor, Inc.
> + * Copyright 2017 NXP
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + *
> + */
> +
> +#ifndef __DTS_IMX7ULP_PINFUNC_H
> +#define __DTS_IMX7ULP_PINFUNC_H
> +
> +/*
> + * The pin function ID is a tuple of
> + * <mux_conf_reg input_reg mux_mode input_val>
> + */
> +
> +#define ULP1_PAD_PTC0__PTC0
> 0x0000 0x0000 0x1 0x0
For consistency with other SoCs, can we add MX7 to the define? E.g.
MX7ULP1?
--
Stefan
^ permalink raw reply [flat|nested] 26+ messages in thread
* [PATCH V2 0/5] pinctrl: imx: add generic pin config and imx7ulp support
2017-05-19 7:05 [PATCH V2 0/5] pinctrl: imx: add generic pin config and imx7ulp support Dong Aisheng
` (4 preceding siblings ...)
2017-05-19 7:05 ` [PATCH V2 5/5] pinctrl: imx: add imx7ulp driver Dong Aisheng
@ 2017-05-23 7:41 ` Linus Walleij
2017-05-23 9:17 ` A.S. Dong
5 siblings, 1 reply; 26+ messages in thread
From: Linus Walleij @ 2017-05-23 7:41 UTC (permalink / raw)
To: linux-arm-kernel
On Fri, May 19, 2017 at 9:05 AM, Dong Aisheng <aisheng.dong@nxp.com> wrote:
> This patch series intends to add the generic pin config support for imx
> platforms.
I applied patches 1,2,3 as you've seen, so please rebase on my "devel"
branch in pin control and only resend the things we are still discussing.
I see there are some other patches flying for imx pin control and GPIO,
if the patches are dependent on each other consider putting it all into
one series. If they are not dependent, then don't.
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 26+ messages in thread
* [PATCH V2 0/5] pinctrl: imx: add generic pin config and imx7ulp support
2017-05-23 7:41 ` [PATCH V2 0/5] pinctrl: imx: add generic pin config and imx7ulp support Linus Walleij
@ 2017-05-23 9:17 ` A.S. Dong
0 siblings, 0 replies; 26+ messages in thread
From: A.S. Dong @ 2017-05-23 9:17 UTC (permalink / raw)
To: linux-arm-kernel
> -----Original Message-----
> From: Linus Walleij [mailto:linus.walleij at linaro.org]
> Sent: Tuesday, May 23, 2017 3:41 PM
> To: A.S. Dong
> Cc: linux-gpio at vger.kernel.org; linux-arm-kernel at lists.infradead.org;
> Shawn Guo; Stefan Agner; Jacky Bai; Andy Duan; Sascha Hauer
> Subject: Re: [PATCH V2 0/5] pinctrl: imx: add generic pin config and
> imx7ulp support
>
> On Fri, May 19, 2017 at 9:05 AM, Dong Aisheng <aisheng.dong@nxp.com> wrote:
>
> > This patch series intends to add the generic pin config support for
> > imx platforms.
>
> I applied patches 1,2,3 as you've seen, so please rebase on my "devel"
> branch in pin control and only resend the things we are still discussing.
>
Got it, thanks for the reminder.
> I see there are some other patches flying for imx pin control and GPIO, if
> the patches are dependent on each other consider putting it all into one
> series. If they are not dependent, then don't.
>
I will consider it.
Regards
Dong Aisheng
^ permalink raw reply [flat|nested] 26+ messages in thread
* [PATCH V2 4/5] dt-bindings: pinctrl: add imx7ulp pinctrl binding doc
2017-05-22 16:15 ` Stefan Agner
@ 2017-05-23 10:37 ` A.S. Dong
2017-05-25 3:16 ` Shawn Guo
0 siblings, 1 reply; 26+ messages in thread
From: A.S. Dong @ 2017-05-23 10:37 UTC (permalink / raw)
To: linux-arm-kernel
> -----Original Message-----
> From: Stefan Agner [mailto:stefan at agner.ch]
> Sent: Tuesday, May 23, 2017 12:16 AM
> To: A.S. Dong
> Cc: linux-gpio at vger.kernel.org; linux-arm-kernel at lists.infradead.org;
> linus.walleij at linaro.org; shawnguo at kernel.org; Jacky Bai; Andy Duan;
> kernel at pengutronix.de; Rob Herring; Mark Rutland;
> devicetree at vger.kernel.org
> Subject: Re: [PATCH V2 4/5] dt-bindings: pinctrl: add imx7ulp pinctrl
> binding doc
>
> On 2017-05-19 00:05, Dong Aisheng wrote:
> > i.MX 7ULP has three IOMUXC instances: IOMUXC0 for M4 ports,
> > IOMUXC1 for A7 ports and IOMUXC DDR for DDR interface.
> >
> > This patch adds the IOMUXC1 support for A7.
> >
> > Cc: Rob Herring <robh+dt@kernel.org>
> > Cc: Mark Rutland <mark.rutland@arm.com>
> > Cc: devicetree at vger.kernel.org
> > Cc: Linus Walleij <linus.walleij@linaro.org>
> > Cc: Shawn Guo <shawnguo@kernel.org>
> > Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
> >
> > ---
> > ChangeLog:
> > v1->v2:
> > * add more descriptions in binding doc
> > * add missed prefix for private properties.
> > * move dt-bindings/pinctrl/imx7ulp-pinfunc.h to arch/arm/boot/dts
> > ---
> > .../bindings/pinctrl/fsl,imx7ulp-pinctrl.txt | 63 +++
> > arch/arm/boot/dts/imx7ulp-pinfunc.h | 468
> +++++++++++++++++++++
> > 2 files changed, 531 insertions(+)
> > create mode 100644
> > Documentation/devicetree/bindings/pinctrl/fsl,imx7ulp-pinctrl.txt
> > create mode 100644 arch/arm/boot/dts/imx7ulp-pinfunc.h
> >
> > diff --git
> > a/Documentation/devicetree/bindings/pinctrl/fsl,imx7ulp-pinctrl.txt
> > b/Documentation/devicetree/bindings/pinctrl/fsl,imx7ulp-pinctrl.txt
> > new file mode 100644
> > index 0000000..7fbf367
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/pinctrl/fsl,imx7ulp-pinctrl.tx
> > +++ t
> > @@ -0,0 +1,63 @@
> > +* Freescale i.MX7ULP IOMUX Controller
> > +
> > +i.MX 7ULP has three IOMUXC instances: IOMUXC0 for M4 ports, IOMUXC1
> > +for A7 ports and IOMUXC DDR for DDR interface.
> > +
> > +Note:
> > +This binding doc is only for the IOMUXC1 support in A7 Domain and it
> > +only supports generic pin config.
> > +
> > +Please also refer to fsl,imx-pinctrl.txt in this directory for IMX
> > +common binding part and pinctrl-bindings.txt for the generic config
> binding.
> > +
> > +=== Pin Controller Node ===
> > +
> > +Required properties:
> > +- compatible: "fsl,imx7ulp-iomuxc1"
> > +- reg: Should contain the base physical address and size of the
> iomuxc
> > + registers.
> > +
> > +=== Pin Configuration Node ===
> > +- pins: One integers array, represents a group of pins mux setting.
> > + The format is fsl,pins = <PIN_FUNC_ID>, PIN_FUNC_ID is a pin working
> on
> > + a specific function.
> > +
> > + NOTE: i.MX7ULP PIN_FUNC_ID consists of 4 integers as it shares one
> mux
> > + and config register as follows:
> > + <mux_conf_reg input_reg mux_mode input_val>
> > +
> > + Refer to imx7ulp-pinfunc.h in in device tree source folder for all
> > + available imx7ulp PIN_FUNC_ID.
> > +
> > +Optional Properties:
> > +- nxp,output-buffer-enable: Bool. Output buffer enabled
> > +- nxp,input-buffer-enable: Bool. Input buffer enabled
> > +- drive-strength Integer. Controls Drive Strength
> > + 0: Standard
> > + 1: Hi Driver
> > +- drive-push-pull Bool. Enable Pin Push-pull
> > +- drive-open-drain Bool. Enable Pin Open-drian
> > +- slew-rate: Integer. Controls Slew Rate
> > + 0: Standard
> > + 1: Slow
> > +- bias-disable: Bool. Pull disabled
> > +- bias-pull-down: Bool. Pull down on pin
> > +- bias-pull-up: Bool. Pull up on pin
> > +
> > +Examples:
> > +#include "imx7ulp-pinfunc.h"
> > +
> > +/* Pin Controller Node */
> > +iomuxc1: iomuxc at 40ac0000 {
> > + compatible = "fsl,imx7ulp-iomuxc1";
> > + reg = <0x40ac0000 0x1000>;
> > +
> > + /* Pin Configuration Node */
> > + pinctrl_lpuart4: lpuart4grp {
> > + pins = <
> > + ULP1_PAD_PTC3__LPUART4_RX
> > + ULP1_PAD_PTC2__LPUART4_TX
> > + >;
> > + bias-pull-up;
> > + };
> > +};
> > diff --git a/arch/arm/boot/dts/imx7ulp-pinfunc.h
> > b/arch/arm/boot/dts/imx7ulp-pinfunc.h
> > new file mode 100644
> > index 0000000..cafd3ed
> > --- /dev/null
> > +++ b/arch/arm/boot/dts/imx7ulp-pinfunc.h
> > @@ -0,0 +1,468 @@
> > +/*
> > + * Copyright 2016 Freescale Semiconductor, Inc.
> > + * Copyright 2017 NXP
> > + *
> > + * This program is free software; you can redistribute it and/or
> > +modify
> > + * it under the terms of the GNU General Public License version 2 as
> > + * published by the Free Software Foundation.
> > + *
> > + */
> > +
> > +#ifndef __DTS_IMX7ULP_PINFUNC_H
> > +#define __DTS_IMX7ULP_PINFUNC_H
> > +
> > +/*
> > + * The pin function ID is a tuple of
> > + * <mux_conf_reg input_reg mux_mode input_val> */
> > +
> > +#define ULP1_PAD_PTC0__PTC0
> > 0x0000 0x0000 0x1 0x0
>
>
> For consistency with other SoCs, can we add MX7 to the define? E.g.
> MX7ULP1?
>
ULP1 is another SoC name of IMX7ULP.
And there will be ULP0, ULPx in the future..
It looks like not big issue, so I did not change it.
Regards
Dong Aisheng
^ permalink raw reply [flat|nested] 26+ messages in thread
* [PATCH V2 4/5] dt-bindings: pinctrl: add imx7ulp pinctrl binding doc
2017-05-23 10:37 ` A.S. Dong
@ 2017-05-25 3:16 ` Shawn Guo
2017-05-25 5:04 ` A.S. Dong
0 siblings, 1 reply; 26+ messages in thread
From: Shawn Guo @ 2017-05-25 3:16 UTC (permalink / raw)
To: linux-arm-kernel
On Tue, May 23, 2017 at 10:37:27AM +0000, A.S. Dong wrote:
> > > +#ifndef __DTS_IMX7ULP_PINFUNC_H
> > > +#define __DTS_IMX7ULP_PINFUNC_H
> > > +
> > > +/*
> > > + * The pin function ID is a tuple of
> > > + * <mux_conf_reg input_reg mux_mode input_val> */
> > > +
> > > +#define ULP1_PAD_PTC0__PTC0
> > > 0x0000 0x0000 0x1 0x0
> >
> >
> > For consistency with other SoCs, can we add MX7 to the define? E.g.
> > MX7ULP1?
> >
>
> ULP1 is another SoC name of IMX7ULP.
> And there will be ULP0, ULPx in the future..
What is the external/formal SoC name for ULP0 and ULPx?
>
> It looks like not big issue, so I did not change it.
It's an easy change to make things more obvious, so +1 on Stefan's
opinion.
Shawn
^ permalink raw reply [flat|nested] 26+ messages in thread
* [PATCH V2 4/5] dt-bindings: pinctrl: add imx7ulp pinctrl binding doc
2017-05-25 3:16 ` Shawn Guo
@ 2017-05-25 5:04 ` A.S. Dong
2017-05-25 6:23 ` Shawn Guo
0 siblings, 1 reply; 26+ messages in thread
From: A.S. Dong @ 2017-05-25 5:04 UTC (permalink / raw)
To: linux-arm-kernel
> -----Original Message-----
> From: Shawn Guo [mailto:shawnguo at kernel.org]
> Sent: Thursday, May 25, 2017 11:16 AM
> To: A.S. Dong
> Cc: Stefan Agner; Mark Rutland; devicetree at vger.kernel.org; Andy Duan;
> Jacky Bai; linus.walleij at linaro.org; linux-gpio at vger.kernel.org; Rob
> Herring; kernel at pengutronix.de; linux-arm-kernel at lists.infradead.org
> Subject: Re: [PATCH V2 4/5] dt-bindings: pinctrl: add imx7ulp pinctrl
> binding doc
>
> On Tue, May 23, 2017 at 10:37:27AM +0000, A.S. Dong wrote:
> > > > +#ifndef __DTS_IMX7ULP_PINFUNC_H
> > > > +#define __DTS_IMX7ULP_PINFUNC_H
> > > > +
> > > > +/*
> > > > + * The pin function ID is a tuple of
> > > > + * <mux_conf_reg input_reg mux_mode input_val> */
> > > > +
> > > > +#define ULP1_PAD_PTC0__PTC0
> > > > 0x0000 0x0000 0x1 0x0
> > >
> > >
> > > For consistency with other SoCs, can we add MX7 to the define? E.g.
> > > MX7ULP1?
> > >
> >
> > ULP1 is another SoC name of IMX7ULP.
> > And there will be ULP0, ULPx in the future..
>
> What is the external/formal SoC name for ULP0 and ULPx?
>
I don't know, it's still a plan.
Maybe IMX7ULP0, just can't sure.
> >
> > It looks like not big issue, so I did not change it.
>
> It's an easy change to make things more obvious, so +1 on Stefan's opinion.
>
If we really want to change, 'IMX7ULP1' may be a little strange as 'IMX7ULP' is
the official external name and all other places are using it.
So IMX7ULP may be more suitable.
Then next generation may be:
IMX7ULP0_PAD_PTC0_PTC0.
Vs
IMX7ULP_PAD_PTC0_PTC0
Just not much better than:
ULP1_PAD_PTC0_PTC0.
vs
ULP0_PAD_PTC0_PTC0
That's why I did not do it initially.
However, if you do want the change, i'm okay to do it.
Regards
Dong Aisheng
^ permalink raw reply [flat|nested] 26+ messages in thread
* [PATCH V2 4/5] dt-bindings: pinctrl: add imx7ulp pinctrl binding doc
2017-05-25 5:04 ` A.S. Dong
@ 2017-05-25 6:23 ` Shawn Guo
2017-05-25 6:48 ` Stefan Agner
0 siblings, 1 reply; 26+ messages in thread
From: Shawn Guo @ 2017-05-25 6:23 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, May 25, 2017 at 05:04:58AM +0000, A.S. Dong wrote:
> If we really want to change, 'IMX7ULP1' may be a little strange as 'IMX7ULP' is
> the official external name and all other places are using it.
> So IMX7ULP may be more suitable.
Yes, I actually meant IMX7ULP, which matches how we name the SoC
elsewhere in the kernel.
>
> Then next generation may be:
> IMX7ULP0_PAD_PTC0_PTC0.
> Vs
> IMX7ULP_PAD_PTC0_PTC0
>
> Just not much better than:
> ULP1_PAD_PTC0_PTC0.
> vs
> ULP0_PAD_PTC0_PTC0
>
> That's why I did not do it initially.
>
> However, if you do want the change, i'm okay to do it.
For the next generation, we will have a name for it in the kernel
anyway. The pinctrl macro simply follows that name.
Shawn
^ permalink raw reply [flat|nested] 26+ messages in thread
* [PATCH V2 4/5] dt-bindings: pinctrl: add imx7ulp pinctrl binding doc
2017-05-25 6:23 ` Shawn Guo
@ 2017-05-25 6:48 ` Stefan Agner
0 siblings, 0 replies; 26+ messages in thread
From: Stefan Agner @ 2017-05-25 6:48 UTC (permalink / raw)
To: linux-arm-kernel
On 2017-05-24 23:23, Shawn Guo wrote:
> On Thu, May 25, 2017 at 05:04:58AM +0000, A.S. Dong wrote:
>> If we really want to change, 'IMX7ULP1' may be a little strange as 'IMX7ULP' is
>> the official external name and all other places are using it.
>> So IMX7ULP may be more suitable.
>
> Yes, I actually meant IMX7ULP, which matches how we name the SoC
> elsewhere in the kernel.
>
All the other arch/arm/boot/dts/imx*pinfunc.h use MX7ULP (without the
I), but I am fine with either one.
--
Stefan
>>
>> Then next generation may be:
>> IMX7ULP0_PAD_PTC0_PTC0.
>> Vs
>> IMX7ULP_PAD_PTC0_PTC0
>>
>> Just not much better than:
>> ULP1_PAD_PTC0_PTC0.
>> vs
>> ULP0_PAD_PTC0_PTC0
>>
>> That's why I did not do it initially.
>>
>> However, if you do want the change, i'm okay to do it.
>
> For the next generation, we will have a name for it in the kernel
> anyway. The pinctrl macro simply follows that name.
>
> Shawn
^ permalink raw reply [flat|nested] 26+ messages in thread
end of thread, other threads:[~2017-05-25 6:48 UTC | newest]
Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-05-19 7:05 [PATCH V2 0/5] pinctrl: imx: add generic pin config and imx7ulp support Dong Aisheng
2017-05-19 7:05 ` [PATCH V2 1/5] pinctrl: imx: fix debug message for SHARE_MUX_CONF_REG case Dong Aisheng
2017-05-21 9:27 ` Shawn Guo
2017-05-22 9:02 ` Linus Walleij
2017-05-19 7:05 ` [PATCH V2 2/5] pinctrl: imx: add generic pin config core support Dong Aisheng
2017-05-21 9:27 ` Shawn Guo
2017-05-22 9:04 ` Linus Walleij
2017-05-19 7:05 ` [PATCH V2 3/5] pinctrl: imx: add soc specific mux_mode mask and shift property Dong Aisheng
2017-05-21 9:28 ` Shawn Guo
2017-05-22 9:06 ` Linus Walleij
2017-05-19 7:05 ` [PATCH V2 4/5] dt-bindings: pinctrl: add imx7ulp pinctrl binding doc Dong Aisheng
2017-05-21 9:30 ` Shawn Guo
2017-05-21 9:40 ` A.S. Dong
2017-05-21 11:00 ` Shawn Guo
2017-05-22 9:27 ` Linus Walleij
2017-05-22 12:30 ` A.S. Dong
2017-05-22 16:15 ` Stefan Agner
2017-05-23 10:37 ` A.S. Dong
2017-05-25 3:16 ` Shawn Guo
2017-05-25 5:04 ` A.S. Dong
2017-05-25 6:23 ` Shawn Guo
2017-05-25 6:48 ` Stefan Agner
2017-05-19 7:05 ` [PATCH V2 5/5] pinctrl: imx: add imx7ulp driver Dong Aisheng
2017-05-21 9:31 ` Shawn Guo
2017-05-23 7:41 ` [PATCH V2 0/5] pinctrl: imx: add generic pin config and imx7ulp support Linus Walleij
2017-05-23 9:17 ` A.S. Dong
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).