From patchwork Fri Sep 28 16:28:56 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eugeniy Paltsev X-Patchwork-Id: 976406 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:e::133; helo=bombadil.infradead.org; envelope-from=linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=synopsys.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Yfuqs15s"; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=synopsys.com header.i=@synopsys.com header.b="W945o5qf"; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 42MHFC27N6z9s5c for ; Sat, 29 Sep 2018 02:29:19 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: References:List-Owner; bh=SfAtzvK6yl3JmgiqE05NL3rY9WYcIXPGurHyqwW98nE=; b=Yfu qs15sJU1rdCim0K07IAnl11VJZpaWrQWv/yS6rBfVxhgeHuL8OSZtegrhFPI3kjWDlP4a31uPlx9k iANM/InvuDuHBXkoH0rtlGt1xVJGF3bK6IssnFB2HPlZg/EUDlOFlNlYRL431tX1Z4s8YTYwXTX/8 PQtIl11g2pB1HUCQ5UvI+78eAIKpULbJ8g/AQ5hxgnqyGfcMRSwWoA43bsYbr+HMndciPq7UNTvdq JNQtkeChBa1El6Jl3rJkOZRJg9FntlYBfvWhKAgfd5qwiAU4VLYWARLKOLIh8BuqNl/P6S9PDe/UK qF7fEQpwHTBYOsYReaSV088bZ26kvyg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1g5vdk-0005Ta-QG; Fri, 28 Sep 2018 16:29:16 +0000 Received: from smtprelay.synopsys.com ([198.182.47.9]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1g5vdi-0005SM-4H for linux-snps-arc@lists.infradead.org; Fri, 28 Sep 2018 16:29:15 +0000 Received: from mailhost.synopsys.com (mailhost3.synopsys.com [10.12.238.238]) by smtprelay.synopsys.com (Postfix) with ESMTP id D8BBB24E0F92; Fri, 28 Sep 2018 09:29:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail; t=1538152142; bh=/JD/Tezb0aJc21feiQLo0Y5EimHxriYofNL0REfYIeo=; h=From:To:Cc:Subject:Date:From; b=W945o5qfft6UFKptw47HnpTR+WFORpIgObxryPUfGufSSwORZmXZbmNIGlFEzDTI1 0Pe9ZXNT4Sz9Iy0vIYqiueeJkcXqbrPxVw79HrFGE2qdHTbMpfKreNePQfwJuBafHw ZoscynmNfsDnrCK5R8x6IGcZl7I8riP2jaimG08U2qndFdFWoAGsVgXgtfdW6dSLbM 1WRrjW5V+52YK1dmFs+EN1jqDduTJnmsK2uNZgBdXJbc2GUgi3GuMSCt3B4BTw+Uyj 3meGSD/xGI1n5D9uKycz0xXrw+CXp7WrMA3jG9MWOKKcIpusau/odQmFbNNdQRZ//b VuEgS85lV0OMw== Received: from paltsev-e7480.internal.synopsys.com (paltsev-e7480.internal.synopsys.com [10.121.3.38]) by mailhost.synopsys.com (Postfix) with ESMTP id 92412349D; Fri, 28 Sep 2018 09:28:59 -0700 (PDT) From: Eugeniy Paltsev To: Philipp Zabel Subject: [PATCH v2] ARC: HSDK: improve reset driver Date: Fri, 28 Sep 2018 19:28:56 +0300 Message-Id: <20180928162856.4726-1-Eugeniy.Paltsev@synopsys.com> X-Mailer: git-send-email 2.14.4 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20180928_092914_177119_B5A8BF67 X-CRM114-Status: UNSURE ( 9.33 ) X-CRM114-Notice: Please train this message. X-Spam-Score: -0.1 (/) X-Spam-Report: SpamAssassin version 3.4.1 on bombadil.infradead.org summary: Content analysis details: (-0.1 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [198.182.47.9 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature X-BeenThere: linux-snps-arc@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: Linux on Synopsys ARC Processors List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Eugeniy Paltsev , linux-snps-arc@lists.infradead.org, Alexey Brodkin , linux-kernel@vger.kernel.org MIME-Version: 1.0 Sender: "linux-snps-arc" Errors-To: linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org As for today HSDK reset driver implements only .reset() callback. In case of driver which implements one of standard reset controller usage pattern (call *_deassert() in probe(), call *_assert() in remove()) that leads to inoperability of this reset driver. Improve HSDK reset driver by calling .reset() callback inside of .deassert() callback to avoid each reset controller user adaptation for work with both reset methods (reset() and {.assert() & .deassert()} pair) Signed-off-by: Eugeniy Paltsev --- Changes v1->v2: * Don't call hsdk_reset_reset in .assert callback. drivers/reset/reset-hsdk.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/reset/reset-hsdk.c b/drivers/reset/reset-hsdk.c index 8bce391c6943..399440f197c5 100644 --- a/drivers/reset/reset-hsdk.c +++ b/drivers/reset/reset-hsdk.c @@ -84,8 +84,21 @@ static int hsdk_reset_reset(struct reset_controller_dev *rcdev, return ret; } +static int hsdk_reset_dummy(struct reset_controller_dev *rcd, unsigned long id) +{ + return 0; +} + +/* + * Doing real reset from .assert isn't necessary/useful here. So we pass + * 'hsdk_reset_dummy' to .assert callback to prevent -ENOTSUPP returning by + * reset_control_assert() to make happy drivers which check + * reset_control_{assert | deassert} return status. + */ static const struct reset_control_ops hsdk_reset_ops = { .reset = hsdk_reset_reset, + .assert = hsdk_reset_dummy, + .deassert = hsdk_reset_reset, }; static int hsdk_reset_probe(struct platform_device *pdev)