Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp577312ybt; Fri, 19 Jun 2020 08:33:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyIv8Ghe/SYKF2QuK3J06cribwS5Q/ms1WiyziuP0JGKXTmxKs1r4xbdhY23/A3HUGSoFxy X-Received: by 2002:a17:907:b15:: with SMTP id h21mr4295987ejl.450.1592580795879; Fri, 19 Jun 2020 08:33:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592580795; cv=none; d=google.com; s=arc-20160816; b=VD4ayPAvv8TeQ3nuGsUb7Yg7ABOkG1w/myIlg0EJpuQ2HwGzUy+r6OWBJHi/0D2wUQ Sk6X9o4IuVEdO5hAD8Y+ZCznHy0yi9jY3cFmKivgJ47Bn5m+vGYq94NK5FoHXLTDH6CZ 96+sOf9W74cEgZ1g5QhdSDc1A4FlftyexN9Fnh6mPZx9HGKvMcSr66Dg/iZUrq3QJZeu ehdcHYZJeUyDnPczp/FhRlvR6WPaQQGVHpnfMEC8/bh5sxF7TpEm0wVEmlv+7bncefVT GCJ02FaXjfj9wtd86NT+5lblVGnGCYybiFJpuaTLIxYJEAqR+fDbdxMrFa+KjeCQ7ARQ yspQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=P2xtRcSSUDbtiPlQSU0EGuWMDFTaDuLg7Olrs5RcMac=; b=X3xznby7R1I0mY9cLwQPY2GnqLGso5XtRJVe/AEz0v++gBt/vHTMbpFjrIspn1bpoj OicgfT57tHB6RFaFDHJc7U4HF2C7ydBM7Q2bbFm8H6OhuVdzAXryfaOutOWqxRjMPI4A 3ouUo+ZIPVbfVMu8KWaC2xSacAVmR7Na+Khtd7yZH8mQgqewNboAMQjgijHV8OiTtU7E Rr90M630fmc3FxYb/Ok+a6miESMi7ojwRDGg8IARTGuw2yR+YPlf+3iJqAAjXlB2fh1+ rT32xL/SIxPSlGLikKfkdoHsZNtWJduJ5Gdv2oA5e/OB40n38uAwFS2vDRt74T9LSgv3 S7lA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=yxMFuHbO; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v24si4374196edw.95.2020.06.19.08.32.53; Fri, 19 Jun 2020 08:33:15 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=yxMFuHbO; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2391278AbgFSPaX (ORCPT + 99 others); Fri, 19 Jun 2020 11:30:23 -0400 Received: from mail.kernel.org ([198.145.29.99]:34136 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2404784AbgFSPaV (ORCPT ); Fri, 19 Jun 2020 11:30:21 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 9F4D3206B7; Fri, 19 Jun 2020 15:30:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1592580619; bh=IHsGAHyKbgpWjBQj4bs3429bWKJ1vbwB1BZGZENbMJI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=yxMFuHbOSFQKcjgE/BJLfnQvU/ObhXDBgduAnekN+j0Lzz1PaqvSmi52zvf3lRnf4 2ieczM7v+GyS5KAj/xvRCcnP20tTsKVPv2Vsx0xwMcwNTrCBO39dUSWTycrkOgi41x c6T11VEMqHT1MPmrzvwYiZYqHGuLJy49Z2duWThs= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Jonathan Bakker , Krzysztof Kozlowski Subject: [PATCH 5.7 319/376] pinctrl: samsung: Save/restore eint_mask over suspend for EINT_TYPE GPIOs Date: Fri, 19 Jun 2020 16:33:57 +0200 Message-Id: <20200619141725.430820217@linuxfoundation.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200619141710.350494719@linuxfoundation.org> References: <20200619141710.350494719@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Jonathan Bakker commit f354157a7d184db430c1a564c506434e33b1bec5 upstream. Currently, for EINT_TYPE GPIOs, the CON and FLTCON registers are saved and restored over a suspend/resume cycle. However, the EINT_MASK registers are not. On S5PV210 at the very least, these registers are not retained over suspend, leading to the interrupts remaining masked upon resume and therefore no interrupts being triggered for the device. There should be no effect on any SoCs that do retain these registers as theoretically we would just be re-writing what was already there. Fixes: 7ccbc60cd9c2 ("pinctrl: exynos: Handle suspend/resume of GPIO EINT registers") Cc: Signed-off-by: Jonathan Bakker Signed-off-by: Krzysztof Kozlowski Signed-off-by: Greg Kroah-Hartman --- drivers/pinctrl/samsung/pinctrl-exynos.c | 9 +++++++++ 1 file changed, 9 insertions(+) --- a/drivers/pinctrl/samsung/pinctrl-exynos.c +++ b/drivers/pinctrl/samsung/pinctrl-exynos.c @@ -267,6 +267,7 @@ struct exynos_eint_gpio_save { u32 eint_con; u32 eint_fltcon0; u32 eint_fltcon1; + u32 eint_mask; }; /* @@ -633,10 +634,13 @@ static void exynos_pinctrl_suspend_bank( + 2 * bank->eint_offset); save->eint_fltcon1 = readl(regs + EXYNOS_GPIO_EFLTCON_OFFSET + 2 * bank->eint_offset + 4); + save->eint_mask = readl(regs + bank->irq_chip->eint_mask + + bank->eint_offset); pr_debug("%s: save con %#010x\n", bank->name, save->eint_con); pr_debug("%s: save fltcon0 %#010x\n", bank->name, save->eint_fltcon0); pr_debug("%s: save fltcon1 %#010x\n", bank->name, save->eint_fltcon1); + pr_debug("%s: save mask %#010x\n", bank->name, save->eint_mask); } void exynos_pinctrl_suspend(struct samsung_pinctrl_drv_data *drvdata) @@ -678,6 +682,9 @@ static void exynos_pinctrl_resume_bank( pr_debug("%s: fltcon1 %#010x => %#010x\n", bank->name, readl(regs + EXYNOS_GPIO_EFLTCON_OFFSET + 2 * bank->eint_offset + 4), save->eint_fltcon1); + pr_debug("%s: mask %#010x => %#010x\n", bank->name, + readl(regs + bank->irq_chip->eint_mask + + bank->eint_offset), save->eint_mask); writel(save->eint_con, regs + EXYNOS_GPIO_ECON_OFFSET + bank->eint_offset); @@ -685,6 +692,8 @@ static void exynos_pinctrl_resume_bank( + 2 * bank->eint_offset); writel(save->eint_fltcon1, regs + EXYNOS_GPIO_EFLTCON_OFFSET + 2 * bank->eint_offset + 4); + writel(save->eint_mask, regs + bank->irq_chip->eint_mask + + bank->eint_offset); } void exynos_pinctrl_resume(struct samsung_pinctrl_drv_data *drvdata)