drivers/serial: Refactor PL011 to be general-purpose#18837
Conversation
|
I am able to run the $ qemu-system-aarch64 -cpu cortex-a53 -nographic -machine virt,virtualization=on,gic-version=3 -net none -chardev stdio,id=con,mux=on -serial chardev:con -mon chardev=con,mode=readline -kernel ./nuttx
NuttShell (NSH) NuttX-12.13.0
nsh> ps
TID PID PPID PRI POLICY TYPE NPX STATE EVENT SIGMASK STACK USED FILLED COMMAND
0 0 0 0 FIFO Kthread - Ready 0000000000000000 0008144 0001616 19.8% Idle_Task
1 0 0 192 RR Kthread - Waiting Semaphore 0000000000000000 0008080 0001200 14.8% hpwork 0x404196a0 0x40419728
3 3 0 100 RR Task - Running 0000000000000000 0008112 0003728 45.9% nsh_main
nsh> ls
/:
dev/
proc/
tmp/
nsh>It's also odd that it works for SMP. |
|
@raiden00pl Do you have any idea why this change might cause NTFC to fail with a boot timeout on |
|
no idea. NTFC should export nuttx.elf in CI artifacts, but for some reason these are not present for qemu-armv8a:citest and qemu-armv8a:citest_smp. What's funny - it works for all other targets citest targets. Now I see that this target uses cmake, so that might be the reason for the missing elf in the artifacts. |
| * | ||
| ***************************************************************************/ | ||
|
|
||
| void pl011_serialinit(void) |
There was a problem hiding this comment.
why drop the default implementation which could avoid the code duplication in the common case. it's better that:
- keep pl011_serialinit/pl011_earlyserialinit if one of CONFIG_UARTx_PL011 is enabled
- add pl011_dev_init, so the special case could call the new function directly.
There was a problem hiding this comment.
Because this function is no longer useful. It needs access to the device structs for the PL011 interfaces in order to register them, but these are defined outside this module now.
If we keep this function, then we can no longer:
- Define an arbitrary number of interfaces
- Use the standard UART config options for configuring PL011 UART
It should now be up to the chip logic to register the UART interfaces instead, as with all other UART drivers. Otherwise we don't have the benefits and we must also maintain two separate ways of doing things. There are only 3 boards that use PL011 right now, so it's not a super common case.
There was a problem hiding this comment.
but the similar config duplicated in the many places now. I would prefer to keep the origin global definition, so the common usage could be simplified.
There was a problem hiding this comment.
I'm not sure there's a way around that except by maintaining two interfaces for PL011 registration and all the old Kconfig options. Plus, I will have to add some refactoring for more granular interrupt management.
Let me brainstorm and get back to you, maybe I can keep the init function and still remove the PL011-specific Kconfig functions. The main challenge is selection of the base addresses and IRQ numbers.
I'll try building with CMake in case that reveals what the issue might be. |
This commit refactors the PL011 UART driver so that it can be re-used for any number of UART interfaces depending on the board/chip. This commit also hooks the UART interface configuration/selection for PL011 UART interfaces into the same Kconfig used for regular UART interfaces. Now UART interfaces are configured in a standard, extensible way. Signed-off-by: Matteo Golin <matteo.golin@gmail.com>
|
Okay so I built $ cmake -B build -DBOARD_CONFIG=qemu-armv8a:citest -GNinja
$ cmake --build buildThen I downloaded the $ ntfc test --testpath=/home/linguini/coding/nuttx-space/nuttx-ntfc/external/nuttx-testing/ --confpath=/home/linguini/coding/nuttx-space/nuttx/boards/arm64/qemu/qemu-armv8a/configs/citest/config.yaml --jsonconf=/home/linguini/coding/nuttx-space/nuttx/boards/arm64/qemu/qemu-armv8a/configs/citest/session.json
--------------------------------------------------------------------------------
NTFC PID: 3606981
--------------------------------------------------------------------------------
YAML config:
{'config': {'cwd': './', 'kv': [], 'loops': 1},
'product': {'cores': {'core0': {'conf_path': './build/.config',
'device': 'qemu',
'elf_path': './build/nuttx',
'exec_args': '-cpu cortex-a53 -nographic '
'-machine '
'virt,virtualization=on,gic-version=3 '
'-net none -chardev '
'stdio,id=con,mux=on -serial '
'chardev:con -mon '
'chardev=con,mode=readline',
'exec_path': 'qemu-system-aarch64',
'name': 'main'}},
'name': 'qemu-armv8a'}}
JSON config:
{'args': {'kv': []},
'module': {'exclude_module': ['Nuttx_System_Fs_Fs'],
'include_module': [],
'order': []}}
CPU information header not found in output
==================================================================== test session starts =====================================================================
platform linux -- Python 3.14.5, pytest-9.0.3, pluggy-1.6.0
rootdir: /home/linguini/coding/nuttx-space/nuttx-ntfc
configfile: tox.ini
plugins: html-4.2.0, repeat-0.9.4, ordering-0.6, dependency-0.6.1, metadata-3.1.1, timeout-2.4.0
collected 932 items
=================================================================== no tests ran in 0.38s ====================================================================
====================================================================================================
🚀 RUNNING 63 SELECTED TEST(S)
====================================================================================================
┼─────┼──────────────────────────────────┼──────────────────────────────┼
│ Idx │ Module │ Test Case │
┼─────┼──────────────────────────────────┼──────────────────────────────┼
│ 1 │ Nuttx_System_Arch_Os_Integration │ test_os[main] │
│ 2 │ Nuttx_System_Arch_Example │ test_hello_integration[main] │
│ 3 │ Nuttx_System_Arch_Example │ test_getprime │
│ 4 │ Nuttx_System_Arch_Nsh │ TestCat.test_cat001[main] │
│ 5 │ Nuttx_System_Arch_Nsh │ TestCat.test_cat002[main] │
│ 6 │ Nuttx_System_Arch_Nsh │ TestCat.test_cat003[main] │
│ 7 │ Nuttx_System_Arch_Nsh │ TestCat.test_cat004[main] │
│ 8 │ Nuttx_System_Arch_Nsh │ TestCat.test_cat005[main] │
│ 9 │ Nuttx_System_Arch_Nsh │ TestCat.test_cat006[main] │
│ 10 │ Nuttx_System_Arch_Nsh │ TestCat.test_cat007[main] │
│ 11 │ Nuttx_System_Arch_Nsh │ TestCat.test_cat008[main] │
│ 12 │ Nuttx_System_Arch_Nsh │ TestCat.test_cat009[main] │
│ 13 │ Nuttx_System_Arch_Nsh │ TestCat.test_cat010[main] │
│ 14 │ Nuttx_System_Arch_Nsh │ TestCd.test_cd001 │
│ 15 │ Nuttx_System_Arch_Nsh │ TestCd.test_cd002 │
│ 16 │ Nuttx_System_Arch_Nsh │ TestCd.test_cd003 │
│ 17 │ Nuttx_System_Arch_Nsh │ TestCd.test_cd004 │
│ 18 │ Nuttx_System_Arch_Nsh │ TestCd.test_cd005 │
│ 19 │ Nuttx_System_Arch_Nsh │ TestEcho.test_echo001 │
│ 20 │ Nuttx_System_Arch_Nsh │ TestEcho.test_echo002 │
│ 21 │ Nuttx_System_Arch_Nsh │ TestEcho.test_echo003 │
│ 22 │ Nuttx_System_Arch_Nsh │ TestHelp.test_help01 │
│ 23 │ Nuttx_System_Arch_Nsh │ TestHelp.test_help02 │
│ 24 │ Nuttx_System_Arch_Nsh │ TestHelp.test_help_v │
│ 25 │ Nuttx_System_Arch_Nsh │ TestHelp.test_help_cat │
│ 26 │ Nuttx_System_Arch_Nsh │ TestLs.test_ls_l │
│ 27 │ Nuttx_System_Arch_Nsh │ TestLs.test_ls_s │
│ 28 │ Nuttx_System_Arch_Nsh │ TestLs.test_ls_R │
│ 29 │ Nuttx_System_Arch_Nsh │ TestRm.test_rm001 │
│ 30 │ Nuttx_System_Arch_Nsh │ TestRm.test_rm002 │
│ 31 │ Nuttx_System_Arch_Nsh │ TestMkdir.test_mkdir001 │
│ 32 │ Nuttx_System_Arch_Nsh │ TestRmdir.test_rmdir001 │
│ 33 │ Nuttx_System_Arch_Nsh │ TestRmdir.test_rmdir002 │
│ 34 │ Nuttx_System_Arch_Nsh │ TestCp.test_cp001 │
│ 35 │ Nuttx_System_Arch_Nsh │ TestCp.test_cp002 │
│ 36 │ Nuttx_System_Arch_Nsh │ TestCp.test_cp003 │
│ 37 │ Nuttx_System_Arch_Nsh │ TestPs.test_ps │
│ 38 │ Nuttx_System_Arch_Nsh │ TestTime.test_sleep │
│ 39 │ Nuttx_System_Arch_Nsh │ TestTime.test_usleep │
│ 40 │ Nuttx_System_Arch_Nsh │ TestSet.test_set │
│ 41 │ Nuttx_System_Arch_Nsh │ TestSet.test_unset │
│ 42 │ Nuttx_System_Arch_Nsh │ TestTest.test_test │
│ 43 │ Nuttx_System_Arch_Nsh │ TestDirname.test_dirname │
│ 44 │ Nuttx_System_Arch_Nsh │ TestBasename.test_basename │
│ 45 │ Nuttx_System_Arch_Nsh │ TestDf.test_df │
│ 46 │ Nuttx_System_Arch_Nsh │ TestDf.test_df_h │
│ 47 │ Nuttx_System_Arch_Nsh │ TestUname.test_uname │
│ 48 │ Nuttx_System_Arch_Nsh │ TestUname.test_uname_a │
│ 49 │ Nuttx_System_Arch_Nsh │ TestUname.test_uname_s │
│ 50 │ Nuttx_System_Arch_Nsh │ TestUname.test_uname_r │
│ 51 │ Nuttx_System_Arch_Nsh │ TestUname.test_uname_v │
│ 52 │ Nuttx_System_Arch_Nsh │ TestUname.test_uname_m │
│ 53 │ Nuttx_System_Arch_Nsh │ TestUname.test_uname_i │
│ 54 │ Nuttx_System_Arch_Nsh │ TestEnv.test_env │
│ 55 │ Nuttx_System_Arch_Nsh │ TestMv.test_mv │
│ 56 │ Nuttx_System_Arch_Nsh │ TestPwd.test_pwd │
│ 57 │ Nuttx_System_Arch_Nsh │ TestHexdump.test_hexdump │
│ 58 │ Nuttx_System_Arch_Nsh │ TestMkrd.test_mkrd │
│ 59 │ Nuttx_System_Arch_Nsh │ TestMw.test_mw │
│ 60 │ Nuttx_System_Arch_Nsh │ TestExec.test_exec │
│ 61 │ Nuttx_System_Arch_Space │ test_free[main] │
│ 62 │ Nuttx_System_Arch_Space │ test_df[main] │
│ 63 │ Nuttx_System_Tools │ test_system_mmleak │
┼─────┼──────────────────────────────────┼──────────────────────────────┼
====================================================================================================
CPU information header not found in output
==================================================================== test session starts =====================================================================
platform linux -- Python 3.14.5, pytest-9.0.3, pluggy-1.6.0
rootdir: /home/linguini/coding/nuttx-space/nuttx-ntfc
configfile: tox.ini
plugins: html-4.2.0, repeat-0.9.4, ordering-0.6, dependency-0.6.1, metadata-3.1.1, timeout-2.4.0
timeout: 800.0s
timeout method: signal
timeout func_only: False
session timeout: 3600.0s
collected 64 items
../nuttx-ntfc/external/nuttx-testing/arch/os/integration/test_arch_os_integration.py::test_os[main] PASSED
../nuttx-ntfc/external/nuttx-testing/arch/example/test_arch_example_integration.py::test_hello_integration[main] PASSED
../nuttx-ntfc/external/nuttx-testing/arch/example/test_arch_example_integration.py::test_getprime PASSED
../nuttx-ntfc/external/nuttx-testing/arch/nsh/test_arch_nsh_integration.py::TestCat::test_cat001[main] PASSED
../nuttx-ntfc/external/nuttx-testing/arch/nsh/test_arch_nsh_integration.py::TestCat::test_cat002[main] PASSED
../nuttx-ntfc/external/nuttx-testing/arch/nsh/test_arch_nsh_integration.py::TestCat::test_cat003[main] It works fine. I even made sure to use I'm genuinely at a loss for what's going on. Can you spot anything @raiden00pl? |
|
Did you run this on your host or from nuttx-ci docker? I also checked it on my host, and this change pass ntfc tests. So I think there might be something wrong with image produced by docker itself, or maybe qemu version that is installed on this image |
This was run on my host, not from the |
|
Okay it looks the CI uses QEMU version 6.2.0, while I have 11.0.0 (for |
|
Even more hair pulling. I downloaded the latest CI docker image and ran it $ docker pull ghcr.io/apache/nuttx/apache-nuttx-ci-linux:latestThen I cloned my branch with these changes, nuttx-apps, nuttx-ntfc, nuttx-ntfc-testing, installed NTFC, built $ ntfc test --testpath=../nuttx-ntfc/external/nuttx-testing/ --confpath=boards/arm64/qemu/qemu-armv8a/configs/citest/config.yaml --jsonconf=boards/arm64/qemu/qemu-armv8a/configs/citest/session.json
--------------------------------------------------------------------------------
NTFC PID: 11313
--------------------------------------------------------------------------------
YAML config:
{'config': {'cwd': './', 'kv': [], 'loops': 1},
'product': {'cores': {'core0': {'conf_path': './build/.config',
'device': 'qemu',
'elf_path': './build/nuttx',
'exec_args': '-cpu cortex-a53 -nographic '
'-machine '
'virt,virtualization=on,gic-version=3 '
'-net none -chardev '
'stdio,id=con,mux=on -serial '
'chardev:con -mon '
'chardev=con,mode=readline',
'exec_path': 'qemu-system-aarch64',
'name': 'main'}},
'name': 'qemu-armv8a'}}
JSON config:
{'args': {'kv': []},
'module': {'exclude_module': ['Nuttx_System_Fs_Fs'],
'include_module': [],
'order': []}}
CPU information header not found in output
================================================================== test session starts ===================================================================
platform linux -- Python 3.10.12, pytest-9.0.3, pluggy-1.6.0
rootdir: /tools/nuttx-space/nuttx-ntfc
configfile: tox.ini
plugins: html-4.2.0, dependency-0.6.1, metadata-3.1.1, timeout-2.4.0, repeat-0.9.1, ordering-0.6, json-0.4.0
collected 932 items
================================================================= no tests ran in 0.41s ==================================================================
====================================================================================================
🚀 RUNNING 63 SELECTED TEST(S)
====================================================================================================
┼─────┼──────────────────────────────────┼──────────────────────────────┼
│ Idx │ Module │ Test Case │
┼─────┼──────────────────────────────────┼──────────────────────────────┼
│ 1 │ Nuttx_System_Arch_Os_Integration │ test_os[main] │
│ 2 │ Nuttx_System_Arch_Example │ test_hello_integration[main] │
│ 3 │ Nuttx_System_Arch_Example │ test_getprime │
│ 4 │ Nuttx_System_Arch_Nsh │ TestCat.test_cat001[main] │
│ 5 │ Nuttx_System_Arch_Nsh │ TestCat.test_cat002[main] │
│ 6 │ Nuttx_System_Arch_Nsh │ TestCat.test_cat003[main] │
│ 7 │ Nuttx_System_Arch_Nsh │ TestCat.test_cat004[main] │
│ 8 │ Nuttx_System_Arch_Nsh │ TestCat.test_cat005[main] │
│ 9 │ Nuttx_System_Arch_Nsh │ TestCat.test_cat006[main] │
│ 10 │ Nuttx_System_Arch_Nsh │ TestCat.test_cat007[main] │
│ 11 │ Nuttx_System_Arch_Nsh │ TestCat.test_cat008[main] │
│ 12 │ Nuttx_System_Arch_Nsh │ TestCat.test_cat009[main] │
│ 13 │ Nuttx_System_Arch_Nsh │ TestCat.test_cat010[main] │
│ 14 │ Nuttx_System_Arch_Nsh │ TestCd.test_cd001 │
│ 15 │ Nuttx_System_Arch_Nsh │ TestCd.test_cd002 │
│ 16 │ Nuttx_System_Arch_Nsh │ TestCd.test_cd003 │
│ 17 │ Nuttx_System_Arch_Nsh │ TestCd.test_cd004 │
│ 18 │ Nuttx_System_Arch_Nsh │ TestCd.test_cd005 │
│ 19 │ Nuttx_System_Arch_Nsh │ TestEcho.test_echo001 │
│ 20 │ Nuttx_System_Arch_Nsh │ TestEcho.test_echo002 │
│ 21 │ Nuttx_System_Arch_Nsh │ TestEcho.test_echo003 │
│ 22 │ Nuttx_System_Arch_Nsh │ TestHelp.test_help01 │
│ 23 │ Nuttx_System_Arch_Nsh │ TestHelp.test_help02 │
│ 24 │ Nuttx_System_Arch_Nsh │ TestHelp.test_help_v │
│ 25 │ Nuttx_System_Arch_Nsh │ TestHelp.test_help_cat │
│ 26 │ Nuttx_System_Arch_Nsh │ TestLs.test_ls_l │
│ 27 │ Nuttx_System_Arch_Nsh │ TestLs.test_ls_s │
│ 28 │ Nuttx_System_Arch_Nsh │ TestLs.test_ls_R │
│ 29 │ Nuttx_System_Arch_Nsh │ TestRm.test_rm001 │
│ 30 │ Nuttx_System_Arch_Nsh │ TestRm.test_rm002 │
│ 31 │ Nuttx_System_Arch_Nsh │ TestMkdir.test_mkdir001 │
│ 32 │ Nuttx_System_Arch_Nsh │ TestRmdir.test_rmdir001 │
│ 33 │ Nuttx_System_Arch_Nsh │ TestRmdir.test_rmdir002 │
│ 34 │ Nuttx_System_Arch_Nsh │ TestCp.test_cp001 │
│ 35 │ Nuttx_System_Arch_Nsh │ TestCp.test_cp002 │
│ 36 │ Nuttx_System_Arch_Nsh │ TestCp.test_cp003 │
│ 37 │ Nuttx_System_Arch_Nsh │ TestPs.test_ps │
│ 38 │ Nuttx_System_Arch_Nsh │ TestTime.test_sleep │
│ 39 │ Nuttx_System_Arch_Nsh │ TestTime.test_usleep │
│ 40 │ Nuttx_System_Arch_Nsh │ TestSet.test_set │
│ 41 │ Nuttx_System_Arch_Nsh │ TestSet.test_unset │
│ 42 │ Nuttx_System_Arch_Nsh │ TestTest.test_test │
│ 43 │ Nuttx_System_Arch_Nsh │ TestDirname.test_dirname │
│ 44 │ Nuttx_System_Arch_Nsh │ TestBasename.test_basename │
│ 45 │ Nuttx_System_Arch_Nsh │ TestDf.test_df │
│ 46 │ Nuttx_System_Arch_Nsh │ TestDf.test_df_h │
│ 47 │ Nuttx_System_Arch_Nsh │ TestUname.test_uname │
│ 48 │ Nuttx_System_Arch_Nsh │ TestUname.test_uname_a │
│ 49 │ Nuttx_System_Arch_Nsh │ TestUname.test_uname_s │
│ 50 │ Nuttx_System_Arch_Nsh │ TestUname.test_uname_r │
│ 51 │ Nuttx_System_Arch_Nsh │ TestUname.test_uname_v │
│ 52 │ Nuttx_System_Arch_Nsh │ TestUname.test_uname_m │
│ 53 │ Nuttx_System_Arch_Nsh │ TestUname.test_uname_i │
│ 54 │ Nuttx_System_Arch_Nsh │ TestEnv.test_env │
│ 55 │ Nuttx_System_Arch_Nsh │ TestMv.test_mv │
│ 56 │ Nuttx_System_Arch_Nsh │ TestPwd.test_pwd │
│ 57 │ Nuttx_System_Arch_Nsh │ TestHexdump.test_hexdump │
│ 58 │ Nuttx_System_Arch_Nsh │ TestMkrd.test_mkrd │
│ 59 │ Nuttx_System_Arch_Nsh │ TestMw.test_mw │
│ 60 │ Nuttx_System_Arch_Nsh │ TestExec.test_exec │
│ 61 │ Nuttx_System_Arch_Space │ test_free[main] │
│ 62 │ Nuttx_System_Arch_Space │ test_df[main] │
│ 63 │ Nuttx_System_Tools │ test_system_mmleak │
┼─────┼──────────────────────────────────┼──────────────────────────────┼
====================================================================================================
CPU information header not found in output
================================================================== test session starts ===================================================================
platform linux -- Python 3.10.12, pytest-9.0.3, pluggy-1.6.0
rootdir: /tools/nuttx-space/nuttx-ntfc
configfile: tox.ini
plugins: html-4.2.0, dependency-0.6.1, metadata-3.1.1, timeout-2.4.0, repeat-0.9.1, ordering-0.6, json-0.4.0
timeout: 800.0s
timeout method: signal
timeout func_only: False
session timeout: 3600.0s
collected 64 items
../nuttx-ntfc/external/nuttx-testing/arch/os/integration/test_arch_os_integration.py::test_os[main] PASSED
../nuttx-ntfc/external/nuttx-testing/arch/example/test_arch_example_integration.py::test_hello_integration[main] PASSED
../nuttx-ntfc/external/nuttx-testing/arch/example/test_arch_example_integration.py::test_getprime PASSED
../nuttx-ntfc/external/nuttx-testing/arch/nsh/test_arch_nsh_integration.py::TestCat::test_cat001[main] PASSED
../nuttx-ntfc/external/nuttx-testing/arch/nsh/test_arch_nsh_integration.py::TestCat::test_cat002[main] PASSED
../nuttx-ntfc/external/nuttx-testing/arch/nsh/test_arch_nsh_integration.py::TestCat::test_cat003[main] PASSED
../nuttx-ntfc/external/nuttx-testing/arch/nsh/test_arch_nsh_integration.py::TestCat::test_cat004[main] PASSED
../nuttx-ntfc/external/nuttx-testing/arch/nsh/test_arch_nsh_integration.py::TestCat::test_cat005[main] PASSED
../nuttx-ntfc/external/nuttx-testing/arch/nsh/test_arch_nsh_integration.py::TestCat::test_cat006[main] PASSED
../nuttx-ntfc/external/nuttx-testing/arch/nsh/test_arch_nsh_integration.py::TestCat::test_cat007[main] PASSED
../nuttx-ntfc/external/nuttx-testing/arch/nsh/test_arch_nsh_integration.py::TestCat::test_cat008[main] PASSED
../nuttx-ntfc/external/nuttx-testing/arch/nsh/test_arch_nsh_integration.py::TestCat::test_cat009[main] PASSED
../nuttx-ntfc/external/nuttx-testing/arch/nsh/test_arch_nsh_integration.py::TestCat::test_cat010[main] PASSED
../nuttx-ntfc/external/nuttx-testing/arch/nsh/test_arch_nsh_integration.py::TestCd::test_cd001 PASSED
../nuttx-ntfc/external/nuttx-testing/arch/nsh/test_arch_nsh_integration.py::TestCd::test_cd002 PASSED
../nuttx-ntfc/external/nuttx-testing/arch/nsh/test_arch_nsh_integration.py::TestCd::test_cd003 PASSED
../nuttx-ntfc/external/nuttx-testing/arch/nsh/test_arch_nsh_integration.py::TestCd::test_cd004 PASSED
../nuttx-ntfc/external/nuttx-testing/arch/nsh/test_arch_nsh_integration.py::TestCd::test_cd005 PASSED
../nuttx-ntfc/external/nuttx-testing/arch/nsh/test_arch_nsh_integration.py::TestEcho::test_echo001 PASSED
../nuttx-ntfc/external/nuttx-testing/arch/nsh/test_arch_nsh_integration.py::TestEcho::test_echo002 PASSED
../nuttx-ntfc/external/nuttx-testing/arch/nsh/test_arch_nsh_integration.py::TestEcho::test_echo003 PASSED
../nuttx-ntfc/external/nuttx-testing/arch/nsh/test_arch_nsh_integration.py::TestHelp::test_help01 PASSED
../nuttx-ntfc/external/nuttx-testing/arch/nsh/test_arch_nsh_integration.py::TestHelp::test_help02 PASSED
../nuttx-ntfc/external/nuttx-testing/arch/nsh/test_arch_nsh_integration.py::TestHelp::test_help_v PASSED
../nuttx-ntfc/external/nuttx-testing/arch/nsh/test_arch_nsh_integration.py::TestHelp::test_help_cat PASSED
../nuttx-ntfc/external/nuttx-testing/arch/nsh/test_arch_nsh_integration.py::TestLs::test_ls_l PASSED
../nuttx-ntfc/external/nuttx-testing/arch/nsh/test_arch_nsh_integration.py::TestLs::test_ls_s SKIPPED (No Ready)
../nuttx-ntfc/external/nuttx-testing/arch/nsh/test_arch_nsh_integration.py::TestLs::test_ls_R PASSED
../nuttx-ntfc/external/nuttx-testing/arch/nsh/test_arch_nsh_integration.py::TestRm::test_rm001 PASSED
../nuttx-ntfc/external/nuttx-testing/arch/nsh/test_arch_nsh_integration.py::TestRm::test_rm002 PASSED@simbit18 or @lupyuen , do you have any idea what might be going on here? Any advice for getting closer to reproducing the CI conditions locally? |
Summary
This commit refactors the PL011 UART driver so that it can be re-used for any number of UART interfaces depending on the board/chip. This commit also hooks the UART interface configuration/selection for PL011 UART interfaces into the same Kconfig used for regular UART interfaces. Now UART interfaces are configured in a standard, extensible way.
Related to #18836. Needed to unblock progress on the RPi4B PL011 UART interfaces for GSoC 2026.
Impact
Impacts only the 4 (simulator) boards that used PL011 UART.
Testing
For each of the QEMU boards, I tested their
gdbstubdemos since those configurations use both UART interfaces, not just a console.QEMU ARMv8A
Details
QEMU ARMv7A
Details
For the FVP boards, I tested compilation only.
The CXD32 and and Goldfish chips don't have any defconfigs to test.