Skip to content
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

Add RT700 basic environment support #79376

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

Conversation

lucien-nxp
Copy link
Contributor

support gpio/uart function

@zephyrbot
Copy link
Collaborator

zephyrbot commented Oct 3, 2024

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

Name Old Revision New Revision Diff
hal_nxp zephyrproject-rtos/hal_nxp@c42d70d zephyrproject-rtos/hal_nxp#444 zephyrproject-rtos/hal_nxp#444/files

DNM label due to: 1 project with PR revision

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

@zephyrbot zephyrbot added manifest manifest-hal_nxp DNM This PR should not be merged (Do Not Merge) labels Oct 3, 2024
soc/nxp/common/Kconfig.flexspi_xip Outdated Show resolved Hide resolved
soc/nxp/imxrt/Kconfig Outdated Show resolved Hide resolved
soc/nxp/imxrt/Kconfig Outdated Show resolved Hide resolved
soc/nxp/imxrt/imxrt7xx/Kconfig Outdated Show resolved Hide resolved
soc/nxp/imxrt/imxrt7xx/Kconfig Outdated Show resolved Hide resolved
high-performance numerical tasks such as audio and image processing and supports both fixed-point and
floating-point operations.

Note: Due to board isn't launched, the picture is blank
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe just don't include an image? I'm not aware of a requirement that we actually have one.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only release RT700 soc, EVK board don't launch currently. We can't show the board picture currently.

boards/nxp/mimxrt700_evk/mimxrt700_evk_mimxrt798s_cpu0.dts Outdated Show resolved Hide resolved
boards/nxp/mimxrt700_evk/doc/index.rst Outdated Show resolved Hide resolved
boards/nxp/mimxrt700_evk/Kconfig.defconfig Outdated Show resolved Hide resolved
boards/nxp/mimxrt700_evk/doc/mimxrt700_evk.webp Outdated Show resolved Hide resolved
boards/nxp/mimxrt700_evk/mimxrt700_evk-pinctrl.dtsi Outdated Show resolved Hide resolved
boards/nxp/mimxrt700_evk/mimxrt700_evk_mimxrt798s_cpu0.dts Outdated Show resolved Hide resolved
boards/nxp/mimxrt700_evk/mimxrt700_evk_mimxrt798s_cpu0.dts Outdated Show resolved Hide resolved
Comment on lines +75 to +86
config XSPI_CONFIG_BLOCK_OFFSET
hex "XSPI config block offset"
default 0x0
help
XSPI configuration block consists of parameters regarding specific
flash devices including read command sequence, quad mode enablement
sequence (optional), etc. The boot ROM expects XSPI configuration
parameter to be presented in serial nor flash.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why is this not in dts?

soc/nxp/imxrt/imxrt7xx/Kconfig.soc Outdated Show resolved Hide resolved
@zephyrbot zephyrbot added the Release Notes To be mentioned in the release notes label Nov 15, 2024
@lucien-nxp
Copy link
Contributor Author

lucien-nxp commented Nov 15, 2024

I created new pinctrl driver(iopctl driver) for RT 3 digital platforms, it makes better service the multi iopctl instances on RT700, and keep a same pinctrl model for RT 3 digital platforms. So this PR is currently dependent on my other PR#81086. I will make sure my other PR merge as soon as possible after the freeze ends.

@kartben
Copy link
Collaborator

kartben commented Nov 15, 2024

@lucien-nxp looks like there was a rebase accident :)

@lucien-nxp lucien-nxp closed this Nov 15, 2024
@lucien-nxp lucien-nxp reopened this Nov 15, 2024
@lucien-nxp
Copy link
Contributor Author

lucien-nxp commented Nov 15, 2024

@lucien-nxp looks like there was a rebase accident :)
This PR is dependent on another #81086. I will speed another PR merged(when windows open), then rebase this PR the newest main node. Currently, only do ci test on this PR. Thank you.

Copy link
Contributor

@DerekSnell DerekSnell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @lucien-nxp ,
Thank you for addressing all my requests. I am removing my block. But I will let other reviewers address their requests and the IOPCTL changes. Thank you

@DerekSnell DerekSnell dismissed their stale review November 18, 2024 18:14

My requests we addressed

