From: Adam Ford <hidden> Date: 2021-11-04 16:18:27
The i.MX8M Nano is similar to the i.MX8M Mini in some ways, but very
different in others. With the blk-ctrl driver for Mini in place,
this series expands the blk-ctrl driver to support the Nano which
opens the door for additional functions in the future. As part of
this series, it also addresses some issues in the GPCv2 driver and
finally adds support for enabling USB and GPU.
V3: Fixes an the yaml example
V2: Fixes the clock count in the blk-ctrl
Adam Ford (9):
soc: imx: gpcv2: keep i.MX8MN gpumix bus clock enabled
soc: imx: gpcv2: Add dispmix and mipi domains to imx8mn
dt-bindings: power: imx8mn: add defines for DISP blk-ctrl domains
dt-bindings: soc: add binding for i.MX8MN DISP blk-ctrl
soc: imx: imx8m-blk-ctrl: add i.MX8MN DISP blk-ctrl
arm64: dts: imx8mn: add GPC node
arm64: dts: imx8mn: put USB controller into power-domains
arm64: dts: imx8mn: add DISP blk-ctrl
arm64: dts: imx8mn: Enable GPU
.../soc/imx/fsl,imx8mn-disp-blk-ctrl.yaml | 97 +++++++++++++++++
arch/arm64/boot/dts/freescale/imx8mn.dtsi | 103 ++++++++++++++++++
drivers/soc/imx/gpcv2.c | 26 +++++
drivers/soc/imx/imx8m-blk-ctrl.c | 75 ++++++++++++-
include/dt-bindings/power/imx8mn-power.h | 5 +
5 files changed, 305 insertions(+), 1 deletion(-)
create mode 100644 Documentation/devicetree/bindings/soc/imx/fsl,imx8mn-disp-blk-ctrl.yaml
--
2.32.0
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
@@ -0,0 +1,97 @@+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)+%YAML1.2+---+$id:http://devicetree.org/schemas/soc/imx/fsl,imx8mn-disp-blk-ctrl.yaml#+$schema:http://devicetree.org/meta-schemas/core.yaml#++title:NXP i.MX8MN DISP blk-ctrl++maintainers:+-Lucas Stach <l.stach@pengutronix.de>++description:+The i.MX8MN DISP blk-ctrl is a top-level peripheral providing access to+the NoC and ensuring proper power sequencing of the display and MIPI CSI+peripherals located in the DISP domain of the SoC.++properties:+compatible:+items:+-const:fsl,imx8mn-disp-blk-ctrl+-const:syscon
Are there other functions in this block? If so, what?
@@ -0,0 +1,97 @@+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)+%YAML1.2+---+$id:http://devicetree.org/schemas/soc/imx/fsl,imx8mn-disp-blk-ctrl.yaml#+$schema:http://devicetree.org/meta-schemas/core.yaml#++title:NXP i.MX8MN DISP blk-ctrl++maintainers:+-Lucas Stach <l.stach@pengutronix.de>++description:+The i.MX8MN DISP blk-ctrl is a top-level peripheral providing access to+the NoC and ensuring proper power sequencing of the display and MIPI CSI+peripherals located in the DISP domain of the SoC.++properties:+compatible:+items:+-const:fsl,imx8mn-disp-blk-ctrl+-const:syscon
Are there other functions in this block? If so, what?
This is similar to the i.MX8M Mini. From what I can tell, there are
some extra clock and reset registers that are not associated with
their respective blocks. The main power domain controller called GPCv2
partially enables the power domains, but there is some ping-pong
between that IP block and this one,
This looks odd. These are the same power domains this node provides.
It is odd, but I'll try to explain it the best I can.
When this SoC was developed, there were a few additional registers
placed into this IP block that control other IP blocks, and ping-pong
with the main power domain controller to make the various IP blocks
work.
GPCv2, the main power domain controller attempts to enable the domain,
but it has to enable the bus clock and clear the bus reset from this
IP block because neither the reset nor the clock enable were placed
into reset or clock IP blocks.
For example, when the mipi-csi controller needs to come up, it needs
to request the power domain from disp-blk-ctrl IP block. The blk-ctrl
block first requests the pgc_mipi power domain. The GPC ping-pongs
the blk-ctrl which has to set or clear registers so the GPC can finish
its job. One the GPC has finished its part the blk-ctrl then enables
the clock and reset that controls the csi. This same is true for
several quasi-related items like DSI, CSI, and LCDIF.
The items listed in the power-domains are from the GPC, and the items
in the power-domain-names are inside the blk-ctrl. When an item needs
a power domain from the blk-ctrl, the corresponding GPC power domain
must also be referenced.
In order to enable some of the registers, the blk-ctrl IP block also
needs to enable some additional clocks or the system can hang.
Lucas Stach wrote the original driver and might be able to better
explain how it works on the Mini, but the Nano behaves the same way
with different bits in the regisers.
From: Adam Ford <hidden> Date: 2021-11-04 16:19:11
Add the DT node for the GPC, including all the PGC power domains,
some of them are not fully functional yet, as they require interaction
with the blk-ctrls to properly power up/down the peripherals.
Signed-off-by: Adam Ford <redacted>
From: Adam Ford <hidden> Date: 2021-11-04 16:19:26
The i.MX8M-Nano features a GC7000. The Etnaviv driver detects it as:
etnaviv-gpu 38000000.gpu: model: GC7000, revision: 6203
Signed-off-by: Adam Ford <redacted>
From: Adam Ford <hidden> Date: 2021-11-04 16:19:28
Now that we have support for the power domain controller on the i.MX8MN,
we can put the USB controller in the respective power domain to allow
it to power down the PHY when possible.
Signed-off-by: Adam Ford <redacted>
Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
From: Tim Harvey <tharvey@gateworks.com> Date: 2021-11-16 17:57:18
On Thu, Nov 4, 2021 at 9:18 AM Adam Ford [off-list ref] wrote:
The i.MX8M Nano is similar to the i.MX8M Mini in some ways, but very
different in others. With the blk-ctrl driver for Mini in place,
this series expands the blk-ctrl driver to support the Nano which
opens the door for additional functions in the future. As part of
this series, it also addresses some issues in the GPCv2 driver and
finally adds support for enabling USB and GPU.
V3: Fixes an the yaml example
V2: Fixes the clock count in the blk-ctrl
Adam Ford (9):
soc: imx: gpcv2: keep i.MX8MN gpumix bus clock enabled
soc: imx: gpcv2: Add dispmix and mipi domains to imx8mn
dt-bindings: power: imx8mn: add defines for DISP blk-ctrl domains
dt-bindings: soc: add binding for i.MX8MN DISP blk-ctrl
soc: imx: imx8m-blk-ctrl: add i.MX8MN DISP blk-ctrl
arm64: dts: imx8mn: add GPC node
arm64: dts: imx8mn: put USB controller into power-domains
arm64: dts: imx8mn: add DISP blk-ctrl
arm64: dts: imx8mn: Enable GPU
.../soc/imx/fsl,imx8mn-disp-blk-ctrl.yaml | 97 +++++++++++++++++
arch/arm64/boot/dts/freescale/imx8mn.dtsi | 103 ++++++++++++++++++
drivers/soc/imx/gpcv2.c | 26 +++++
drivers/soc/imx/imx8m-blk-ctrl.c | 75 ++++++++++++-
include/dt-bindings/power/imx8mn-power.h | 5 +
5 files changed, 305 insertions(+), 1 deletion(-)
create mode 100644 Documentation/devicetree/bindings/soc/imx/fsl,imx8mn-disp-blk-ctrl.yaml
Adam,
Thanks for the patches. I'm not sure how best to test this but on an
imx8mm-venice-gw7902 which has USB, but no display.
I find that if DRM_ETNAVIV is enabled I hang at 'etnaviv etnaviv:
bound 38000000.gpu (ops 0xffff800010964748)'.
If DRM_ETNAVIV is not enabled:
- boots fine
- usb works
- soft reboot works (does not hang)
Best regards,
Tim
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
From: Adam Ford <hidden> Date: 2021-11-16 18:04:54
On Tue, Nov 16, 2021 at 11:57 AM Tim Harvey [off-list ref] wrote:
On Thu, Nov 4, 2021 at 9:18 AM Adam Ford [off-list ref] wrote:
quoted
The i.MX8M Nano is similar to the i.MX8M Mini in some ways, but very
different in others. With the blk-ctrl driver for Mini in place,
this series expands the blk-ctrl driver to support the Nano which
opens the door for additional functions in the future. As part of
this series, it also addresses some issues in the GPCv2 driver and
finally adds support for enabling USB and GPU.
V3: Fixes an the yaml example
V2: Fixes the clock count in the blk-ctrl
Adam Ford (9):
soc: imx: gpcv2: keep i.MX8MN gpumix bus clock enabled
soc: imx: gpcv2: Add dispmix and mipi domains to imx8mn
dt-bindings: power: imx8mn: add defines for DISP blk-ctrl domains
dt-bindings: soc: add binding for i.MX8MN DISP blk-ctrl
soc: imx: imx8m-blk-ctrl: add i.MX8MN DISP blk-ctrl
arm64: dts: imx8mn: add GPC node
arm64: dts: imx8mn: put USB controller into power-domains
arm64: dts: imx8mn: add DISP blk-ctrl
arm64: dts: imx8mn: Enable GPU
.../soc/imx/fsl,imx8mn-disp-blk-ctrl.yaml | 97 +++++++++++++++++
arch/arm64/boot/dts/freescale/imx8mn.dtsi | 103 ++++++++++++++++++
drivers/soc/imx/gpcv2.c | 26 +++++
drivers/soc/imx/imx8m-blk-ctrl.c | 75 ++++++++++++-
include/dt-bindings/power/imx8mn-power.h | 5 +
5 files changed, 305 insertions(+), 1 deletion(-)
create mode 100644 Documentation/devicetree/bindings/soc/imx/fsl,imx8mn-disp-blk-ctrl.yaml
Adam,
Thanks for the patches. I'm not sure how best to test this but on an
imx8mm-venice-gw7902 which has USB, but no display.
I find that if DRM_ETNAVIV is enabled I hang at 'etnaviv etnaviv:
bound 38000000.gpu (ops 0xffff800010964748)'.
Thanks for testing this.
Does your board send power to the GPU? I recall someone somewhere
didn't power theirGPU, but I can't remember who and/or what board was
being discussed.
I'll run some more tests on the latest 5.16-rc1 to see if I can
replicate your issue.
adam
If DRM_ETNAVIV is not enabled:
- boots fine
- usb works
- soft reboot works (does not hang)
From: Tim Harvey <tharvey@gateworks.com> Date: 2021-11-16 18:28:01
On Tue, Nov 16, 2021 at 10:04 AM Adam Ford [off-list ref] wrote:
On Tue, Nov 16, 2021 at 11:57 AM Tim Harvey [off-list ref] wrote:
quoted
On Thu, Nov 4, 2021 at 9:18 AM Adam Ford [off-list ref] wrote:
quoted
The i.MX8M Nano is similar to the i.MX8M Mini in some ways, but very
different in others. With the blk-ctrl driver for Mini in place,
this series expands the blk-ctrl driver to support the Nano which
opens the door for additional functions in the future. As part of
this series, it also addresses some issues in the GPCv2 driver and
finally adds support for enabling USB and GPU.
V3: Fixes an the yaml example
V2: Fixes the clock count in the blk-ctrl
Adam Ford (9):
soc: imx: gpcv2: keep i.MX8MN gpumix bus clock enabled
soc: imx: gpcv2: Add dispmix and mipi domains to imx8mn
dt-bindings: power: imx8mn: add defines for DISP blk-ctrl domains
dt-bindings: soc: add binding for i.MX8MN DISP blk-ctrl
soc: imx: imx8m-blk-ctrl: add i.MX8MN DISP blk-ctrl
arm64: dts: imx8mn: add GPC node
arm64: dts: imx8mn: put USB controller into power-domains
arm64: dts: imx8mn: add DISP blk-ctrl
arm64: dts: imx8mn: Enable GPU
.../soc/imx/fsl,imx8mn-disp-blk-ctrl.yaml | 97 +++++++++++++++++
arch/arm64/boot/dts/freescale/imx8mn.dtsi | 103 ++++++++++++++++++
drivers/soc/imx/gpcv2.c | 26 +++++
drivers/soc/imx/imx8m-blk-ctrl.c | 75 ++++++++++++-
include/dt-bindings/power/imx8mn-power.h | 5 +
5 files changed, 305 insertions(+), 1 deletion(-)
create mode 100644 Documentation/devicetree/bindings/soc/imx/fsl,imx8mn-disp-blk-ctrl.yaml
Adam,
Thanks for the patches. I'm not sure how best to test this but on an
imx8mm-venice-gw7902 which has USB, but no display.
I find that if DRM_ETNAVIV is enabled I hang at 'etnaviv etnaviv:
bound 38000000.gpu (ops 0xffff800010964748)'.
Thanks for testing this.
Does your board send power to the GPU? I recall someone somewhere
didn't power theirGPU, but I can't remember who and/or what board was
being discussed.
Yes, the imx8mm-venice-gw7902 does have the GPU powered (the
imx8mm-venice-gw7901 was the one that did not).
Tim
I'll run some more tests on the latest 5.16-rc1 to see if I can
replicate your issue.
adam
quoted
If DRM_ETNAVIV is not enabled:
- boots fine
- usb works
- soft reboot works (does not hang)
From: Adam Ford <hidden> Date: 2021-11-21 13:07:56
On Tue, Nov 16, 2021 at 12:27 PM Tim Harvey [off-list ref] wrote:
On Tue, Nov 16, 2021 at 10:04 AM Adam Ford [off-list ref] wrote:
quoted
On Tue, Nov 16, 2021 at 11:57 AM Tim Harvey [off-list ref] wrote:
quoted
On Thu, Nov 4, 2021 at 9:18 AM Adam Ford [off-list ref] wrote:
quoted
The i.MX8M Nano is similar to the i.MX8M Mini in some ways, but very
different in others. With the blk-ctrl driver for Mini in place,
this series expands the blk-ctrl driver to support the Nano which
opens the door for additional functions in the future. As part of
this series, it also addresses some issues in the GPCv2 driver and
finally adds support for enabling USB and GPU.
V3: Fixes an the yaml example
V2: Fixes the clock count in the blk-ctrl
Adam Ford (9):
soc: imx: gpcv2: keep i.MX8MN gpumix bus clock enabled
soc: imx: gpcv2: Add dispmix and mipi domains to imx8mn
dt-bindings: power: imx8mn: add defines for DISP blk-ctrl domains
dt-bindings: soc: add binding for i.MX8MN DISP blk-ctrl
soc: imx: imx8m-blk-ctrl: add i.MX8MN DISP blk-ctrl
arm64: dts: imx8mn: add GPC node
arm64: dts: imx8mn: put USB controller into power-domains
arm64: dts: imx8mn: add DISP blk-ctrl
arm64: dts: imx8mn: Enable GPU
.../soc/imx/fsl,imx8mn-disp-blk-ctrl.yaml | 97 +++++++++++++++++
arch/arm64/boot/dts/freescale/imx8mn.dtsi | 103 ++++++++++++++++++
drivers/soc/imx/gpcv2.c | 26 +++++
drivers/soc/imx/imx8m-blk-ctrl.c | 75 ++++++++++++-
include/dt-bindings/power/imx8mn-power.h | 5 +
5 files changed, 305 insertions(+), 1 deletion(-)
create mode 100644 Documentation/devicetree/bindings/soc/imx/fsl,imx8mn-disp-blk-ctrl.yaml
Adam,
Thanks for the patches. I'm not sure how best to test this but on an
imx8mm-venice-gw7902 which has USB, but no display.
I find that if DRM_ETNAVIV is enabled I hang at 'etnaviv etnaviv:
bound 38000000.gpu (ops 0xffff800010964748)'.
Thanks for testing this.
Does your board send power to the GPU? I recall someone somewhere
didn't power theirGPU, but I can't remember who and/or what board was
being discussed.
Yes, the imx8mm-venice-gw7902 does have the GPU powered (the
imx8mm-venice-gw7901 was the one that did not).
I cannot replicate your issue. I applied the patch series to
5.16-rc1, and it's still working for me.
root@beacon-imx8mn-kit:~# dmesg |grep viv
[ 11.323660] etnaviv etnaviv: bound 38000000.gpu (ops gpu_ops [etnaviv])
[ 11.480543] etnaviv-gpu 38000000.gpu: model: GC7000, revision: 6203
[ 11.747576] [drm] Initialized etnaviv 1.3.0 20151214 for etnaviv on minor 0
After booting, I connected a USB drive and it enumerated.
[ 152.328228] ci_hdrc ci_hdrc.0: new USB bus registered, assigned bus number 1
[ 152.351885] ci_hdrc ci_hdrc.0: USB 2.0 started, EHCI 1.00
[ 152.363859] hub 1-0:1.0: USB hub found
[ 152.371560] hub 1-0:1.0: 1 port detected
[ 153.075902] usb 1-1: new high-speed USB device number 2 using ci_hdrc
[ 153.244124] usb-storage 1-1:1.0: USB Mass Storage device detected
[ 153.263651] scsi host0: usb-storage 1-1:1.0
[ 154.277997] scsi 0:0:0:0: Direct-Access SanDisk Cruzer
1.00 PQ: 0 ANSI: 6
[ 154.292357] sd 0:0:0:0: [sda] 247529472 512-byte logical blocks:
(127 GB/118 GiB)
[ 154.309246] sd 0:0:0:0: [sda] Write Protect is off
[ 154.319237] sd 0:0:0:0: [sda] Write cache: disabled, read cache:
enabled, doesn't support DPO or FUA
[ 154.359113] sda: sda1
[ 154.366975] sd 0:0:0:0: [sda] Attached SCSI removable disk
root@beacon-imx8mn-kit:~# lsusb
Bus 001 Device 002: ID 0781:5530 SanDisk Corp. Cruzer
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
I am not sure where to go from here.
Tim
quoted
I'll run some more tests on the latest 5.16-rc1 to see if I can
replicate your issue.
adam
quoted
If DRM_ETNAVIV is not enabled:
- boots fine
- usb works
- soft reboot works (does not hang)
Hi Adam,
On Sun, Nov 21, 2021 at 10:07 AM Adam Ford [off-list ref] wrote:
I cannot replicate your issue. I applied the patch series to
5.16-rc1, and it's still working for me.
Could the different behavior be caused by different TF-A versions that
you and Tim used?
Which ATF version do you use? Is it TF-A v2.5?
Thanks
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
From: Adam Ford <hidden> Date: 2021-11-21 14:17:26
On Sun, Nov 21, 2021 at 8:12 AM Fabio Estevam [off-list ref] wrote:
Hi Adam,
On Sun, Nov 21, 2021 at 10:07 AM Adam Ford [off-list ref] wrote:
quoted
I cannot replicate your issue. I applied the patch series to
5.16-rc1, and it's still working for me.
Could the different behavior be caused by different TF-A versions that
you and Tim used?
Which ATF version do you use? Is it TF-A v2.5?
I am using https://source.codeaurora.org/external/imx/imx-atf/log/?h=lf_v2.4
Since the driver sending SMCC commands to ATF isn't doing that, I
assume it's safe to use the linux power-domain drivers with the ATF
from NXP's kernel.
If you can point me to the repo you think I should be using, I'll give it a try.
thanks,
adam
Hi Adam,
On Sun, Nov 21, 2021 at 11:17 AM Adam Ford [off-list ref] wrote:
I am using https://source.codeaurora.org/external/imx/imx-atf/log/?h=lf_v2.4
Since the driver sending SMCC commands to ATF isn't doing that, I
assume it's safe to use the linux power-domain drivers with the ATF
from NXP's kernel.
If you can point me to the repo you think I should be using, I'll give it a try.
From: Adam Ford <hidden> Date: 2021-11-21 14:35:12
On Sun, Nov 21, 2021 at 8:21 AM Fabio Estevam [off-list ref] wrote:
Hi Adam,
On Sun, Nov 21, 2021 at 11:17 AM Adam Ford [off-list ref] wrote:
quoted
I am using https://source.codeaurora.org/external/imx/imx-atf/log/?h=lf_v2.4
Since the driver sending SMCC commands to ATF isn't doing that, I
assume it's safe to use the linux power-domain drivers with the ATF
from NXP's kernel.
If you can point me to the repo you think I should be using, I'll give it a try.
That's good to know.
I just built it into U-Boot:
NOTICE: BL31: v2.5(release):v2.5
NOTICE: BL31: Built : 08:24:13, Nov 21 2021
The Etnaviv driver is still loading without hanging
root@beacon-imx8mn-kit:~# dmesg |grep -i etna
[ 12.393936] etnaviv etnaviv: bound 38000000.gpu (ops gpu_ops [etnaviv])
[ 12.400676] etnaviv-gpu 38000000.gpu: model: GC7000, revision: 6203
[ 12.641297] [drm] Initialized etnaviv 1.3.0 20151214 for etnaviv on minor 0
From: Adam Ford <hidden> Date: 2021-11-21 15:25:38
On Sun, Nov 21, 2021 at 8:34 AM Adam Ford [off-list ref] wrote:
On Sun, Nov 21, 2021 at 8:21 AM Fabio Estevam [off-list ref] wrote:
quoted
Hi Adam,
On Sun, Nov 21, 2021 at 11:17 AM Adam Ford [off-list ref] wrote:
quoted
I am using https://source.codeaurora.org/external/imx/imx-atf/log/?h=lf_v2.4
Since the driver sending SMCC commands to ATF isn't doing that, I
assume it's safe to use the linux power-domain drivers with the ATF
from NXP's kernel.
If you can point me to the repo you think I should be using, I'll give it a try.
That's good to know.
I just built it into U-Boot:
NOTICE: BL31: v2.5(release):v2.5
NOTICE: BL31: Built : 08:24:13, Nov 21 2021
The Etnaviv driver is still loading without hanging
root@beacon-imx8mn-kit:~# dmesg |grep -i etna
[ 12.393936] etnaviv etnaviv: bound 38000000.gpu (ops gpu_ops [etnaviv])
[ 12.400676] etnaviv-gpu 38000000.gpu: model: GC7000, revision: 6203
[ 12.641297] [drm] Initialized etnaviv 1.3.0 20151214 for etnaviv on minor 0
Tim,
Which version of Nano do you have? Not all Nano SoC's have a GPU from
looking at the datasheet [1] . I am using MIMX8MN2CVTIZAA (Nano Solo)
[1] - https://www.nxp.com/docs/en/data-sheet/IMX8MNIEC.pdf
adam
From: Tim Harvey <tharvey@gateworks.com> Date: 2021-11-22 18:00:08
On Sun, Nov 21, 2021 at 7:25 AM Adam Ford [off-list ref] wrote:
On Sun, Nov 21, 2021 at 8:34 AM Adam Ford [off-list ref] wrote:
quoted
On Sun, Nov 21, 2021 at 8:21 AM Fabio Estevam [off-list ref] wrote:
quoted
Hi Adam,
On Sun, Nov 21, 2021 at 11:17 AM Adam Ford [off-list ref] wrote:
quoted
I am using https://source.codeaurora.org/external/imx/imx-atf/log/?h=lf_v2.4
Since the driver sending SMCC commands to ATF isn't doing that, I
assume it's safe to use the linux power-domain drivers with the ATF
from NXP's kernel.
If you can point me to the repo you think I should be using, I'll give it a try.
That's good to know.
I just built it into U-Boot:
NOTICE: BL31: v2.5(release):v2.5
NOTICE: BL31: Built : 08:24:13, Nov 21 2021
The Etnaviv driver is still loading without hanging
root@beacon-imx8mn-kit:~# dmesg |grep -i etna
[ 12.393936] etnaviv etnaviv: bound 38000000.gpu (ops gpu_ops [etnaviv])
[ 12.400676] etnaviv-gpu 38000000.gpu: model: GC7000, revision: 6203
[ 12.641297] [drm] Initialized etnaviv 1.3.0 20151214 for etnaviv on minor 0
Adam,
The board I have here has MIMX8MN5CVTIZAA so i.MX 8M Nano QuadLite
with 'No GPU' as you expected.
So I have to add the following to keep my board from hanging after your series:
This situation is similar to the one I encountered with the
imx8mm-venice-gw7901 where adding the GPC node caused my board (which
did not power the GPU) to hang until I added disables to the
device-tree with commit 7973009235e2 ("arm64: dts:
imx8mm-venice-gw7901.dts: disable pgc_gpumix"). It feels painful to
have to add patches to keep things from hanging after additional
functionality is added to dt but perhaps that is more common than I
think esp for SoC's like IMX8M which have a lot of lingering support
still coming in.
I don't mind at all submitting the above patch to fix my board after
your series is accepted as I think that having an IMX8MN with 'no gpu'
is perhaps less likely than having one with a GPU and thus we probably
shouldn't mark the node as disabled and force everyone that has a GPU
to go and enable it.
I wonder however if we should think about adding something to etnaviv
to check the capability so that the same dt could be used with both
CPU variants?
At any rate for now let's keep the ball rolling!
For the series:
Reviewed-by: Tim Harvey <tharvey@gateworks.com>
Tested-by: Tim Harvey <tharvey@gateworks.com> (tested on imx8mm-venice-gw7902)
Best regards,
Tim
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
From: Lucas Stach <l.stach@pengutronix.de> Date: 2021-11-22 18:20:38
Am Montag, dem 22.11.2021 um 09:59 -0800 schrieb Tim Harvey:
quoted hunk
On Sun, Nov 21, 2021 at 7:25 AM Adam Ford [off-list ref] wrote:
quoted
On Sun, Nov 21, 2021 at 8:34 AM Adam Ford [off-list ref] wrote:
quoted
On Sun, Nov 21, 2021 at 8:21 AM Fabio Estevam [off-list ref] wrote:
quoted
Hi Adam,
On Sun, Nov 21, 2021 at 11:17 AM Adam Ford [off-list ref] wrote:
quoted
I am using https://source.codeaurora.org/external/imx/imx-atf/log/?h=lf_v2.4
Since the driver sending SMCC commands to ATF isn't doing that, I
assume it's safe to use the linux power-domain drivers with the ATF
from NXP's kernel.
If you can point me to the repo you think I should be using, I'll give it a try.
That's good to know.
I just built it into U-Boot:
NOTICE: BL31: v2.5(release):v2.5
NOTICE: BL31: Built : 08:24:13, Nov 21 2021
The Etnaviv driver is still loading without hanging
root@beacon-imx8mn-kit:~# dmesg |grep -i etna
[ 12.393936] etnaviv etnaviv: bound 38000000.gpu (ops gpu_ops [etnaviv])
[ 12.400676] etnaviv-gpu 38000000.gpu: model: GC7000, revision: 6203
[ 12.641297] [drm] Initialized etnaviv 1.3.0 20151214 for etnaviv on minor 0
Adam,
The board I have here has MIMX8MN5CVTIZAA so i.MX 8M Nano QuadLite
with 'No GPU' as you expected.
So I have to add the following to keep my board from hanging after your series:
This situation is similar to the one I encountered with the
imx8mm-venice-gw7901 where adding the GPC node caused my board (which
did not power the GPU) to hang until I added disables to the
device-tree with commit 7973009235e2 ("arm64: dts:
imx8mm-venice-gw7901.dts: disable pgc_gpumix"). It feels painful to
have to add patches to keep things from hanging after additional
functionality is added to dt but perhaps that is more common than I
think esp for SoC's like IMX8M which have a lot of lingering support
still coming in.
Yea, it's unfortunate that those patches break your board, but I guess
we need to accept this, while there is still a lot of feature work
going on.
I don't mind at all submitting the above patch to fix my board after
your series is accepted as I think that having an IMX8MN with 'no gpu'
is perhaps less likely than having one with a GPU and thus we probably
shouldn't mark the node as disabled and force everyone that has a GPU
to go and enable it.
I wonder however if we should think about adding something to etnaviv
to check the capability so that the same dt could be used with both
CPU variants?
etnaviv or really the kernel at all is not the place to handle this.
The DT is supposed to describe the hardware and the kernel should be
able to trust this description.
If there is some way to read the chip capabilities and avoid having too
much DT variants in the kernel, the right place to handle this is the
software running before the kernel is started, i.e. your bootloader.
Barebox for example reads the SCU fuses on i.MX6 and removes the DT
nodes for the fused off CPU cores on i.MX6S and i.MX6D.
Regards,
Lucas
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
From: Tim Harvey <tharvey@gateworks.com> Date: 2021-11-22 21:52:16
On Mon, Nov 22, 2021 at 10:20 AM Lucas Stach [off-list ref] wrote:
Am Montag, dem 22.11.2021 um 09:59 -0800 schrieb Tim Harvey:
quoted
On Sun, Nov 21, 2021 at 7:25 AM Adam Ford [off-list ref] wrote:
quoted
On Sun, Nov 21, 2021 at 8:34 AM Adam Ford [off-list ref] wrote:
quoted
On Sun, Nov 21, 2021 at 8:21 AM Fabio Estevam [off-list ref] wrote:
quoted
Hi Adam,
On Sun, Nov 21, 2021 at 11:17 AM Adam Ford [off-list ref] wrote:
quoted
I am using https://source.codeaurora.org/external/imx/imx-atf/log/?h=lf_v2.4
Since the driver sending SMCC commands to ATF isn't doing that, I
assume it's safe to use the linux power-domain drivers with the ATF
from NXP's kernel.
If you can point me to the repo you think I should be using, I'll give it a try.
That's good to know.
I just built it into U-Boot:
NOTICE: BL31: v2.5(release):v2.5
NOTICE: BL31: Built : 08:24:13, Nov 21 2021
The Etnaviv driver is still loading without hanging
root@beacon-imx8mn-kit:~# dmesg |grep -i etna
[ 12.393936] etnaviv etnaviv: bound 38000000.gpu (ops gpu_ops [etnaviv])
[ 12.400676] etnaviv-gpu 38000000.gpu: model: GC7000, revision: 6203
[ 12.641297] [drm] Initialized etnaviv 1.3.0 20151214 for etnaviv on minor 0
Adam,
The board I have here has MIMX8MN5CVTIZAA so i.MX 8M Nano QuadLite
with 'No GPU' as you expected.
So I have to add the following to keep my board from hanging after your series:
This situation is similar to the one I encountered with the
imx8mm-venice-gw7901 where adding the GPC node caused my board (which
did not power the GPU) to hang until I added disables to the
device-tree with commit 7973009235e2 ("arm64: dts:
imx8mm-venice-gw7901.dts: disable pgc_gpumix"). It feels painful to
have to add patches to keep things from hanging after additional
functionality is added to dt but perhaps that is more common than I
think esp for SoC's like IMX8M which have a lot of lingering support
still coming in.
Yea, it's unfortunate that those patches break your board, but I guess
we need to accept this, while there is still a lot of feature work
going on.
quoted
I don't mind at all submitting the above patch to fix my board after
your series is accepted as I think that having an IMX8MN with 'no gpu'
is perhaps less likely than having one with a GPU and thus we probably
shouldn't mark the node as disabled and force everyone that has a GPU
to go and enable it.
I wonder however if we should think about adding something to etnaviv
to check the capability so that the same dt could be used with both
CPU variants?
etnaviv or really the kernel at all is not the place to handle this.
The DT is supposed to describe the hardware and the kernel should be
able to trust this description.
If there is some way to read the chip capabilities and avoid having too
much DT variants in the kernel, the right place to handle this is the
software running before the kernel is started, i.e. your bootloader.
Barebox for example reads the SCU fuses on i.MX6 and removes the DT
nodes for the fused off CPU cores on i.MX6S and i.MX6D.
Lucas,
I agree - the boot firmware is an appropriate place for this. I
believe the correct course of action in the case of the IMX8M Nano
would be to do the following for no GPU:
- disable disp_blk_ctrl node
- disable gpu node
- disable pgc_gpumix node
What would you propose to do for detection of this in boot firmware?
The DIGPROG register is currently used in U-Boot to determine IMX8M
variants including Nano
Qad/Dual/Solo/QaudLite/DualLite/SoloLite/UltraLite Quad/UltraLite
Dual/UltraLite Solo. It would appear all the 'Lite' and 'UltraLite'
variants have no GPU.
Best regards,
Tim
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
From: Adam Ford <hidden> Date: 2021-11-23 14:08:47
On Mon, Nov 22, 2021 at 3:52 PM Tim Harvey [off-list ref] wrote:
On Mon, Nov 22, 2021 at 10:20 AM Lucas Stach [off-list ref] wrote:
quoted
Am Montag, dem 22.11.2021 um 09:59 -0800 schrieb Tim Harvey:
quoted
On Sun, Nov 21, 2021 at 7:25 AM Adam Ford [off-list ref] wrote:
quoted
On Sun, Nov 21, 2021 at 8:34 AM Adam Ford [off-list ref] wrote:
quoted
On Sun, Nov 21, 2021 at 8:21 AM Fabio Estevam [off-list ref] wrote:
quoted
Hi Adam,
On Sun, Nov 21, 2021 at 11:17 AM Adam Ford [off-list ref] wrote:
quoted
I am using https://source.codeaurora.org/external/imx/imx-atf/log/?h=lf_v2.4
Since the driver sending SMCC commands to ATF isn't doing that, I
assume it's safe to use the linux power-domain drivers with the ATF
from NXP's kernel.
If you can point me to the repo you think I should be using, I'll give it a try.
That's good to know.
I just built it into U-Boot:
NOTICE: BL31: v2.5(release):v2.5
NOTICE: BL31: Built : 08:24:13, Nov 21 2021
The Etnaviv driver is still loading without hanging
root@beacon-imx8mn-kit:~# dmesg |grep -i etna
[ 12.393936] etnaviv etnaviv: bound 38000000.gpu (ops gpu_ops [etnaviv])
[ 12.400676] etnaviv-gpu 38000000.gpu: model: GC7000, revision: 6203
[ 12.641297] [drm] Initialized etnaviv 1.3.0 20151214 for etnaviv on minor 0
Adam,
The board I have here has MIMX8MN5CVTIZAA so i.MX 8M Nano QuadLite
with 'No GPU' as you expected.
So I have to add the following to keep my board from hanging after your series:
This situation is similar to the one I encountered with the
imx8mm-venice-gw7901 where adding the GPC node caused my board (which
did not power the GPU) to hang until I added disables to the
device-tree with commit 7973009235e2 ("arm64: dts:
imx8mm-venice-gw7901.dts: disable pgc_gpumix"). It feels painful to
have to add patches to keep things from hanging after additional
functionality is added to dt but perhaps that is more common than I
think esp for SoC's like IMX8M which have a lot of lingering support
still coming in.
Yea, it's unfortunate that those patches break your board, but I guess
we need to accept this, while there is still a lot of feature work
going on.
There are a significant number of peripherals which are defined and
marked as 'disabled' by default, so I don't think it's unreasonable to
do that here.
I'd like to propose we keep the default disabled and people who
need/want the GPU enabled can turn it on. Why waste the power if it's
not needed?
quoted
quoted
I don't mind at all submitting the above patch to fix my board after
your series is accepted as I think that having an IMX8MN with 'no gpu'
is perhaps less likely than having one with a GPU and thus we probably
shouldn't mark the node as disabled and force everyone that has a GPU
to go and enable it.
I wonder however if we should think about adding something to etnaviv
to check the capability so that the same dt could be used with both
CPU variants?
etnaviv or really the kernel at all is not the place to handle this.
The DT is supposed to describe the hardware and the kernel should be
able to trust this description.
If there is some way to read the chip capabilities and avoid having too
much DT variants in the kernel, the right place to handle this is the
software running before the kernel is started, i.e. your bootloader.
Barebox for example reads the SCU fuses on i.MX6 and removes the DT
nodes for the fused off CPU cores on i.MX6S and i.MX6D.
Lucas,
I agree - the boot firmware is an appropriate place for this. I
believe the correct course of action in the case of the IMX8M Nano
would be to do the following for no GPU:
- disable disp_blk_ctrl node
I don't think it's necessary to remove the disp_blk_ctrl node or
change it. The GPU doesn't directly interact with it. LCD, CSI, and
DSI do, but I don't think they are removed. The gpu only interacts
with the pgc_gpumix and neither the gpu nor gpumix currently interact
with the disp_blk_ctrl.
adam
- disable gpu node
- disable pgc_gpumix node
What would you propose to do for detection of this in boot firmware?
The DIGPROG register is currently used in U-Boot to determine IMX8M
variants including Nano
Qad/Dual/Solo/QaudLite/DualLite/SoloLite/UltraLite Quad/UltraLite
Dual/UltraLite Solo. It would appear all the 'Lite' and 'UltraLite'
variants have no GPU.
Best regards,
Tim
From: Adam Ford <hidden> Date: 2021-11-23 14:16:55
On Tue, Nov 23, 2021 at 8:08 AM Adam Ford [off-list ref] wrote:
On Mon, Nov 22, 2021 at 3:52 PM Tim Harvey [off-list ref] wrote:
quoted
On Mon, Nov 22, 2021 at 10:20 AM Lucas Stach [off-list ref] wrote:
quoted
Am Montag, dem 22.11.2021 um 09:59 -0800 schrieb Tim Harvey:
quoted
On Sun, Nov 21, 2021 at 7:25 AM Adam Ford [off-list ref] wrote:
quoted
On Sun, Nov 21, 2021 at 8:34 AM Adam Ford [off-list ref] wrote:
quoted
On Sun, Nov 21, 2021 at 8:21 AM Fabio Estevam [off-list ref] wrote:
quoted
Hi Adam,
On Sun, Nov 21, 2021 at 11:17 AM Adam Ford [off-list ref] wrote:
quoted
I am using https://source.codeaurora.org/external/imx/imx-atf/log/?h=lf_v2.4
Since the driver sending SMCC commands to ATF isn't doing that, I
assume it's safe to use the linux power-domain drivers with the ATF
from NXP's kernel.
If you can point me to the repo you think I should be using, I'll give it a try.
That's good to know.
I just built it into U-Boot:
NOTICE: BL31: v2.5(release):v2.5
NOTICE: BL31: Built : 08:24:13, Nov 21 2021
The Etnaviv driver is still loading without hanging
root@beacon-imx8mn-kit:~# dmesg |grep -i etna
[ 12.393936] etnaviv etnaviv: bound 38000000.gpu (ops gpu_ops [etnaviv])
[ 12.400676] etnaviv-gpu 38000000.gpu: model: GC7000, revision: 6203
[ 12.641297] [drm] Initialized etnaviv 1.3.0 20151214 for etnaviv on minor 0
Adam,
The board I have here has MIMX8MN5CVTIZAA so i.MX 8M Nano QuadLite
with 'No GPU' as you expected.
So I have to add the following to keep my board from hanging after your series:
This situation is similar to the one I encountered with the
imx8mm-venice-gw7901 where adding the GPC node caused my board (which
did not power the GPU) to hang until I added disables to the
device-tree with commit 7973009235e2 ("arm64: dts:
imx8mm-venice-gw7901.dts: disable pgc_gpumix"). It feels painful to
have to add patches to keep things from hanging after additional
functionality is added to dt but perhaps that is more common than I
think esp for SoC's like IMX8M which have a lot of lingering support
still coming in.
Yea, it's unfortunate that those patches break your board, but I guess
we need to accept this, while there is still a lot of feature work
going on.
There are a significant number of peripherals which are defined and
marked as 'disabled' by default, so I don't think it's unreasonable to
do that here.
I'd like to propose we keep the default disabled and people who
need/want the GPU enabled can turn it on. Why waste the power if it's
not needed?
quoted
quoted
quoted
I don't mind at all submitting the above patch to fix my board after
your series is accepted as I think that having an IMX8MN with 'no gpu'
is perhaps less likely than having one with a GPU and thus we probably
shouldn't mark the node as disabled and force everyone that has a GPU
to go and enable it.
I wonder however if we should think about adding something to etnaviv
to check the capability so that the same dt could be used with both
CPU variants?
etnaviv or really the kernel at all is not the place to handle this.
The DT is supposed to describe the hardware and the kernel should be
able to trust this description.
If there is some way to read the chip capabilities and avoid having too
much DT variants in the kernel, the right place to handle this is the
software running before the kernel is started, i.e. your bootloader.
Barebox for example reads the SCU fuses on i.MX6 and removes the DT
nodes for the fused off CPU cores on i.MX6S and i.MX6D.
Lucas,
I agree - the boot firmware is an appropriate place for this. I
believe the correct course of action in the case of the IMX8M Nano
would be to do the following for no GPU:
- disable disp_blk_ctrl node
I don't think it's necessary to remove the disp_blk_ctrl node or
change it. The GPU doesn't directly interact with it. LCD, CSI, and
DSI do, but I don't think they are removed. The gpu only interacts
with the pgc_gpumix and neither the gpu nor gpumix currently interact
with the disp_blk_ctrl.
I went back and reviewed the datasheet, and the UltraLite models
remove the DSI, but I think it's still safe to leave the disp_blk_ctrl
untouched, because FWICT it's only activated from the corresponding
power-domain is requested, and without a MIPI_DSI the DSI power-domain
won't be requested. The CSI appears to remain intact on the Lite and
UltraLite versions, so we still need some form of the disp_blk_ctrl to
manage it.
adam
quoted
- disable gpu node
- disable pgc_gpumix node
What would you propose to do for detection of this in boot firmware?
The DIGPROG register is currently used in U-Boot to determine IMX8M
variants including Nano
Qad/Dual/Solo/QaudLite/DualLite/SoloLite/UltraLite Quad/UltraLite
Dual/UltraLite Solo. It would appear all the 'Lite' and 'UltraLite'
variants have no GPU.
Best regards,
Tim
From: Lucas Stach <l.stach@pengutronix.de> Date: 2021-11-23 14:24:41
Am Dienstag, dem 23.11.2021 um 08:08 -0600 schrieb Adam Ford:
On Mon, Nov 22, 2021 at 3:52 PM Tim Harvey [off-list ref] wrote:
quoted
On Mon, Nov 22, 2021 at 10:20 AM Lucas Stach [off-list ref] wrote:
quoted
Am Montag, dem 22.11.2021 um 09:59 -0800 schrieb Tim Harvey:
quoted
On Sun, Nov 21, 2021 at 7:25 AM Adam Ford [off-list ref] wrote:
quoted
On Sun, Nov 21, 2021 at 8:34 AM Adam Ford [off-list ref] wrote:
quoted
On Sun, Nov 21, 2021 at 8:21 AM Fabio Estevam [off-list ref] wrote:
quoted
Hi Adam,
On Sun, Nov 21, 2021 at 11:17 AM Adam Ford [off-list ref] wrote:
quoted
I am using https://source.codeaurora.org/external/imx/imx-atf/log/?h=lf_v2.4
Since the driver sending SMCC commands to ATF isn't doing that, I
assume it's safe to use the linux power-domain drivers with the ATF
from NXP's kernel.
If you can point me to the repo you think I should be using, I'll give it a try.
That's good to know.
I just built it into U-Boot:
NOTICE: BL31: v2.5(release):v2.5
NOTICE: BL31: Built : 08:24:13, Nov 21 2021
The Etnaviv driver is still loading without hanging
root@beacon-imx8mn-kit:~# dmesg |grep -i etna
[ 12.393936] etnaviv etnaviv: bound 38000000.gpu (ops gpu_ops [etnaviv])
[ 12.400676] etnaviv-gpu 38000000.gpu: model: GC7000, revision: 6203
[ 12.641297] [drm] Initialized etnaviv 1.3.0 20151214 for etnaviv on minor 0
Adam,
The board I have here has MIMX8MN5CVTIZAA so i.MX 8M Nano QuadLite
with 'No GPU' as you expected.
So I have to add the following to keep my board from hanging after your series:
This situation is similar to the one I encountered with the
imx8mm-venice-gw7901 where adding the GPC node caused my board (which
did not power the GPU) to hang until I added disables to the
device-tree with commit 7973009235e2 ("arm64: dts:
imx8mm-venice-gw7901.dts: disable pgc_gpumix"). It feels painful to
have to add patches to keep things from hanging after additional
functionality is added to dt but perhaps that is more common than I
think esp for SoC's like IMX8M which have a lot of lingering support
still coming in.
Yea, it's unfortunate that those patches break your board, but I guess
we need to accept this, while there is still a lot of feature work
going on.
There are a significant number of peripherals which are defined and
marked as 'disabled' by default, so I don't think it's unreasonable to
do that here.
I'd like to propose we keep the default disabled and people who
need/want the GPU enabled can turn it on. Why waste the power if it's
not needed?
Sure, if a significant number of chips has the GPU disabled, we might
want to keep it disabled in the base dtsi. With those variants it's
always a tradeoff, for example there are SKUs of the i.MX6 that had the
VPU disabled, but very few of those were in the field, so the VPUs are
enabled in the SoC base dtsi and only users of those special SKUs would
need to disable them in the board DT.
The power argument isn't valid, as the kernel driver will suspend the
device when not needed, so there is no wasted power (aside from the
sort moment while the driver probes) with the GPU enabled.
The rule of thumb for when a device is default enabled in the SoC dsti
has always been (at least for i.MX) that the peripheral must not have a
board level dependency. While a i2c controller obviously needs a i2c
bus connected on the board to fulfill its purpose, a GPU can be used as
color space converter or something like that with no board level
interaction. Now the line is a bit blurred by having multiple power
rails into the SoC, so one could argue that the GPUs and VPUs now have
some board level dependency on the i.MX8M*.
Regards,
Lucas
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
From: Adam Ford <hidden> Date: 2021-11-23 14:31:04
On Tue, Nov 23, 2021 at 8:24 AM Lucas Stach [off-list ref] wrote:
Am Dienstag, dem 23.11.2021 um 08:08 -0600 schrieb Adam Ford:
quoted
On Mon, Nov 22, 2021 at 3:52 PM Tim Harvey [off-list ref] wrote:
quoted
On Mon, Nov 22, 2021 at 10:20 AM Lucas Stach [off-list ref] wrote:
quoted
Am Montag, dem 22.11.2021 um 09:59 -0800 schrieb Tim Harvey:
quoted
On Sun, Nov 21, 2021 at 7:25 AM Adam Ford [off-list ref] wrote:
quoted
On Sun, Nov 21, 2021 at 8:34 AM Adam Ford [off-list ref] wrote:
quoted
On Sun, Nov 21, 2021 at 8:21 AM Fabio Estevam [off-list ref] wrote:
quoted
Hi Adam,
On Sun, Nov 21, 2021 at 11:17 AM Adam Ford [off-list ref] wrote:
quoted
I am using https://source.codeaurora.org/external/imx/imx-atf/log/?h=lf_v2.4
Since the driver sending SMCC commands to ATF isn't doing that, I
assume it's safe to use the linux power-domain drivers with the ATF
from NXP's kernel.
If you can point me to the repo you think I should be using, I'll give it a try.
That's good to know.
I just built it into U-Boot:
NOTICE: BL31: v2.5(release):v2.5
NOTICE: BL31: Built : 08:24:13, Nov 21 2021
The Etnaviv driver is still loading without hanging
root@beacon-imx8mn-kit:~# dmesg |grep -i etna
[ 12.393936] etnaviv etnaviv: bound 38000000.gpu (ops gpu_ops [etnaviv])
[ 12.400676] etnaviv-gpu 38000000.gpu: model: GC7000, revision: 6203
[ 12.641297] [drm] Initialized etnaviv 1.3.0 20151214 for etnaviv on minor 0
Adam,
The board I have here has MIMX8MN5CVTIZAA so i.MX 8M Nano QuadLite
with 'No GPU' as you expected.
So I have to add the following to keep my board from hanging after your series:
This situation is similar to the one I encountered with the
imx8mm-venice-gw7901 where adding the GPC node caused my board (which
did not power the GPU) to hang until I added disables to the
device-tree with commit 7973009235e2 ("arm64: dts:
imx8mm-venice-gw7901.dts: disable pgc_gpumix"). It feels painful to
have to add patches to keep things from hanging after additional
functionality is added to dt but perhaps that is more common than I
think esp for SoC's like IMX8M which have a lot of lingering support
still coming in.
Yea, it's unfortunate that those patches break your board, but I guess
we need to accept this, while there is still a lot of feature work
going on.
There are a significant number of peripherals which are defined and
marked as 'disabled' by default, so I don't think it's unreasonable to
do that here.
I'd like to propose we keep the default disabled and people who
need/want the GPU enabled can turn it on. Why waste the power if it's
not needed?
Sure, if a significant number of chips has the GPU disabled, we might
want to keep it disabled in the base dtsi. With those variants it's
always a tradeoff, for example there are SKUs of the i.MX6 that had the
VPU disabled, but very few of those were in the field, so the VPUs are
enabled in the SoC base dtsi and only users of those special SKUs would
need to disable them in the board DT.
The power argument isn't valid, as the kernel driver will suspend the
device when not needed, so there is no wasted power (aside from the
sort moment while the driver probes) with the GPU enabled.
The rule of thumb for when a device is default enabled in the SoC dsti
has always been (at least for i.MX) that the peripheral must not have a
board level dependency. While a i2c controller obviously needs a i2c
bus connected on the board to fulfill its purpose, a GPU can be used as
color space converter or something like that with no board level
interaction. Now the line is a bit blurred by having multiple power
rails into the SoC, so one could argue that the GPUs and VPUs now have
some board level dependency on the i.MX8M*.
That makes sense.
Do we defer to Shawn as the final arbiter as to whether or not it's
enabled/disabled? It would be nice to get Nano caught up in
functionality as much as possible.
adam
From: Adam Ford <hidden> Date: 2021-11-23 16:40:23
On Tue, Nov 23, 2021 at 8:30 AM Adam Ford [off-list ref] wrote:
On Tue, Nov 23, 2021 at 8:24 AM Lucas Stach [off-list ref] wrote:
quoted
Am Dienstag, dem 23.11.2021 um 08:08 -0600 schrieb Adam Ford:
quoted
On Mon, Nov 22, 2021 at 3:52 PM Tim Harvey [off-list ref] wrote:
quoted
On Mon, Nov 22, 2021 at 10:20 AM Lucas Stach [off-list ref] wrote:
quoted
Am Montag, dem 22.11.2021 um 09:59 -0800 schrieb Tim Harvey:
quoted
On Sun, Nov 21, 2021 at 7:25 AM Adam Ford [off-list ref] wrote:
quoted
On Sun, Nov 21, 2021 at 8:34 AM Adam Ford [off-list ref] wrote:
quoted
On Sun, Nov 21, 2021 at 8:21 AM Fabio Estevam [off-list ref] wrote:
quoted
Hi Adam,
On Sun, Nov 21, 2021 at 11:17 AM Adam Ford [off-list ref] wrote:
quoted
I am using https://source.codeaurora.org/external/imx/imx-atf/log/?h=lf_v2.4
Since the driver sending SMCC commands to ATF isn't doing that, I
assume it's safe to use the linux power-domain drivers with the ATF
from NXP's kernel.
If you can point me to the repo you think I should be using, I'll give it a try.
That's good to know.
I just built it into U-Boot:
NOTICE: BL31: v2.5(release):v2.5
NOTICE: BL31: Built : 08:24:13, Nov 21 2021
The Etnaviv driver is still loading without hanging
root@beacon-imx8mn-kit:~# dmesg |grep -i etna
[ 12.393936] etnaviv etnaviv: bound 38000000.gpu (ops gpu_ops [etnaviv])
[ 12.400676] etnaviv-gpu 38000000.gpu: model: GC7000, revision: 6203
[ 12.641297] [drm] Initialized etnaviv 1.3.0 20151214 for etnaviv on minor 0
Adam,
The board I have here has MIMX8MN5CVTIZAA so i.MX 8M Nano QuadLite
with 'No GPU' as you expected.
So I have to add the following to keep my board from hanging after your series:
This situation is similar to the one I encountered with the
imx8mm-venice-gw7901 where adding the GPC node caused my board (which
did not power the GPU) to hang until I added disables to the
device-tree with commit 7973009235e2 ("arm64: dts:
imx8mm-venice-gw7901.dts: disable pgc_gpumix"). It feels painful to
have to add patches to keep things from hanging after additional
functionality is added to dt but perhaps that is more common than I
think esp for SoC's like IMX8M which have a lot of lingering support
still coming in.
Yea, it's unfortunate that those patches break your board, but I guess
we need to accept this, while there is still a lot of feature work
going on.
There are a significant number of peripherals which are defined and
marked as 'disabled' by default, so I don't think it's unreasonable to
do that here.
I'd like to propose we keep the default disabled and people who
need/want the GPU enabled can turn it on. Why waste the power if it's
not needed?
Sure, if a significant number of chips has the GPU disabled, we might
want to keep it disabled in the base dtsi. With those variants it's
always a tradeoff, for example there are SKUs of the i.MX6 that had the
VPU disabled, but very few of those were in the field, so the VPUs are
enabled in the SoC base dtsi and only users of those special SKUs would
need to disable them in the board DT.
The power argument isn't valid, as the kernel driver will suspend the
device when not needed, so there is no wasted power (aside from the
sort moment while the driver probes) with the GPU enabled.
The rule of thumb for when a device is default enabled in the SoC dsti
has always been (at least for i.MX) that the peripheral must not have a
board level dependency. While a i2c controller obviously needs a i2c
bus connected on the board to fulfill its purpose, a GPU can be used as
color space converter or something like that with no board level
interaction. Now the line is a bit blurred by having multiple power
rails into the SoC, so one could argue that the GPUs and VPUs now have
some board level dependency on the i.MX8M*.
That makes sense.
Do we defer to Shawn as the final arbiter as to whether or not it's
enabled/disabled? It would be nice to get Nano caught up in
functionality as much as possible.
We could add two more device trees, one for 8mnl (lite) and 8mnul (ulta-lite)
imx8mnl:
#include imx8mn.dtsi
&gpu {
status = "disabled";
};
imx8mnul:
#include imx8mnl
&dsi {
status = "disabled";
};
Then the boards using either lite or ultralite just include their
respective SoC.dtsi instead of imx8mn.dtsi. This is similar to what
we do with the plethora of i.mx6 options.
Just a thought. Although, I really like the idea of the bootloader
disabling the unavailable nodes.
adam
From: Lucas Stach <l.stach@pengutronix.de> Date: 2021-11-23 17:11:10
Am Dienstag, dem 23.11.2021 um 10:40 -0600 schrieb Adam Ford:
On Tue, Nov 23, 2021 at 8:30 AM Adam Ford [off-list ref] wrote:
quoted
On Tue, Nov 23, 2021 at 8:24 AM Lucas Stach [off-list ref] wrote:
quoted
Am Dienstag, dem 23.11.2021 um 08:08 -0600 schrieb Adam Ford:
quoted
On Mon, Nov 22, 2021 at 3:52 PM Tim Harvey [off-list ref] wrote:
quoted
On Mon, Nov 22, 2021 at 10:20 AM Lucas Stach [off-list ref] wrote:
quoted
Am Montag, dem 22.11.2021 um 09:59 -0800 schrieb Tim Harvey:
quoted
On Sun, Nov 21, 2021 at 7:25 AM Adam Ford [off-list ref] wrote:
quoted
On Sun, Nov 21, 2021 at 8:34 AM Adam Ford [off-list ref] wrote:
quoted
On Sun, Nov 21, 2021 at 8:21 AM Fabio Estevam [off-list ref] wrote:
quoted
Hi Adam,
On Sun, Nov 21, 2021 at 11:17 AM Adam Ford [off-list ref] wrote:
quoted
I am using https://source.codeaurora.org/external/imx/imx-atf/log/?h=lf_v2.4
Since the driver sending SMCC commands to ATF isn't doing that, I
assume it's safe to use the linux power-domain drivers with the ATF
from NXP's kernel.
If you can point me to the repo you think I should be using, I'll give it a try.
That's good to know.
I just built it into U-Boot:
NOTICE: BL31: v2.5(release):v2.5
NOTICE: BL31: Built : 08:24:13, Nov 21 2021
The Etnaviv driver is still loading without hanging
root@beacon-imx8mn-kit:~# dmesg |grep -i etna
[ 12.393936] etnaviv etnaviv: bound 38000000.gpu (ops gpu_ops [etnaviv])
[ 12.400676] etnaviv-gpu 38000000.gpu: model: GC7000, revision: 6203
[ 12.641297] [drm] Initialized etnaviv 1.3.0 20151214 for etnaviv on minor 0
Adam,
The board I have here has MIMX8MN5CVTIZAA so i.MX 8M Nano QuadLite
with 'No GPU' as you expected.
So I have to add the following to keep my board from hanging after your series:
This situation is similar to the one I encountered with the
imx8mm-venice-gw7901 where adding the GPC node caused my board (which
did not power the GPU) to hang until I added disables to the
device-tree with commit 7973009235e2 ("arm64: dts:
imx8mm-venice-gw7901.dts: disable pgc_gpumix"). It feels painful to
have to add patches to keep things from hanging after additional
functionality is added to dt but perhaps that is more common than I
think esp for SoC's like IMX8M which have a lot of lingering support
still coming in.
Yea, it's unfortunate that those patches break your board, but I guess
we need to accept this, while there is still a lot of feature work
going on.
There are a significant number of peripherals which are defined and
marked as 'disabled' by default, so I don't think it's unreasonable to
do that here.
I'd like to propose we keep the default disabled and people who
need/want the GPU enabled can turn it on. Why waste the power if it's
not needed?
Sure, if a significant number of chips has the GPU disabled, we might
want to keep it disabled in the base dtsi. With those variants it's
always a tradeoff, for example there are SKUs of the i.MX6 that had the
VPU disabled, but very few of those were in the field, so the VPUs are
enabled in the SoC base dtsi and only users of those special SKUs would
need to disable them in the board DT.
The power argument isn't valid, as the kernel driver will suspend the
device when not needed, so there is no wasted power (aside from the
sort moment while the driver probes) with the GPU enabled.
The rule of thumb for when a device is default enabled in the SoC dsti
has always been (at least for i.MX) that the peripheral must not have a
board level dependency. While a i2c controller obviously needs a i2c
bus connected on the board to fulfill its purpose, a GPU can be used as
color space converter or something like that with no board level
interaction. Now the line is a bit blurred by having multiple power
rails into the SoC, so one could argue that the GPUs and VPUs now have
some board level dependency on the i.MX8M*.
That makes sense.
Do we defer to Shawn as the final arbiter as to whether or not it's
enabled/disabled? It would be nice to get Nano caught up in
functionality as much as possible.
We could add two more device trees, one for 8mnl (lite) and 8mnul (ulta-lite)
imx8mnl:
#include imx8mn.dtsi
&gpu {
status = "disabled";
};
imx8mnul:
#include imx8mnl
&dsi {
status = "disabled";
};
Then the boards using either lite or ultralite just include their
respective SoC.dtsi instead of imx8mn.dtsi. This is similar to what
we do with the plethora of i.mx6 options.
Yes, that's an option but it quickly blows up in a combinatorial
explosion. As the chips are pin compatible there is a high probability
that hardware makers will start to offer boards with different feature
sets and then you need to have a number of board DTs just to include
the right dtsi for the chip.
Just a thought. Although, I really like the idea of the bootloader
disabling the unavailable nodes.
Yea, it seems there are even fuses that allow to check those
capabilities, see my reply to Tim. So I think relying on the boot
firmware to fix things up would be the best option, as it allows to
keep the number of DTs small and does not place a big burden on the
boot firmware implementation.
Regards,
Lucas
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
From: Lucas Stach <l.stach@pengutronix.de> Date: 2021-11-23 17:03:29
Am Montag, dem 22.11.2021 um 13:52 -0800 schrieb Tim Harvey:
On Mon, Nov 22, 2021 at 10:20 AM Lucas Stach [off-list ref] wrote:
quoted
Am Montag, dem 22.11.2021 um 09:59 -0800 schrieb Tim Harvey:
quoted
On Sun, Nov 21, 2021 at 7:25 AM Adam Ford [off-list ref] wrote:
quoted
On Sun, Nov 21, 2021 at 8:34 AM Adam Ford [off-list ref] wrote:
quoted
On Sun, Nov 21, 2021 at 8:21 AM Fabio Estevam [off-list ref] wrote:
quoted
Hi Adam,
On Sun, Nov 21, 2021 at 11:17 AM Adam Ford [off-list ref] wrote:
quoted
I am using https://source.codeaurora.org/external/imx/imx-atf/log/?h=lf_v2.4
Since the driver sending SMCC commands to ATF isn't doing that, I
assume it's safe to use the linux power-domain drivers with the ATF
from NXP's kernel.
If you can point me to the repo you think I should be using, I'll give it a try.
That's good to know.
I just built it into U-Boot:
NOTICE: BL31: v2.5(release):v2.5
NOTICE: BL31: Built : 08:24:13, Nov 21 2021
The Etnaviv driver is still loading without hanging
root@beacon-imx8mn-kit:~# dmesg |grep -i etna
[ 12.393936] etnaviv etnaviv: bound 38000000.gpu (ops gpu_ops [etnaviv])
[ 12.400676] etnaviv-gpu 38000000.gpu: model: GC7000, revision: 6203
[ 12.641297] [drm] Initialized etnaviv 1.3.0 20151214 for etnaviv on minor 0
Adam,
The board I have here has MIMX8MN5CVTIZAA so i.MX 8M Nano QuadLite
with 'No GPU' as you expected.
So I have to add the following to keep my board from hanging after your series:
This situation is similar to the one I encountered with the
imx8mm-venice-gw7901 where adding the GPC node caused my board (which
did not power the GPU) to hang until I added disables to the
device-tree with commit 7973009235e2 ("arm64: dts:
imx8mm-venice-gw7901.dts: disable pgc_gpumix"). It feels painful to
have to add patches to keep things from hanging after additional
functionality is added to dt but perhaps that is more common than I
think esp for SoC's like IMX8M which have a lot of lingering support
still coming in.
Yea, it's unfortunate that those patches break your board, but I guess
we need to accept this, while there is still a lot of feature work
going on.
quoted
I don't mind at all submitting the above patch to fix my board after
your series is accepted as I think that having an IMX8MN with 'no gpu'
is perhaps less likely than having one with a GPU and thus we probably
shouldn't mark the node as disabled and force everyone that has a GPU
to go and enable it.
I wonder however if we should think about adding something to etnaviv
to check the capability so that the same dt could be used with both
CPU variants?
etnaviv or really the kernel at all is not the place to handle this.
The DT is supposed to describe the hardware and the kernel should be
able to trust this description.
If there is some way to read the chip capabilities and avoid having too
much DT variants in the kernel, the right place to handle this is the
software running before the kernel is started, i.e. your bootloader.
Barebox for example reads the SCU fuses on i.MX6 and removes the DT
nodes for the fused off CPU cores on i.MX6S and i.MX6D.
Lucas,
I agree - the boot firmware is an appropriate place for this. I
believe the correct course of action in the case of the IMX8M Nano
would be to do the following for no GPU:
- disable disp_blk_ctrl node
- disable gpu node
- disable pgc_gpumix node
What would you propose to do for detection of this in boot firmware?
The DIGPROG register is currently used in U-Boot to determine IMX8M
variants including Nano
Qad/Dual/Solo/QaudLite/DualLite/SoloLite/UltraLite Quad/UltraLite
Dual/UltraLite Solo. It would appear all the 'Lite' and 'UltraLite'
variants have no GPU.
According to the fusemap there are even individual fuses to indicate
disabled GPU, DSI, CSI and other peripherals (table 6-31 in the 8MN RM,
0x450 range). I would expect that those are burned correctly on the
stripped down SKUs. Maybe you can validate this on your side?
Regards,
Lucas
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel