Received: by 10.192.165.148 with SMTP id m20csp1502051imm; Wed, 2 May 2018 23:56:40 -0700 (PDT) X-Google-Smtp-Source: AB8JxZroOeS3npV4NQmnr6P3zX/WctPyQcyGAIcAzFUd0gLUGprgsqpHkcwgzH78mf170p2jdnp7 X-Received: by 10.98.208.68 with SMTP id p65mr22183202pfg.64.1525330600012; Wed, 02 May 2018 23:56:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525330599; cv=none; d=google.com; s=arc-20160816; b=wydTWEQ7kKR4Zc14xo9We3zCqbv4slQo1XXaAkW4iBFhqA+pJ0Ux0lBPtRnN67jCwL 69QrV8H6DVjqqM2OSs9GrzzkgtF1CPXXqw1wWO5UIVRP+5I/0bO6IFPOyinNoX1AsAZM DjUqg3Evk0K6Z2Nc7hfi6aZd6viDe96uAY83GbqwXD+kayxK6qLb8wACUUSTuBY7Cj/X +iQORlp4DIi0YntILqWc5+Yt2I+3oT+ULaahZm5QTjsbZTg5xnH8Tg+z+6vFm2C0EpgG 3PsFgHTDTd0ezQMj8wUjoSOdWtoHT0kvxgs3h+2zCcwCUBHkGdgknpZaGBLwiIxp1UQL HD4Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :arc-authentication-results; bh=yxEwfZwxLxMw/a1fG1HlhdESJRHTQty6eLoeZXdlT74=; b=vmD/r5erJqxzqS6eF6Gyp6N8vaZO+je8qI300aX4457aLWT1RnEGW+R9xzcvT2PEKr zwsVs+vowqlcMneNYbRSRcZ1L9R9A/qaV1YbNEvHyPTqf+8Qjrcy3QxqQtKs5V1P5ULK PmnYm7XncPT1/NbO5AwNF9V7SJpy464l9TeukrSf8yJVZGzkkmt1Lux/fqvraUth16Y5 HP0DmSoWRfHbpjF64wPCwOBXssVoZ3poaOkYATn/dTFvL1VKgaKBG6w7obiu0VP/NKmM bQ+nzRes/0YZj1vchA9DnfReGbuUfP3PgQ3k97g/ApsTpe2rF2+z3FXJvN2KHZOqRXEJ TFIw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 39-v6si13268444plc.515.2018.05.02.23.56.25; Wed, 02 May 2018 23:56:39 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752069AbeECG4N (ORCPT + 99 others); Thu, 3 May 2018 02:56:13 -0400 Received: from regular1.263xmail.com ([211.150.99.139]:60290 "EHLO regular1.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751951AbeECG4M (ORCPT ); Thu, 3 May 2018 02:56:12 -0400 Received: from jeffy.chen?rock-chips.com (unknown [192.168.167.8]) by regular1.263xmail.com (Postfix) with ESMTP id B556B5539; Thu, 3 May 2018 14:56:01 +0800 (CST) X-263anti-spam: KSV:0; X-MAIL-GRAY: 0 X-MAIL-DELIVERY: 1 X-KSVirus-check: 0 X-ABS-CHECKED: 4 Received: from localhost (localhost [127.0.0.1]) by smtp.263.net (Postfix) with ESMTPA id C8ABE3CA; Thu, 3 May 2018 14:55:59 +0800 (CST) X-IP-DOMAINF: 1 X-RL-SENDER: jeffy.chen@rock-chips.com X-FST-TO: linux-kernel@vger.kernel.org X-SENDER-IP: 103.29.142.67 X-LOGIN-NAME: jeffy.chen@rock-chips.com X-UNIQUE-TAG: <92eaf1be5e7c96fd754aef668736512d> X-ATTACHMENT-NUM: 0 X-SENDER: cjf@rock-chips.com X-DNS-TYPE: 0 Received: from localhost (unknown [103.29.142.67]) by smtp.263.net (Postfix) whith ESMTP id 16745QEQU74; Thu, 03 May 2018 14:56:02 +0800 (CST) From: Jeffy Chen To: linux-kernel@vger.kernel.org Cc: briannorris@google.com, heiko@sntech.de, Jeffy Chen , linux-rockchip@lists.infradead.org, Linus Walleij , linux-gpio@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [RESEND PATCH] pinctrl: rockchip: Disable interrupt when changing it's capability Date: Thu, 3 May 2018 14:55:53 +0800 Message-Id: <20180503065553.7762-1-jeffy.chen@rock-chips.com> X-Mailer: git-send-email 2.11.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org We saw spurious irq when changing irq's trigger type, for example setting gpio-keys's wakeup irq trigger type. And according to the TRM: "Programming the GPIO registers for interrupt capability, edge-sensitive or level-sensitive interrupts, and interrupt polarity should be completed prior to enabling the interrupts on Port A in order to prevent spurious glitches on the interrupt lines to the interrupt controller." Reported-by: Brian Norris Signed-off-by: Jeffy Chen --- drivers/pinctrl/pinctrl-rockchip.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/pinctrl/pinctrl-rockchip.c b/drivers/pinctrl/pinctrl-rockchip.c index 3924779f55785..7ff45ec8330d1 100644 --- a/drivers/pinctrl/pinctrl-rockchip.c +++ b/drivers/pinctrl/pinctrl-rockchip.c @@ -2727,9 +2727,19 @@ static int rockchip_irq_set_type(struct irq_data *d, unsigned int type) return -EINVAL; } + /** + * According to the TRM, we should keep irq disabled during programming + * interrupt capability to prevent spurious glitches on the interrupt + * lines to the interrupt controller. + */ + data = readl(bank->reg_base + GPIO_INTEN); + writel_relaxed(data & ~mask, gc->reg_base + GPIO_INTEN); + writel_relaxed(level, gc->reg_base + GPIO_INTTYPE_LEVEL); writel_relaxed(polarity, gc->reg_base + GPIO_INT_POLARITY); + writel_relaxed(data, gc->reg_base + GPIO_INTEN); + irq_gc_unlock(gc); raw_spin_unlock_irqrestore(&bank->slock, flags); clk_disable(bank->clk); -- 2.11.0