Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1659752

Re: [PATCH 1/2] clk: bcm2835: Add AUX interrupt controller

Path csiph.com!news.redatomik.org!aioe.org!bofh.it!news.nic.it!robomod
From Phil Elwell <phil@raspberrypi.org>
Newsgroups linux.kernel
Subject Re: [PATCH 1/2] clk: bcm2835: Add AUX interrupt controller
Date Wed, 07 Jun 2017 14:40:01 +0200
Message-ID <tPIpH-6D4-7@gated-at.bofh.it> (permalink)
References <tPHah-5UP-1@gated-at.bofh.it> <tPHWG-6rv-11@gated-at.bofh.it>
X-Original-To Alexander Stein <alexanders83@web.de>, linux-kernel@vger.kernel.org
Dkim-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=raspberrypi.org; h=subject : to : cc : references : from : message-id : date : mime-version : in-reply-to : content-type : content-transfer-encoding; s=pp; bh=IAc3rXrTu5+Kx42pUEUJvFEK8e+4dHvw75Jeef+t/Lg=; b=MWr8n96B81VdB/TlTbQPNAeL7XChIVmoBEv1ltJRNgKennKHGqBjgPav3muAWxu2aswF O40+CyV1zhN1CAzcuTdLAIJDMZfbrjxlEUSqAv6wH9SxRf3tmdnVkspswRcg/nGKYHyZ ZZ9uGKH8Wd6TiGv7/sDR5HGDY5vontmGTXLx1QqDXaN2uu20Dl+SO0PHFTmoFFN7Nan0 haqcWpNFrybvKL3KcbosdXlKMyrrqfgUC5eN8RYuF01Tyo4NHYxajQg2HcuC/c/pi4IE hScoLI1FO/owKY3HJqETG2t8HTAMic5TgamlPj0pnHJ0iy9LdNkK09BwlXAyfb0AM523 fw==
Dkim-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=raspberrypi-org.20150623.gappssmtp.com; s=20150623; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=IAc3rXrTu5+Kx42pUEUJvFEK8e+4dHvw75Jeef+t/Lg=; b=IpzRMVquF4CCHtTBdWNmYHJmFxqKEtWn39PDky4DHQejP0isjouDqr/GoK15gHqw5z lCG1QmFaA5UIVdt3CeZsQqgl/UxvO8u6wy/TvuXpVi8EUNpZRl9TWdA2r5imleRxiJxg fSRPFpn3UZKHrI9jw/XJlyd5d4UgM7iF9/boP6sg2hZSu4fFwVwqtSZ6NdWdVuEDrJH5 KGcjV2fO/+SpWssrlg18XbfFDG4Fi5qbk9aVgG3Lp9THqMm8+WhYeI0WcSOQT8VB52lM 8sdm4Z6qe0ZY5fttZdluGCBXlvEcfdtqJ3M5wSqjpF7Ne63HzH6+7T8gjKpDYGre4B5Q X2JA==
X-Google-Dkim-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=IAc3rXrTu5+Kx42pUEUJvFEK8e+4dHvw75Jeef+t/Lg=; b=p+8yBNj6Oyi5D3wXiDhLEWMk7uGjQW4Y4X8aJbQsF0xKXSUeWJ5Tj+TNfeoRc/gyXQ Ycqk8kv+tBXeZXdWKvM1UQgMivUe0yzrg1Xvg4SWShpZ2CXPz2YM/Bm9IH8ITcSJl5ap Rg/MFzeB5XXeAtWepJKHWbRUCWQW8oWjyFjb7/obMMPbSdau/a3El86wXH7Umr/jFK+l TiX5aKc21cphAos+SlbYb0Hh2L6uQT2KRSUUqVvcla5+tdNie8SDFHZA1h97GPw/uz+f 03eb5NLvmWn/NPamQjjhmVIRTXnwiRLPmaOK3QoJT7Nx0JvlW9uYmFfQjaN6dG7uzthu L8gA==
X-Gm-Message-State AODbwcDTFXWazFOwllmcudMa/V6VknnNie7NNw+J7i0oMxh1w2o7v9oX AMdPCbBMZGI9M9ecL/G9fUv94bb24PDTUWKqh3f0hCC6wuWmLYgi7vM/2/bouCct/Uu/zBEF8ge +lK0uhyDCMWNx8TA=
X-Received by 10.223.176.214 with SMTP id j22mr24766371wra.32.1496839062493; Wed, 07 Jun 2017 05:37:42 -0700 (PDT)
X-Received by 10.223.176.214 with SMTP id j22mr24766355wra.32.1496839062205; Wed, 07 Jun 2017 05:37:42 -0700 (PDT)
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.1.1
MIME-Version 1.0
Content-Type text/plain; charset=utf-8
Content-Language en-GB
Content-Transfer-Encoding 7bit
X-Proofpoint-Virus-Version vendor=fsecure engine=2.50.10432:,, definitions=2017-06-07_08:,, signatures=0
X-Proofpoint-Spam-Details rule=outbound_spam_notspam policy=outbound_spam score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1703280000 definitions=main-1706070233
Sender robomod@news.nic.it
List-ID <linux-kernel.vger.kernel.org>
X-Mailing-List linux-kernel@vger.kernel.org
Approved robomod@news.nic.it
Lines 69
Organization linux.* mail to news gateway
X-Original-Cc Mark Rutland <mark.rutland@arm.com>, Rob Herring <robh+dt@kernel.org>, Stephen Boyd <sboyd@codeaurora.org>, Florian Fainelli <f.fainelli@gmail.com>, Eric Anholt <eric@anholt.net>, Stefan Wahren <stefan.wahren@i2se.com>, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-rpi-kernel@lists.infradead.org
X-Original-Date Wed, 7 Jun 2017 13:37:41 +0100
X-Original-Message-ID <369bb235-77fb-60ad-61d8-3de039e0f838@raspberrypi.org>
X-Original-References <79d4534c-49fe-3af4-13d8-2aaf22120d43@raspberrypi.org> <3148562.tSrsoIclEp@ws-stein>
X-Original-Sender linux-kernel-owner@vger.kernel.org
Xref csiph.com linux.kernel:1659752

Show key headers only | View raw


On 07/06/2017 13:07, Alexander Stein wrote:
> On Wednesday 07 June 2017 12:11:45, Phil Elwell wrote:
>> Devices in the AUX block share a common interrupt line, with a register
>> indicating which devices have active IRQs. Expose this as a nested
>> interrupt controller to avoid IRQ sharing problems (easily observed if
>> UART1 and SPI1/2 are enabled simultaneously).
>>
>> Signed-off-by: Phil Elwell <phil@raspberrypi.org>
>> ---
>>  drivers/clk/bcm/clk-bcm2835-aux.c | 120
>> ++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+)
>>
>> diff --git a/drivers/clk/bcm/clk-bcm2835-aux.c
>> b/drivers/clk/bcm/clk-bcm2835-aux.c index bd750cf..41e0702 100644
>> --- a/drivers/clk/bcm/clk-bcm2835-aux.c
>> +++ b/drivers/clk/bcm/clk-bcm2835-aux.c
>> [...]
>> +struct auxirq_state {
>> +	void __iomem      *status;
>> +	u32                enables;
>> +	struct irq_domain *domain;
>> +	struct regmap     *local_regmap;
>> +};
>> +
>> +static struct auxirq_state auxirq __read_mostly;
>> +
>> +static irqreturn_t bcm2835_auxirq_handler(int irq, void *dev_id)
>> +{
>> +	u32 stat = readl_relaxed(auxirq.status);
>> +	u32 masked = stat & auxirq.enables;
> 
> Doesn't this hide any spurious interrupts? Is this acceptable? I mean getting 
> informed about spurious interrupts seems nice to me, as it indicates a 
> hardware/configuration problem.

Thanks for the reply. This interrupt handler is capable of dispatching multiple
interrupts but must return a single value - IRQ_HANDLED or IRQ_NONE. I've assumed
that returning IRQ_NONE repeatedly will trigger the spurious interrupt detection.

This implementation returns IRQ_HANDLED if any unmasked interrupts are raised,
otherwise it returns IRQ_NONE. Therefore provided any spurious interrupt isn't
always coincident with a real interrupt then it ought eventually to be identified
as spurious. The alternative - returning IRQ_NONE if there are any spurious
interrupts - seems prone to causing collateral damage.

What did you have in mind?

>> +	if (masked & BCM2835_AUXIRQ_UART_MASK)
>> +		generic_handle_irq(irq_linear_revmap(auxirq.domain,
>> +						     BCM2835_AUXIRQ_UART_IRQ));
>> +
>> +	if (masked & BCM2835_AUXIRQ_SPI1_MASK)
>> +		generic_handle_irq(irq_linear_revmap(auxirq.domain,
>> +						     BCM2835_AUXIRQ_SPI1_IRQ));
>> +
>> +	if (masked & BCM2835_AUXIRQ_SPI2_MASK)
>> +		generic_handle_irq(irq_linear_revmap(auxirq.domain,
>> +						     BCM2835_AUXIRQ_SPI2_IRQ));
>> +
>> +	return (masked & BCM2835_AUXIRQ_ALL_MASK) ? IRQ_HANDLED : IRQ_NONE;
>> +}
> 
> How does interrupt acknowledgement work in these 3 interrupts work?

The interrupt "controller" is just combinatorial logic on the three level-sensitive
interrupt lines from the devices. Interrupts must be acknowledged and cleared at
source.

Phil

Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH 1/2] clk: bcm2835: Add AUX interrupt controller Phil Elwell <phil@raspberrypi.org> - 2017-06-07 13:20 +0200
  Re: [PATCH 1/2] clk: bcm2835: Add AUX interrupt controller Alexander Stein <alexanders83@web.de> - 2017-06-07 14:10 +0200
    Re: [PATCH 1/2] clk: bcm2835: Add AUX interrupt controller Phil Elwell <phil@raspberrypi.org> - 2017-06-07 14:40 +0200
      Re: [PATCH 1/2] clk: bcm2835: Add AUX interrupt controller Alexander Stein <alexanders83@web.de> - 2017-06-07 19:30 +0200
        Re: [PATCH 1/2] clk: bcm2835: Add AUX interrupt controller Phil Elwell <phil@raspberrypi.org> - 2017-06-07 22:50 +0200
  Re: [PATCH 1/2] clk: bcm2835: Add AUX interrupt controller Stefan Wahren <stefan.wahren@i2se.com> - 2017-06-07 23:00 +0200

csiph-web