Received: by 2002:a05:6358:5282:b0:b5:90e7:25cb with SMTP id g2csp1463756rwa; Sun, 21 Aug 2022 08:59:10 -0700 (PDT) X-Google-Smtp-Source: AA6agR7QbZQhf8QQHsN+nd7e+8LrMSeL/BP0NVPDCYa4bUqSrZLoaZqwd10sdLbD/leoT58aXLVp X-Received: by 2002:a17:907:6e09:b0:73d:7fb1:c44b with SMTP id sd9-20020a1709076e0900b0073d7fb1c44bmr1101250ejc.314.1661097549932; Sun, 21 Aug 2022 08:59:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661097549; cv=none; d=google.com; s=arc-20160816; b=QxznDvsTxmFi5WTizveGnWt5eRRPcUtDJFLr204MhX75hR0Sewvp1N9R9NaS3y5aDH MogYiNlWBKClJNzgcpy15eqm7rftDFlElUbt3t2c0c9gWeQxKPzjarwS0qCoimrurLjK n/lXDM+s203I09HgVdRYS6Dy8bTTjKK5wRctOGSiGa2ZAFkbyS/vSCuG908Db8ScDJ9v 9c9e7zL6vOMvyMLyxJm1HYIXe0HchbZAIJGTb7DadgKsze7rv+lP/2j0Y6nrLe9BfJ8W m4Iz992o6L4jjpaj0nPteDQls1wCVWdeJ2TJOUW1O7qWKfU2PUpr3g/SRiZp/1K8uHW+ hcCQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=o+PLiJIjYE4seMsma46zuWVzXocDXB7emUjHLDPeTqs=; b=ErhO4Ie5Afx1sxWLhMNHcyFHFfYZgx+x2NCbrmo4oCUg8MuFNuhfqwwt7tA0tdmR6q DtxlAdzrjnyZXgW4fzM+GNzAAMKDvKUHH0gDXkeJBpktPA5f0t4+xh9sdYx5eX+dV+A7 acs/nI+5X4TcLVjOHxBnuBPpeDK8IZIS+6Lpyzm+j2bOzRpDJBjHYQSoy8iSzUjlzYbY cOzisF/soSI1dqBRRazCfhecAiQAe+qcqErNzs0OgDuHIr0E1mCtUJmBeQojtrfpyGzW D5ns0RW426mrINVINMB8s5PxbLf0zKfFW8hx/3HUxo1mLPo3KL9cgFJj9ASawuzT42Zy 7INg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@yadro.com header.s=mta-01 header.b=W0Q+54AA; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=yadro.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id dd5-20020a1709069b8500b007306b2bfa66si8345987ejc.851.2022.08.21.08.58.43; Sun, 21 Aug 2022 08:59:09 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@yadro.com header.s=mta-01 header.b=W0Q+54AA; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=yadro.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231599AbiHUPyz (ORCPT + 99 others); Sun, 21 Aug 2022 11:54:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53222 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230342AbiHUPyx (ORCPT ); Sun, 21 Aug 2022 11:54:53 -0400 Received: from mta-01.yadro.com (mta-02.yadro.com [89.207.88.252]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 79B8120BDD for ; Sun, 21 Aug 2022 08:54:52 -0700 (PDT) Received: from localhost (unknown [127.0.0.1]) by mta-01.yadro.com (Postfix) with ESMTP id B8C80415F5; Sun, 21 Aug 2022 15:54:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=yadro.com; h= content-type:content-type:content-transfer-encoding:mime-version :references:in-reply-to:x-mailer:message-id:date:date:subject :subject:from:from:received:received:received:received; s= mta-01; t=1661097289; x=1662911690; bh=Ku00ZrVtdPNiED3i2tH0fKryi aGDaVN1a0m5ee0ZOks=; b=W0Q+54AA699WRAKFPnb2gaXCGDEifsoajPhzHKvWV ooA7uVk07+5KwBO9VV3HCY6CAx+sjFv2Uyd4SWvHH2JewowJu9kIPFRkNcvTLR+n bwu6+MkndCnsljMcV0rsjl8LcjHtIHVPRMWq+RZMgMej4BwnF0o/N7ffj47Y7GSR y8= X-Virus-Scanned: amavisd-new at yadro.com Received: from mta-01.yadro.com ([127.0.0.1]) by localhost (mta-01.yadro.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ohLeA0VIuBhc; Sun, 21 Aug 2022 18:54:49 +0300 (MSK) Received: from T-EXCH-02.corp.yadro.com (t-exch-02.corp.yadro.com [172.17.10.102]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mta-01.yadro.com (Postfix) with ESMTPS id 7FDE741370; Sun, 21 Aug 2022 18:54:49 +0300 (MSK) Received: from T-EXCH-08.corp.yadro.com (172.17.11.58) by T-EXCH-02.corp.yadro.com (172.17.10.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.669.32; Sun, 21 Aug 2022 18:54:48 +0300 Received: from ik-yadro.yadro.com (10.199.18.154) by T-EXCH-08.corp.yadro.com (172.17.11.58) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.2.1118.9; Sun, 21 Aug 2022 18:54:45 +0300 From: Igor Kononenko To: Joel Stanley , Andrew Jeffery CC: , Igor Kononenko , , , Subject: [PATCH 2/3] drivers/misc: (aspeed-lpc-snoop): Add regmap cleanup on a shutdown. Date: Sun, 21 Aug 2022 18:54:10 +0300 Message-ID: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [10.199.18.154] X-ClientProxiedBy: T-EXCH-02.corp.yadro.com (172.17.10.102) To T-EXCH-08.corp.yadro.com (172.17.11.58) X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The bmc might be rebooted while the host is still reachable and the host might send requests through configured lpc-kcs channels in same time. That leads to raise lpc-snoop interrupts that haven't adjusted IRQ handlers on next early kernel boot, because on the aspeed-chip reboot might keep registers on a unclean state that is configured on the last boot. The patch brings an way to masking lpc-snoop interrupts all through a bmc-rebooting time. Tested on a YADRO VEGMAN N110 stand. Signed-off-by: Igor Kononenko --- drivers/soc/aspeed/aspeed-lpc-snoop.c | 44 +++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/drivers/soc/aspeed/aspeed-lpc-snoop.c b/drivers/soc/aspeed/aspeed-lpc-snoop.c index eceeaf8dfbeb..6ec47bf1dc6b 100644 --- a/drivers/soc/aspeed/aspeed-lpc-snoop.c +++ b/drivers/soc/aspeed/aspeed-lpc-snoop.c @@ -235,6 +235,41 @@ static int aspeed_lpc_enable_snoop(struct aspeed_lpc_snoop *lpc_snoop, return rc; } +static void aspeed_lpc_reset_regmap(struct aspeed_lpc_snoop *lpc_snoop) +{ + u8 index; + struct lpc_regman_cleanup { + u32 offset; + u32 mask; + u8 val; + }; + static struct lpc_regman_cleanup cleanup_list[] = { + // Prevent handling ENINIT_SNPxW + { .offset = HICR5, + .mask = HICR5_EN_SNP0W | HICR5_ENINT_SNP0W, + .val = 0 }, + { .offset = HICR5, + .mask = HICR5_EN_SNP1W | HICR5_ENINT_SNP1W, + .val = 0 }, + { .offset = HICRB, + .mask = HICRB_ENSNP0D | HICRB_ENSNP1D, + .val = 0 }, + // Reset SNOOP channel IRQ status + { .offset = HICR6, + .mask = HICR6_STR_SNP0W | HICR6_STR_SNP1W, + .val = 1 }, + }; + for (index = 0; index < ARRAY_SIZE(cleanup_list); index++) { + u32 val = 0; + + if (cleanup_list[index].val) + val = cleanup_list[index].mask; + regmap_update_bits(lpc_snoop->regmap, + cleanup_list[index].offset, + cleanup_list[index].mask, val); + } +} + static void aspeed_lpc_disable_snoop(struct aspeed_lpc_snoop *lpc_snoop, int channel) { @@ -285,6 +320,7 @@ static int aspeed_lpc_snoop_probe(struct platform_device *pdev) return -ENODEV; } + aspeed_lpc_reset_regmap(lpc_snoop); dev_set_drvdata(&pdev->dev, lpc_snoop); rc = of_property_read_u32_index(dev->of_node, "snoop-ports", 0, &port); @@ -345,6 +381,13 @@ static int aspeed_lpc_snoop_remove(struct platform_device *pdev) return 0; } +static void aspeed_lpc_snoop_shutdown(struct platform_device *pdev) +{ + struct aspeed_lpc_snoop *lpc_snoop = dev_get_drvdata(&pdev->dev); + + aspeed_lpc_reset_regmap(lpc_snoop); +} + static const struct aspeed_lpc_snoop_model_data ast2400_model_data = { .has_hicrb_ensnp = 0, }; @@ -370,6 +413,7 @@ static struct platform_driver aspeed_lpc_snoop_driver = { }, .probe = aspeed_lpc_snoop_probe, .remove = aspeed_lpc_snoop_remove, + .shutdown = aspeed_lpc_snoop_shutdown, }; module_platform_driver(aspeed_lpc_snoop_driver); -- 2.25.1