MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / gicv3_irq_set_affinity

Function gicv3_irq_set_affinity

components/drivers/pic/pic-gicv3.c:523–542  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

521}
522
523static rt_err_t gicv3_irq_set_affinity(struct rt_pic_irq *pirq, rt_bitmap_t *affinity)
524{
525 rt_err_t ret = RT_EOK;
526 rt_uint64_t val;
527 rt_ubase_t mpidr;
528 rt_uint32_t offset, index;
529 int hwirq = pirq->hwirq, cpu_id = rt_bitmap_next_set_bit(affinity, 0, RT_CPUS_NR);
530
531 mpidr = rt_cpu_mpidr_table[cpu_id];
532
533 offset = gicv3_hwirq_convert_offset_index(hwirq, GICD_IROUTER, &index);
534 val = ((rt_uint64_t)MPIDR_AFFINITY_LEVEL(mpidr, 3) << 32 |
535 MPIDR_AFFINITY_LEVEL(mpidr, 2) << 16 |
536 MPIDR_AFFINITY_LEVEL(mpidr, 1) << 8 |
537 MPIDR_AFFINITY_LEVEL(mpidr, 0));
538
539 HWREG64(_gic.dist_base + offset + (index * 8)) = val;
540
541 return ret;
542}
543
544static rt_err_t gicv3_irq_set_triger_mode(struct rt_pic_irq *pirq, rt_uint32_t mode)
545{

Callers

nothing calls this directly

Calls 2

rt_bitmap_next_set_bitFunction · 0.85

Tested by

no test coverage detected