staticvoid __exception_irq_entry tzic_handle_irq(struct pt_regs *regs)
{
u32 stat; int i, irqofs, handled;
do {
handled = 0;
for (i = 0; i < 4; i++) {
stat = imx_readl(tzic_base + TZIC_HIPND(i)) &
imx_readl(tzic_base + TZIC_INTSEC0(i));
while (stat) {
handled = 1;
irqofs = fls(stat) - 1;
generic_handle_domain_irq(domain, irqofs + i * 32);
stat &= ~(1 << irqofs);
}
}
} while (handled);
}
/* * This function initializes the TZIC hardware and disables all the * interrupts. It registers the interrupt enable and disable functions * to the kernel for each interrupt source.
*/ staticint __init tzic_init_dt(struct device_node *np, struct device_node *p)
{ int irq_base; int i;
tzic_base = of_iomap(np, 0);
WARN_ON(!tzic_base);
/* put the TZIC into the reset value with * all interrupts disabled
*/
i = imx_readl(tzic_base + TZIC_INTCNTL);
/** * tzic_enable_wake() - enable wakeup interrupt * * @return 0 if successful; non-zero otherwise * * This function provides an interrupt synchronization point that is required * by tzic enabled platforms before entering imx specific low power modes (ie, * those low power modes beyond the WAIT_CLOCKED basic ARM WFI only mode).
*/ int tzic_enable_wake(void)
{ unsignedint i;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.