Skip to content

rocknix: Update 260801 - #430

Merged
aleksei74 merged 44 commits into
UzuCore:nextfrom
aleksei74:next
Aug 1, 2026
Merged

rocknix: Update 260801#430
aleksei74 merged 44 commits into
UzuCore:nextfrom
aleksei74:next

Conversation

@aleksei74

Copy link
Copy Markdown
Collaborator

Summary

  • What is the goal of this PR? (e.g. Bump up an emulator version, implement a new feature. )

Testing

  • How was this tested? (e.g. Built and tested on specific devices, manual testing steps, URLs for CI/CD build artifacts.)
  • Test results: (e.g. Screenshots, logs, performance metrics if applicable.)

Additional Context

  • Add any other information that might be helpful for the reviewer (e.g., performance implications, potential risks, specific areas to focus on.)

AI Usage

While ROCKNIX doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it
helps set the right context for reviewers.

Did you use AI tools to help write this code? YES | PARTIALLY | NO

andrebraga and others added 30 commits July 19, 2026 19:51
RTC regs are TZ-locked; rtc-pm8xxx stores wall-clock as an offset.
Android maintains that offset in userspace (time_daemon, persisted
to /persist), which ROCKNIX does not inherit, so the clock resets
to epoch every boot.

Back it with an nvmem cell in the always-on PMK8550 SDAM. 0x72 is
a free slot just below the ADSP-owned alarm-log at 0x76-0x7b,
verified on Odin 3 to survive cold power-off.
Make the AYN Odin 2's M1/M2 back buttons work; on stock ROCKNIX they
emit nothing. Same scheme as the AYN Odin 3 (ROCKNIX#2940):

They are not on the gamepad MCU UART (rsinput) and not ADC despite
AYN's Android "adckey"/keydetect.ko naming - they are plain active-low
SoC TLMM GPIOs: M1 = GPIO 57 -> BTN_Z, M2 = GPIO 58 -> BTN_C (TLMM
base 301 + offsets 57/58, RE'd from AYN's keydetect.ko gpio_request
358/359 and confirmed on hardware by watching the TLMM GPIO_IN
registers while pressing the buttons).

Mirror the Odin 3 integration on SM8550:
- add a gpio-keys-paddles node to the Odin 2 dts
- source it in the AYN composite device config
- route BTN_Z/BTN_C to Left/RightPaddle2 in ayn_mcu.yaml and switch
  the target to ds5-edge so the buttons are emitted as the DualSense
  Edge's real back-lever buttons (hid-playstation Edge support is
  already in the shared patches/mainline/0006)

Only the base Odin 2 wiring was verified on hardware; the Odin 2
Mini/Portal very likely share it but were not available for testing.
ARMSX2 (github.com/ARMSX2/ARMSX2) is the actively-developed native
ARM64 fork of PCSX2 that supersedes yaps2. Rename the yaps2-sa package
to armsx2-sa, repoint it at ARMSX2, and update the branding throughout:
ES emulator/core name (armsx2 / armsx2-sa), config dir
/storage/.config/ARMSX2, the armsx2-qt binary, plus docs and gamelist.

- Pin to ARMSX2 master 37ce96996c.
- Slim 000-fix-arm-compilation.patch down to just the cross-compile
  page/cache-line-size fallback. ARMSX2 upstreamed the
  CMAKE_HOST_SYSTEM_PROCESSOR -> CMAKE_SYSTEM_PROCESSOR arch-selection
  fix, but detect_page_size()/detect_cache_line_size() still
  FATAL_ERROR under CMAKE_CROSSCOMPILING, so the fallback is retained.
- Fix the cheevos script to target the real ini files (PCSX2.ini /
  secrets.ini) instead of the never-present YAPS2.ini / security.ini.
- Make the BIOS path consistent (/storage/roms/bios/armsx2 in both the
  launcher and the shipped PCSX2.ini).
