← Back to Blog 0.7.0 · KERNEL · HAL

HAL Batch 21 — SecBoot/OpenFW + ANE-Sched/GMAC + DispPipe/ADT746x + AudioDSP/Snapper

June 23, 2026 · Sigil-Docs · sigil-kernel ee31fe6 + 3bb1ffe + 5cc5dbb + 5124a99
kernel hal apple-silicon powerpc hardware 0.7.0

Four sigil-kernel commits extend the HAL arch matrix from 0x534000 to 0x53B000, adding 8 seams: Apple Secure Boot Policy Engine, G3/G4/G5 Open Firmware, Apple ANE scheduler, G4/G5 GMAC GigE Ethernet, Apple display pipe/timing, G4/G5 ADT746x I2C thermal, Apple audio DSP, and G4/G5 Snapper/Screamer audio codec.

ee31fe6 — Secure Boot + Open Firmware

apple_secboot.sg (0x534000)
Secure Boot Policy Engine — Full/Reduced/Permissive security levels, signed-object check gate, kext TeamID approval, MDM enroll, iBoot nonce + boot epoch, production fuse, System Integrity Protection. secboot_init(), secboot_set_level(level), secboot_check_object(signed), secboot_enroll_mdm(ok), secboot_nonce_valid(nonce), accessors. SBP init=1 chk=1 mdm=1 K.
ppc_openfw.sg (0x535000)
Open Firmware (IEEE 1275) — device-tree parse (nodes+properties), /memory and /chosen parse, client interface calls, quiesce. openfw_init(), openfw_parse_devtree(), openfw_memory_size(), openfw_chosen_boot(), openfw_client_call(method), openfw_quiesce(), accessors. OFW init=1 prs=1 qui=1 K.

3bb1ffe — ANE Scheduler + GMAC Ethernet

apple_ane_sched.sg (0x536000)
ANE Scheduler — model load/evict against weight cache, per-priority inference queue, TOPS/ops accounting, thermal throttle, clock gating. ane_sched_init(), ane_model_load(model_size), ane_model_evict(), ane_infer_queue_submit(priority, ops), ane_thermal_throttle(active), ane_clock_gate(v), accessors. ANS init=1 inf=1 thr=1 K.
ppc_gmac.sg (0x537000)
GMAC/Sungem GigE — PHY autoneg (speed/duplex/pause), TX/RX with byte accounting, HW checksum offload, multicast filter, CRC errors. gmac_init(), gmac_phy_autoneg(), gmac_link_speed(), gmac_tx(bytes), gmac_rx(bytes), gmac_crc_error(), accessors. GMC init=1 lnk=1 txrx=1 K.

5cc5dbb — display pipe + ADT746x thermal

apple_disppipe.sg (0x538000)
display pipe/timing — timing generator (pclk, refresh), 4-plane composition mask, HDR/10bpc, page-flip + VBlank, gamma + 3D LUT loads, underrun counter. disppipe_init(), disppipe_timing(width, height, refresh_hz), disppipe_plane_enable(plane), disppipe_pageflip(addr), disppipe_hdr_enable(v), disppipe_underrun(), accessors. DPP init=1 tim=1 flp=1 K.
ppc_adt746x.sg (0x539000)
ADT7460/7467 I2C thermal+fan — 3 temp channels, automatic PWM fan curve (T_min/T_range), tach RPM, THERM# overtemp assertion. adt_init(), adt_temp_read(channel), adt_fan_set_curve(t_min, t_range), adt_fan_rpm(), adt_overtemp_assert(), accessors. ADT init=1 tmp=1 thr=1 K.

5124a99 — Audio DSP + Snapper codec

apple_audiodsp.sg (0x53A000)
audio DSP — I2S/SoundWire, playback+capture DMA rings, sample-rate conversion, multi-channel route mask, spatial audio, mic array, CS35L41 amp protection. audiodsp_init(), audiodsp_playback_ring_submit(bytes), audiodsp_capture_ring_read(), audiodsp_srate_convert(src_rate, dst_rate), audiodsp_route_mask(mask), audiodsp_spatial_audio(v), accessors. ADS init=1 play=1 cap=1 K.
ppc_snapper.sg (0x53B000)
Snapper/Screamer/Onyx codec — I2S start, DBDMA playback, I2C codec writes (volume/DRC), headphone-detect mute, Screamer 44.1k lock. snapper_init(), snapper_i2s_start(rate), snapper_dbdma_play(addr, bytes), snapper_volume_set(db), snapper_drc_enable(v), snapper_headphone_detect(), accessors. SNP init=1 dma=1 hp=1 K.

Arch matrix now at 0x53B000.