feat: DSS INTC driver implementation and host unit tests #107
Labels
No labels
Category
App
Category
Documentation
Category
Firmware
Category
Hardware
Category
Qms
PR_Size
L
PR_Size
M
PR_Size
S
PR_Size
XL
PR_Size
XS
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Priority
Very Low Priority
Size
Epic
Size
Feature
Size
Task
Status
Blocked
Status
Draft
Status
Needs-review
Team
Board
Team
Dev
Team
Management
Type
Bug
Type
Capa
Type
Improvement
Type
New-feature
Type
Regulatory
Type
Usability
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
opendutchsolutions.public/hal_awr6843#107
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Description
Adds
hal/dss/intc/hal_dss_intc.c/.h— the C674x DSP's Interrupt Selector driver. The C674x's interrupt architecture has no counterpart to the MSS/R4F's VIM — it's two separate mechanisms, and this driver covers the memory-mapped, host-testable one: the Interrupt Selector, which latches/combines up to 128 SoC-wide system events and lets software program which event lands on which of the 12 usable CPU interrupts (INT4-INT15, viaINTMUX1-3).hal_dss_intc_map_event_to_vector()/hal_dss_intc_get_event_for_vector()program/read back that routing;hal_dss_intc_event_flag()/_set()/_clear()/_mask()/_unmask()operate on individual event flags;hal_dss_intc_check_dropped_event()/_clear_dropped_event()handleINTXSTATdrop detection. A second set of functions (hal_dss_intc_enable_vector(),_disable_vector(),_clear_vector_pending(),_set_vector_table(),_enable_global_interrupts(),_disable_global_interrupts()) covers the CPU's own non-memory-mapped interrupt state (IER/ICR/ISTP/CSR.GIE) — these arecl6x-only (TI-compiler__cregisterextensions, guarded#if defined(_TMS320C6X)) and absent entirely from the host-test build, since there is no fake-register shim possible for non-addressable compiler registers.Documents an empirically-confirmed open hardware risk in its top-of-file comment: even with a fully TRM/SPRUFK5A-correct register sequence, a bare hand-rolled ISR (no SYS/BIOS-style dispatcher) has been observed to occasionally mis-dispatch on real AWR6843 silicon — root cause unresolved, flagged as a known risk rather than a solved problem.
Use Case / Rationale
As a firmware developer, I need a
hal_dss_intc_*API for DSS-side system-event-to-CPU-vector routing, continuing the DSS-side driver batch (Mailbox, EDMA, VIM, DSS ADCBUF already landed).As a QMS reviewer, I need a host-native Catch2 test suite (
testing/dss/intc/test_dss_intc.c) covering the memory-mapped register API's bounds checking and bit-packing math, runnable in CI without target hardware — thecl6x-only CPU-register functions are outside what a host build can exercise at all, and are excluded from this test suite by the same#if defined(_TMS320C6X)guard the driver itself uses.Acceptance Criteria
hal/dss/intc/hal_dss_intc.c/.himplemented against this project's currenthal/registers/component/dss_intc.h/instance/dss_intc.htesting/dss/intc/test_dss_intc.cpasses underctestFunctional Impact
None — self-contained addition alongside the already-landed Mailbox/EDMA/VIM/DSS-ADCBUF drivers.
Regulatory Impact
None
QMS Impact
None
Risk Impact
No new risk beyond the documented, pre-existing, unresolved hand-rolled-ISR dispatch-reliability caveat this driver's header carries forward from prior hardware investigation — existing risk coverage otherwise sufficient.
Related Issues / PRs
Relates to #4, relates to #99, relates to #101, relates to #103, relates to #105