Received: by 2002:ac0:a582:0:0:0:0:0 with SMTP id m2-v6csp103375imm; Wed, 3 Oct 2018 12:39:23 -0700 (PDT) X-Google-Smtp-Source: ACcGV63Dwqq4/yPYVpR9UHaaMwcKGidbmg0bhB98HfemaHswGah8wuszEn9MlT/WcbiQ2hduedMO X-Received: by 2002:a17:902:925:: with SMTP id 34-v6mr3133514plm.307.1538595563314; Wed, 03 Oct 2018 12:39:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1538595563; cv=none; d=google.com; s=arc-20160816; b=ujg25xGxQ6+1SnqXgroM485Xk9GSHG/ZnM0FFtw5QGX8YQjj9X3WD74QbdC1tzJHYw fr0A/YFTwxwObqI4m0QBQ2keIRDciBtxSJuN04FLPuwz2pqa4FaxHiIDn4i6hyTury+r Nks6TSbLK2qMv5YO5PkbIuXcUehn8I7VT3saREgCyYYFp9fLCHP2dSwLZQSGI3pRLFMG kxw5icrKwJ8BRw1YFovUodUsE3NzSzuiGzvtmtVD8uUuYeT+POIyEZZtn9T22K8GeRSg MYlzqA9bnm7iV8mGYkS10UKI93BbJxrR5q9j9sacuJw/1f3zNTZsz0C7CvxzFhI8y3Wd +Xlw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:subject:cc:to:from:date; bh=EV5HFN01d0CDl7RjQx7T1/mUzWF85bzpYIB2t9yM5dk=; b=I77HMPdEttExE4Mbhhbk5kBDq1TbwjsXeJzj1sejbEKcmwPNfl7UCARaTY0OcU1uh1 AsKrIMxsl5U5h4wE6lnpn+Wak7Dl2l825o325pkCoB+iVcXTefFUwSiIfuZtilttQFBQ hLSgnc82Dqyupw7jbA+KRIUoCDL2AbHTEwVBEFCJUMPjZoME3SYaanX7mIs9sgXB2daz 2rijqoyXmqCmqOPuPoW0IWrm3TCd59FL5xRWJ/cRte4iW/BqoL7AnJPWTByp8z7lbDKN TGYAqjhMl7QDe1BItjs4vhoda/Nc2NWAsaGjF/0XFtQ7pRNXH6o0hvuoI99KjbMLc6/g F5YQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l4-v6si2591184plb.181.2018.10.03.12.39.06; Wed, 03 Oct 2018 12:39:23 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727143AbeJDC2n (ORCPT + 99 others); Wed, 3 Oct 2018 22:28:43 -0400 Received: from mail.bootlin.com ([62.4.15.54]:48279 "EHLO mail.bootlin.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726964AbeJDC2n (ORCPT ); Wed, 3 Oct 2018 22:28:43 -0400 Received: by mail.bootlin.com (Postfix, from userid 110) id B59C1207F0; Wed, 3 Oct 2018 21:38:54 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mail.bootlin.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,SHORTCIRCUIT shortcircuit=ham autolearn=disabled version=3.4.0 Received: from bbrezillon (91-160-177-164.subs.proxad.net [91.160.177.164]) by mail.bootlin.com (Postfix) with ESMTPSA id 666162071E; Wed, 3 Oct 2018 21:38:44 +0200 (CEST) Date: Wed, 3 Oct 2018 21:38:44 +0200 From: Boris Brezillon To: Naga Sureshkumar Relli Cc: , , , , , michals@xilinx.com, linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org, nagasuresh12@gmail.com Subject: Re: [LINUX PATCH v11 3/3] mtd: rawnand: arasan: Add support for Arasan NAND Flash Controller Message-ID: <20181003213844.14d4095e@bbrezillon> In-Reply-To: <1537878031-22253-4-git-send-email-naga.sureshkumar.relli@xilinx.com> References: <1537878031-22253-1-git-send-email-naga.sureshkumar.relli@xilinx.com> <1537878031-22253-4-git-send-email-naga.sureshkumar.relli@xilinx.com> X-Mailer: Claws Mail 3.15.0-dirty (GTK+ 2.24.31; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Naga, On Tue, 25 Sep 2018 17:50:31 +0530 Naga Sureshkumar Relli wrote: > +static int anfc_read_param_get_feature_sp_read_type_exec(struct nand_chip *chip, > + const struct nand_subop > + *subop) > +{ > + const struct nand_op_instr *instr; > + struct anfc_nand_controller *nfc = to_anfc(chip->controller); > + unsigned int op_id, len; > + struct anfc_op nfc_op = {}; > + struct mtd_info *mtd = nand_to_mtd(chip); > + struct anfc_nand_chip *achip = to_anfc_nand(chip); > + u32 dma_mode, addrcycles, write_size; > + > + anfc_parse_instructions(chip, subop, &nfc_op); > + instr = nfc_op.data_instr; > + op_id = nfc_op.data_instr_idx; > + > + if (nfc_op.cmds[0] == NAND_CMD_PARAM) { > + nfc->prog = PROG_RDPARAM; > + dma_mode = 0; > + addrcycles = 1; > + write_size = 0; > + } > + if (nfc_op.cmds[0] == NAND_CMD_GET_FEATURES) { > + nfc->prog = PROG_GET_FEATURE; > + dma_mode = 0; > + addrcycles = 1; > + write_size = 0; > + } > + if (nfc_op.cmds[0] == NAND_CMD_READ0) { > + nfc->prog = PROG_PGRD; > + addrcycles = achip->raddr_cycles + achip->caddr_cycles; > + write_size = mtd->writesize; > + dma_mode = 1; > + } > + Sorry, but I still don't understand why nfc->prog is different. Did you try using PROG_PGRD for all these ops? I mean, the sequence is the same, and you keep passing the opcode and the number of address cycles to the engine using other reg fields. Also, you're not using the addrcycles info provided by the the address instruction and instead deduce it based on the opcode, which is wrong. To make it clearer, I'd like to avoid those nfc_op.cmds[0] == NAND_OPCODE tests, because it's exactly the kind of things we were trying to get rid off by introducing the ->exec_op() interface. > + anfc_prepare_cmd(nfc, nfc_op.cmds[0], 0, dma_mode, write_size, > + addrcycles); > + anfc_setpagecoladdr(nfc, nfc_op.row, nfc_op.col); > + > + if (!nfc_op.data_instr) > + return 0; > + > + len = nand_subop_get_data_len(subop, op_id); > + anfc_rw_pio_op(mtd, nfc->buf, roundup(len, 4), 1, nfc->prog, 1, 0); > + memcpy(instr->ctx.data.buf.in, nfc->buf, len); > + > + return 0; > +}