feat(intc): DSS INTC driver implementation and host unit tests #108
No reviewers
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!108
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/107-dss-intc-driver"
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 is fundamentally two separate mechanisms, unlike the MSS/R4F's single VIM: (1) the memory-mapped, host-testable Interrupt Selector this driver covers —hal_dss_intc_map_event_to_vector()/_get_event_for_vector()program/read back which of up to 128 SoC-wide system events lands on which CPU interrupt (INT4-INT15, viaINTMUX1-3),hal_dss_intc_event_flag()/_set()/_clear()/_mask()/_unmask()operate on individual event flags,hal_dss_intc_check_dropped_event()/_clear_dropped_event()decodeINTXSTATdrop detection; and (2) the CPU's own non-memory-mapped interrupt state (IER/ICR/ISTP/CSR.GIE), covered byhal_dss_intc_enable_vector()/_disable_vector()/_clear_vector_pending()/_set_vector_table()/_enable_global_interrupts()/_disable_global_interrupts(), allcl6x-only (TI-compiler__cregisterextensions, guarded#if defined(_TMS320C6X)) and absent entirely from the host-test build — there is no fake-register shim possible for non-addressable compiler registers.Carries forward an empirically-confirmed open hardware risk from this project's prior investigation, documented in the header's 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 (landing in INT15's vector instead of the intended one) — root cause unresolved, flagged as a known, open risk rather than a solved problem.
Why
Continues the DSS-side driver batch (Mailbox, EDMA, VIM, DSS ADCBUF already landed) with system-event-to-CPU-vector routing for the DSS core.
Related Issue
Closes #107
Type of Change
Impact Assessment
Testing
testing/dss/intc/test_dss_intc_functionallocally (7 test cases, 41 assertions, all passing) alongside the full existingctestsuite (373/373 passing, no regressions); ran a full MISRA C:2025 pass (0 unsuppressed findings,-DENABLE_DSS_INTC_MODULEadded); reformatted and re-verified against the exact clang-format 18.1.3 the CI runner uses; sanity-checked by wideninghal_dss_intc_map_event_to_vector()'s packed-field mask from0x7FULto0xFFUL(clobbering the reserved bit), confirming the test suite fails (1 assertion), then reverting.PR Size
Size justification / exemption (if L or XL):
663 raw lines across 6 files, all hand-reviewed (no mechanically-generated content). Not split further — the driver (
hal_dss_intc.c/.h, 485 lines, most of it the.h's doc comments and the two-mechanism hardware-caveat explanation) and its Catch2 spec (test_dss_intc.c, 169 lines) don't decompose into independently-reviewable sub-PRs, same rationale as every prior driver PR in this project. The remaining files are small CMake/MISRA wiring diffs, also not independently reviewable apart from the driver they enable.Checklist
type(scope): descriptionconvention withRelates to #<issue>footerSummary
hal/dss/intc/hal_dss_intc.c/.h: DSS INTC (C674x Interrupt Selector) driver — memory-mapped event-to-vector routing, event flag/set/clear/mask, dropped-event detection; cl6x-only CPU cregister functions guarded#if defined(_TMS320C6X)testing/dss/intc/test_dss_intc.c(+CMakeLists.txt, target namedtest_dss_intc_functionalto avoid a collision withti_hal_comparison/test_dss_intc.c): Catch2 functional test suite for the memory-mapped APItesting/CMakeLists.txt:add_subdirectory(dss/intc)andENABLE_DSS_INTC_MODULEin the sharedhw_fakescompile definitionstools/misra/run_misra.sh:-DENABLE_DSS_INTC_MODULEadded