int pinctrl_configure_pins(const pinctrl_soc_pin_t *pins, uint8_t pin_cnt,
uintptr_t reg)
{
for (uint8_t i = 0; i < pin_cnt; i++) {
uint32_t pin_mux = pins[i];
#if defined(CONFIG_SOC_SERIES_IMXRT7XX) && defined(CONFIG_SOC_FAMILY_NXP_IMXRT)
uint8_t port_no = PORT_NO(pin_mux);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agree that we should come up with a better method to isolate these differences instead of use SOC macro definition directly. Just image if we have RT2xxx which as same IP, how to reuse it?

@@ -0,0 +1,353 @@
/*
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about we define a common dtsi file which include all basic SOC device information. All no-shared devices are disabled by default. Then define seperate dtsi files for cpu0/cpu1 which based on this common file and only enable CPU0/1 dedicated devices on each file?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think there is no need to create common dtsi for RT700, domain makes two core access IP instance is different.

RESET_ClearPeripheralReset(kGPIO7_RST_SHIFT_RSTn);
#endif

#if DT_NODE_HAS_STATUS(DT_NODELABEL(gpio8), okay)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here a lot of duplicate code, can we use DT_INST_FOREACH_STATUS_OKAY to simply it?

@lucien-nxp
Copy link
Contributor Author

lucien-nxp commented Nov 20, 2024

Hi @Raymond0225 ,
For Q1. Now iocon driver won't be used for RT 3 digital platforms. I have created new IOPCTL driver to service RT 3 digital platforms.
For Q3, How can I use DT_INST_FOREACH_STATUS_OKAY ? Use DT_INST_FOREACH_STATUS_OKAY need to match with macro DT_DRV_COMPAT, how can I handle multi kinds of IPs.

@lucien-nxp lucien-nxp force-pushed the add_rt700_baseline_support branch 2 times, most recently from 4e08e1a to 8190cc8 Compare November 29, 2024 09:26
@lucien-nxp
Copy link
Contributor Author

Hi @hakehuang , Could you help test all the LPC and RT3 digitals platforms based on this PR? I have updated iocon driver and pin header file for RT700. Thank you.

@hakehuang
Copy link
Collaborator

hakehuang commented Dec 2, 2024

Hi @hakehuang , Could you help test all the LPC and RT3 digitals platforms based on this PR? I have updated iocon driver and pin header file for RT700. Thank you.

sure, I kick another round of testing, will feedback once done

@lucien-nxp

op 500 values of testsuite.keyword Failed
tests/kernel/mem_protect/mem_protect/kernel.memory_protection 15
tests/kernel/mem_protect/userspace/kernel.memory_protection.userspace 1
tests/kernel/threads/thread_stack/kernel.threads.armv8m_mpu_stack_guard 1
tests/kernel/fatal/exception/kernel.common.stack_protection_armv8m_mpu_stack_guard 2
samples/userspace/prod_consumer/sample.userspace.prod_consumer 1
samples/userspace/shared_mem/sample.kernel.memory_protection.shared_mem 1

add rt7xx files related to soc
support basic clock enablement
add HAS_MCUX_XSPI/HAS_GLIKEY Kconfig
add common/Kconfig.xspi_xip file

Signed-off-by: Lucien Zhao <[email protected]>
add RT7xx dts files
add iocon/gpio/flexcomm/clock instances in dts

Signed-off-by: Lucien Zhao <[email protected]>
add nxp,imx-xspi-device.yaml
add nxp,imx-xspi-mx25um51345g.yaml
add nxp,imx-xspi.yaml

Signed-off-by: Lucien Zhao <[email protected]>
add more flexcomm instances clock support to adapt
rt700 instances number

add xspi clock support

Signed-off-by: Lucien Zhao <[email protected]>
Due to there is no port on RT7xx soc, update driver to
adapt rt7xx pin mux model(Use IOPCTL_PinMuxSet function
to configure pinmux set)

Signed-off-by: Lucien Zhao <[email protected]>
update gpio driver to adapt rt7xx gpio model:
1. There is no PORT_Type on RT7xx,so set PORT_Type as void
2. Add port_no parameter in gpio_mcux_config to adapt IOPCTL driver
3. Add gpio-port-offest parameter in blinding, it will help map the
   relation between index n and gpio port when some soc have domain
   access attribution.
4. Add code to adapt RT700 GPIO attribute configuration

Signed-off-by: Lucien Zhao <[email protected]>
add files related to mimxrt700_evk board
add gpio/uart function support on board

Signed-off-by: Lucien Zhao <[email protected]>
track rt700 sdk files update PR branch

Signed-off-by: Lucien Zhao <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.