From patchwork Mon Jul 17 15:54:07 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander A Sverdlin X-Patchwork-Id: 789581 X-Patchwork-Delegate: cyrille.pitchen@atmel.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.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 3xB7DD1qP2z9sBR for ; Tue, 18 Jul 2017 01:55:24 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Wbfo6ur1"; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nokia.onmicrosoft.com header.i=@nokia.onmicrosoft.com header.b="ISHj7LmP"; dkim-atps=neutral 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:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version: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=RrxGzveR7IqFHhNAlW2/NlCJFx51p5nVu/tx+7H2M6o=; b=Wbfo6ur1DWEgs5 wfTof0N4HQLwrfq+onzxgKcLIr9hcfkiwrcI+O9Ymr3OuIaZjL7gV1QpGGpzlr1mTGkjbnyjOFHo0 CfOTSpJLXEiLqHn+kMk34Xc7eMSnrAN3OSw1BfjnOe3dk9vc9shcb2oTC/OH6/t2VQJ/hY79/Hnb4 VQV+LOanP/gk5oXCXO5RSebabxN/38ekkAIfNATln1iDxx1UPvN+e56/MJV6/jdm8La2Ay+aw7dG1 cs3QVDZzS5Cji52l48hbGj+C6waB2TpdXUhi6INfH5tEKB/uxOJoIUsGRR5RMWZy6VsYuXa/6ZJBc 7U3fhzjlDe541jL3Z1Ow==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1dX8MY-0001j9-0v; Mon, 17 Jul 2017 15:55:10 +0000 Received: from mail-eopbgr50094.outbound.protection.outlook.com ([40.107.5.94] helo=EUR03-VE1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1dX8MT-0000Ug-VI for linux-mtd@lists.infradead.org; Mon, 17 Jul 2017 15:55:08 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nokia.onmicrosoft.com; s=selector1-nokia-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=GoPDYqwzEzOgfErPUUL7s0GVsN+eqawwTVikh6K2D+s=; b=ISHj7LmPk1df2XYjlHVbwrMaDdoWaoUEvXOjvu+z4aOK5EjwWqWZYkflti61HiZ03ZYNLMGq7k7R8PSf0Ag6Ydcvap/sn7LRP1qHfthwCHy2L0+iqiLaD6oW9j5VtnaCtBZ6lbJtglNlnXm/dtMlT7/lK7dvIvqu6SFK2JCs8uA= Authentication-Results: lists.infradead.org; dkim=none (message not signed) header.d=none; lists.infradead.org; dmarc=none action=none header.from=nokia.com; Received: from ulegcpsvdell.emea.nsn-net.net (131.228.2.20) by AM4PR07MB1315.eurprd07.prod.outlook.com (2a01:111:e400:59ec::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1282.4; Mon, 17 Jul 2017 15:54:29 +0000 From: Alexander Sverdlin To: linux-mtd@lists.infradead.org Subject: [PATCH v2] mtd: spi-nor: Recover from Spansion/Cypress errors Date: Mon, 17 Jul 2017 17:54:07 +0200 Message-Id: <20170717155407.11921-1-alexander.sverdlin@nokia.com> X-Mailer: git-send-email 2.13.2 MIME-Version: 1.0 X-Originating-IP: [131.228.2.20] X-ClientProxiedBy: AM5PR0502CA0018.eurprd05.prod.outlook.com (2603:10a6:203:91::28) To AM4PR07MB1315.eurprd07.prod.outlook.com (2a01:111:e400:59ec::13) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a9301406-31c0-481b-5802-08d4cd2c1c74 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(48565401081)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:AM4PR07MB1315; X-Microsoft-Exchange-Diagnostics: 1; AM4PR07MB1315; 3:6wGaV/d6pCynJK9tty5P3LsIeD7zx/wYcnEbgMmFP0F3yWvcb30vOsPhS6m7jNT9d7nVNN230M21gJELwn/V1494HznsEayC+Yd3E0xcrdWJmZWflKVRAPGf30wjM+E0AzESlfj71JC1pUZ+nfv/fbVmThNtLexN5v0trHLGlqeY8RAw/5XKnslgCgpu9p4+dQ6LA5YKl4VC720bZDQbMyoho7Zqfv9wURcNlwHqXpO6dMC+5urUpTC7Z534wWYaiptbIkKCuqB9SmwB24I83bRW+lPJ0VnWa1t3sQodqeXQzMONoZHabkcyAYlRRyA2btb9zVgiZpC1aDsKDj+LbS+YXnS5u6w4Azks9jMsfjHE85m0Toy11GU1vigk5kJESCwk/VY/FB0WDx0NNQ0SNBLR2EUC0MX6WUHDD5hf7plJGk1QmIZwjOH0ajjEuT5PUhN1VmZi3AhjE/UWpIu6br5x07TXqbW/ZZZOyJ/FjqqJSQIeQ+OZv0SpJfcq6AJqk73widml4MeqDHv38Ah+zgNlH0q5hY3m2Le+eybfTmttY+XIJdfUtE62h1Q6adLcac7NyACd9d3RO0kBXSZCkdr63KjJc2+64VcX3TMMyL0AdNFWe3Iv+BMtHWnLpPJqQMeswE9jz300abARiJEbTM9YJ6TushEJr/zMOH4ixg5WVRr4W6ZqNUjw1qCx2cDer1n49USL5Iuxl9ipJKmx1UCDMrlXnJVgt0Vf1oFp0oJ377OQSjOjdEfF+pfCsSq5Aq8dWPMklskXSAorNc8z0w== X-MS-TrafficTypeDiagnostic: AM4PR07MB1315: X-Microsoft-Exchange-Diagnostics: 1; AM4PR07MB1315; 25:X+F5qyjpou/jpX6Yf1DTm3GO4Lqi01KP1L8jKyxSt0egh2ADM4GHT/dXcEslAZrMHCj4IMTf823+89LLMGZnbFA7X8gUxQNj98SL3lmWfwSj2C3wQzEstQKCcgmn4AXXIgsH7271u9Ybrz6P8ceBRJNc1bVC5EcuTwMghbg37O+iN0T4RYbb9E9EuvX9juhOr6bznOJF8e/qmOxlxjaIfLFel0hAfB48mYTlDlSin9NjIklNjc7AsGBCvGy+D3Z/DXK8loW1to1Dywsr/fImOmMOOSM43vWHepijXXLH40DmXjaNbyykTzmOJNnLWEp1pEpjogFheaiy6qAKPHNnYic75twxou8mL/blZ0Lodhrm5JDkhoY83lHXg62nKn5K7bo399bwRFFOoPGMCfkprwRbTLkzll+3L1lLWR4NFqJSKyWfbc5+XrawIw5pcBx45c7UdOrCHBj2+6nxXVh76lQhasrAycayUc98VBqJbgps/7ovfSl/hOiLLA9XmQ8ajij1d80khalDdCkiZhtBxhHOwym2PTEWnh4jnROPik/6sw00UV5Ed3tmVfDbaPxn2fSJz+ZMFPHo2xokeOGOzCO7zR2EfHSMgEW5BQTZzzFhJQ2D4kGizSExtKbONpFKlWZZP83s89Iio2YasV6dW0LK5krMhKnAsscMqe5TkdrSfD+BBU0kXE8uH3gdWGi0fst0mkRTR9AJ/NaW1F6d+HrFT8uyXGGbTIeWbpYQVcYBKaAdW36zdReNgXd5jOaNqFINFkXj0I0BffPmlDqHaMpxUDVmxfDg095+pho0/7dSXne0cUouznKNR/gqvJ0Kl2PtLjOxokhZJFXlsXsmoGXNdf/cQAWByik+SLKTuTrnjzuh29BphFSjbY7LJmh7XJR6/pVTLHu2Zl1/Hv+J7tgEe5jsHVYi6CoOaMiBJDw= X-Microsoft-Exchange-Diagnostics: 1; AM4PR07MB1315; 31:RD/nxpm9r3DsSSjPWEh5ic6ilclEtWmxGMHBpsSm/yNRW4Rrr4S+pV6lsUeZxK0mYH0IQDExnBbKQJHl+GlrzAgUfEF6dgBvSmjZ3uq4UUIiEyHJGqYrAlKWvFEJhE/b9J7FcviFFKMk9nNuRXH7dJGOpG0Arc9O+O7m87n0aEbD0bf1oJZIGk8LzXJYm4SgWLNKIvfwcksAv/bQAmF/+Dc9/SLVpdxG8bORk7mNB05Ryn2pD++yUCMg95HK1bFAZbfMZqlltmU5B/u1NSuFbLTrT1V2RfihGJeTvgHGXuiwhgutUg9tJWzMorxGCDmmaGKillxtzAX1hdmZi/cwRfykkSFGKRt5+JFJwlYwfAvJ0DmZYRLpyqgUt6ZsFNGcvHMfJ2mCrGmhRzd21kd+x7RgKYxJA1wfj4nSW93t5Wa6pqLzugR6gz5vCDpp4AQXFqlZxIz7Pj6TkH5TtdPR8H91RxkBAchlfXUJz8UpWDUPtVgYM4i3DH0W6Ca/1wvjcC38v76xQcHuBOn1Uc17jGlxVO2s58sxPK07ZpK0A/0VLaIvo5YNhjlmiQKJ/Ff76IfD6/9roM4ilYZepQGHvQ4HKo05rh3zDSJ2C/AWsYu6Q8Ai/JfROVTufsJuQLeynj26DW5dhKz2xsGUa5xmalBwt2+xNy6QwF93I8K5/9U= X-Microsoft-Exchange-Diagnostics: 1; AM4PR07MB1315; 20:tCb0x3Y2U6Pig/EXT8y40VZrFnYU3uHJRf+cH+/gOjtCcSmDMC9Ft4TQDCMoBhykRCPBSn9wneNA6xKe5VRgo231aiDtKkKbdYPpQQFxjO1JmPXCezMHyGAClmhSu2RMY4h69kLf4UaGhPJGoxysoU3aRbcE70/pf8n9KyFcLXxRxFN6lPQN1FIEuWnS1/cxt08uPORB1E2S67r14azbxT2xuIhBgMrYqfWNMb85r5UDmHoTN9G2et46scOHqDwjUo1wUnjyhAFr7G2U+aSw/g3pWveFdLa9KZGv6uinA7ipVDTStw/djz4K8FyANGRG7YeG0IgtYFiDc5i1e40zokB3GVHe8CCQwzSZx1khWVdHo7292td4oIA+7S+w23i80i89TDqe+UPIeNTo75QN6ZhCChXBZHxpnlpoq+RHXEh2Yzw5cOLnTuX/pN2xaAGMCWtiRYtFd7dHkFmnAFSIyWXPndAT9AmUNdd5MOK9OFpXZY+i4PzkVAKPa72pzFZhM/INy7LgF/rKUS9t26dA0uCL/OGPin8RKvRT0jUKzVYJ/6zZrkaeYQebw3LUOrvVwXA7bja5eUtg4ofDaUY3kzgCLrHr8kGMEgcB5P+uSK8= X-Exchange-Antispam-Report-Test: UriScan:(133145235818549)(236129657087228)(82608151540597)(148574349560750)(247924648384137); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(2017060910075)(10201501046)(100000703101)(100105400095)(93006095)(93001095)(3002001)(6055026)(6041248)(20161123562025)(20161123555025)(20161123560025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:AM4PR07MB1315; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:AM4PR07MB1315; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM4PR07MB1315; 4:02kleTxoj8OZG8amfViSkREQt3+9NYfw3PwUcn+Vgs?= =?us-ascii?Q?IfRsDVuoK8HfT7fGffjmVbFqp5nLg31IllacTLBc9HaTnn7AkYYjtgbXuT2D?= =?us-ascii?Q?PiQ9pkHDnbIVh5nJpjEB2LOTTCi7cKIB9J9FkTznIKEnL+qi01GOfqNmBKfa?= =?us-ascii?Q?ehwWy15f8Qg/v48P1zcBSl8+X2gvlGDQz62LwZQbr0sTyoa8a52AjKCyF1vA?= =?us-ascii?Q?aKyUgbSBRRHKxWbndqWMb1NOhQL73sZFc64pUi5tGtkxbJK+J+tNcEGc9Tti?= =?us-ascii?Q?CU7ee6gtH4HsfH8TGi074X8Lb3Ig9hw6r8AwxiEI6goGJaGhlw35w/7NVNxV?= =?us-ascii?Q?jCOEtSjM/hK+22Pf/V/Yskxu8qdiaLEN9ACvMIfG/z2kMGk1aykNflWpSMwv?= =?us-ascii?Q?HQ0TLWx/x4gfVBXkAGw3o4ij5uwnGRT4SLwu67b1dpSKi6XgOfg2PsxvnE9w?= =?us-ascii?Q?CEtnAwke8OdTAnQTAQrC6Ui9k7ui7JWDQLjmHcejVpjNj7z+eSMqDbR2Arlu?= =?us-ascii?Q?KCrazc1b5CGToW+AYY4WqV+H52j/G/GKW8HcSubs0O+hYb7mCEV6PqHua2d0?= =?us-ascii?Q?ZSzgFvak7Z0DwW8Dm+umXpX38OALZAfFRvBZZ/rV70F2e2VnZcUnZHFN367W?= =?us-ascii?Q?Hbna6fUOTWSfMRh0Zx/RvvC/EGDCRWVIC4B2gRwcDvUVSfp0FuWrzkKcdG++?= =?us-ascii?Q?86HoX2yXX9uH6dEYUepwre6VC/0ZQjrF0wOmAD0/sZ4yo1pWeDFOhmkJ4eeT?= =?us-ascii?Q?7NouxUHTJVQCs5lJWtdfiZxey8UVJj7yGI8KtKVwTsX9RaiazuoRloMYYPW1?= =?us-ascii?Q?mihmYJHTpCZoxaTLPjt+/Jm5wGCfE1rHgbciRdQ9NzplhhHH9gdticXDQ8HX?= =?us-ascii?Q?px6dB/O/6mD+daYZYZkdSC9ewZo0vpeO0+pHD/YDfHAC9V/WZG6GfLvZfqZK?= =?us-ascii?Q?SIxiIknfnn73m2d1K3N+E72qVEKKKBuMKjTa9Ni8xEpe/BMDVnV75nylWCEU?= =?us-ascii?Q?4lkh3CRsjEYH6sLPfaGepykZtxRd1B946sXV5gItlzEDw3RAK88eEZxU4T6Y?= =?us-ascii?Q?+ygTKmebREUeENnTstM0TwwES5MWz6y2CUZBDZLciagUSdpPEH1ZnAPLSm85?= =?us-ascii?Q?u8nIrtZ2zbPW7sNiUqlZLKWmBBRdhetfrko64/EeEN0uUGq2Kg/cSqY+HzWc?= =?us-ascii?Q?FQVu0rUyBP1qlkDMu5vUTuquudH5Tr3A1H2Oe+gFojKEiwxbMyqVzgn4yZph?= =?us-ascii?Q?yJmzi2DG/fmUoxWy/5eeltgpiTnGfgzuLHxWfQemde4SQY8L7Ro+jN043dv8?= =?us-ascii?Q?AAXiXrifngAauUJG+/SITuulGnQx3J3cQYMOXXXD2GasTXo/w7slBKD9LWFX?= =?us-ascii?Q?pn3Lyzi9IabRN+l3dVTqxOQns=3D?= X-Forefront-PRVS: 0371762FE7 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(7370300001)(4630300001)(6009001)(39450400003)(39840400002)(39410400002)(39860400002)(39850400002)(39400400002)(6486002)(7350300001)(50986999)(110136004)(3846002)(48376002)(50466002)(54906002)(86362001)(6506006)(575784001)(6116002)(36756003)(2906002)(53936002)(6512007)(6916009)(2351001)(6666003)(38730400002)(33646002)(478600001)(42186005)(1076002)(2361001)(189998001)(305945005)(7736002)(5003940100001)(4326008)(81166006)(8676002)(50226002)(25786009)(47776003)(5660300001)(66066001); DIR:OUT; SFP:1102; SCL:1; SRVR:AM4PR07MB1315; H:ulegcpsvdell.emea.nsn-net.net; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM4PR07MB1315; 23:3GG7w/YsjvJmLNoSjzCscE2eqBLU669Yr0FdevzeZ?= =?us-ascii?Q?G+LSfacOonUepZkhjBxzYlpjGBio/Rq8X0hKOPD73u3Hn81OadpYyUaXkR3i?= =?us-ascii?Q?4SRZO5DRFQfyAos1zrjtSDdkReSKpW4ZDdVgPPcF/bsOeFQ0JT3AJJS7iN0p?= =?us-ascii?Q?65ne8NcbFmofodtoPVq28NSCOI6soM8zuAZZdT/lK7RCcDHRI1pZFwaiyA2s?= =?us-ascii?Q?AUV96hJLN8oe6uwncv9nUaAF91Eri3jbKd0CIMF6isynJX30oYxI9Cw2GOdW?= =?us-ascii?Q?2G1Tuf2k2q6IHtdDLryEekBfXPjXZFd3IqdjZXcqqpaN1Wf3da8z9HKItTDg?= =?us-ascii?Q?s434yfVIf+jPzzX4pY8V9XH1VBcAppifd/ZunIFwf8apt4jXeh6P+TtX9EXQ?= =?us-ascii?Q?yqDnUZB4KuBr5GKJKNy6bnMdGlMyCs6pfmO9/EfoEFWA6vE3Kf/AyHsKSB0Y?= =?us-ascii?Q?IWuLUIYEB6jrD9GPW29uovLQELCx6E6ztDPHG7RL7Y9MbNLUms/OWj33RiwU?= =?us-ascii?Q?7mproEwa8lFpPCDDkC//JVa+VhF+NZsLHCD7IYKKXVlQLfVtDMlvkFPkF60r?= =?us-ascii?Q?QkxYacSsXQ2bXlmYDRyMhhooyfaFpLaGkZdm5nVuV4hfhj29TjshYc5SylJ/?= =?us-ascii?Q?tl95AjpkCmci0WFxupk3xdaBa+Ig6d0N6h9gbeQbm4J0ln2R5TxZfsmW948T?= =?us-ascii?Q?XmRQYxs2DwQsNzPMNMUGD6s0oZuaszh3+cm1ovV0NaRdiAKf2gs8ckBmf80h?= =?us-ascii?Q?WCHz/2W64Eojr3LDr1LmJZ/+zFmuqZyVWEwFAG2+7rU2smtjG3peqdOx8FhG?= =?us-ascii?Q?dT4VrRQhnw0K1fs1CWE6TWdwkGH2cZJmDBTgOQELIrZ7WMd4Q1sdxx75Lpcd?= =?us-ascii?Q?dlKwyc5ZfytSzCN1V1RcPtYob7pXW0Qo4PD7hAGcTwhsmV3vnLsUzWjBNClk?= =?us-ascii?Q?AYDhiBUDhRM/8D1P1+S1LgWRWdoFclWYMFDNxZUYqn+ZZpBkPvrE7XITogtM?= =?us-ascii?Q?/k2X27t/A2yDmw+3bqvRZUeDOg8d4i1GhULoqvCJVmST/cqklI/m2Yt3tUzB?= =?us-ascii?Q?ivRwxuq7gAJ3gecIlQgBc/HZ2slvUIRtw8Rc+P0Vk4wR2WZ7oULoyl5qGHC/?= =?us-ascii?Q?c7gsxDKs9ueTL97YzTx+ZlCSFCtn4lpSAzICGFoWZSAqHrJd7GtSQ=3D=3D?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM4PR07MB1315; 6:95JFXDuJxvmJjycpyvlg2aQy7EIT3YwDsCDjxtwAYx?= =?us-ascii?Q?+LlgdWhtOEFdQFazC9YFMBemEw+S78+uZ7YYR1G4g3A+RNiozkGqFBmQSMB0?= =?us-ascii?Q?oTr6jeJAXuUmxHd2h+cRSyzRb86Po118n+aDouXt3KKDhjSt+w/UNbeVqwx6?= =?us-ascii?Q?eG3ZZJ7dD0mnzStA/Op4p+c8DGyi5lYOP0REZj/1d1QrrfXm9myGeqIsjzX9?= =?us-ascii?Q?EpWIMBsWKhDpwrV8VAoh6UzZ4WYiFr0sLYEIVb3WRojITamuhsLDG4j6PEQ/?= =?us-ascii?Q?wGEzEctMgquS4HTaXYyHjCpDkS6hMZbP5dxBJirKyOm/0teSCfZONG14Ajji?= =?us-ascii?Q?oCyUuOVhddYvYKMOrwjXDqaG9tAD+sNA5D8ZEMnX5ojeh7xMm5HE1DdxlsD9?= =?us-ascii?Q?bA/KPcvs4G4LbpUW79W4p37P+NsU8nMUV77IoZmMa5cTuoXssjIcANRkQ/pv?= =?us-ascii?Q?M/thcO0cdjoIzZLNUeYHiI72kkYw/UT6Tky2A6auW+dO/MILl4PV0T6AIlV7?= =?us-ascii?Q?TSLHaan6xEHl16FnxI1JK/iLVb/A+2uaVvMp5fVT5f5P3n6uhowuqUADoYnc?= =?us-ascii?Q?eqbx0qcfq1f1FficEEx7CMyvHg+eBaO74soeV/JJKkYWOiZmb1ilNvuT8VLI?= =?us-ascii?Q?PNWkZJWRuG5DlgjtvlhnuoChHjNZgq/T/bFIZMkODPhpqVkMbgW4IV5vpBDe?= =?us-ascii?Q?13Yr0K1FIeav4gZ3zlRQllYBSOzjnV4Rwx7CbLGMzSirXA9CpDDUJE7S1hlR?= =?us-ascii?Q?WW0foRvrKyolEzcIkufqOLxfrCjDza7WAukbuHC8A9/+bH3J+pFOPPQSsYXl?= =?us-ascii?Q?BkM5xbCa4K4hXeJEJNLdhPZVP9VDxIiasLxS7zlP9KeRda4kHmKtFsNJYV1Q?= =?us-ascii?Q?VNOVhPkHglTNETMP5U5f/ZG9JcwDL6yZ2G+Hh5blJ5dGpQXKfv5YCiyqyh62?= =?us-ascii?Q?fVKZKmvkzvqA8cKxgEI9/IyFU2tLFm9l4Kb2W78zqPV2NvSwZYkYm0ZPYXq5?= =?us-ascii?Q?qECYW59bz54CRFiDTHxsPE?= X-Microsoft-Exchange-Diagnostics: 1; AM4PR07MB1315; 5:/UtFD2SOV66AKhqErarsluzTo6p6JIEgVazimV40Bci1rRSdOvfeMnKTZQpdFjGWH9rPbZ8wNu5MZ8XmbI7qoCyOkCmcpo4YgIouodquKsnfB9aVoOV00+BF6fthZ7PNkiklyL+4gUchElg2O//Mi6yH1J2RdsgiDS/1Iz68PC9nV4/CYGmurFqSsEfyBLEvhIXMrk9+Q/YQRLeybhHPfDLRQpuL7kz3eO9a4ULyTLYvnW+qNUlArt9zU2o6Vo68tT2BxV0nfAnN9K12L4qPbL/uVXBfSKp5Qy4qgZCYn6LphQXggZim0lwpqcgJ9t/cCv8vKP+Q8BA6S2cKDHcjVFb9yKdVyT1SkDz+E5yM/9fCSutt2KisXu5ZSfzVzeY+OCHqTguB77GRmJaFUoUOfQlfrZY6sWLbXcYguhXwikzQNfQuguvtPem26bOIHZGvxps0rsF8QswUOsADZioeMGiQ1Wrw/OoIU4rbUUBus6RZu0Z6JUgV4MAyzT44az0f; 24:69VlhE7fKeX17fKyi4p624dc3uHpqv9vPQYlED0EY/ir4eKs9s0OhpPsLLUdHOgoYfJhpUDZorGVrLG7pUywiq/VvtIF1lBS+hkQ6igE4NM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; AM4PR07MB1315; 7:Lli4Vn+4cjVC15LaL8lRYGViEWxebVqJX1ECw8w2LpvZiL/MYoNZt3u6ygfZq/5qk1u0N153RvTYlHHxbX99Y0v72s17UpxAwpv5T/tH789mHjADhf55uL7Z8QwE4hQFuOB+R4mrcxy+OcRj2sl9cmv4Ou481MFQBULVxznHwDD7dGQ4T3qeYxnYJGS8AzkZQr4PHHx1H26v8AP77HYpsAKbAFE37wBBz1NSKJsKME8hJptI17r8ixeYNxWvaeIAtoLWYX+W+kh6djRJ36gVp5rFS09hpr88pkdCN4XcGm09uEuCYpeIr01JmGxvEhZzv/A/BfCDUEZh6EI7jMknNXcZvbM+5aNu0ZbJb5OSfPQ7weZLZMmAy2KXpXpz1puULUrc+Nb6Egb+9wUvuDJjlEcHd63KDWnQxktjc+l2N6VXLFA1+vV4i5oyhFuajImV+ILVVeqW6raf0yqHN13vn+WMM/Qmjm5UAUQrbvmFP0A7rh3yuvKX+D9pWqBvoAwup668zdWG0l0Fu3MSyUzBKKPADb89swLzPLngTxT4Nz7odWqbD8Gt8/caSm3xqRYRAE/Gn5ug0dY33+L46b8LW3WCpLx7k8WSYYqqcZMdMXlsh/VX+/sn67q6gP4rhP8ze+O+ERyVGdG33xhVMGg0f8OlmHHgGZII7Yu3//OPNNJDKUZKMiXkRvcEpJmrpzSBXGy4UYh48zEBLFjC//PZRR5VO7hcva33649OMHF/mcm7Cg8a+f2DCUmxwBQmpnVgmE8RdAVUWArFs9Kzl1XFCE4ZFJ5qOZ9BHFE4rf4hzhM= X-OriginatorOrg: nokia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jul 2017 15:54:29.8868 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR07MB1315 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20170717_085506_567735_1FEF079D X-CRM114-Status: GOOD ( 10.09 ) X-Spam-Score: -2.9 (--) X-Spam-Report: SpamAssassin version 3.4.1 on bombadil.infradead.org summary: Content analysis details: (-2.9 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [40.107.5.94 listed in list.dnswl.org] -1.0 RCVD_IN_MSPIKE_H5 RBL: Excellent reputation (+5) [40.107.5.94 listed in wl.mailspike.net] -0.0 SPF_PASS SPF: sender matches SPF record -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Boris Brezillon , Richard Weinberger , Marek Vasut , Alexander Sverdlin , Cyrille Pitchen , Brian Norris , David Woodhouse Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org S25FL{128|256|512}S datasheets say: "When P_ERR or E_ERR bits are set to one, the WIP bit will remain set to one indicating the device remains busy and unable to receive new operation commands. A Clear Status Register (CLSR) command must be received to return the device to standby mode." Current spi-nor code works until first error occurs, but write/erase errors are not just rare hardware failures, they also occur if user tries to flash write-protected areas. After such attempt no SPI command can be executed any more and even read fails. This patch adds support for P_ERR and E_ERR bits in Status Register 1 (so that operation fails immediately and not after a long timeout) and proper recovery from the error condition. Tested on Spansion S25FS128S, which is supported by S25FL129P entry. Signed-off-by: Alexander Sverdlin --- Changelog: v2: - rebased onto spi-nor/next branch of the l2-mtd tree drivers/mtd/spi-nor/spi-nor.c | 29 +++++++++++++++++++++-------- include/linux/mtd/spi-nor.h | 5 +++++ 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c index 196b52f..d2c62eb 100644 --- a/drivers/mtd/spi-nor/spi-nor.c +++ b/drivers/mtd/spi-nor/spi-nor.c @@ -88,6 +88,7 @@ struct flash_info { */ #define NO_CHIP_ERASE BIT(12) /* Chip does not support chip erase */ #define SPI_NOR_SKIP_SFDP BIT(13) /* Skip parsing of SFDP tables */ +#define USE_CLSR BIT(14) /* use CLSR command */ }; #define JEDEC_MFR(info) ((info)->id[0]) @@ -308,8 +309,18 @@ static inline int spi_nor_sr_ready(struct spi_nor *nor) int sr = read_sr(nor); if (sr < 0) return sr; - else - return !(sr & SR_WIP); + + if (nor->flags & SNOR_F_USE_CLSR && sr & (SR_E_ERR | SR_P_ERR)) { + if (sr & SR_E_ERR) + dev_err(nor->dev, "Erase Error occured\n"); + else + dev_err(nor->dev, "Programming Error occured\n"); + + nor->write_reg(nor, SPINOR_OP_CLSR, NULL, 0); + return -EIO; + } + + return !(sr & SR_WIP); } static inline int spi_nor_fsr_ready(struct spi_nor *nor) @@ -1043,15 +1054,15 @@ static const struct flash_info spi_nor_ids[] = { */ { "s25sl032p", INFO(0x010215, 0x4d00, 64 * 1024, 64, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, { "s25sl064p", INFO(0x010216, 0x4d00, 64 * 1024, 128, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, - { "s25fl256s0", INFO(0x010219, 0x4d00, 256 * 1024, 128, 0) }, - { "s25fl256s1", INFO(0x010219, 0x4d01, 64 * 1024, 512, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, - { "s25fl512s", INFO(0x010220, 0x4d00, 256 * 1024, 256, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, + { "s25fl256s0", INFO(0x010219, 0x4d00, 256 * 1024, 128, USE_CLSR) }, + { "s25fl256s1", INFO(0x010219, 0x4d01, 64 * 1024, 512, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | USE_CLSR) }, + { "s25fl512s", INFO(0x010220, 0x4d00, 256 * 1024, 256, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | USE_CLSR) }, { "s70fl01gs", INFO(0x010221, 0x4d00, 256 * 1024, 256, 0) }, { "s25sl12800", INFO(0x012018, 0x0300, 256 * 1024, 64, 0) }, { "s25sl12801", INFO(0x012018, 0x0301, 64 * 1024, 256, 0) }, - { "s25fl128s", INFO6(0x012018, 0x4d0180, 64 * 1024, 256, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, - { "s25fl129p0", INFO(0x012018, 0x4d00, 256 * 1024, 64, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, - { "s25fl129p1", INFO(0x012018, 0x4d01, 64 * 1024, 256, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, + { "s25fl128s", INFO6(0x012018, 0x4d0180, 64 * 1024, 256, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | USE_CLSR) }, + { "s25fl129p0", INFO(0x012018, 0x4d00, 256 * 1024, 64, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | USE_CLSR) }, + { "s25fl129p1", INFO(0x012018, 0x4d01, 64 * 1024, 256, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | USE_CLSR) }, { "s25sl004a", INFO(0x010212, 0, 64 * 1024, 8, 0) }, { "s25sl008a", INFO(0x010213, 0, 64 * 1024, 16, 0) }, { "s25sl016a", INFO(0x010214, 0, 64 * 1024, 32, 0) }, @@ -2707,6 +2718,8 @@ int spi_nor_scan(struct spi_nor *nor, const char *name, nor->flags |= SNOR_F_HAS_SR_TB; if (info->flags & NO_CHIP_ERASE) nor->flags |= SNOR_F_NO_OP_CHIP_ERASE; + if (info->flags & USE_CLSR) + nor->flags |= SNOR_F_USE_CLSR; if (info->flags & SPI_NOR_NO_ERASE) mtd->flags |= MTD_NO_ERASE; diff --git a/include/linux/mtd/spi-nor.h b/include/linux/mtd/spi-nor.h index 0df3638..1f0a7fc 100644 --- a/include/linux/mtd/spi-nor.h +++ b/include/linux/mtd/spi-nor.h @@ -105,6 +105,7 @@ /* Used for Spansion flashes only. */ #define SPINOR_OP_BRWR 0x17 /* Bank register write */ +#define SPINOR_OP_CLSR 0x30 /* Clear status register 1 */ /* Used for Micron flashes only. */ #define SPINOR_OP_RD_EVCR 0x65 /* Read EVCR register */ @@ -119,6 +120,9 @@ #define SR_BP2 BIT(4) /* Block protect 2 */ #define SR_TB BIT(5) /* Top/Bottom protect */ #define SR_SRWD BIT(7) /* SR write protect */ +/* Spansion/Cypress specific status bits */ +#define SR_E_ERR BIT(5) +#define SR_P_ERR BIT(6) #define SR_QUAD_EN_MX BIT(6) /* Macronix Quad I/O */ @@ -224,6 +228,7 @@ enum spi_nor_option_flags { SNOR_F_NO_OP_CHIP_ERASE = BIT(2), SNOR_F_S3AN_ADDR_DEFAULT = BIT(3), SNOR_F_READY_XSR_RDY = BIT(4), + SNOR_F_USE_CLSR = BIT(5), }; /**