Skip to content

add NETC support on imx95 A55 #92585

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 27 commits into
base: main
Choose a base branch
from

Conversation

JiafeiPan
Copy link
Collaborator

@JiafeiPan JiafeiPan commented Jul 3, 2025

This PR is to enable NETC support on i.MX 95 A55.

Actually it includes two main update, one is to enable GIC ITS on A55, the other one is to enable NETC support on Cortex-A core, so I created two PR, the first part for GIC update is in PR #92346, and this PR is for NETC driver related update, so this PR is based and depends on #92346

This PR also depends on hal PR: zephyrproject-rtos/hal_nxp#571

Copy link

github-actions bot commented Jul 3, 2025

The following west manifest projects have changed revision in this Pull Request:

Name Old Revision New Revision Diff
hal_nxp zephyrproject-rtos/hal_nxp@7a52cbb (master) zephyrproject-rtos/hal_nxp#571 zephyrproject-rtos/hal_nxp#571/files

DNM label due to: 1 project with PR revision

Note: This message is automatically posted and updated by the Manifest GitHub Action.

@github-actions github-actions bot added manifest manifest-hal_nxp DNM (manifest) This PR should not be merged (controlled by action-manifest) labels Jul 3, 2025
@JiafeiPan JiafeiPan force-pushed the develop/imx95-netc branch from 58bf988 to 9816039 Compare July 3, 2025 10:02
GIC redistributor on Some platform are connected to a non-coherent
downstream interconnect, it need to use Non-cahable and Non-shareable
access atttributes to access external memory. And also flush the
data cache after CPU update related memory.

Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com>
JiafeiPan added 6 commits July 3, 2025 18:21
In case of ITS is enabled, need to include LPI in the total number
of irq.

Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com>
GIC redistribute on i.MX 95 is DMA noncoherent, so enable
CONFIG_GIC_V3_RDIST_DMA_NONCOHERENT.

Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com>
GIC ITS depends on kernel heap, so move GIC initialize to be behind of
heap which initialization priority is CONFIG_KERNEL_INIT_PRIORITY_OBJECTS
(it is 30 by default).

MU mailbox and SCMI objects depend on GIC, so set their init priority
to be same with GIC, the initialization sequence decided by the dts
dependency although they use the same init priority.

Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com>
Add imx95_evk support, as hardware limication, it only has 832 LPIs.

Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com>
Tmp patch to depend on hal_nxp PR 571.

Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com>
It could use GIC ITS as MSI controller on Cortex-A Core, so added
GIC ITS MSI support for NETC drivers.

Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com>
@JiafeiPan JiafeiPan force-pushed the develop/imx95-netc branch 2 times, most recently from f3a0a8d to 26c8fa8 Compare July 4, 2025 02:53
@JiafeiPan JiafeiPan force-pushed the develop/imx95-netc branch from 26c8fa8 to 8f0c4ef Compare July 9, 2025 07:53
@JiafeiPan
Copy link
Collaborator Author

v2:

  1. addressed @yangbolu1991 's comments.
  2. Updated dts for rt1180 and imx943 m33 to fix twister issue.

JiafeiPan added 12 commits July 9, 2025 16:04
Add NETC block driver, it could do some block memory region MMIO mapping
and also so dome block initialization, moved some netc related
configuration form board_init() to block driver so that it could be reused
between different platforms, although some configuration is different for
different platform, but put all NETC related code in the same driver to
make it easier to be maintained.

Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com>
Added MMIO memory mapping for NETC MDIO driver.

Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com>
Added MMIO memory mapping support in nxim_imx_netc driver as need to
do MMU mapping for Cortex-A Core, but the update is also feasible
for Cortex-M Core.

Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com>
In order to support MMU mapping on Cortex-A core, added MMIO mapping
support in imx_netc_psi driver.

Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com>
i.MX 95 has no NETC switch, so disable it on this platform.

Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com>
Update NETC device nodes according to NETC driver update:
1. Added NETC block control device node to handle block control
   initialization in netc block driver.
2. Added "nxp,imx-netc" compatible for netc driver to handle MMIO mapping
   in the driver.
3. Added all memory region in MMIO reg propertiy to let driver to handle
   MMIO mapping for all memory region.
4. Move MMIO device node out of netc device node to decouple the device
   initialization priority, so that MMIO could be initialized before netc
   driver initialization.

Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com>
Update NETC device nodes according to NETC driver update:
1. Added "nxp,imx-netc" compatible for netc driver to handle MMIO mapping
   in the driver.
2. Added all memory region in MMIO reg propertiy to let driver to handle
   MMIO mapping for all memory region.
3. Move MMIO device node out of netc device node to decouple the device
   initialization priority, so that MMIO could be initialized before netc
   driver initialization.

Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com>
Update NETC device nodes according to NETC driver update:
1. Added "nxp,imx-netc" compatible for netc driver to handle MMIO mapping
   in the driver.
2. Added all memory region in MMIO reg propertiy to let driver to handle
   MMIO mapping for all memory region.
3. Move MMIO device node out of netc device node to decouple the device
   initialization priority, so that MMIO could be initialized before netc
   driver initialization.

Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com>
Added NETC dts nodes in imx95_evk A55 platform.

Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com>
Added SCMI power dts node.

Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com>
Power up NETCMIX and configure netc clock in soc_init().

Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com>
Removed overlay and enabled these nodes in board dts directly as it is
not be valid unless CONFIG_NETWORKING is enabled.

Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com>
@JiafeiPan JiafeiPan force-pushed the develop/imx95-netc branch from 8f0c4ef to d6c9cda Compare July 9, 2025 09:00
@JiafeiPan
Copy link
Collaborator Author

v3: enlarge networking stack size to avoid net_mgmt thread crash.

Copy link

sonarqubecloud bot commented Jul 9, 2025

JiafeiPan added 3 commits July 9, 2025 17:18
Added NETC PSI0 support on the i.MX 95 EVK board for A55 platform.

Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com>
The issue is caused by default stack size 1500 bytes of NET_RX_STACK_SIZE
is to small for ARM64 platform, then the stack of net_rx thread is
overflow and break the net_mgmt thread's stack, as a result net_mgmt thread
is crashed.

So this patch will enlarge all the stack size of net stack threads.

Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com>
Add i.MX 95 EVK A55 support for zperf sample.

Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants