-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Tracking the ESWIN EIC7700X port's path into Apache NuttX master, for the PINE64 StarPro64 and the ESWIN EIC7700 EVB.
develop is a build product, regenerated from a manifest rather than
committed to. Each row below is one branch of that manifest, in merge
order. A branch becomes a pull request carrying only its own commits,
with prerequisites declared through Depends-On: so CI composes them
without the review diff dragging in other branches. See
Pull Request Dependencies
in the NuttX CI documentation.
Last updated: 2026-08-17
| Status | Meaning |
|---|---|
| merged | in Apache master; branch retired from the manifest |
| in review | PR open, awaiting a reviewer |
| approved | PR open and approved, waiting to merge |
| changes requested | PR open, review comments outstanding |
| draft | PR open but not for review yet |
| ready to open | verified on hardware, no unopened prerequisite |
| blocked | complete, but a prerequisite is not upstream yet |
| WIP | works, but not finished enough to offer upstream |
These touch no EIC7700X code and can be reviewed by anyone.
| # | Branch | Cmts | PR | Status | Depends on |
|---|---|---|---|---|---|
| 1 | upstream-libc-string-align |
1 | #19857 | in review — rewritten on top of #19870, now covers all 9 two-pointer functions | — |
| 7 | upstream-pinctrl-procfs |
1 | #19871 | in review | — |
| 9 | upstream-reset-procfs |
1 | #19876 | in review | — |
| 11 | upstream-gpio-procfs |
1 | #19878 | in review — doc heading level fixed after build-html failed |
— |
| 12 | upstream-regulator-procfs |
1 | #19879 | in review | — |
| 14 | upstream-mmcsd-sd-highspeed |
1 | #19883 | in review | — |
| 19 | upstream-rtc-pcf8563 |
1 | — | ready to open — reshaped to the ds3231 model: no lower half, no /dev/rtc0, as every external I2C clock in the tree |
— |
| 20 | upstream-uorb-power-types |
1 | — | ready to open | — |
| 21 | upstream-regulator-mpq8785 |
1 | — | blocked | 12 |
| 22 | upstream-regulator-mpq8785-uorb |
1 | — | blocked | 20, 21 |
| 23 | upstream-sensors-tmp112-uorb |
1 | — | ready to open | — |
| 24 | upstream-sensors-ina226-uorb |
1 | — | blocked | 20 |
| 36 | upstream-xhci-pci-split |
2 | #19860 | in review — rebased after 35 merged; the diff is now its own 2 commits | — |
| 37 | upstream-xhci-datapath |
21 | #19861 | in review — rebased onto 36, so its 2 commits are the same objects and Depends-On: resolves as already-included |
36 |
| 38 | upstream-xhci-hubs |
5 | #19862 | in review — rebased onto 37 | 36, 37 |
| 40 | upstream-thermal-devfreq |
3 | — | ready to open | — |
| 42 | upstream-edid-cea-physaddr |
1 | — | ready to open | — |
| 43 | upstream-cec-framework |
7 | — | ready to open | — |
nuttx-apps: upstream-arch-libc-string →
apps#3706, in review.
Independent of 1, but it is the benchmark 1's measurements come from. Its
per-function tests call perf_gettime(), which is arch-internal and not in
syscall.csv, so the app does not link in a kernel build; the benchmark
itself is fine with CONFIG_TESTING_ARCH_LIBC_BENCH=y and the per-function
options off. A fix is owed there.
| # | Branch | Cmts | PR | Status | Depends on |
|---|---|---|---|---|---|
| 3 | eic7700x-feature-bringup |
7 | #19863 | approved | — |
| 4 | eic7700x-feature-clk |
3 | #19865 | draft — arch commit only, master-based; CI composes with 3 via Depends-On: (verified green); the two board commits join after 3 merges |
3 |
| 5 | eic7700x-feature-reset |
2 | — | blocked | 3 |
| 6 | eic7700x-feature-pinctrl |
2 | — | blocked | 3 |
| 8 | eic7700x-feature-pinctrl-procfs |
2 | — | blocked | 6, 7 |
| 10 | eic7700x-feature-reset-procfs |
2 | — | blocked | 5, 9 |
| 13 | eic7700x-feature-gpio |
2 | — | blocked | 3, 6, 11 |
| 15 | eic7700x-feature-mshc |
3 | — | blocked | 3, 4, 14 |
| 16 | eic7700x-feature-ethernet |
2 | — | blocked | 3, 4, 15 |
| 17 | eic7700x-feature-leds |
1 | — | blocked | 3, 13, 15 |
| 18 | eic7700x-feature-i2c |
2 | — | blocked | 15, 17 |
| 25 | eic7700x-feature-i2c-devices |
1 | — | blocked | 18, 19, 22, 23, 24 |
| 26 | eic7700x-feature-spi-devices |
2 | — | blocked | 3, 4 |
| 27 | eic7700x-feature-pvt |
1 | — | blocked | 3, 4 |
| 28 | eic7700x-feature-pwm |
1 | — | blocked | 3, 4, 13 |
| 29 | eic7700x-feature-fan |
1 | — | blocked | 28 |
| 30 | eic7700x-feature-cpuclk |
1 | — | blocked | 3, 4 |
| 31 | eic7700x-feature-watchdog |
1 | — | blocked | 3, 4 |
| 32 | eic7700x-feature-rtc |
1 | — | blocked — on-die clock is now /dev/rtc0, and carries the up_rtc_initialize() stub |
3, 4 |
| 33 | eic7700x-feature-timer |
1 | — | blocked | 3, 4 |
| 34 | eic7700x-feature-hdmi |
2 | — | WIP — EDID is unreadable on this board | 3, 4 |
| 39 | eic7700x-feature-usb |
2 | — | blocked | 3, 4, 15, 16, 35-38 |
| 41 | eic7700x-feature-devfreq |
1 | — | blocked | 3, 29, 40 |
| 44 | eic7700x-feature-hpd |
3 | — | blocked | 34 |
| 45 | eic7700x-feature-cec |
2 | — | blocked | 3, 4, 42, 43, 44 |
| Merged | PR | Branch | Change |
|---|---|---|---|
| 2026-08-17 | #19745 | upstream-xhci-conformance |
xHCI fixes for a conforming controller: register access widths, optional scratchpad, halt and PORTSC handling, command completion |
| 2026-08-17 | #19856 | upstream-riscv-strlcpy-align |
correct the RISC-V optimized string functions; align strlcpy's destination, compare a register at a time on equal offsets |
| 2026-08-16 | #19864 | upstream-debug-levels |
drivers/pinctrl, drivers/clk: debug output levels |
| 2026-08-09 | #19744 | upstream-usbhost-hidkbd |
do not unregister a HID keyboard twice |
| 2026-08-09 | #19733 | upstream-sched-mutex-holder |
keep a negative task id out of the holder |
| 2026-08-08 | #19751 | upstream-usbhost-announce |
report each device as it is enumerated |
| 2026-08-08 | #19750 | upstream-usbhost-msc-partitions |
register the partitions on a mass storage device |
| 2026-08-08 | #19743 | upstream-usbhost-xhci-trace |
define the xHCI endpoint-allocation trace |
| 2026-08-08 | #19742 | upstream-usbhost-registry |
refuse to register the same class driver twice |
| 2026-08-08 | #19734 | upstream-sigtimedwait |
unblock sigtimedwait through kernel memory |
| 2026-08-08 | #19732 | upstream-ramlog |
survive writes made before the OS is up |
| 2026-08-08 | #19731 | upstream-fat-lfn-blank-alias |
restore the no-short-name marker |
| 2026-08-08 | #19730 | upstream-netdb-dns-answer-bounds |
size an answer by its header |
| Merged | PR | Branch | Change |
|---|---|---|---|
| 2026-08-08 | apps#3709 | upstream-lvglterm-shell |
lvglterm shell fixes |
| 2026-08-08 | apps#3708 | upstream-fbcon-builtin |
fbcon as a builtin |
| 2026-08-08 | apps#3707 | upstream-import-libnx |
import libnx |
| Closed | PR | Why |
|---|---|---|
| 2026-08-15 | #19735 | superseded by #19856 and #19857 |
| 2026-08-09 | #19737 | RFC for a cpufreq framework; withdrawn |
Work we know we want, not yet a branch.
| # | Item | Why | Relates to |
|---|---|---|---|
| T1 | A lower half for external RTC chips, so an I2C clock can be a /dev/rtcN again |
Every external RTC driver in drivers/timers (ds3231, pcf85263, mcp794xx, rx8010, and ours) implements only the up_rtc_* hooks. That gives the system clock and nothing else: no way to read or set the chip without moving CLOCK_REALTIME with it, and no RTC_RD_TIME/RTC_SET_TIME ioctl. Of 57 rtc_initialize() call sites in the tree, not one uses an external I2C chip as the lower half. The PCF8563 driver originally had one and it was removed rather than be the only driver of its kind, so the right fix is at framework level and all five drivers gain it at once. On the EVB that brings the PCF8563 back as /dev/rtc1 beside the on-die clock at rtc0. |
19, 32 |
| T2 |
CONFIG_RTC_ARCH cannot coexist with any external RTC driver |
Both drivers/timers/arch_rtc.c and each external chip driver define volatile bool g_rtc_enabled, so enabling both fails to link with multiple definition of 'g_rtc_enabled' (confirmed on RISC-V ELF). Nothing in Kconfig prevents the combination. Pre-existing and identical across all five drivers, and probably has to be settled as part of T1, since arch_rtc.c is the existing bridge between a lower half and the up_rtc_* hooks. |
T1, 19 |
| T3 |
clock_initialize() calls up_rtc_initialize() even when the clock is external |
It does so under #if defined(CONFIG_RTC), immediately below its own comment saying an external clock must be brought up after the system has booted. A board whose only timekeeper is external therefore does not link without a stub. boards/arm/stm32u5/nucleo-u5a5zj-q carries one with a comment saying it should not be there, and ours carries one in eic7700x_rtc.c for the same reason. Fixing it upstream removes both. |
19, 32 |
| T4 | apps#3706 does not link in a kernel build | The per-function tests in arch_libc_test_main.c call perf_gettime(), which is arch-internal and absent from syscall.csv. The benchmark itself is fine, so the table in #19857 is reproducible with CONFIG_TESTING_ARCH_LIBC_BENCH=y and the per-function options off. #19857's body promises this fix. |
1, apps#3706 |
The numbers are stable identifiers in the manifest's original merge order.
A branch keeps its number for life, so a merged and retired branch leaves a
gap rather than renumbering everything below it and invalidating every
Depends on reference. Number 2 is such a gap.
Depends-On: composes textually independent changes only: CI cherry-picks
the dependency's commits on top of the PR branch, so it cannot express a
series where a later PR restructures what an earlier one touched. Those
merge in sequence, each rebasing as its predecessor lands (verified by
experiment on 36 vs 35, 2026-08-18).
Dependencies are code-level: a branch is listed as depending on another
only when it calls into it or needs its Kconfig symbol. Branches that
merely touch the same board files (defconfigs, eic7700x_bringup.c, the
board documentation) are not listed, since every port branch touches
those.
build-html is the CI gate that catches documentation mistakes, and it is
worth running before pushing any branch that edits an .rst file: install
the Documentation/Pipfile packages plus sphinxcontrib-plantuml, then
sphinx-build -W -b html . <out>. RST heading levels are assigned by order
of first use within a file, so a new subsection has to reuse the underline
character that file already uses at that depth.
The whole stack builds for both boards and boots on the EIC7700 EVB; "blocked" means only that a prerequisite is not upstream yet.