bugfix : add missing serial number check to sm8550
armsx2-sa: replace yaps2-sa with the ARMSX2 PS2 emulator
rocknix: post-update cleanup, copy bios for armsx2
CI: move freeze period check to separate workflow
CI: preserve gh-cli in update mirror sources workflow
ncurses: Add SHA256 checksum for ncurses
Pulls in SM8750/qcom/sm8750/konkr/pfe/ (ADSP/CDSP, battmgr, aw88261_acf)
and SM8750-KONKR-tplg.bin, required by the KONKR PFE board support that
follows. Also picks up the SM8250 Mangmi Pocket Max firmware added
upstream in the same range; no existing file changes.
Board DTS ships as a plain file under devices/SM8750/linux/dts/qcom,
which the linux package rsyncs into the kernel tree; the config.xml
entry drives the dtb build target.
Both devices' pre_make_target copies GPU firmware out of the
kernel-firmware build dir, but neither declared it as an unpack
dependency, so a parallel build could re-unpack kernel-firmware while
that copy was in flight.
SPI MCU gamepad: buttons/axes/triggers + FF rumble, threaded IRQ with a
poll watchdog fallback, and suspend/resume PM ops.
Two AW88261 amps on QUAT MI2S with the vendor ACF calibration blob, and
a KONKR ALSA UCM profile instead of reusing the Odin3 one -- that
profile defines "Headphones" twice, the second time on the
MI2S/speaker PCM, so the jack would play out of the speakers.
Integrated 3.5mm jack via the wcd939x USBSS analog switch,
stale-MBHC-jack clear on mechanical removal, and HPH PCM (HiFi) playback
mode.

HPH PCM mode is driven from the UCM Headphones sequence, and
qcom,pcm-ports-mask for the HIFI_PCM master port sits on the board's own
&swr1 node rather than the shared AYN dtsi.
- Kernel serdev driver decodes the MCU UART framing for the 5 system
  buttons and drives the stick RGB; merged with the SPI gamepad into one
  virtual pad via InputPlumber.
- LED-blank and TX-inhibit across suspend via a PM notifier (the geni
  UART TX wedges if written during the device-suspend window).
- Board DTS gains the geni SE5 UART node and its serdev child.
- Composite target is ds5-edge, matching the Odin 3 on this
  platform. The two extra shoulder buttons become the Edge's
  back-lever buttons; the remaining front buttons go to keyboard
  F1..F3.
pmk8550's RTC counter is write-protected, so rtc-pm8xxx persists a
settable time via an offset nvmem cell. Add rtc_offset@bc in
pmk8550_sdam_2 and point pmk8550_rtc at it — RTC_SET_TIME no longer
returns -ENODEV and wall-clock survives cold boots.

Wired from the board DTS rather than the shared pmk8550.dtsi, so the
other SM8750 board that includes it is untouched.
The SoC's GPU zones are typed gpuss0..gpuss7 (no dash), so the gpuss-*
pattern matched nothing and the fan curve tracked CPU temperature only.
Patch 0509: pmic_glink_altmode treats a NULL typec_mux/typec_switch as
success, so when the connector's mode-switch supplier (wcd_usbss on
I2C) has not registered yet the driver runs permanently without
SBU/DP-AUX routing and USB-C DP output never comes up. Return
-EPROBE_DEFER instead.
spycat88 and others added 14 commits July 30, 2026 22:21
…-offset

SM8750: persist RTC offset in SDAM
SM8550: AYN Odin 2 - expose the two back buttons as gpio-keys
Update kernel configs/device documentation
Device quirk sets DEVICE_ANALOG_STICKS_LED_CONTROL for the
EmulationStation analog-stick LED menu; bin/analog_sticks_ledcontrol
drives the konkr:rgb:joysticks multicolor LED registered by
konkr_sysbtn. The MCU frame carries one rgb triple for both rings, so
the per-stick colors are combined channel-wise. Boot restore comes
from platform 030-analog_leds.
bin/ledcontrol implements off/rgb/battery for the EmulationStation
LED color list and blanks the rings for led-poweroff.service;
bin/battery_led_status colors them by charge level while that mode
is selected, waiting out the EAGAIN qcom-battmgr returns before its
ADSP link is up. The rings are this device's only LEDs, so both
drive konkr:rgb:joysticks.
SM8750 konkr pocket fit elite add joystick stick led support
some emulators needs the mapping to be fixed,
we need to move all our targets using InputPlumber to ds5-edge

@xiaodoudou @aanze @slaide
this will be addressed properly after our next release
@aleksei74
aleksei74 merged commit 170a63b into UzuCore:next Aug 1, 2026
0 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants