From patchwork Wed Jan 9 05:39:27 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shubhrajyoti Datta X-Patchwork-Id: 1022287 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=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-i2c-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43ZHy64ljxz9sCh for ; Wed, 9 Jan 2019 16:39:42 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729588AbfAIFjl (ORCPT ); Wed, 9 Jan 2019 00:39:41 -0500 Received: from mail-eopbgr740070.outbound.protection.outlook.com ([40.107.74.70]:21680 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729572AbfAIFjl (ORCPT ); Wed, 9 Jan 2019 00:39:41 -0500 Received: from BL0PR02CA0026.namprd02.prod.outlook.com (2603:10b6:207:3c::39) by DM6PR02MB5292.namprd02.prod.outlook.com (2603:10b6:5:48::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1495.9; Wed, 9 Jan 2019 05:39:38 +0000 Received: from CY1NAM02FT049.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e45::204) by BL0PR02CA0026.outlook.office365.com (2603:10b6:207:3c::39) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1516.14 via Frontend Transport; Wed, 9 Jan 2019 05:39:38 +0000 Authentication-Results: spf=softfail (sender IP is 149.199.60.83) smtp.mailfrom=gmail.com; vger.kernel.org; dkim=none (message not signed) header.d=none; vger.kernel.org; dmarc=fail action=none header.from=gmail.com; Received-SPF: SoftFail (protection.outlook.com: domain of transitioning gmail.com discourages use of 149.199.60.83 as permitted sender) Received: from xsj-pvapsmtpgw01 (149.199.60.83) by CY1NAM02FT049.mail.protection.outlook.com (10.152.75.83) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.1471.13 via Frontend Transport; Wed, 9 Jan 2019 05:39:37 +0000 Received: from unknown-38-66.xilinx.com ([149.199.38.66] helo=xsj-pvapsmtp01) by xsj-pvapsmtpgw01 with esmtp (Exim 4.63) (envelope-from ) id 1gh6aW-0002R2-HD for linux-i2c@vger.kernel.org; Tue, 08 Jan 2019 21:39:36 -0800 Received: from [127.0.0.1] (helo=xsj-smtp-dlp2.xlnx.xilinx.com) by xsj-pvapsmtp01 with esmtp (Exim 4.63) (envelope-from ) id 1gh6aR-000601-Dq; Tue, 08 Jan 2019 21:39:31 -0800 Received: from xsj-pvapsmtp01 (mailhub.xilinx.com [149.199.38.66]) by xsj-smtp-dlp2.xlnx.xilinx.com (8.13.8/8.13.1) with ESMTP id x095dUk0023611; Tue, 8 Jan 2019 21:39:30 -0800 Received: from [172.23.37.106] (helo=xhdshubhraj40.xilinx.com) by xsj-pvapsmtp01 with esmtp (Exim 4.63) (envelope-from ) id 1gh6aQ-0005zs-96; Tue, 08 Jan 2019 21:39:30 -0800 From: To: CC: , Shubhrajyoti Datta Subject: [PATCHv2] i2c: cadence: Fix the hold bit setting Date: Wed, 9 Jan 2019 11:09:27 +0530 Message-ID: <1547012367-26581-1-git-send-email-shubhrajyoti.datta@gmail.com> X-Mailer: git-send-email 2.1.1 X-RCIS-Action: ALLOW X-TM-AS-Product-Ver: IMSS-7.1.0.1224-8.2.0.1013-23620.005 X-TM-AS-Result: No--5.523-7.0-31-1 X-imss-scan-details: No--5.523-7.0-31-1;No--5.523-5.0-31-1 X-TM-AS-User-Approved-Sender: No;No X-TM-AS-Result-Xfilter: Match text exemption rules:No X-EOPAttributedMessage: 0 X-Matching-Connectors: 131914859778165118; (f9e945fa-a09a-4caa-7158-08d2eb1d8c44); () X-Forefront-Antispam-Report: CIP:149.199.60.83; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(396003)(39860400002)(136003)(376002)(346002)(2980300002)(189003)(199004)(82202003)(83322999)(6916009)(9786002)(47776003)(61266001)(50226002)(8936002)(76482006)(476003)(2616005)(63266004)(16586007)(4326008)(2351001)(316002)(486006)(50466002)(81156014)(426003)(48376002)(81166006)(54906003)(2906002)(5660300001)(86362001)(51416003)(107886003)(14444005)(26005)(106466001)(105596002)(8676002)(36756003)(305945005)(73972006)(6666004)(86152003)(87572001)(356004)(55446002)(336012)(77096007)(2876002)(73392003)(498600001)(126002)(107986001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM6PR02MB5292; H:xsj-pvapsmtpgw01; FPR:; SPF:SoftFail; LANG:en; PTR:unknown-60-83.xilinx.com; MX:1; A:1; X-Microsoft-Exchange-Diagnostics: 1; CY1NAM02FT049; 1:yRJA4eviYEbmNbQTdEe5JwvfKYFNxNibKbhlRfXldmPte5bSDt3c+vaosbBctTGzohWJHXhHdBXyUFy8dIf/L/je4baRTq/MaaCyT6pTB5JLWxmyXT3qUg726h6JAnqF MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8e2d7875-b83c-48a7-fb4d-08d675f4d814 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(5600109)(711020)(2017052603328); SRVR:DM6PR02MB5292; X-Microsoft-Exchange-Diagnostics: 1; DM6PR02MB5292; 3:F+4oWd8qmHX5rRYSheLcZ5Z2hg/vk2cf1C8BPj4n/gW0pMIZfFGhtBp9nzlhcGgJuBdj7fYN0nTvTqFEHtM8zfT5J00PeQ4SjXrlnlMGyDR6GQ++Ip8t/EYoN+taTOfiTGXaIbqKZC1+MCHaAI2YMJBgx4B61G3RbFF4WpE8J9mJZCfmmyOMk50q84HqMnq2JCJ/vu73i3mHA83glG2IrpsB/x1UZOutL/W/zeKE6Z0yc0Seb9iBFngsl6/9NwkMthfl8VSgDUEus+u07gIZNdBQZ27Ptlx0FWIu612Eze+uGxk7ipLet34AiWkORt7kDMjCalNiecrPLIAbrgfixrLCm0YsR7s8jc6wksy8jGOmlGGDlN+q73gV8kwP+uIi; 25:oZOeV0lfY0PrTUZm1fBw8/Nq2rFyWJkClcDPW5zjbwriih55wdHXSNyK8CMd+JzNmnBA6tc99sAZ71UkDMiCCNq5nmothQAL2H5wuVqTsN8N/DmXli1XRgjl5KnyS+x0KIazaat2OPYok9/NiQRFGSvqRbnuyISTU+Zzr1IuTPONe0HPlyxYZGmAS++mQ3Hb3bX4axyYoYHWDzYuKpiFT60JZPOk2HQyLyyLOBtYwCj3Z7D8ksxWBsPt3IuvT2p2dZ4oXim/SPwur5OlDCIid4lvpj/zDTC0q6TNkVGgYruL3LEqzhNc/EJnA41pUOiLx1BVMGLdFHOgTybexFKiWQ== X-MS-TrafficTypeDiagnostic: DM6PR02MB5292: X-Microsoft-Exchange-Diagnostics: 1; DM6PR02MB5292; 31:rA/VWNlY1DBa8F+3YuqNoaBW49C7JkUOkmANBPNznSYGxCJkOHASPxuy0iEnCYeJ9szUcIHZJae4DKOq/7cw3jDcartMIdUOdL91A8fXHHSrl5byJCW0BwJm7fUWQcbVk+amu1Pnpw4Erj8J6loBGfsQdQpGnua8W7/mfDcL5C9RukFCE18+f0SyFBq+H2tPCEv/sMlWRScHskHdzUEzRNPjBJE6ILhHlw/teFppA8k=; 4:v5yYV4sJxJ/vZhRybFZptHZnhPlbDcWUd1HJzTKnRdM2EOG3Bq4M/o/89XoKHI5NioW+7wLqjMg74Qi5mRJZPSpNeVm9wENb10zce9s+Tgd8XNt94X63sSyxhJiUSlByVyqb/8ZlgbPezeheFRaamuiodCotNZG19Rv5CylVuZK1+R2J/EN/3WmxnwHF9OolKkcqJiiI5TfHbIRpFGCuzL+3puTEdKraoxUH+6Eq0J+L0s+BCQJvQghH1JUQRyi7S29MvbTp/nJitYN8gemO6++dzOURPldg2TxLdN04bWHO0NNaKnsCSGLukmVcobk0 X-Microsoft-Antispam-PRVS: X-Forefront-PRVS: 0912297777 X-Microsoft-Exchange-Diagnostics: 1; DM6PR02MB5292; 23:c/BlsZgQMOZK7ciwXQgo2KZzdQ2TMWWFZnsSJv3K120GKv2k+kkipas4SWtCJo7DM0QUdVZeXVk5W90OpLtEJ/Da4zrqVI6re5yRZaSnedmyfkftOz2LRfaoh2kEas8Br8ZzXEsZNpceNOIA9XcxIBPlsmefjpmMsacZ/xYF8Q0Z626bfSu0RIyTWZsSHRV87pUKMPjrnDYev7wGP/d2Khczb1C4H9JOcIkxq8XpPyWchUv6jDXm5Hbl233QdzUuKEfUpTHyOZw8vXAAZWfvfRXjc0FpRl1k/ZdarbvrJVdvPA3idUEUIckCglstTeWBQgCWujVdQCHGe3MxqkgUL1mlX/lI18/+xZBWTWKyh0I6LveC9czrKQBlTuv5ysLTSyPcOdfEfiTID+hMkryR8fnfEp3imr9LaHLKwykrmHQ6AGl7PNpQ2EnK477IGZoz9sJLlO8oOFjjQCF5LA8/bILjLEHFCZSbaIR/RXb95TtIve1utgWh9Y/A7K4ioB+PHoFtIddYrMX6gzNzhyhFKAZ7AiK9fEM+jGAcac1PPCU6mKhQ1TZJP1leUirKrMDjt+RWxETydzWuCJOLIK4alvlAoKSpvqOtEaN7JielB+seSRpmizTOFR9GA0gRK1FRJlFnJ85phO55RR+GFA4nsPOTJxfIVV9FqATux8NYoo5Q27XcX6sx75FE9VeBhSPqC06ffrQ5K9jc3boejLvFoQiHL2vbLZcu9wbsSWGL+pqHafsDIeKB9A1H37g2bqhRPcUQMM4ZMf/TyGEjS6nFsBelnuiiySVLlNX+3dv0LsUA40I/WReL0RWdfzdl88ju96FLDNIZLUuyTRa2nGcBkMie1lBt+o5NVwB7LssurNskfu3k5nP0KwBTMJkwsF+2vSXfpJKPOvV7U8zn/NJIkG3XzA2Stuf/jLm7pWT9qXnisqsoFeN+vAq/femncM78E8Grq7fgcnl3RJnGGxDYhWbQVvL+8zJ+A9jZ1gNG1nS1ASqVkCWUie2+/iusUIkAspKAEYf5z40wMsDVkqNW4ik79RCry4FZLs9ZvpHP7XGvcqZYMcKb1U150huilPa8YkUhq2RT1bmNh+K2ZEqXRdko1CyXwDHQKAdqlxguvcjwdRXpyem6l0ZKdn5wKZarUsQ0Tmb9gy74wYbQ5dGDMNIQ2cA/KGuDl1nth7VAr/b5AtZewPGKbMvK5RUriJ04ZSrkOi7CumCP2H3VoEFMEQ0UY0z1x/W2DpP6WBJVDwM= X-Microsoft-Antispam-Message-Info: ZJVizVjVJoSZZLhQ4zcKma76BGBLirqSJHIqf90HocqM/9plWOvwZdSzTxHnlBGN1G68H9/0457NLFilSatXYEzTb9HGpgtUNpUf/smbOzoiTVysXGT9068cZIGNM/s/7d780bF+G7uuC1he3AQkJ14gdpMoig8IJOtoIzmmn8Ias14b0fmoIb/w5JUz6dHfq+SjYp/WbsGM1Z6zUSDF+xKyEoOuqxemYWsToiUZ/9otN2thdJLex1xxfKKrcRECT97v6G3JuDT1m/yyNU4EgY/NE+4EClASk3EXlpdUD9v6wEtLHWCZpDsynPJ6Hxj/ X-Microsoft-Exchange-Diagnostics: 1; DM6PR02MB5292; 6:laTzIjKWachTzdRemw0RRfRdPgV3gczSy95nrIB0DqlU/ObPKZ7BZOI/5fJFTPLTvoLDUDHnLnNCT4WZk358LQ2rce2DAmDLoiKJbaFnFSo+iuzpCAp32eIw/Vv+kS+V7uY8MPHxe/d8oq1TGlV0yV/5hMeJ+OLqwCbyTtYcgJb9d2UMMMFjevsur1OSIV4S4yqc2cSLaOfSkbbTIzPdcPLPWif4XPkgPoeFbYbfTqqHzt44s+UssyawH4prO9ZPqkEy2+TizdkM84N5aTLjBR3coLp7hROY91MuhG9jHWjBSfPicEMkUmpZcfSTAwHe+shptiYSqx6gQxXQHZ1AMa4/BxoOgfbtwhr/0d7DMivw8IYu/wnCn2LnK1F1AFYNyHfQBfehEXmyvJ3eqJUpHMEStMGeiVxmRpfJ/pvIBeEhqkee7Sk8B08pc9OGvv071qAB6lsji2DJEbxKU+ag7A==; 5:/4j0DxC8WQpIuIoALVLkDYdCJbom6XchrTzTyk/SQz8UDJIoHqWqu8XxhMO6r117rubdwx7v3mZUX3x0yStDLVpiq/eDjeA4ag3Kihh4tf8vW7z3afbLh4BFvzQ6owqn2fbpBFrNZno0vGaGI3nU7nrde/vl7WxWFxC65tP+bz1ZUKzwrCgIDovnCzi5XOcBxPlwmJTj8EhZQclhTmyEFA==; 7:SnHhAggNA0SxrQHWTdLlJxO6wbHlDkRV0Yl1SxNd0k174LqWc/7uzDi0o8VEVumlByDNGF8wx5t+TW8MROjCRkWvOUzTItDQFYDxI5morlK5bbEGI+ovJImhnt3Y135gUxu+1vkKSLyozDbM7jzDqA== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2019 05:39:37.2696 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8e2d7875-b83c-48a7-fb4d-08d675f4d814 X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[149.199.60.83]; Helo=[xsj-pvapsmtpgw01] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR02MB5292 Sender: linux-i2c-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-i2c@vger.kernel.org From: Shubhrajyoti Datta In case the hold bit is not needed we are carring the old values fix the same by resetting the bit when not needed. Fixes the sporadic i2c bus lockups on National Instruments Zynq-based devices. Reported-and-tested-by: Kyle Roeschley Signed-off-by: Shubhrajyoti Datta Acked-by: Michal Simek --- v2: Update commit log Also check if the hold_flag drivers/i2c/busses/i2c-cadence.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/i2c/busses/i2c-cadence.c b/drivers/i2c/busses/i2c-cadence.c index b136057..b2b3df1 100644 --- a/drivers/i2c/busses/i2c-cadence.c +++ b/drivers/i2c/busses/i2c-cadence.c @@ -382,8 +382,10 @@ static void cdns_i2c_mrecv(struct cdns_i2c *id) * Check for the message size against FIFO depth and set the * 'hold bus' bit if it is greater than FIFO depth. */ - if (id->recv_count > CDNS_I2C_FIFO_DEPTH) + if (id->recv_count > CDNS_I2C_FIFO_DEPTH || id->bus_hold_flag) ctrl_reg |= CDNS_I2C_CR_HOLD; + else + ctrl_reg = ctrl_reg & ~CDNS_I2C_CR_HOLD; cdns_i2c_writereg(ctrl_reg, CDNS_I2C_CR_OFFSET); @@ -440,8 +442,11 @@ static void cdns_i2c_msend(struct cdns_i2c *id) * Check for the message size against FIFO depth and set the * 'hold bus' bit if it is greater than FIFO depth. */ - if (id->send_count > CDNS_I2C_FIFO_DEPTH) + if (id->recv_count > CDNS_I2C_FIFO_DEPTH || id->bus_hold_flag) ctrl_reg |= CDNS_I2C_CR_HOLD; + else + ctrl_reg = ctrl_reg & ~CDNS_I2C_CR_HOLD; + cdns_i2c_writereg(ctrl_reg, CDNS_I2C_CR_OFFSET); /* Clear the interrupts in interrupt status register. */