From patchwork Fri Mar 20 09:35:31 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tudor Ambarus X-Patchwork-Id: 1258842 X-Patchwork-Delegate: jagannadh.teki@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=microchip.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=microchiptechnology.onmicrosoft.com header.i=@microchiptechnology.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-microchiptechnology-onmicrosoft-com header.b=D9cMZj5M; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 48kLnq01Qkz9sSK for ; Fri, 20 Mar 2020 22:16:46 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 7EE84801D2; Fri, 20 Mar 2020 12:16:38 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=microchip.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=microchiptechnology.onmicrosoft.com header.i=@microchiptechnology.onmicrosoft.com header.b="D9cMZj5M"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 4F234800DF; Fri, 20 Mar 2020 10:35:44 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 Received: from esa1.microchip.iphmx.com (esa1.microchip.iphmx.com [68.232.147.91]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 85C89800DF for ; Fri, 20 Mar 2020 10:35:36 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=microchip.com Authentication-Results: phobos.denx.de; spf=fail smtp.mailfrom=Tudor.Ambarus@microchip.com IronPort-SDR: OjWZ66SEgWYr+5G/aF8DydUnnrkBfSNN8QeBeeWIa9wwBYDHSuDucIZ3upvL/yrzYv4kzIfDI4 bGvQMKrwuN1v8+3JQa9iPPWWkuuEV8rbkL98V4gRL+EBUniVsqOmVg/56AyabwJ8kjkMtGeZvQ XMFJwPbm+kz7zA1EdgQeDEOMLivHBPcAujNvN60antvcJI+lMArU4Z1dAnYQlahJ/RH8bX/bvi azBLGwu4DCQNlsQ5ceV3wMU8fxMTfzCI4NU9oV/ZbyKqvYh/rvC6WtD+ptSBY/jhw/EAMnOGyS WPM= X-IronPort-AV: E=Sophos;i="5.72,284,1580799600"; d="scan'208";a="72830455" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa1.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 20 Mar 2020 02:35:34 -0700 Received: from chn-vm-ex02.mchp-main.com (10.10.85.144) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Fri, 20 Mar 2020 02:35:33 -0700 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.87.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Fri, 20 Mar 2020 02:35:32 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=J+Jx0a0tMvhi4Oicyvr90f2iTUdtxd7mLXqI7ieo91iCOucJ03vx9euyXhKcrhwfu1WVwq4EEvkuTdW41qNcR3z2fPsTHsYHQ4eA641Sqa6+JKZLvL+FD+O7AhUkXVrQ1UhUmDcgGl91JbOvNiu82tGJgLmLnupUl29HnY0rcXt+keRrko8vrb+XJIipHG+Vm6m22akcIQ7IiREKLPvHBDdKSR7c1ihVl3RmUYEO32sT39t5PpFbr9wZYfYDIq+droL1U0Xjc6q1rARmsiFH0zoxQJ4J5tjFEgiOGkq8uLjuIq4aEA9B15ZzoL3IZf9wT0RNK8ijT5cRMkW0zPp4SQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=c/RvN1i38iDHr0vrm47PnS9uZFspxOY8bYWCoaZ/y5M=; b=RLcYbU71Dp83cXq9Bobd5lWrZe+B9vcujHMe4UOWkcsqpJ6z8MZfDODq4JHEQKJ5CV1UOI6B6ifQ3Xfq/7rEyd7l0TE8A2K4Cxh7CUkHbsrC08AxQx7CB8aq/FzRKBOdLUTa0WrUfhq1ontGxYHmdJoSDlJISaDCrQwsO29dIX8yvup3tknx0r6J4vZ5zAV4sEmvK5etfmrohQtCPcmRPxY+I+X0Og7QkZZRma5MxqbDAplzzHHA35Qv6Z31QsXtoWwgs6TWCLNhd8mO0ARdl1Hrj5ZY9WzlKnYOPQaUYPFa1ASjuH9753iuRJ/sH4uO+aYogzAmFAlJjCQVzoZC/Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microchip.com; dmarc=pass action=none header.from=microchip.com; dkim=pass header.d=microchip.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microchiptechnology.onmicrosoft.com; s=selector2-microchiptechnology-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=c/RvN1i38iDHr0vrm47PnS9uZFspxOY8bYWCoaZ/y5M=; b=D9cMZj5MIeaFZoUV0rLl6pymyFxWoZZRznxpwvNSeLImoQ/dbCJMkr0JHMTgQltQAPIN/Yat4MTsvy9z4NLNiawk8luf/0MCYjjnJb+n6lxidmdbBiB9k5pqA9rx8mHEuGtzuhjrBHIrGJceZ6ZcPLg42UzDmLo62dOOmJrB2LU= Received: from MN2PR11MB4448.namprd11.prod.outlook.com (2603:10b6:208:193::29) by MN2PR11MB3999.namprd11.prod.outlook.com (2603:10b6:208:154::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2835.19; Fri, 20 Mar 2020 09:35:32 +0000 Received: from MN2PR11MB4448.namprd11.prod.outlook.com ([fe80::b515:d8f2:b5f5:245f]) by MN2PR11MB4448.namprd11.prod.outlook.com ([fe80::b515:d8f2:b5f5:245f%7]) with mapi id 15.20.2835.017; Fri, 20 Mar 2020 09:35:32 +0000 From: To: CC: , Subject: [u-boot][PATCH] spi: spi-mem: Add SPI_MEM_NO_DATA to the spi_mem_data_dir enum Thread-Topic: [u-boot][PATCH] spi: spi-mem: Add SPI_MEM_NO_DATA to the spi_mem_data_dir enum Thread-Index: AQHV/prmuc0hnZ1c60yxWmpaPRJmUg== Date: Fri, 20 Mar 2020 09:35:31 +0000 Message-ID: <20200320093527.921010-1-tudor.ambarus@microchip.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Tudor.Ambarus@microchip.com; x-originating-ip: [94.177.32.156] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: bc790c3d-476a-4da5-1fca-08d7ccb208cf x-ms-traffictypediagnostic: MN2PR11MB3999: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-bypassexternaltag: True x-ms-oob-tlc-oobclassifiers: OLM:9508; x-forefront-prvs: 03484C0ABF x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(136003)(376002)(39860400002)(346002)(396003)(199004)(2616005)(76116006)(91956017)(71200400001)(1076003)(86362001)(6916009)(2906002)(478600001)(36756003)(54906003)(4326008)(316002)(5660300002)(186003)(26005)(6506007)(66556008)(107886003)(6512007)(81166006)(66446008)(81156014)(6486002)(64756008)(8936002)(66476007)(8676002)(66946007); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR11MB3999; H:MN2PR11MB4448.namprd11.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; received-spf: None (protection.outlook.com: microchip.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 1vV0Oz2ohp2smuPG1oSWYciHhhIkSHebS7FZYHdgyJ9YGLo43nj8cD1OrIc360+oILRsnTnEcrehP/umP0r+/IJYLOBfFwR9QDdRwutVOPQNg9tBHEGx51Ksl6u6DLpjOFmKWqOTiyADTAvNNwAyoe2TkNmAUdkeuZscgAxA+RvaZ+lB4zDwyHYkCDeCML0zDypdF3a06B8V1fIt7+tcRjsdM9s2lsLLsWZlXE3cIbc9Zv9Xo8lVAwOiEmCyKQCOWRxWMRU8/wyosKvTgfzH2Qg8TDtrScwn026BF7RfOnI/zZ1YfaZ+B0hwqpFljtFoV9UoxUc0+rJTflMaNhv3uWpPz7YYYSAtta2eCPcIcnwQ8tmVsOLmA5KV0rkZRU7JAsWWZFKhs2iQffno9QfUcxCZmLVssYUpWBifHLyOF8fSYKutSHLYnXOOgFeVxXqn x-ms-exchange-antispam-messagedata: 8HMo1GaVGbY0l2AZEFMHfGxhTvSYwjjWSzczFkJLpFH24zBlA78ZnOAugPn2/o2C7smEWnlhmvngD6Wjh94MrIr7WoLINf/qgRam7ujJJM6o71Tl1wLo9u/6HyX0AnUt6N89NtmxLERzo8VZD1W3gw== MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: bc790c3d-476a-4da5-1fca-08d7ccb208cf X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Mar 2020 09:35:31.7892 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3f4057f3-b418-4d4e-ba84-d55b4e897d88 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 656NLCXS3IsNFvAl9lrv58V9seLNxYNnICZOyOF1N1LbvZQlCZILfmZ69eULwrDSe7gLs65HbJLIQENfqjjF0WG6Ad8hwofCpEpJWn6fhE8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB3999 X-Mailman-Approved-At: Fri, 20 Mar 2020 12:16:37 +0100 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.30rc1 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de X-Virus-Status: Clean From: Tudor Ambarus Commit: 0ebb261a0b2d ("spi: spi-mem: Add SPI_MEM_NO_DATA to the spi_mem_data_dir enum") in linux. When defining spi_mem_op templates we don't necessarily know the size that will be passed when the template is actually used, and basing the supports_op() check on op->data.nbytes to know whether there will be data transferred for a specific operation is not possible. Add SPI_MEM_NO_DATA to the spi_mem_data_dir enum so that we can base our checks on op->data.dir instead of op->data.nbytes. This also fixes a bug identified with the atmel-quaspi driver. The spi-nor core, when erasing sectors, fills the spi_mem_op template using SPI_MEM_OP_NO_DATA, which initializes all the data members with value zero. This is wrong because data.dir is treated as SPI_MEM_DATA_IN, which translates in our driver to read accesses for erases (RICR), while the controller expects write accesses (WICR). Signed-off-by: Tudor Ambarus Reviewed-by: Jagan Teki --- drivers/spi/spi-mem.c | 2 +- include/spi-mem.h | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/spi/spi-mem.c b/drivers/spi/spi-mem.c index e900c997bd7f..ffbe20c5b1e6 100644 --- a/drivers/spi/spi-mem.c +++ b/drivers/spi/spi-mem.c @@ -153,7 +153,7 @@ bool spi_mem_default_supports_op(struct spi_slave *slave, spi_check_buswidth_req(slave, op->dummy.buswidth, true)) return false; - if (op->data.nbytes && + if (op->data.dir != SPI_MEM_NO_DATA && spi_check_buswidth_req(slave, op->data.buswidth, op->data.dir == SPI_MEM_DATA_OUT)) return false; diff --git a/include/spi-mem.h b/include/spi-mem.h index 36814efa8613..893f7bd73370 100644 --- a/include/spi-mem.h +++ b/include/spi-mem.h @@ -60,10 +60,12 @@ /** * enum spi_mem_data_dir - describes the direction of a SPI memory data * transfer from the controller perspective + * @SPI_MEM_NO_DATA: no data transferred * @SPI_MEM_DATA_IN: data coming from the SPI memory * @SPI_MEM_DATA_OUT: data sent the SPI memory */ enum spi_mem_data_dir { + SPI_MEM_NO_DATA, SPI_MEM_DATA_IN, SPI_MEM_DATA_OUT, };