← Blog
0.7.0 · KERNEL · HAL

HAL Batch 13 — Continuity Camera/DIMM-SPD + SIO/RTAS (sigil-kernel 3d122ea+94e373e)

June 23, 2026 · sigil-kernel 3d122ea + 94e373e · Sigil-Docs
kernel hal apple-silicon powerpc hardware 0.7.0

Two sigil-kernel commits push the HAL arch matrix from 0x502000 to 0x505000, adding 4 seams: Apple Continuity Camera bridge, G3/G4/G5 DIMM SPD + JC42 thermal sensors, Apple SIO Smart I/O hub, and G5/POWER RTAS firmware interface.


3d122ea — Continuity Camera + DIMM SPD

apple_contcam.sg (0x502000)
Continuity Camera bridge. Continuity Camera lets a nearby iPhone act as a Mac's webcam. contcam_init(): zeros state; initialises 4-slot device table. contcam_start(slot, quality): starts video capture — slot is the device table entry (0–3), quality sets the capture quality (0=360p, 1=720p, 2=1080p, 3=4K); sets VIDEO_ON=1 for that slot. contcam_stop(slot): stops capture; clears VIDEO_ON. contcam_frame(slot): simulates receiving a video frame — increments frame_count[slot]. contcam_video_on(slot) / contcam_frame_count(slot): status accessors. CCM init=1 str=1 frm=1 K.
ppc_spd.sg (0x503000)
DIMM SPD + JC42 thermal sensors (G3/G4/G5). DIMM SPD (Serial Presence Detect) is a small I2C EEPROM on each DIMM that describes its capacity, speed, CAS latency, and voltage. JC42 is the JEDEC thermal sensor on DDR2/DDR3 DIMMs. spd_init(): zeros 4-slot probe table. spd_probe(slot, type, mib, bus_mhz, cas): probes a DIMM at slottype sets DDR=0/DDR2=1/DDR3=2; mib is the capacity in MiB (e.g. 1024 for 1 GB); bus_mhz is the bus frequency; cas is the CAS latency. Adds mib to total_ram_mib. spd_set_temp(slot, temp_c): sets the JC42 thermal sensor reading for slot in degrees Celsius. spd_total_ram_mib() / spd_slot_mib(slot) / spd_bus_mhz(slot) / spd_cas(slot) / spd_temp(slot): accessors. SPD init=1 dim=1 tmp=1 K.

94e373e — SIO Smart I/O hub + G5 RTAS

apple_sio_ctrl.sg (0x504000)
Apple SIO (Smart I/O) hub. The SIO chip on Apple Silicon Macs is a microcontroller managing the keyboard, trackpad, ALS (ambient light sensor), lid sensor, and battery gauge — all over a low-speed serial fabric. sio_init(): zeros state; sets FW version. sio_cmd(cmd): submits a command to the 8-slot ring; sets BUSY=1. sio_complete(): completes the oldest ring entry; clears BUSY. sio_attach_kbd() / sio_attach_tp(): sets kbd_attached=1 / tp_attached=1 (keyboard/trackpad connected). sio_set_als(lux): sets ambient light sensor reading. sio_set_lid(open): sets lid state (1=open). sio_set_battery(pct): sets battery percentage. sio_fw_version() / sio_busy(): accessors. SIC init=1 cmd=1 cpl=1 K.
ppc_rtas.sg (0x505000)
G5/POWER RTAS (Runtime Abstraction Services) firmware interface. RTAS is an IBM POWER firmware interface — a small blob of code that stays resident after boot, providing token-dispatched runtime services: power management, machine-check error recovery, PCI hot-plug, and EEH (Enhanced Error Handling) for PCI-X. rtas_init(blob_phys): registers the RTAS blob at physical address blob_phys. rtas_call(token, nargs, nret, args): dispatches a token-based RTAS call — power=1 (power-on/off operations), reset=2 (system reset), EEH=3 (freeze/thaw a PCI slot). Increments power_calls / reset_calls / eeh_calls counter for the category. rtas_hotplug_event(slot, action): records a hot-plug event (action: 0=remove, 1=insert) for PCI slot slot; increments hotplug_events. rtas_blob_phys() / rtas_power_calls() / rtas_eeh_calls(): accessors. RTS init=1 cal=1 eeh=1 K.

Arch matrix now at 0x505000.