Lines Matching defs:map

43 /* Initialise SDEI map entries */
44 static void init_map(sdei_ev_map_t *map)
46 map->reg_count = 0;
50 static sdei_class_t map_to_class(sdei_ev_map_t *map)
52 return is_event_critical(map) ? SDEI_CRITICAL : SDEI_NORMAL;
68 sdei_ev_map_t *map;
72 for_each_private_map(i, map) {
73 se = get_event_entry(map);
103 sdei_ev_map_t *map;
107 for_each_shared_map(i, map) {
110 assert((ev_num_so_far < 0) || (map->ev_num > ev_num_so_far));
112 ev_num_so_far = map->ev_num;
115 assert(map->ev_num != SDEI_EVENT_0);
118 assert(map->ev_num >= 0);
121 assert(is_event_shared(map));
124 assert(!is_event_signalable(map));
127 assert(!is_map_explicit(map));
131 if (map_to_class(map) != class)
135 if (is_map_dynamic(map)) {
136 assert(map->intr == SDEI_DYN_IRQ);
137 assert(is_event_normal(map));
141 assert(plat_ic_is_spi(map->intr) != 0);
142 set_map_bound(map);
145 init_map(map);
150 for_each_private_map(i, map) {
153 assert((ev_num_so_far < 0) || (map->ev_num > ev_num_so_far));
155 ev_num_so_far = map->ev_num;
157 if (map->ev_num == SDEI_EVENT_0) {
161 assert(is_secure_sgi(map->intr));
167 assert(map->map_flags == (SDEI_MAPF_SIGNALABLE |
171 assert(!is_event_signalable(map));
175 assert(map->ev_num >= 0);
178 assert(is_event_private(map));
184 if (is_map_explicit(map)) {
185 assert((map->map_flags | SDEI_MAPF_CRITICAL) ==
192 if (map_to_class(map) != class)
196 if (map->ev_num != SDEI_EVENT_0) {
197 if (is_map_dynamic(map)) {
198 assert(map->intr == SDEI_DYN_IRQ);
199 assert(is_event_normal(map));
201 } else if (is_map_explicit(map)) {
206 assert(map->intr == SDEI_DYN_IRQ);
212 assert(plat_ic_is_ppi((unsigned) map->intr) != 0);
213 set_map_bound(map);
217 init_map(map);
281 sdei_ev_map_t *map;
289 map = find_event_map(ev_num);
290 if (map == NULL)
294 if (is_event_private(map))
297 se = get_event_entry(map);
299 sdei_map_lock(map);
301 if (!is_map_bound(map) || is_event_private(map)) {
326 plat_ic_set_spi_routing(map->intr, routing, (u_register_t) mpidr);
329 sdei_map_unlock(map);
344 sdei_ev_map_t *map;
357 map = find_event_map(ev_num);
358 if (map == NULL)
362 if (is_event_private(map)) {
377 se = get_event_entry(map);
385 sdei_map_lock(map);
396 if (is_map_dynamic(map) && !is_map_bound(map))
399 if (is_event_private(map)) {
401 assert(map->reg_count >= 0);
404 assert(map->reg_count == 0);
407 if (is_map_bound(map)) {
409 if (plat_ic_get_interrupt_active(map->intr) != 0U)
413 if (plat_ic_get_interrupt_type(map->intr) != INTR_TYPE_NS)
420 plat_ic_disable_interrupt(map->intr);
429 plat_ic_clear_interrupt_pending(map->intr);
432 plat_ic_set_interrupt_type(map->intr, INTR_TYPE_EL3);
435 plat_ic_set_interrupt_priority(map->intr, sdei_event_priority(map));
441 if (is_event_shared(map)) {
444 plat_ic_set_spi_routing(map->intr, routing,
453 map->reg_count++;
455 sdei_map_unlock(map);
463 sdei_map_unlock(map);
471 sdei_ev_map_t *map;
477 map = find_event_map(ev_num);
478 if (map == NULL)
481 se = get_event_entry(map);
484 if (is_event_shared(map))
485 sdei_map_lock(map);
496 if (is_map_bound(map) && (!before && after))
497 plat_ic_enable_interrupt(map->intr);
502 if (is_event_shared(map))
503 sdei_map_unlock(map);
511 sdei_ev_map_t *map;
517 map = find_event_map(ev_num);
518 if (map == NULL)
521 se = get_event_entry(map);
524 if (is_event_shared(map))
525 sdei_map_lock(map);
536 if (is_map_bound(map) && (before && !after))
537 plat_ic_disable_interrupt(map->intr);
542 if (is_event_shared(map))
543 sdei_map_unlock(map);
552 sdei_ev_map_t *map;
559 map = find_event_map(ev_num);
560 if (map == NULL)
563 se = get_event_entry(map);
565 if (is_event_shared(map))
566 sdei_map_lock(map);
573 if (is_event_shared(map))
574 sdei_map_unlock(map);
578 return is_event_shared(map);
581 return !is_event_signalable(map);
584 return is_event_critical(map);
587 if (!is_event_shared(map))
594 if (!is_event_shared(map))
612 sdei_ev_map_t *map;
615 map = find_event_map(ev_num);
616 if (map == NULL)
619 se = get_event_entry(map);
627 sdei_map_lock(map);
640 map->reg_count--;
641 if (is_event_private(map)) {
643 assert(map->reg_count >= 0);
646 assert(map->reg_count == 0);
649 if (is_map_bound(map)) {
650 plat_ic_disable_interrupt(map->intr);
657 plat_ic_clear_interrupt_pending(map->intr);
659 assert(plat_ic_get_interrupt_type(map->intr) == INTR_TYPE_EL3);
660 plat_ic_set_interrupt_type(map->intr, INTR_TYPE_NS);
661 plat_ic_set_interrupt_priority(map->intr, LOWEST_INTR_PRIORITY);
674 sdei_map_unlock(map);
682 sdei_ev_map_t *map;
687 map = find_event_map(ev_num);
688 if (map == NULL)
691 se = get_event_entry(map);
693 if (is_event_shared(map))
694 sdei_map_lock(map);
699 if (is_event_shared(map))
700 sdei_map_unlock(map);
708 sdei_ev_map_t *map;
721 map = find_event_map_by_intr(intr_num, shared_mapping);
722 if (map != NULL) {
723 if (is_map_dynamic(map)) {
724 if (is_map_bound(map)) {
729 return map->ev_num;
742 map = find_event_map_by_intr(SDEI_DYN_IRQ, shared_mapping);
743 if (map == NULL)
747 assert(is_map_dynamic(map));
763 sdei_map_lock(map);
764 if (!is_map_bound(map)) {
765 map->intr = intr_num;
766 set_map_bound(map);
769 sdei_map_unlock(map);
772 return map->ev_num;
779 sdei_ev_map_t *map;
783 map = find_event_map(ev_num);
784 if (map == NULL)
787 if (!is_map_dynamic(map))
790 se = get_event_entry(map);
792 sdei_map_lock(map);
795 if (map->reg_count != 0) {
809 if (is_map_bound(map)) {
814 if (plat_ic_get_interrupt_active(map->intr) != 0U) {
824 map->intr = SDEI_DYN_IRQ;
825 clr_map_bound(map);
827 SDEI_LOG("Error release bound:%d cnt:%d\n", is_map_bound(map),
828 map->reg_count);
833 sdei_map_unlock(map);
841 sdei_ev_map_t *map;
846 for_each_private_map(i, map) {
852 ret = sdei_event_unregister(map->ev_num);
864 sdei_ev_map_t *map;
869 for_each_shared_map(i, map) {
875 ret = sdei_event_unregister(map->ev_num);
888 iterate_mapping(mapping, j, map) {
893 if (is_map_dynamic(map) && is_map_bound(map)) {
898 ret = sdei_interrupt_release(map->ev_num);
911 sdei_ev_map_t *map;
918 map = find_event_map(SDEI_EVENT_0);
919 if (map == NULL)
923 if (!is_event_signalable(map))
931 plat_ic_raise_el3_sgi((int) map->intr, (u_register_t) target_pe);