Hi. What is the purpose of:
platform-quirks = <1>
...in DTS files? Does it relate to the WLCORE_QUIRK_ defines in wlcore.h?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Hi. What is the purpose of:
platform-quirks = <1>
...in DTS files? Does it relate to the WLCORE_QUIRK_ defines in wlcore.h?
Hi Peter,
Can you point me to where you see this option? Which kernel version are you using?
We are using kernel 5.10.72. This option is present in some documentation and also posts on this forum, for example:
Especially the last post indicates that this related to interrupts.
Also included but commented out here:
/cfs-file/__key/communityserver-discussions-components-files/968/devicetree.txt
So what is it?
Hi Peter,
I'm not sure myself. I've done a search of the entire kernel for "platform-quirks" and what I find is below. I guess that this property has been removed in newer kernels.
I have not used the "platform-quirks" property and do not see it in newer devicetrees. You can ignore this.
It is not related to the WLCORE_QUIRK_* macros in wlcore.h.
Yes, apparently this is removed from 4.1 and onwards:
commit 6f921fab5844941f7605b7f1a265f5fc7fe969a7 Author: Luciano Coelho <luca@coelho.fi> Date: Wed Mar 18 18:38:25 2015 +0200 wlcore: set irq_trigger in board files instead of hiding behind a quirk The platform_quirk element in the platform data was used to change the way the IRQ is triggered. When set, the EDGE_IRQ quirk would change the irqflags used and treat edge trigger differently from the rest. Instead of hiding this irq flag setting behind the quirk, have the board files set the irq_trigger explicitly. This will allow us to use standard irq DT definitions later on. Signed-off-by: Luciano Coelho <luca@coelho.fi> [Eliad - rebase, add irq_trigger field and pass it, update board file changes] Signed-off-by: Eliad Peller <eliad@wizery.com> Tested-by: Nikita Kiryanov <nikita@compulab.co.il> Acked-by: Kalle Valo <kvalo@codeaurora.org> Acked-by: Sekhar Nori <nsekhar@ti.com> Signed-off-by: Tony Lindgren <tony@atomide.com> diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c index 6b5a97da9fe3..916589ca8d44 100644 --- a/arch/arm/mach-davinci/board-da850-evm.c +++ b/arch/arm/mach-davinci/board-da850-evm.c @@ -1385,8 +1385,8 @@ static const short da850_wl12xx_pins[] __initconst = { static struct wl12xx_platform_data da850_wl12xx_wlan_data __initdata = { .irq = -1, + .irq_trigger = IRQ_TYPE_EDGE_RISING, .board_ref_clock = WL12XX_REFCLOCK_38, - .platform_quirks = WL12XX_PLATFORM_QUIRK_EDGE_IRQ, };
Thus I assume that it is sufficient to specify IRQ flags using the "interrupts" keyword in the DTS. Currently we are using this:
interrupts = <14 IRQ_TYPE_LEVEL_HIGH>;
Do you know if edge triggered interrupts are more suitable for imx6? The fact that all those links above specifies platform-quirks for IMX6 - which used to mean "Platform does not support level trigger interrupts" - indicates that...? How we can check if IRQ configuration is working?
I'm not familiar with IMX6 platforms specifically, but the wlcore drivers supports both level and edge. My suggestion is to use edge if you are concerned with it.
interrupts = <14 IRQ_TYPE_EDGE_RISING>;
You can check if IRQ is working if you are able to bring up the driver on your platform. You should also see the wlan0 interface in 'ifconfig'. If it is not working, you may share the dmesg logs.