* [PATCH v2 0/6] gpio: update i.MX93/8ULP and support i.MX95
@ 2023-09-16 2:03 Peng Fan (OSS)
2023-09-16 2:03 ` [PATCH v2 1/6] dt-bindings: gpio: vf610: update gpio-ranges Peng Fan (OSS)
` (5 more replies)
0 siblings, 6 replies; 13+ messages in thread
From: Peng Fan (OSS) @ 2023-09-16 2:03 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski, Andy Shevchenko, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Stefan Agner, Shawn Guo,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
NXP Linux Team
Cc: linux-gpio, devicetree, linux-kernel, linux-arm-kernel, Peng Fan
From hardware perspective:
- i.MX8ULP/93 GPIO supports two interrupts, 1st for Trustzone non-secure irq,
2nd for Trustzone secure irq.
- i.MX8ULP/93 only has one register base
The current linux gpio-vf610.c could work with i.MX8ULP/i.MX93, it is
because some trick did in device tree node with offset added to base:
reg = <0x2d010080 0x1000>, <0x2d010040 0x40>;
But actually the register base should be 0x2d010000.
So i.MX8ULP/93 is not HW compatible with i.MX7ULP.
i.MX93 GPIO is directly derived from i.MX8ULP, so make i.MX93 compatible
with i.MX8ULP. i.MX95 GPIO is same as i.MX93, so also compatible with
i.MX8ULP
There maybe dtbs_check failure if only test the 1st patch. After
the patchset applied, no failure.
To make avoid break old bindings from work, update the driver
to support both old/new bindings.
---
Changes in v2:
- Update bindings with describe items, add one reg base for i.MX8ULP/93
- Update driver to support one reg base, support both new/old bindings
- Add a new patch 1 to update gpio-ranges found in dtbs_check
- Link to v1: https://lore.kernel.org/r/20230914-vf610-gpio-v1-0-3ed418182a6a@nxp.com
---
Peng Fan (6):
dt-bindings: gpio: vf610: update gpio-ranges
dt-bindings: gpio: vf610: correct i.MX8ULP and i.MX93
dt-bindings: gpio: vf610: add i.MX95 compatible
gpio: vf610: add i.MX8ULP of_device_id entry
arm64: dts: imx8ulp: update gpio node
arm64: dts: imx93: update gpio node
.../devicetree/bindings/gpio/gpio-vf610.yaml | 45 ++++++++++++++++--
arch/arm64/boot/dts/freescale/imx8ulp.dtsi | 21 +++++----
arch/arm64/boot/dts/freescale/imx93.dtsi | 28 ++++++-----
drivers/gpio/gpio-vf610.c | 55 +++++++++++++++++++---
4 files changed, 117 insertions(+), 32 deletions(-)
---
base-commit: e143016b56ecb0fcda5bb6026b0a25fe55274f56
change-id: 20230914-vf610-gpio-46edacd2b513
Best regards,
--
Peng Fan <peng.fan@nxp.com>
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v2 1/6] dt-bindings: gpio: vf610: update gpio-ranges
2023-09-16 2:03 [PATCH v2 0/6] gpio: update i.MX93/8ULP and support i.MX95 Peng Fan (OSS)
@ 2023-09-16 2:03 ` Peng Fan (OSS)
2023-09-17 7:46 ` Krzysztof Kozlowski
2023-09-16 2:03 ` [PATCH v2 2/6] dt-bindings: gpio: vf610: correct i.MX8ULP and i.MX93 Peng Fan (OSS)
` (4 subsequent siblings)
5 siblings, 1 reply; 13+ messages in thread
From: Peng Fan (OSS) @ 2023-09-16 2:03 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski, Andy Shevchenko, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Stefan Agner, Shawn Guo,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
NXP Linux Team
Cc: linux-gpio, devicetree, linux-kernel, linux-arm-kernel, Peng Fan
From: Peng Fan <peng.fan@nxp.com>
i.MX93 supports four gpio-ranges at max. To fix below issue:
"gpio@43820080: gpio-ranges: [[30, 0, 84, 8], [30, 8, 66, 18],
[30, 26, 34, 2], [30, 28, 0, 4]] is too long"
Update the gpio-ranges property
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
Documentation/devicetree/bindings/gpio/gpio-vf610.yaml | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml b/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
index 7c2d152e8617..59427d97adf5 100644
--- a/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
+++ b/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
@@ -59,7 +59,8 @@ properties:
- const: port
gpio-ranges:
- maxItems: 1
+ minItems: 1
+ maxItems: 4
patternProperties:
"^.+-hog(-[0-9]+)?$":
--
2.37.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 2/6] dt-bindings: gpio: vf610: correct i.MX8ULP and i.MX93
2023-09-16 2:03 [PATCH v2 0/6] gpio: update i.MX93/8ULP and support i.MX95 Peng Fan (OSS)
2023-09-16 2:03 ` [PATCH v2 1/6] dt-bindings: gpio: vf610: update gpio-ranges Peng Fan (OSS)
@ 2023-09-16 2:03 ` Peng Fan (OSS)
2023-09-17 7:52 ` Krzysztof Kozlowski
2023-09-16 2:03 ` [PATCH v2 3/6] dt-bindings: gpio: vf610: add i.MX95 compatible Peng Fan (OSS)
` (3 subsequent siblings)
5 siblings, 1 reply; 13+ messages in thread
From: Peng Fan (OSS) @ 2023-09-16 2:03 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski, Andy Shevchenko, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Stefan Agner, Shawn Guo,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
NXP Linux Team
Cc: linux-gpio, devicetree, linux-kernel, linux-arm-kernel, Peng Fan
From: Peng Fan <peng.fan@nxp.com>
i.MX8ULP and i.MX93 actually has two interrupts for each gpio
controller, one for Trustzone non-secure world, one for secure world.
And they has one register based, not two as i.MX7ULP or VF610.
Although the Linux Kernel driver gpio-vf610.c could work with
fsl,imx7ulp-gpio compatible, it is based on some tricks did in
device tree with some offset added to base address.
So actually i.MX8ULP/i.MX93 is not compatible with i.MX7ULP.
Last, i.MX93 is directly derived from i.MX8ULP, so make i.MX93 GPIO
compatible with i.MX8ULP
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
.../devicetree/bindings/gpio/gpio-vf610.yaml | 41 +++++++++++++++++++---
1 file changed, 37 insertions(+), 4 deletions(-)
diff --git a/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml b/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
index 59427d97adf5..8c1f87a1a393 100644
--- a/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
+++ b/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
@@ -20,6 +20,7 @@ description: |
properties:
compatible:
oneOf:
+ - const: fsl,imx8ulp-gpio
- const: fsl,vf610-gpio
- items:
- const: fsl,imx7ulp-gpio
@@ -27,16 +28,21 @@ properties:
- items:
- enum:
- fsl,imx93-gpio
- - fsl,imx8ulp-gpio
- - const: fsl,imx7ulp-gpio
+ - const: fsl,imx8ulp-gpio
reg:
description: The first reg tuple represents the PORT module, the second tuple
represents the GPIO module.
- maxItems: 2
+ items:
+ - description: PORT register base address
+ - description: GPIO register base address
+ minItems: 1
interrupts:
- maxItems: 1
+ items:
+ - description: GPIO Trustzone non-secure interrupt number
+ - description: GPIO Trustzone secure interrupt number
+ minItems: 1
interrupt-controller: true
@@ -78,6 +84,33 @@ required:
- "#gpio-cells"
- gpio-controller
+allOf:
+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - fsl,vf610-gpio
+ - fsl,imx7ulp-gpio
+ then:
+ properties:
+ interrupts:
+ items:
+ - description: GPIO interrupt number
+ reg:
+ items:
+ - description: PORT register base address
+ - description: GPIO register base address
+ else:
+ properties:
+ interrupts:
+ items:
+ - description: GPIO Trustzone non-secure interrupt number
+ - description: GPIO Trustzone secure interrupt number
+ reg:
+ items:
+ - description: GPIO register base address
+
additionalProperties: false
examples:
--
2.37.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 3/6] dt-bindings: gpio: vf610: add i.MX95 compatible
2023-09-16 2:03 [PATCH v2 0/6] gpio: update i.MX93/8ULP and support i.MX95 Peng Fan (OSS)
2023-09-16 2:03 ` [PATCH v2 1/6] dt-bindings: gpio: vf610: update gpio-ranges Peng Fan (OSS)
2023-09-16 2:03 ` [PATCH v2 2/6] dt-bindings: gpio: vf610: correct i.MX8ULP and i.MX93 Peng Fan (OSS)
@ 2023-09-16 2:03 ` Peng Fan (OSS)
2023-09-17 7:52 ` Krzysztof Kozlowski
2023-09-16 2:04 ` [PATCH v2 4/6] gpio: vf610: add i.MX8ULP of_device_id entry Peng Fan (OSS)
` (2 subsequent siblings)
5 siblings, 1 reply; 13+ messages in thread
From: Peng Fan (OSS) @ 2023-09-16 2:03 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski, Andy Shevchenko, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Stefan Agner, Shawn Guo,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
NXP Linux Team
Cc: linux-gpio, devicetree, linux-kernel, linux-arm-kernel, Peng Fan
From: Peng Fan <peng.fan@nxp.com>
Add i.MX95 compatible string which is compatible with i.MX8ULP
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
Documentation/devicetree/bindings/gpio/gpio-vf610.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml b/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
index 8c1f87a1a393..a7b9e57b6d57 100644
--- a/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
+++ b/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
@@ -28,6 +28,7 @@ properties:
- items:
- enum:
- fsl,imx93-gpio
+ - fsl,imx95-gpio
- const: fsl,imx8ulp-gpio
reg:
--
2.37.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 4/6] gpio: vf610: add i.MX8ULP of_device_id entry
2023-09-16 2:03 [PATCH v2 0/6] gpio: update i.MX93/8ULP and support i.MX95 Peng Fan (OSS)
` (2 preceding siblings ...)
2023-09-16 2:03 ` [PATCH v2 3/6] dt-bindings: gpio: vf610: add i.MX95 compatible Peng Fan (OSS)
@ 2023-09-16 2:04 ` Peng Fan (OSS)
2023-09-16 2:04 ` [PATCH v2 5/6] arm64: dts: imx8ulp: update gpio node Peng Fan (OSS)
2023-09-16 2:04 ` [PATCH v2 6/6] arm64: dts: imx93: " Peng Fan (OSS)
5 siblings, 0 replies; 13+ messages in thread
From: Peng Fan (OSS) @ 2023-09-16 2:04 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski, Andy Shevchenko, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Stefan Agner, Shawn Guo,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
NXP Linux Team
Cc: linux-gpio, devicetree, linux-kernel, linux-arm-kernel, Peng Fan
From: Peng Fan <peng.fan@nxp.com>
i.MX8ULP GPIO supports similar feature as i.MX7ULP GPIO, but i.MX8ULP is
not compatible with i.MX7ULP per binding doc. i.MX8ULP only has one
register base, not two base.
Add a new of_device_id entry for i.MX8ULP. But to make the driver could
also support old bindings, check the compatible string first, before
check the device data.
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
drivers/gpio/gpio-vf610.c | 55 +++++++++++++++++++++++++++++++++++++++++------
1 file changed, 49 insertions(+), 6 deletions(-)
diff --git a/drivers/gpio/gpio-vf610.c b/drivers/gpio/gpio-vf610.c
index dbc7ba0ee72c..ef2455093708 100644
--- a/drivers/gpio/gpio-vf610.c
+++ b/drivers/gpio/gpio-vf610.c
@@ -25,6 +25,7 @@
struct fsl_gpio_soc_data {
/* SoCs has a Port Data Direction Register (PDDR) */
bool have_paddr;
+ bool is_imx8ulp;
};
struct vf610_gpio_port {
@@ -60,13 +61,22 @@ struct vf610_gpio_port {
#define PORT_INT_EITHER_EDGE 0xb
#define PORT_INT_LOGIC_ONE 0xc
+#define IMX8ULP_GPIO_BASE_OFF 0x40
+#define IMX8ULP_BASE_OFF 0x80
+
static const struct fsl_gpio_soc_data imx_data = {
.have_paddr = true,
};
+static const struct fsl_gpio_soc_data imx8ulp_data = {
+ .have_paddr = true,
+ .is_imx8ulp = true,
+};
+
static const struct of_device_id vf610_gpio_dt_ids[] = {
{ .compatible = "fsl,vf610-gpio", .data = NULL, },
{ .compatible = "fsl,imx7ulp-gpio", .data = &imx_data, },
+ { .compatible = "fsl,imx8ulp-gpio", .data = &imx8ulp_data, },
{ /* sentinel */ }
};
@@ -255,6 +265,42 @@ static void vf610_gpio_disable_clk(void *data)
clk_disable_unprepare(data);
}
+static int vf610_gpio_map_base(struct platform_device *pdev, struct vf610_gpio_port *port)
+{
+ struct device *dev = &pdev->dev;
+ bool dual_base;
+
+ /* support old compatible strings */
+ if (device_is_compatible(dev, "fsl,imx7ulp-gpio") &&
+ (device_is_compatible(dev, "fsl,imx93-gpio") ||
+ (device_is_compatible(dev, "fsl,imx8ulp-gpio")))) {
+ dual_base = true;
+ } else if (port->sdata && port->sdata->is_imx8ulp) {
+ dual_base = false;
+ } else {
+ dual_base = true;
+ };
+
+ if (dual_base) {
+ port->base = devm_platform_ioremap_resource(pdev, 0);
+ if (IS_ERR(port->base))
+ return PTR_ERR(port->base);
+
+ port->gpio_base = devm_platform_ioremap_resource(pdev, 1);
+ if (IS_ERR(port->gpio_base))
+ return PTR_ERR(port->gpio_base);
+ } else {
+ port->base = devm_platform_ioremap_resource(pdev, 0);
+ if (IS_ERR(port->base))
+ return PTR_ERR(port->base);
+
+ port->gpio_base = port->base + IMX8ULP_GPIO_BASE_OFF;
+ port->base = port->base + IMX8ULP_BASE_OFF;
+ }
+
+ return 0;
+}
+
static int vf610_gpio_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
@@ -269,13 +315,10 @@ static int vf610_gpio_probe(struct platform_device *pdev)
return -ENOMEM;
port->sdata = of_device_get_match_data(dev);
- port->base = devm_platform_ioremap_resource(pdev, 0);
- if (IS_ERR(port->base))
- return PTR_ERR(port->base);
- port->gpio_base = devm_platform_ioremap_resource(pdev, 1);
- if (IS_ERR(port->gpio_base))
- return PTR_ERR(port->gpio_base);
+ ret = vf610_gpio_map_base(pdev, port);
+ if (ret)
+ return ret;
port->irq = platform_get_irq(pdev, 0);
if (port->irq < 0)
--
2.37.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 5/6] arm64: dts: imx8ulp: update gpio node
2023-09-16 2:03 [PATCH v2 0/6] gpio: update i.MX93/8ULP and support i.MX95 Peng Fan (OSS)
` (3 preceding siblings ...)
2023-09-16 2:04 ` [PATCH v2 4/6] gpio: vf610: add i.MX8ULP of_device_id entry Peng Fan (OSS)
@ 2023-09-16 2:04 ` Peng Fan (OSS)
2023-09-17 7:48 ` Krzysztof Kozlowski
2023-09-16 2:04 ` [PATCH v2 6/6] arm64: dts: imx93: " Peng Fan (OSS)
5 siblings, 1 reply; 13+ messages in thread
From: Peng Fan (OSS) @ 2023-09-16 2:04 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski, Andy Shevchenko, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Stefan Agner, Shawn Guo,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
NXP Linux Team
Cc: linux-gpio, devicetree, linux-kernel, linux-arm-kernel, Peng Fan
From: Peng Fan <peng.fan@nxp.com>
The i.MX8ULP GPIO supports two interrupts and one register base, and not
compatible with i.MX7ULP. Update the node following dt-binding doc.
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
arch/arm64/boot/dts/freescale/imx8ulp.dtsi | 21 ++++++++++++---------
1 file changed, 12 insertions(+), 9 deletions(-)
diff --git a/arch/arm64/boot/dts/freescale/imx8ulp.dtsi b/arch/arm64/boot/dts/freescale/imx8ulp.dtsi
index 8a6596d5a581..3921fdace792 100644
--- a/arch/arm64/boot/dts/freescale/imx8ulp.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8ulp.dtsi
@@ -484,11 +484,12 @@ fec: ethernet@29950000 {
};
gpioe: gpio@2d000080 {
- compatible = "fsl,imx8ulp-gpio", "fsl,imx7ulp-gpio";
- reg = <0x2d000080 0x1000>, <0x2d000040 0x40>;
+ compatible = "fsl,imx8ulp-gpio";
+ reg = <0x2d000000 0x1000>;
gpio-controller;
#gpio-cells = <2>;
- interrupts = <GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH>;
+ interrupts = <GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&pcc4 IMX8ULP_CLK_RGPIOE>,
@@ -498,11 +499,12 @@ gpioe: gpio@2d000080 {
};
gpiof: gpio@2d010080 {
- compatible = "fsl,imx8ulp-gpio", "fsl,imx7ulp-gpio";
- reg = <0x2d010080 0x1000>, <0x2d010040 0x40>;
+ compatible = "fsl,imx8ulp-gpio";
+ reg = <0x2d010000 0x1000>;
gpio-controller;
#gpio-cells = <2>;
- interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>;
+ interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&pcc4 IMX8ULP_CLK_RGPIOF>,
@@ -533,11 +535,12 @@ pcc5: clock-controller@2da70000 {
};
gpiod: gpio@2e200080 {
- compatible = "fsl,imx8ulp-gpio", "fsl,imx7ulp-gpio";
- reg = <0x2e200080 0x1000>, <0x2e200040 0x40>;
+ compatible = "fsl,imx8ulp-gpio";
+ reg = <0x2e200000 0x1000>;
gpio-controller;
#gpio-cells = <2>;
- interrupts = <GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>;
+ interrupts = <GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&pcc5 IMX8ULP_CLK_RGPIOD>,
--
2.37.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 6/6] arm64: dts: imx93: update gpio node
2023-09-16 2:03 [PATCH v2 0/6] gpio: update i.MX93/8ULP and support i.MX95 Peng Fan (OSS)
` (4 preceding siblings ...)
2023-09-16 2:04 ` [PATCH v2 5/6] arm64: dts: imx8ulp: update gpio node Peng Fan (OSS)
@ 2023-09-16 2:04 ` Peng Fan (OSS)
5 siblings, 0 replies; 13+ messages in thread
From: Peng Fan (OSS) @ 2023-09-16 2:04 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski, Andy Shevchenko, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Stefan Agner, Shawn Guo,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
NXP Linux Team
Cc: linux-gpio, devicetree, linux-kernel, linux-arm-kernel, Peng Fan
From: Peng Fan <peng.fan@nxp.com>
Per binding doc, i.MX93 GPIO supports two interrupts and one register
base, compatible with i.MX8ULP. So update the node
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
arch/arm64/boot/dts/freescale/imx93.dtsi | 28 ++++++++++++++++------------
1 file changed, 16 insertions(+), 12 deletions(-)
diff --git a/arch/arm64/boot/dts/freescale/imx93.dtsi b/arch/arm64/boot/dts/freescale/imx93.dtsi
index 6f85a05ee7e1..4b111b8c1931 100644
--- a/arch/arm64/boot/dts/freescale/imx93.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx93.dtsi
@@ -825,11 +825,12 @@ usdhc3: mmc@428b0000 {
};
gpio2: gpio@43810080 {
- compatible = "fsl,imx93-gpio", "fsl,imx7ulp-gpio";
- reg = <0x43810080 0x1000>, <0x43810040 0x40>;
+ compatible = "fsl,imx93-gpio", "fsl,imx8ulp-gpio";
+ reg = <0x43810000 0x1000>;
gpio-controller;
#gpio-cells = <2>;
- interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
+ interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&clk IMX93_CLK_GPIO2_GATE>,
@@ -839,11 +840,12 @@ gpio2: gpio@43810080 {
};
gpio3: gpio@43820080 {
- compatible = "fsl,imx93-gpio", "fsl,imx7ulp-gpio";
- reg = <0x43820080 0x1000>, <0x43820040 0x40>;
+ compatible = "fsl,imx93-gpio", "fsl,imx8ulp-gpio";
+ reg = <0x43820000 0x1000>;
gpio-controller;
#gpio-cells = <2>;
- interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
+ interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&clk IMX93_CLK_GPIO3_GATE>,
@@ -854,11 +856,12 @@ gpio3: gpio@43820080 {
};
gpio4: gpio@43830080 {
- compatible = "fsl,imx93-gpio", "fsl,imx7ulp-gpio";
- reg = <0x43830080 0x1000>, <0x43830040 0x40>;
+ compatible = "fsl,imx93-gpio", "fsl,imx8ulp-gpio";
+ reg = <0x43830000 0x1000>;
gpio-controller;
#gpio-cells = <2>;
- interrupts = <GIC_SPI 189 IRQ_TYPE_LEVEL_HIGH>;
+ interrupts = <GIC_SPI 189 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&clk IMX93_CLK_GPIO4_GATE>,
@@ -868,11 +871,12 @@ gpio4: gpio@43830080 {
};
gpio1: gpio@47400080 {
- compatible = "fsl,imx93-gpio", "fsl,imx7ulp-gpio";
- reg = <0x47400080 0x1000>, <0x47400040 0x40>;
+ compatible = "fsl,imx93-gpio", "fsl,imx8ulp-gpio";
+ reg = <0x47400000 0x1000>;
gpio-controller;
#gpio-cells = <2>;
- interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
+ interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&clk IMX93_CLK_GPIO1_GATE>,
--
2.37.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH v2 1/6] dt-bindings: gpio: vf610: update gpio-ranges
2023-09-16 2:03 ` [PATCH v2 1/6] dt-bindings: gpio: vf610: update gpio-ranges Peng Fan (OSS)
@ 2023-09-17 7:46 ` Krzysztof Kozlowski
0 siblings, 0 replies; 13+ messages in thread
From: Krzysztof Kozlowski @ 2023-09-17 7:46 UTC (permalink / raw)
To: Peng Fan (OSS), Linus Walleij, Bartosz Golaszewski,
Andy Shevchenko, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Stefan Agner, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team,
Fabio Estevam, NXP Linux Team
Cc: linux-gpio, devicetree, linux-kernel, linux-arm-kernel, Peng Fan
On 16/09/2023 04:03, Peng Fan (OSS) wrote:
> From: Peng Fan <peng.fan@nxp.com>
>
> i.MX93 supports four gpio-ranges at max. To fix below issue:
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 5/6] arm64: dts: imx8ulp: update gpio node
2023-09-16 2:04 ` [PATCH v2 5/6] arm64: dts: imx8ulp: update gpio node Peng Fan (OSS)
@ 2023-09-17 7:48 ` Krzysztof Kozlowski
2023-09-17 12:51 ` Peng Fan
0 siblings, 1 reply; 13+ messages in thread
From: Krzysztof Kozlowski @ 2023-09-17 7:48 UTC (permalink / raw)
To: Peng Fan (OSS), Linus Walleij, Bartosz Golaszewski,
Andy Shevchenko, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Stefan Agner, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team,
Fabio Estevam, NXP Linux Team
Cc: linux-gpio, devicetree, linux-kernel, linux-arm-kernel, Peng Fan
On 16/09/2023 04:04, Peng Fan (OSS) wrote:
> From: Peng Fan <peng.fan@nxp.com>
>
> The i.MX8ULP GPIO supports two interrupts and one register base, and not
> compatible with i.MX7ULP. Update the node following dt-binding doc.
>
I think last email thread concluded they are compatible. Otherwise, how
did it work so far? You break users, which might be ok, but commit does
no say that anything was broken here.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 2/6] dt-bindings: gpio: vf610: correct i.MX8ULP and i.MX93
2023-09-16 2:03 ` [PATCH v2 2/6] dt-bindings: gpio: vf610: correct i.MX8ULP and i.MX93 Peng Fan (OSS)
@ 2023-09-17 7:52 ` Krzysztof Kozlowski
2023-09-17 12:46 ` Peng Fan
0 siblings, 1 reply; 13+ messages in thread
From: Krzysztof Kozlowski @ 2023-09-17 7:52 UTC (permalink / raw)
To: Peng Fan (OSS), Linus Walleij, Bartosz Golaszewski,
Andy Shevchenko, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Stefan Agner, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team,
Fabio Estevam, NXP Linux Team
Cc: linux-gpio, devicetree, linux-kernel, linux-arm-kernel, Peng Fan
On 16/09/2023 04:03, Peng Fan (OSS) wrote:
> From: Peng Fan <peng.fan@nxp.com>
>
> i.MX8ULP and i.MX93 actually has two interrupts for each gpio
> controller, one for Trustzone non-secure world, one for secure world.
>
> And they has one register based, not two as i.MX7ULP or VF610.
>
> Although the Linux Kernel driver gpio-vf610.c could work with
> fsl,imx7ulp-gpio compatible, it is based on some tricks did in
> device tree with some offset added to base address.
>
> So actually i.MX8ULP/i.MX93 is not compatible with i.MX7ULP.
>
> Last, i.MX93 is directly derived from i.MX8ULP, so make i.MX93 GPIO
> compatible with i.MX8ULP
>
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---
> .../devicetree/bindings/gpio/gpio-vf610.yaml | 41 +++++++++++++++++++---
> 1 file changed, 37 insertions(+), 4 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml b/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> index 59427d97adf5..8c1f87a1a393 100644
> --- a/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> +++ b/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> @@ -20,6 +20,7 @@ description: |
> properties:
> compatible:
> oneOf:
> + - const: fsl,imx8ulp-gpio
> - const: fsl,vf610-gpio
> - items:
> - const: fsl,imx7ulp-gpio
> @@ -27,16 +28,21 @@ properties:
> - items:
> - enum:
> - fsl,imx93-gpio
> - - fsl,imx8ulp-gpio
> - - const: fsl,imx7ulp-gpio
> + - const: fsl,imx8ulp-gpio
>
> reg:
> description: The first reg tuple represents the PORT module, the second tuple
> represents the GPIO module.
> - maxItems: 2
> + items:
> + - description: PORT register base address
> + - description: GPIO register base address
> + minItems: 1
>
> interrupts:
> - maxItems: 1
> + items:
> + - description: GPIO Trustzone non-secure interrupt number
> + - description: GPIO Trustzone secure interrupt number
> + minItems: 1
>
> interrupt-controller: true
>
> @@ -78,6 +84,33 @@ required:
> - "#gpio-cells"
> - gpio-controller
>
> +allOf:
> + - if:
> + properties:
> + compatible:
> + contains:
> + enum:
> + - fsl,vf610-gpio
> + - fsl,imx7ulp-gpio
> + then:
> + properties:
> + interrupts:
> + items:
> + - description: GPIO interrupt number
So this is different than first interrupt mentioned in top-level?
> + reg:
> + items:
> + - description: PORT register base address
> + - description: GPIO register base address
You have the description in top-level, no need to repeat it. Just
minItems: 2... although it depends whether top-level property will stay.
> + else:
> + properties:
> + interrupts:
> + items:
> + - description: GPIO Trustzone non-secure interrupt number
> + - description: GPIO Trustzone secure interrupt number
> + reg:
> + items:
> + - description: GPIO register base address
So the first entry is different between variants? Then top-level should
be just min/maxItems.
> +
> additionalProperties: false
>
> examples:
>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 3/6] dt-bindings: gpio: vf610: add i.MX95 compatible
2023-09-16 2:03 ` [PATCH v2 3/6] dt-bindings: gpio: vf610: add i.MX95 compatible Peng Fan (OSS)
@ 2023-09-17 7:52 ` Krzysztof Kozlowski
0 siblings, 0 replies; 13+ messages in thread
From: Krzysztof Kozlowski @ 2023-09-17 7:52 UTC (permalink / raw)
To: Peng Fan (OSS), Linus Walleij, Bartosz Golaszewski,
Andy Shevchenko, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Stefan Agner, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team,
Fabio Estevam, NXP Linux Team
Cc: linux-gpio, devicetree, linux-kernel, linux-arm-kernel, Peng Fan
On 16/09/2023 04:03, Peng Fan (OSS) wrote:
> From: Peng Fan <peng.fan@nxp.com>
>
> Add i.MX95 compatible string which is compatible with i.MX8ULP
>
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 13+ messages in thread
* RE: [PATCH v2 2/6] dt-bindings: gpio: vf610: correct i.MX8ULP and i.MX93
2023-09-17 7:52 ` Krzysztof Kozlowski
@ 2023-09-17 12:46 ` Peng Fan
0 siblings, 0 replies; 13+ messages in thread
From: Peng Fan @ 2023-09-17 12:46 UTC (permalink / raw)
To: Krzysztof Kozlowski, Peng Fan (OSS), Linus Walleij,
Bartosz Golaszewski, Andy Shevchenko, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Stefan Agner, Shawn Guo,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
dl-linux-imx
Cc: linux-gpio@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
> Subject: Re: [PATCH v2 2/6] dt-bindings: gpio: vf610: correct i.MX8ULP and
> i.MX93
>
> On 16/09/2023 04:03, Peng Fan (OSS) wrote:
> > From: Peng Fan <peng.fan@nxp.com>
> >
> > i.MX8ULP and i.MX93 actually has two interrupts for each gpio
> > controller, one for Trustzone non-secure world, one for secure world.
> >
> > And they has one register based, not two as i.MX7ULP or VF610.
> >
> > Although the Linux Kernel driver gpio-vf610.c could work with
> > fsl,imx7ulp-gpio compatible, it is based on some tricks did in device
> > tree with some offset added to base address.
> >
> > So actually i.MX8ULP/i.MX93 is not compatible with i.MX7ULP.
> >
> > Last, i.MX93 is directly derived from i.MX8ULP, so make i.MX93 GPIO
> > compatible with i.MX8ULP
> >
> > Signed-off-by: Peng Fan <peng.fan@nxp.com>
> > ---
> > .../devicetree/bindings/gpio/gpio-vf610.yaml | 41
> +++++++++++++++++++---
> > 1 file changed, 37 insertions(+), 4 deletions(-)
> >
> > diff --git a/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> > b/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> > index 59427d97adf5..8c1f87a1a393 100644
> > --- a/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> > +++ b/Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
> > @@ -20,6 +20,7 @@ description: |
> > properties:
> > compatible:
> > oneOf:
> > + - const: fsl,imx8ulp-gpio
> > - const: fsl,vf610-gpio
> > - items:
> > - const: fsl,imx7ulp-gpio
> > @@ -27,16 +28,21 @@ properties:
> > - items:
> > - enum:
> > - fsl,imx93-gpio
> > - - fsl,imx8ulp-gpio
> > - - const: fsl,imx7ulp-gpio
> > + - const: fsl,imx8ulp-gpio
> >
> > reg:
> > description: The first reg tuple represents the PORT module, the second
> tuple
> > represents the GPIO module.
> > - maxItems: 2
> > + items:
> > + - description: PORT register base address
> > + - description: GPIO register base address
> > + minItems: 1
> >
> > interrupts:
> > - maxItems: 1
> > + items:
> > + - description: GPIO Trustzone non-secure interrupt number
> > + - description: GPIO Trustzone secure interrupt number
> > + minItems: 1
> >
> > interrupt-controller: true
> >
> > @@ -78,6 +84,33 @@ required:
> > - "#gpio-cells"
> > - gpio-controller
> >
> > +allOf:
> > + - if:
> > + properties:
> > + compatible:
> > + contains:
> > + enum:
> > + - fsl,vf610-gpio
> > + - fsl,imx7ulp-gpio
> > + then:
> > + properties:
> > + interrupts:
> > + items:
> > + - description: GPIO interrupt number
>
> So this is different than first interrupt mentioned in top-level?
Should be same, I will use maxItems: 1 here.
>
>
> > + reg:
> > + items:
> > + - description: PORT register base address
> > + - description: GPIO register base address
>
> You have the description in top-level, no need to repeat it. Just
> minItems: 2... although it depends whether top-level property will stay.
Ok, got it.
>
>
> > + else:
> > + properties:
> > + interrupts:
> > + items:
> > + - description: GPIO Trustzone non-secure interrupt number
> > + - description: GPIO Trustzone secure interrupt number
> > + reg:
> > + items:
> > + - description: GPIO register base address
>
> So the first entry is different between variants? Then top-level should be just
> min/maxItems.
Yes, I think so. Rob commented to list items in top level, so ..
Thanks,
Peng.
>
> > +
> > additionalProperties: false
> >
> > examples:
> >
>
> Best regards,
> Krzysztof
^ permalink raw reply [flat|nested] 13+ messages in thread
* RE: [PATCH v2 5/6] arm64: dts: imx8ulp: update gpio node
2023-09-17 7:48 ` Krzysztof Kozlowski
@ 2023-09-17 12:51 ` Peng Fan
0 siblings, 0 replies; 13+ messages in thread
From: Peng Fan @ 2023-09-17 12:51 UTC (permalink / raw)
To: Krzysztof Kozlowski, Peng Fan (OSS), Linus Walleij,
Bartosz Golaszewski, Andy Shevchenko, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Stefan Agner, Shawn Guo,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
dl-linux-imx
Cc: linux-gpio@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
> Subject: Re: [PATCH v2 5/6] arm64: dts: imx8ulp: update gpio node
>
> On 16/09/2023 04:04, Peng Fan (OSS) wrote:
> > From: Peng Fan <peng.fan@nxp.com>
> >
> > The i.MX8ULP GPIO supports two interrupts and one register base, and
> > not compatible with i.MX7ULP. Update the node following dt-binding doc.
> >
> I think last email thread concluded they are compatible. Otherwise, how did it
> work so far? You break users, which might be ok, but commit does no say
> that anything was broken here.
Per,
https://lore.kernel.org/all/02e25e44-1146-bb59-58de-800b11d30e7b@linaro.org/
I thought we agree they are not HW compatible, it is SW trick to make
Linux driver could work with both with i.MX7ULP compatible.
I will add more information in commit to describe breaking users.
BTW: in linux driver in this patchset, I have added code to support
legacy bindings.
Thanks,
Peng.
>
> Best regards,
> Krzysztof
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2023-09-17 12:52 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-16 2:03 [PATCH v2 0/6] gpio: update i.MX93/8ULP and support i.MX95 Peng Fan (OSS)
2023-09-16 2:03 ` [PATCH v2 1/6] dt-bindings: gpio: vf610: update gpio-ranges Peng Fan (OSS)
2023-09-17 7:46 ` Krzysztof Kozlowski
2023-09-16 2:03 ` [PATCH v2 2/6] dt-bindings: gpio: vf610: correct i.MX8ULP and i.MX93 Peng Fan (OSS)
2023-09-17 7:52 ` Krzysztof Kozlowski
2023-09-17 12:46 ` Peng Fan
2023-09-16 2:03 ` [PATCH v2 3/6] dt-bindings: gpio: vf610: add i.MX95 compatible Peng Fan (OSS)
2023-09-17 7:52 ` Krzysztof Kozlowski
2023-09-16 2:04 ` [PATCH v2 4/6] gpio: vf610: add i.MX8ULP of_device_id entry Peng Fan (OSS)
2023-09-16 2:04 ` [PATCH v2 5/6] arm64: dts: imx8ulp: update gpio node Peng Fan (OSS)
2023-09-17 7:48 ` Krzysztof Kozlowski
2023-09-17 12:51 ` Peng Fan
2023-09-16 2:04 ` [PATCH v2 6/6] arm64: dts: imx93: " Peng Fan (OSS)
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).