Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756466AbbLBVT0 (ORCPT ); Wed, 2 Dec 2015 16:19:26 -0500 Received: from mail-by2on0105.outbound.protection.outlook.com ([207.46.100.105]:50784 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754413AbbLBVTB (ORCPT ); Wed, 2 Dec 2015 16:19:01 -0500 Authentication-Results: spf=permerror (sender IP is 192.88.168.50) smtp.mailfrom=freescale.com; vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=freescale.com; Date: Wed, 2 Dec 2015 15:06:28 -0600 From: Han Xu To: Michal Suchanek CC: Heiner Kallweit , David Woodhouse , Brian Norris , Mark Brown , Boris Brezillon , Javier Martinez Canillas , Rafal Milecki , Jagan Teki , "Andrew F. Davis" , Mika Westerberg , Gabor Juhos , Bean Huo , Furquan Shaikh , , , Subject: Re: [PATCH v6 03/10] mtd: fsl-quadspi: return amount of data read/written or error Message-ID: <20151202210626.GA21512@chopperman.am.freescale.net> References: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11OLC001;1:PTFGSFvbHgVupjIEc+kh+W/zj57O1VAJGJlQJBMZnXnVSKKNKl2KdnACzK6Qe8dwGaFBqHjCdT7J/+kt3fgnc27Ndx9x5+LNPe2R+4nlsbfyAbGHYqXJrsJi6GUL37+QsHyAG/EXyi3aKAcfawqPa7SKdLC2MAQiASXfib+ztXPoBVKtxymChuKGXrwQyUwWpRyof+1nS9YrCqcva85TwtojUs6l7hlgf2GCa1iCBrpQPMSgT5RNJ0y9Fb0BR3NA5kN8S9okNLNgWKp2YkSMXnjHoP9vhBo/5s9PgV5N6VdYx+z75AkSiIj60IDwINgYGsyLltswes6bEr2fSVkj9aYt+d4JG7E3EvNMuALWQTxS0D1QIkloy6o91u0/ZGduan+woNxPnUKtWcGWd9pgkKe1tyE5ac8M+Ep01jItFks= X-Forefront-Antispam-Report: CIP:192.88.168.50;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(2980300002)(448002)(24454002)(189002)(199003)(33656002)(5003600100002)(189998001)(85326001)(5001960100002)(106466001)(81156007)(4001350100001)(1411001)(110136002)(1096002)(47776003)(50466002)(76176999)(83506001)(46406003)(97736004)(97756001)(19580405001)(5008740100001)(19580395003)(104016004)(92566002)(1076002)(11100500001)(15975445007)(50986999)(6806005)(23726003)(54356999)(87936001)(2950100001)(1220700001)(586003)(77096005)(86362001);DIR:OUT;SFP:1102;SCL:1;SRVR:BLUPR03MB602;H:tx30smr01.am.freescale.net;FPR:;SPF:PermError;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB602;2:6gN+4IiVOC/kgxE8ERIPOLQC1iQLauhwA0/N5LepGtb/bHkjo94a7VQJIPnRKUTIG6E4SUegfIvU1BuYewngeBj1wL4zpX02C49Z06TpFTvwBS9TjI2Bwwisjn0hZdAWsIWkpFtxjcJGuuwP9tckRQ==;3:6c5Qr9tpLoDGuITHc/DaFmLuZVXUff2vjYKpE44JQF8gZn6IPSZcCYnj7PEQR5S3sJWJ9fElfKWm4tVyFzW3ysUcbg/T7dRyFMFKzWuXso/W5a9fgx8IcHTYtAsJft+w0rWuYbuayRJD+KoVQ+jogBbS4GzwnpghGDkevkV0SJ/mHtHf4Wt3buLczD5mOO3AEV6RuY+fsrBJo/DWkplb//MFMzDna4gDiiffQEAPVnE=;25:wooddcpUghbdskJaVCJkqFsMTJSFr816FPTbaeVcuHbsyAorrWlgme5zW8u5jiRO92MwjP4Gf76YjpPUJ23az0xCJaNbqeVe/TZRtBc2zQfHXjABjRNUM3ZF+H4e+I3MqzMRf8EgoWwwnZyZvgA3vpnsLLOEApIwMwJ5hf87lUmBGc1IsxfjQQOp5xpwUjbD6jxaRPdkbKvC5KloDipG5owiu/qwn2MmzWG4ckrLaca/QKinZ1zAuP8fgtyie3rW X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BLUPR03MB602; X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB602;20:5k7mOmsPLiOH58g5lQidlCkS2VioWAHwqBfNn4XbrRHD0aKCqFkYoU+OxI7Q0PuIJ3tsqeDG5TdPPj+5GgqvQelTRsk78g8SYqcSeBuq8muGkEquRm5D4cR+1LcxGTDtqw51vUtK5RQA7CwCe8u0tcxBeTlDagm7GvyZ2B1lPkKEGuAL/UzkLqkxVvg+7wYU/CMy/xPwBGkHREX4VPh/BUda0jJQs/T6CI3vTZsUQvmqO+IZkcY7ShLmO0OgHaNQ/57ZANjx4c7JC8eVtxqmQJ4pLNgUWJbf+Zqd4YUZEElFIe8Iy7QTB9ppPX3oeDgALG9ssmKimi51hipgnfNGmXBu7npyHNlm2bah8yP+0SM=;4:D/YN3WbpdTjJKu8SjdaB8d5pKMlnXzXbN6fr1q3Lc92h8fdqmW/PvhGgVnrJmV+Q08dXKVqRQbgHuABLo/kdutaSl1MKe5XU0z2sen8XLjiTo1hGmh2w5gfNt7OP0fmUUeYUONq8rsNVh+172mnfWkFuv5MEcbwf90EYSZ29+ufN6hYsjJxwtTDmte6IKPveMNhXgqra0JdlHI8sv8b/XsWavQEl/m3+cOa+V8jOMcZ7h7P7KCHsR1k1AV8AgHwUFQewpWjLaxtf6z4bVMNXDXSwSf3deaWxbEV7o1q9e5bi0mG9ZXa74HgFydu/T4uQo0encG9nuOgGH6wE/5EmMoSqjFcZah55aOowR4E1jC0ZnXwne9WRodTAJfeiClQY X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(8121501046)(520078)(5005006)(3002001)(10201501046);SRVR:BLUPR03MB602;BCL:0;PCL:0;RULEID:;SRVR:BLUPR03MB602; X-Forefront-PRVS: 077884B8B5 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BLUPR03MB602;23:lBEOZlbJcMCCbIbFGjJz/PcJXSRdGKA8+bclvITq1k?= =?us-ascii?Q?Qzeu9qgIs/h5nbXV3INotOi2bFnllbbiyiloKetl3XL2034kMO8cI4SnodSi?= =?us-ascii?Q?XYVVLsQzT4oi230Lj9jQrwDnrYgeE9R/pZC5RpS9eliV9aknGU+ElZuiulB7?= =?us-ascii?Q?hfgfikV/C6KIb+2oU1ylilj2l9/IizyHIoRBR/SmxbMEPhX2SNwTRBfMKBsX?= =?us-ascii?Q?sNtcB3ggyWAFKMitKTTr0OZHFhJHawvj3f1a3dMqTDljr0vVlgn2nktCXy7+?= =?us-ascii?Q?MLRAdqaMOpYUzKhmaRofCqlxF1YJY0SNl+AEXiJ2+LZkZEoGKBgF3vODKWZP?= =?us-ascii?Q?/O4e+ZMUWfMHAMmk69lWKc2WRsLXk6fyujtEyJspSVvvjDUl9J+2NEwSnVNf?= =?us-ascii?Q?jU8hz4qo888fW5NFuZbWBgU51SsNS4+8fpzofXgJdnmvcFMwyLlI6j2dRIUi?= =?us-ascii?Q?/1SG06UugS1zJp5yHAty6q5oNR+V5lg1ujWLThQ6CXwiaYP2DPP+lJTxKGky?= =?us-ascii?Q?9wi4tzm6DtOFSJ+FPanJFMQ9Yx3D9V8eJ7HYeWXXQb90i9mOOY2t5IfedmZS?= =?us-ascii?Q?WiBRVnPdsySsGMCbg2hPMuDv3Ie3RwC3CePd4bSWBotXxOxe2x0FIKCnBhZt?= =?us-ascii?Q?hy439vv7Pe6T0CComKWtssDKKFdnvAOLFsSW643CmpWVrIeqKFzAKE0tit4q?= =?us-ascii?Q?DhUY845rDiwX/NnCCnDHpm2WRsvSM+9yhZ0F6Ah13tfHy+edgMH9QE+13IBG?= =?us-ascii?Q?4jOf8G96cDQIWcb5cstfJJgHT/NKZDmgwID3CAt4xG8GulmMYjSYewAqp77y?= =?us-ascii?Q?0y+XWWlJTFxhj0xICY/9xmDGVC1W75JF11y3wPRlZVry4lF4NNXqJ7+V3pUK?= =?us-ascii?Q?APRK7mSNyrCUusnOwqfx/BDgqkjqN4RzDC6hW4UW2TipEOMGiLU54NWu64Rv?= =?us-ascii?Q?k2Ed0toUXR7gYv0IVlK7eh0u3GlzDwqgNGcvLO+dGEjBoQZZoQ3lVYcPf89z?= =?us-ascii?Q?niaatIOylQ4tZFVIgzueebeT1u1VhoeLqrUwP7xzauBBrlR7JpINPOMvW4wF?= =?us-ascii?Q?zEMEF2UKSd7CQhNNFJvJdW49GjfsDdLhcB44wmVLJNlzVhCckDvOShnNzW0J?= =?us-ascii?Q?NIe2gz2aA=3D?= X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB602;5:Yw2cOBZKUzATxhCVUNq/LRSA3U+VG/vtphCQMDrno4wh5bxXlARTonudYZFPybpHSS4LZg6BUOmGWM89WnPucG71bcp7Iq+QKTFDveHyIvigE49uXkcrLln6Yz7NVQFGGFUCsBsjCyCcDsv53y4icA==;24:V+XN3YxhcLE3KL7O9FFgDmfz5nWvgpn//86bjeGIrFreSlIhHND5i8aOE6MDGBqbN2RNHuAabnWwlkoLq0Y/DVaWxMvAfMi8svUhWCh/UTc= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Dec 2015 21:18:58.8753 (UTC) X-MS-Exchange-CrossTenant-Id: 710a03f5-10f6-4d38-9ff4-a80b81da590d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=710a03f5-10f6-4d38-9ff4-a80b81da590d;Ip=[192.88.168.50];Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR03MB602 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2725 Lines: 90 On Wed, Dec 02, 2015 at 10:38:19AM +0000, Michal Suchanek wrote: > Return amount of data read/written or error as read(2)/write(2) does. > > Signed-off-by: Michal Suchanek > --- > drivers/mtd/spi-nor/fsl-quadspi.c | 18 +++++++++++------- > 1 file changed, 11 insertions(+), 7 deletions(-) > > diff --git a/drivers/mtd/spi-nor/fsl-quadspi.c b/drivers/mtd/spi-nor/fsl-quadspi.c > index 10d2b59..9beb739 100644 > --- a/drivers/mtd/spi-nor/fsl-quadspi.c > +++ b/drivers/mtd/spi-nor/fsl-quadspi.c > @@ -575,7 +575,7 @@ static inline void fsl_qspi_invalid(struct fsl_qspi *q) > writel(reg, q->iobase + QUADSPI_MCR); > } > > -static int fsl_qspi_nor_write(struct fsl_qspi *q, struct spi_nor *nor, > +static ssize_t fsl_qspi_nor_write(struct fsl_qspi *q, struct spi_nor *nor, conflict with the patch I acked. https://patchwork.ozlabs.org/patch/545925/ I may change it and test on my side. > u8 opcode, unsigned int to, u32 *txbuf, > unsigned count, size_t *retlen) > { > @@ -604,8 +604,11 @@ static int fsl_qspi_nor_write(struct fsl_qspi *q, struct spi_nor *nor, > /* Trigger it */ > ret = fsl_qspi_runcmd(q, opcode, to, count); > > - if (ret == 0 && retlen) > - *retlen += count; > + if (ret == 0) { > + if (retlen) > + *retlen += count; > + return count; > + } > > return ret; > } > @@ -814,6 +817,8 @@ static int fsl_qspi_write_reg(struct spi_nor *nor, u8 opcode, u8 *buf, int len) > } else if (len > 0) { > ret = fsl_qspi_nor_write(q, nor, opcode, 0, > (u32 *)buf, len, NULL); > + if (ret > 0) > + return 0; > } else { > dev_err(q->dev, "invalid cmd %d\n", opcode); > ret = -EINVAL; > @@ -827,12 +832,12 @@ static ssize_t fsl_qspi_write(struct spi_nor *nor, loff_t to, > { > struct fsl_qspi *q = nor->priv; > > - fsl_qspi_nor_write(q, nor, nor->program_opcode, to, > + ssize_t ret = fsl_qspi_nor_write(q, nor, nor->program_opcode, to, > (u32 *)buf, len, retlen); > > /* invalid the data in the AHB buffer. */ > fsl_qspi_invalid(q); > - return 0; > + return ret; > } > > static ssize_t fsl_qspi_read(struct spi_nor *nor, loff_t from, > @@ -878,8 +883,7 @@ static ssize_t fsl_qspi_read(struct spi_nor *nor, loff_t from, > memcpy(buf, q->ahb_addr + q->chip_base_addr + from - q->memmap_offs, > len); > > - *retlen += len; > - return 0; > + return len; > } > > static int fsl_qspi_erase(struct spi_nor *nor, loff_t offs) > -- > 2.6.2 > -- Best Regards, Han "Allen" Xu -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/