From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Daney Subject: Re: [RFC PATCH] genirq: implement read_irq_line for interrupt lines Date: Fri, 15 Apr 2011 12:17:55 -0700 Message-ID: <4DA899E3.30409@caviumnetworks.com> References: <1302892952-7090-1-git-send-email-adharmap@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Return-path: Received: from mail3.caviumnetworks.com ([12.108.191.235]:7737 "EHLO mail3.caviumnetworks.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755570Ab1DOTSC (ORCPT ); Fri, 15 Apr 2011 15:18:02 -0400 In-Reply-To: <1302892952-7090-1-git-send-email-adharmap@codeaurora.org> Sender: linux-arm-msm-owner@vger.kernel.org List-Id: linux-arm-msm@vger.kernel.org To: Abhijeet Dharmapurikar Cc: tglx@linutronix.de, mathieu.desnoyers@efficios.com, Ingo Molnar , Peter Zijlstra , linux-kernel@vger.kernel.org, dwalker@fifo99.com, linux-arm-msm-owner@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Greg Kroah-Hartman On 04/15/2011 11:42 AM, Abhijeet Dharmapurikar wrote: [...] > > +/** > + * irq_read_line - read the value on an irq line > + * @irq: Interrupt number representing a hardware line > + * > + * This function may be called from IRQ context only when > + * desc->chip->bus_lock and desc->chip->bus_sync_unlock are NULL ! What does it return? I can see that -EINVAL is returned if it isn't applicable to this irq. But what if chip->irq_read_line is implemented? > + */ > +int irq_read_line(unsigned int irq) > +{ > + struct irq_desc *desc = irq_to_desc(irq); > + unsigned long flags; > + int val; > + > + if (!desc || !desc->irq_data.chip->irq_read_line) > + return -EINVAL; > + > + chip_bus_lock(desc); > + raw_spin_lock_irqsave(&desc->lock, flags); > + val = desc->irq_data.chip->irq_read_line(&desc->irq_data); > + raw_spin_unlock_irqrestore(&desc->lock, flags); > + chip_bus_sync_unlock(desc); > + return val; > +} > +EXPORT_SYMBOL(irq_read_line); > + > /* > * Internal function that tells the architecture code whether a > * particular irq has been exclusively allocated or is available From mboxrd@z Thu Jan 1 00:00:00 1970 From: ddaney@caviumnetworks.com (David Daney) Date: Fri, 15 Apr 2011 12:17:55 -0700 Subject: [RFC PATCH] genirq: implement read_irq_line for interrupt lines In-Reply-To: <1302892952-7090-1-git-send-email-adharmap@codeaurora.org> References: <1302892952-7090-1-git-send-email-adharmap@codeaurora.org> Message-ID: <4DA899E3.30409@caviumnetworks.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On 04/15/2011 11:42 AM, Abhijeet Dharmapurikar wrote: [...] > > +/** > + * irq_read_line - read the value on an irq line > + * @irq: Interrupt number representing a hardware line > + * > + * This function may be called from IRQ context only when > + * desc->chip->bus_lock and desc->chip->bus_sync_unlock are NULL ! What does it return? I can see that -EINVAL is returned if it isn't applicable to this irq. But what if chip->irq_read_line is implemented? > + */ > +int irq_read_line(unsigned int irq) > +{ > + struct irq_desc *desc = irq_to_desc(irq); > + unsigned long flags; > + int val; > + > + if (!desc || !desc->irq_data.chip->irq_read_line) > + return -EINVAL; > + > + chip_bus_lock(desc); > + raw_spin_lock_irqsave(&desc->lock, flags); > + val = desc->irq_data.chip->irq_read_line(&desc->irq_data); > + raw_spin_unlock_irqrestore(&desc->lock, flags); > + chip_bus_sync_unlock(desc); > + return val; > +} > +EXPORT_SYMBOL(irq_read_line); > + > /* > * Internal function that tells the architecture code whether a > * particular irq has been exclusively allocated or is available