Tool/software: Linux
Hi there, I have been trying to follow the instructions in this thread on changing the gpio interrupt priority: https://e2e.ti.com/support/arm/sitara_arm/f/791/t/523690
First of all i wanted to read the current value of the INTC_ILRm registers, I have tried both devmem2 and omapconf to read 0x48200100 but i always get the follwong error.
root:~# ./omapconf read 0x48200100
[ 6065.393717] Unhandled fault: external abort on non-linefetch (0x1018) at 0xb6e7d100
[ 6065.401448] pgd = dbb14000
[ 6065.404169] [b6e7d100] *pgd=9dfc4831, *pte=48200303, *ppte=48200a33
Even reading the INTC_REVISION register returns the same. So i've read other threads and I know that this error is returned when mapping memory for an unpowered and unclocked module. I can't see how the INTC module can be disabled since linux is booting and functioning correctly.
So i have also tried reading the INTC registers form the kernel driver irq-omap-intc. The following code builds and prints during boot but it always returns zero.
static int __init omap_init_irq_of(struct device_node *node)
{
int ret;
int i;
omap_irq_base = of_iomap(node, 0);
if (WARN_ON(!omap_irq_base))
return -ENOMEM;
domain = irq_domain_add_linear(node, omap_nr_irqs,
&irq_generic_chip_ops, NULL);
for (i = 0; i < omap_nr_irqs; i++)
{
pr_info("INTC_ILR reg:0x%x val: 0x%x\n", (omap_irq_base + (INTC_ILR0 + (0x4 * i))), intc_readl(INTC_ILR0 + 0x4 * i));//96
}
read_intc_irl_n();
omap_irq_soft_reset();
ret = omap_alloc_gc_of(domain, omap_irq_base);
if (ret < 0)
irq_domain_remove(domain);
return ret;
}
So is it normal that the INTC registers are not readable or is it somehow possible that INTC module isn't enabled? I can't see it being likely that the INTC module can be disabled and I can't find INTC power and clock enable registers in the PRCM.
Thanks in advance for any help you can offer.