Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752813Ab3ILLKP (ORCPT ); Thu, 12 Sep 2013 07:10:15 -0400 Received: from h1446028.stratoserver.net ([85.214.92.142]:44291 "EHLO mail.ahsoftware.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751390Ab3ILLKN (ORCPT ); Thu, 12 Sep 2013 07:10:13 -0400 Message-ID: <5231A0F8.1070505@ahsoftware.de> Date: Thu, 12 Sep 2013 13:09:44 +0200 From: Alexander Holler User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130805 Thunderbird/17.0.8 MIME-Version: 1.0 To: Javier Martinez Canillas CC: Linus Walleij , Laurent Pinchart , Grant Likely , Linux Kernel Mailing List , "linux-arm-kernel@lists.infradead.org" , Linux-OMAP , "devicetree@vger.kernel.org" , Enric Balletbo i Serra , Jean-Christophe PLAGNIOL-VILLARD , Santosh Shilimkar , Kevin Hilman , Balaji T K , Tony Lindgren , Jon Hunter Subject: Re: [PATCH] RFC: interrupt consistency check for OF GPIO IRQs References: <1375101368-17645-1-git-send-email-linus.walleij@linaro.org> <344239800.bDEkDg48ZQ@avalon> <52308C91.2000105@ahsoftware.de> <523096FE.8080901@collabora.co.uk> <5230AB6E.1070807@ahsoftware.de> <5231817F.8000901@ahsoftware.de> <5231934D.4060706@collabora.co.uk> <52319741.5050407@ahsoftware.de> In-Reply-To: <52319741.5050407@ahsoftware.de> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2845 Lines: 79 Am 12.09.2013 12:28, schrieb Alexander Holler: > Am 12.09.2013 12:11, schrieb Javier Martinez Canillas: >> On 09/12/2013 10:55 AM, Alexander Holler wrote: > > ... >>> >>> By the way, how do you define two GPIOs/IRQs from different >>> gpio-banks/irq-controllers wuth that scheme? >>> >> >> That is indeed a very good question and I don't have a definite answer. >> >>> Would that be like below? >>> >>> ethernet@5,0 { >>> compatible = "smsc,lan9221", "smsc,lan9115"; >>> interrupt-parent = <&gpio6>; >>> interrupts = <16 8>; >>> interrupt-parent = <&gpio7>; >>> interrupts = <1 IRQF_TRIGGER_FALLING>; /* GPIO7_1 */ >>> }; >>> > > ... > >> So, if I understood the code correctly the DT IRQ core doesn't expect >> a device >> node to have more than one "interrupt-parent" property. >> >> It *should* work though if you have multiple "interrupts" properties >> defined and >> all of them have the same "interrupt-parent": >> >> interrupt-parent = <&gpio6>; >> interrupts = <1 IRQF_TRIGGER_HIGH>; /* GPIO6_1 */ >> interrupts = <2 IRQF_TRIGGER_LOW>; /* GPIO6_2 */ >> >> since of_irq_map_one() will be called for each "interrupts" and the >> correct >> "interrupt-parent" will get obtained by of_irq_find_parent(). > > I assumed that answer. So to make such a scenario possible, something > like this might be neccessary: > > interrupts = <&gpio6 1 IRQF_TRIGGER_HIGH>; /* GPIO6_1 */ > interrupts = <&gpio7 2 IRQF_TRIGGER_LOW>; /* GPIO7_2 */ > > or, to be compatible > > interrupts = <1 IRQF_TRIGGER_HIGH &gpio6>; /* GPIO6_1 */ > interrupts = <1 IRQF_TRIGGER_LOW &gpio7>; /* GPIO7_1 */ > > Another problem is the naming. In all the above cases, the driver would > not know which IRQ he should use for what. Maybe the order defines it, > but that wouldn't be very verbose. And I think just changing the name > would make travelling the tree impossible, as only the driver itself > would know the name and it's meaning. On a second look, travelling the tree is still possible if the solution would be like above (without that interrupt-parent). So if a driver requires two interrupts he could use interrupt-foo = <1 IRQF_TRIGGER_HIGH &gpio6>; /* GPIO6_1 */ interrupt-bar = <1 IRQF_TRIGGER_LOW &gpio7>; /* GPIO7_1 */ And travelling the tree will still be possible because walking from the interrupt-controllers (those gpio) downwards would end up at the interrupt definitions, so the name of them isn't needed to find them in the tree. Regards, Alexander Holler -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/