Lines Matching refs:chip
25 static bool itr_chip_is_valid(struct itr_chip *chip) in itr_chip_is_valid() argument
27 return chip && is_unpaged(chip) && chip->ops && in itr_chip_is_valid()
28 is_unpaged((void *)chip->ops) && in itr_chip_is_valid()
29 chip->ops->mask && is_unpaged(chip->ops->mask) && in itr_chip_is_valid()
30 chip->ops->unmask && is_unpaged(chip->ops->unmask) && in itr_chip_is_valid()
31 chip->ops->enable && chip->ops->disable; in itr_chip_is_valid()
34 static void __itr_chip_init(struct itr_chip *chip) in __itr_chip_init() argument
36 SLIST_INIT(&chip->handlers); in __itr_chip_init()
39 TEE_Result itr_chip_init(struct itr_chip *chip) in itr_chip_init() argument
45 if (!itr_chip_is_valid(chip) || !chip->ops->configure) in itr_chip_init()
48 __itr_chip_init(chip); in itr_chip_init()
53 TEE_Result itr_chip_dt_only_init(struct itr_chip *chip) in itr_chip_dt_only_init() argument
55 if (!itr_chip_is_valid(chip)) in itr_chip_dt_only_init()
58 __itr_chip_init(chip); in itr_chip_dt_only_init()
63 void interrupt_main_init(struct itr_chip *chip) in interrupt_main_init() argument
65 if (itr_chip_init(chip)) in interrupt_main_init()
68 itr_main_chip = chip; in interrupt_main_init()
111 void interrupt_call_handlers(struct itr_chip *chip, size_t itr_num) in interrupt_call_handlers() argument
116 assert(chip); in interrupt_call_handlers()
118 SLIST_FOREACH(h, &chip->handlers, link) { in interrupt_call_handlers()
128 EMSG("Mask unhandled interrupt %s:%zu", chip->name, itr_num); in interrupt_call_handlers()
129 interrupt_mask(chip, itr_num); in interrupt_call_handlers()
133 TEE_Result interrupt_configure(struct itr_chip *chip, size_t itr_num, in interrupt_configure() argument
136 if (!chip->ops->configure) { in interrupt_configure()
137 EMSG("No configure handler in itr_chip %s", chip->name); in interrupt_configure()
141 chip->ops->configure(chip, itr_num, type, prio); in interrupt_configure()
153 assert(hdl && hdl->chip->ops && is_unpaged(hdl) && in add_configure_handler()
156 SLIST_FOREACH(h, &hdl->chip->handlers, link) { in add_configure_handler()
161 hdl->chip->name, hdl->it); in add_configure_handler()
167 res = interrupt_configure(hdl->chip, hdl->it, type, prio); in add_configure_handler()
172 SLIST_INSERT_HEAD(&hdl->chip->handlers, hdl, link); in add_configure_handler()
196 .chip = itr_chip, in interrupt_create_handler()
223 SLIST_FOREACH(h, &hdl->chip->handlers, link) in interrupt_remove_handler()
227 DMSG("Invalid %s:%zu", hdl->chip->name, hdl->it); in interrupt_remove_handler()
233 SLIST_FOREACH(h, &hdl->chip->handlers, link) { in interrupt_remove_handler()
242 interrupt_disable(hdl->chip, hdl->it); in interrupt_remove_handler()
244 SLIST_REMOVE(&hdl->chip->handlers, hdl, itr_handler, link); in interrupt_remove_handler()
247 TEE_Result interrupt_alloc_add_conf_handler(struct itr_chip *chip, in interrupt_alloc_add_conf_handler() argument
261 *hdl = ITR_HANDLER(chip, itr_num, flags, handler, data); in interrupt_alloc_add_conf_handler()
356 unsigned int index, struct itr_chip **chip, in interrupt_dt_get_by_index() argument
362 assert(chip && itr_num); in interrupt_dt_get_by_index()
371 assert(itr_chip_is_valid(desc.chip)); in interrupt_dt_get_by_index()
372 *chip = desc.chip; in interrupt_dt_get_by_index()
380 struct itr_chip **chip, size_t *itr_num) in interrupt_dt_get_by_name() argument
388 return interrupt_dt_get_by_index(fdt, node, idx, chip, itr_num); in interrupt_dt_get_by_name()