From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932332AbcIRHMy (ORCPT ); Sun, 18 Sep 2016 03:12:54 -0400 Received: from mail-dm3nam03on0053.outbound.protection.outlook.com ([104.47.41.53]:58246 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754670AbcIRHMw (ORCPT ); Sun, 18 Sep 2016 03:12:52 -0400 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com;nxp.com; dkim=none (message not signed) header.d=none; From: Meng Yi To: , , CC: , Meng Yi Subject: [PATCH v2] clocksource/fsl: Fix errata A-007728 for flextimer Date: Sun, 18 Sep 2016 14:46:01 +0800 Message-ID: <1474181161-1975-1-git-send-email-meng.yi@nxp.com> X-Mailer: git-send-email 2.1.0.27.g96db324 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131186554776860173;(91ab9b29-cfa4-454e-5278-08d120cd25b8);() X-Forefront-Antispam-Report: CIP:192.88.158.2;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(979002)(6009001)(7916002)(2980300002)(1110001)(1109001)(339900001)(189002)(199003)(104016004)(11100500001)(86362001)(8676002)(106466001)(50986999)(69596002)(105606002)(189998001)(5001770100001)(97736004)(19580395003)(305945005)(19580405001)(8666005)(229853001)(7846002)(356003)(92566002)(77096005)(36756003)(68736007)(5003940100001)(47776003)(48376002)(33646002)(87936001)(50466002)(85426001)(8936002)(5660300001)(586003)(2201001)(4326007)(50226002)(81156014)(2906002)(626004)(81166006)(7059030)(969003)(989001)(999001)(1009001)(1019001);DIR:OUT;SFP:1101;SCL:1;SRVR:CY4PR03MB2440;H:az84smr01.freescale.net;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BN1BFFO11FD009;1:DEmasWY6oF87hMCE9hAaXctbzDUSVtZXG8WGFIGUmZqqMpJ6gItSNe/8XsGNHfKRQfLYPdvG54Oc5eqAf7FEJybDj+rutMvq3Yy541UzQFwpas4ggOwi618syp2oysoNHbIrD2QbTf2wdXqrWHoLvjqm7NhiihHDFyBPuB1vLYwiGEzUSeBYdHTXc3Alm9YNc/UNEG7dGOvsfu3/F742RjwQOMvyjgnQQJqaXox9SzFwzRZjAQ7X+tODRQ5QE7vzSmVTJdAcUKHLUjANU7bzmyxuVcnu7daGcyyxrbn6onJFZXEzPi3Ec0JzsbEggMqyF7OV/bOgKYk0+rz/ZUkT9TAnysilEnpyYIq+8jGUbRWgm5bi7Ha2NUU5EPxiQUU0zNxtkxtBgy8Wb5dg6q15Wuke6oMk1CHq5eFsR5qTLiU2rZoE3Rr5mTT50lzzEmLrVkVp9q2gr2yOjONVl81kPf61Kwb/who3jTvmrJ8E9BCVFXwebmkvxgnQsYVT4gEbIbifmltlIUtlM6KEqfrTgtpK9AfnpPyNE+5AcwTW4m8hpydKdaLI+O2t/MqhLyHtZcSE/iQx/DjYxODu1sNCLDt1AIQEkj9y5Ryuv7zStUOk5DKXW35jNhAoC/DNx03j1tIWe2a5BoBUviIM17SpRk5AdNx5Ff5vNSYS3DqsVGFWQps4qoTB9DVjm3nyHQnUKzvssYOURZI/d5DEdk7qDfuYk1Z9+V7N1tLhUWLuGgQ= MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: c263bb1e-36be-417c-d4b5-08d3df911f3c X-Microsoft-Exchange-Diagnostics: 1;CY4PR03MB2440;2:YeNEIoTft19akYdoVOGDkCUn3q31ezv+QZadrHrcTYftXQl7aWXqtPSrX0QOF+RaVdwM3kZU3TEjFrFS8ytjgET0LFum0nM8mgV1q3FnSkAsVkteDsVDofQJG0d1pkSIJuyaRSck/WrOWlLPTuaxAH2PVA2IrFNRQLgkow4LDc0T/gYjP7/eufsmSSCN+lgR;3:HZyPgLAjx33muvUShRAd+pyJC+mMkN4tkg5B2ATbihhX47o86EZRsghxnLG33x/jGi3/s7zZfh7fMhUlLItveMidRNgUWW+Tvaw7O5Ee3GzGMN15d1SoCse8q2CcB3jiB/YPqSjQcGVF+OyNeeG2JYBvPam1hgn1Hq0RwU+FRI8vFbZfiOPPa0+c+O3n2nEDICXx26gnq0KymDsmDDXUGwOMKP47EUhHeU1R58lj90o= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY4PR03MB2440; X-Microsoft-Exchange-Diagnostics: 1;CY4PR03MB2440;25:iXWTHL3a5o7LcV470Wqf0IzMMrENMZREl/ChN/yiTVDWwSGa9Ob6OP3coIIIVTiojwAQrWbSadOmlyuWIJlRNnduzH71bNz+AHwWXsLS3a6gZZqRWBl44SySajDsFKj/+tOdLQ1J8AcFc75aKfIjqNZqKBVvBNLWnikcF4/FpgLfoc4FIF327Lf/KeD8abR7SlWcwul6erH+AO09C+UQiSu52f0+YnPWStrgGrmk7eID6q2nr9Kn48cSatIbwbKNHgh0DtpZ3GJVlignSe7OAMIcGExcE7k6yj2IAjAUnOiAFNdlJnamdGGlUg0wkCmaGL36aIu0CT75e8wWvqkgDZNMychcDD2LnSu6N7gAxLgj97S0ViSVigiYHKK/yB605a+knrsqxa+d+sIVREleGKDUlbIUnfnXX2LbbuqDWdh4/kSMCLOFATyH++WokdnJy9liSoj2N1Y0ftYyoSqH7mhxRU69fOIwXkmPtED5FWpxIwktuisYTH4I7NDKSHhc4J3UzSESrnYHvx28SiOUxKl8r8g9BcdvTE9FH9z4IrUTKoDRaY2x9QSc/LjyVM0t9GTbQNTI4xwIpTa85i2L7/NyZhMIbIqtiQNAS+NVKhkLy94YKTYHrscmbkgPYfECbgyxLs/TDoQqPprAZ6EzqDecSMdHRsBCoOoFSs1OqqGY+CvQIXtZ4WSFx5yP3hkxz8b7+Vm3OT6Xdw9kvePTO9x9k7L8VdHPjuXHXnvdZVY= X-Microsoft-Exchange-Diagnostics: 1;CY4PR03MB2440;31:Il2Sn7fJ5VEUmAEVOk5dGwVlHuPGfI7lLuG8ajV1vZiRwkQWYbHYXnJMQitrcDRGU1/e57hXctth5Mup+0Z+ffj+TRVdRD0UuKrpavddHy6JLcEB0aXKDFFR0vkc5JlWWd6caBDU80wl+5MjpZnII0FRI34UkRkP8gGbRIRX+wU4dB6qxuHG7jXCU8Wi2On1yB4VX8KMMSbyhbCeG5zZ207+Tu6kGFKE8u2l8El9frk=;4:pjZE/NrROJrEaqeGz+K7jmQiDjEl92Y0w0b0iJ5xYd6bkxb+2y/OwMgPvrm8nJTZDOFsqaNweEDPY6JvSL3e07/DE86CNbnABsYI/8/ULTUvQ6AIA3Q04UKpa0GbyFzBFTkqTYLVu4GCfnGMJZ3u45SuIcsu+8ndvwPaqeNQ7O/m6+BMWxO1hl0IoKUMZc6P+g17R8/jP/CD4LhY2Q14z95u7z36+XpIKJbOQuLGfCUy/bPmHtevx4G5eJXAUJcxDqfeB2yOyRbVqqsZ6YnQ8ZXXNoGK4vWh6Z+KnEUGTqyj6mHwCgMNaYO0DcFE9ZS1JBh6XlnxtzQekD1ZYbnngEip/YaV/exwrXuNajBkCLZm4X9Dfih8n/hgB9hngVvimPhhNkiI8/3W0zO8DPfRJLdvPEim4PwVOxECgakrcY0uWyR06dvvNujL2iO8SBZakW5t/aUDhXlARpCfhCe8DZHGx2BXcdRQuThdIOpopce2K3DobYwOCzAscJIO1sVxNNnRpPsUNXPPCJMwlDiqWHwcA3sVRkYuvGK01sxn+WY= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(13017025)(13018025)(13015025)(13024025)(13023025)(8121501046)(5005006)(10201501046)(3002001)(6055026);SRVR:CY4PR03MB2440;BCL:0;PCL:0;RULEID:(400006);SRVR:CY4PR03MB2440; X-Forefront-PRVS: 0069246B74 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CY4PR03MB2440;23:wchuWG+umdJ+Vb7wg/cYLWXTBtlLwhPD9WlUTF0lr?= =?us-ascii?Q?hRYHHni1qZL3/DfAvBlNAK7H1cOWlJL9ZyffK8MC9JlzePHhVGd9P9seTnlW?= =?us-ascii?Q?pPfjOdk5Nv7H2iQXePiD5HbOfj0vG2PPAxD1ZW9TBqLNTpCIlzxOHE9wvsM9?= =?us-ascii?Q?5YnLyqXh/907i01cJ6M/Gmhd5TuvUb0AezJBESb52K8Pml9uPVnVuH/EstN1?= =?us-ascii?Q?P0+U/PhQTSWZb7SIY2p383yA9nlv0GcLNUSAEt3yIuSly9vq8PY3/Il/YGWy?= =?us-ascii?Q?gWj4iPGXCIdkvfTkM6WtPqyf349ev2aRl1lpUNY4oPpY6GdwGsDzz/Wq03ff?= =?us-ascii?Q?8WLOpcgn3q6wMNzOoFvpN7tcA86vRHKNyPElwBkTk0NDOIwKKk5kPpcdB6Ve?= =?us-ascii?Q?fnRurhGbZjWNPRkBmGZe9jj0hKff5SRGJHN/4WJfqxZriX4dYQJcWWuMzWIR?= =?us-ascii?Q?39JyqGmkuztK4zUcBEhsfbuvYgJmhnjPBmJZKT1qP2e/2S79lDCPhG1JMj4n?= =?us-ascii?Q?4fQmp5J5EKgrWYcW5Wtw9/kGaU7uKrh6O8MU+F8d29SjgabvvOPkTZhVcqkP?= =?us-ascii?Q?Vv7BtxCYqs3T2U+XHU6RB1eBnT6wQTLTvyjGUef0l9xb75U4HuFzeDArPIEP?= =?us-ascii?Q?at5bzIzMK8XqTykmenQpfo43hwG3ZRfWKLjRV1j8XBIu9ps8LOf9pMUuZ10e?= =?us-ascii?Q?HCNELMJUk0zBMp/T7QvV84wLIjpMiILQrg0MorWfmEjLWCal7t01lbdM5zN2?= =?us-ascii?Q?A42z1pNe/jplXeX4G5Z6I4w06lHvTQus5eoiTD3Vg/ZD5PnNwtaz0oQxbhTp?= =?us-ascii?Q?DVKiuv/ai2P2PFKWqHODsmDRBRYG6jUjPzPtVFQQtV/cxyQnFTc4fl/CE7TN?= =?us-ascii?Q?h/oDnt++OjoyykO3JNsP0UV8/I8cM+aeTEROPa0yFiFB1MKo2EK2HHz5UdHg?= =?us-ascii?Q?+3VfEUSZEWBlCtYq9FBcaJlkvzqBDQALU1L6o2Ij7zxb2sVzSTi9frJDuFJa?= =?us-ascii?Q?4BPnUbSEPLMDHYhyy3QfP2xe1tMLgkqm6ZGHSrLEHL3bHem+mALWVWRijcBn?= =?us-ascii?Q?Fx2NXQq6H/0WP4qEw38sRyesQX+yN7gtS+0q4LIMuNxJXYR7G0PZZKQdusGo?= =?us-ascii?Q?qoe5tiRTRmEOJGG0ufwX5o0bGye0/vANpz54DvpK+xTz4MqEKJVzl3A60r4L?= =?us-ascii?Q?h8vg3t++VG1Bb22mWnEabLnuGrUi4/dXQMKtgoHvJscjLXLjFtJDz454UUM8?= =?us-ascii?Q?5GVlJJVM56nDzapa7I=3D?= X-Microsoft-Exchange-Diagnostics: 1;CY4PR03MB2440;6:aNsW9uv7vMSY8GVMtRFcMgxBU4F5Hhzu5sia5oA6fqMldFwRT148AVnfdtg++ou+fsxWp0GsZpGzCtJRPCUyrWwn+QiLe1bxyC9L/cq5YmJTVBkG13gNTmyjXB/WdSs5WplkwVHRb3GHlCJhFbDCyXFXKpF+f20Y2/mPnmZCDyruTvgFxIY4p1vi0dZVpxt0jZ3fYKtH0S5mQ5PwYuIFb5yJvNoSYpqTHn79653OsZjAPgU4IBvvuuik7o6mGkfRaGIHGDTBWdjy8t0wgaxrl/MuCk5+F/bIze0Q22rFhzA=;5:IFH7tSp9ldBznbOnxtXBF6N6jdEIZovCuMaCWnAnws0MD9OZZBAmOZ6i51xIuEd0MyxBNUP0IonbA083ztHR9rHpALVroV0gbuZTLV+Jr3x27ET5ANRvWs+8bel+TyvbLl/LVQA4PmZc6XsYpla0GBPAiwfdPzRsZhDb5A+yal4=;24:wPlBp51RHG9546ZzJP4eHGCbWHhe5tApmdCb7DlnMljCcZ6sRPHfHOFXV0L/EsAX4iBiZ1LPY3alYmjXjefgVlMzDBqJPfSgDVfk8bepyn0=;7:j1eJhoplCAOWCP2CbdR/s7rK5TnxjqHDL/5eZ4m/cp7epw3ienHqAVGlVb36XLVSevTTfhhRhU4mgLB7IZvWfg4OEngHIg6TmYugDpwMXrktaRnjQR38r4cXFE2EThbDfHR/7GMGb6asXYSBVR0iRkRmXjL8Hq1G94+J3RJVUHkq6J+H0T/rxKuvTQkYaGO++8n6+Ufo8MEqOQZHwR5XcQ1aCuFh3hO0nlwmk4zdWRkcDC+zAAR35vTBxpLPyxFFJlHgZMb9FGO467eq0Fy4+KuIxo/EhXPFKmf88AbBhwtjQBISzcVgEkQyFGIOeNDe SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Sep 2016 06:57:57.4520 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e;Ip=[192.88.158.2];Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR03MB2440 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org If the FTM counter reaches the FTM_MOD value between the reading of the TOF bit and the writing of 0 to the TOF bit, the process of clearing the TOF bit does not work as expected when FTMx_CONF[NUMTOF] != 0 and the current TOF count is less than FTMx_CONF[NUMTOF]. If the above condition is met, the TOF bit remains set. If the TOF interrupt is enabled (FTMx_SC[TOIE] = 1), the TOF interrupt also remains asserted. Above is the errata discription The workaround is clearing TOF bit until it is cleaned(FTM counter doesn't always reache the FTM_MOD anyway),which may cost some cycles. Signed-off-by: Meng Yi --- Change in V2: -add timeout into IRQ context(suggested by Alexander) --- drivers/clocksource/fsl_ftm_timer.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/clocksource/fsl_ftm_timer.c b/drivers/clocksource/fsl_ftm_timer.c index 738515b..86f9186 100644 --- a/drivers/clocksource/fsl_ftm_timer.c +++ b/drivers/clocksource/fsl_ftm_timer.c @@ -83,11 +83,13 @@ static inline void ftm_counter_disable(void __iomem *base) static inline void ftm_irq_acknowledge(void __iomem *base) { - u32 val; + unsigned long timeout = jiffies + msecs_to_jiffies(100); - val = ftm_readl(base + FTM_SC); - val &= ~FTM_SC_TOF; - ftm_writel(val, base + FTM_SC); + /*read and clean the FTM_SC_TOF bit until its cleared*/ + while ((FTM_SC_TOF & ftm_readl(base + FTM_SC)) && + time_before(jiffies, timeout)) + ftm_writel(ftm_readl(base + FTM_SC) & (~FTM_SC_TOF), + base + FTM_SC); } static inline void ftm_irq_enable(void __iomem *base) -- 2.1.0.27.g96db324