I am working on a new i.MX6ULL project, and noticed this in the boot of the device:
[ 3.880499] genirq: Flags mismatch irq 59. 00000004 (2284000.rng) vs. 00000004 (2284000.rng)
[ 3.908114] imx_rngc 2284000.rng: Can't get interrupt working.
[ 3.914004] imx_rngc: probe of 2284000.rng failed with error -16
I did not change the imx_rngc from this file:
https://github.com/Freescale/linux-fslc/blob/5.10.x%2Bfslc/arch/arm/boot/dts/imx6ull.dtsi#L71
To me, -16 implies some other driver already had interrupt 6?
rngb: rng@2284000 {
compatible = "fsl,imx6ull-rngb", "fsl,imx25-rngb";
reg = <0x02284000 0x4000>;
interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX6UL_CLK_DUMMY>;
};
./soc/bus@2200000/rng@2284000/interrupts: 00000000: 00000000 00000006 00000004
I have dumped every "interrupts" property in device tree and cannot find another 00000006 value. So why is this happening?
Solved! Go to Solution.
I looked at this repository:
imx-rng from kernel.org
By using the imx-rng driver from kernel.org from commit 70564215ad927588dbea30472624cfd9e79d7c36 the issue went away, and the interrupt is properly allocated.
This is /proc/interrupts:
bash# cat /proc/interrupts
CPU0
17: 2443 GPC 55 Level i.MX Timer Tick
18: 0 GPC 94 Level arm-pmu
19: 17 GPC 13 Level
20: 5 GPC 15 Level bch
21: 0 GPC 32 Level 200c000.spi
22: 53 GPC 26 Level 2020000.serial
33: 0 GPC 120 Level 20b4000.ethernet
34: 0 GPC 121 Level 20b4000.ethernet
35: 0 GPC 80 Level 20bc000.watchdog
41: 0 GPC 20 Level caam-snvs
42: 0 GPC 19 Level rtc alarm
47: 0 GPC 2 Level sdma
48: 450 GPC 43 Level 2184000.usb
49: 0 GPC 42 Level 2184200.usb
50: 0 GPC 118 Level 2188000.ethernet
51: 0 GPC 119 Level 2188000.ethernet
52: 173 GPC 22 Level mmc0
53: 334 GPC 23 Level mmc1
54: 81 GPC 38 Level 21a8000.i2c
57: 0 GPC 27 Level 21e8000.serial
58: 0 GPC 28 Level 21ec000.serial
59: 0 GPC 29 Level 21f0000.serial
60: 0 GPC 46 Level dcp-vmi-irq
61: 0 GPC 47 Level dcp-irq
63: 1 GPC 6 Level
83: 0 gpio-mxc 19 Edge 21e8000.serial
GPC 6 appears to have no driver, but the CPU appears to be interrupted one time? What driver code change are you referring? Your link points to the source base, not a particular change.
bash# pwd
/proc/device-tree/soc/bus@2200000/rng@2284000
bash# xxd -g4 interrupts
00000000: 00000000 00000006 00000004 ............
From the err log, it seems like the issue with the driver code change, or you can have a check the /proc/interrupts, and refer to GitHub - nxp-imx/linux-imx at lf-5.10.y
Regards
Harvey
I looked at this repository:
imx-rng from kernel.org
By using the imx-rng driver from kernel.org from commit 70564215ad927588dbea30472624cfd9e79d7c36 the issue went away, and the interrupt is properly allocated.