From patchwork Sun Dec 16 15:17:41 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jianxin Pan X-Patchwork-Id: 10732519 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 3E3F017E1 for ; Sun, 16 Dec 2018 15:18:14 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 13EDE29B14 for ; Sun, 16 Dec 2018 15:18:14 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E1BDE29B17; Sun, 16 Dec 2018 15:18:13 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 606BD29B14 for ; Sun, 16 Dec 2018 15:18:13 +0000 (UTC) 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=Rgm3Lr+XPoKubeGzq9mCCXm5jcNxpw+64Ip68CKCv/Y=; b=DQGC8x77UtjT2/ NGBNk3MPZkT0pr5P0o9bLxtojLSoMJVS95PZ5U2YwV9kq56rlmkhotwaztyy3AiBhb2Y5jvCgcPkR cX6AMM5eFQ5aE25UF/j7JGZQNqUjkS7oASOGvg3PT9CnOWK5HXxYc7FSM++32BO+Mb2cXw6X71z42 toH/YdZgaQyT+cfSHvrt6fVOAhUfYRoLd92URwDVux3smTSqDQNvfdv6b2JtbgwyHsoOhlQTUU0eB KC/53GdudxmKYSvmO4PnLwZ8klnp3b6v3ls4QiHsy3adIkJllYaLi0NytU91nQs/CydoA/fcSemJV /8pfDAkavD5gmZdQEGIA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1gYYBI-0008UA-At; Sun, 16 Dec 2018 15:18:12 +0000 Received: from mail-sh2.amlogic.com ([58.32.228.45]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1gYYBF-0008Te-0x; Sun, 16 Dec 2018 15:18:10 +0000 Received: from localhost.localdomain (10.18.11.217) by mail-sh2.amlogic.com (10.18.11.6) with Microsoft SMTP Server id 15.0.1320.4; Sun, 16 Dec 2018 23:18:17 +0800 From: Jianxin Pan To: Boris Brezillon , Subject: [PATCH v8 0/2] mtd: rawnand: meson: add Amlogic NAND driver support Date: Sun, 16 Dec 2018 23:17:41 +0800 Message-ID: <1544973463-59523-1-git-send-email-jianxin.pan@amlogic.com> X-Mailer: git-send-email 1.9.1 MIME-Version: 1.0 X-Originating-IP: [10.18.11.217] X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20181216_071809_067229_1B034488 X-CRM114-Status: GOOD ( 11.31 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Rob Herring , Hanjie Lin , Victor Wan , Jianxin Pan , Neil Armstrong , Martin Blumenstingl , Richard Weinberger , linux-kernel@vger.kernel.org, Marek Vasut , devicetree@vger.kernel.org, Liang Yang , Jian Hu , Kevin Hilman , Miquel Raynal , Carlo Caione , linux-amlogic@lists.infradead.org, Brian Norris , David Woodhouse , linux-arm-kernel@lists.infradead.org, Jerome Brunet Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+patchwork-linux-amlogic=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP These two patches try to add initial NAND driver support for Amlogic Meson SoCs, current it has been tested on GXL(p212) and AXG(s400) platform. Changes since V6 at [8] - fix bitflips checking for blank pages - trace the latest commit with nand/next branch - checking the return of meson_nand_op_get_dma_safe_*input/output*_buf - add .detach_chip for free meson_nand.data_buf/info_buf Changes since V6 at [7] - use timings->tBERS_max as the maximum time out, delete NFC_CMD_RB_TIMEOUT - fix nand_rw_cmd and support small block flash and which row address less than 3 - fix coding style - replace readl/writel_* with readl/writel_relaxed* - delete ECC_SET_PROTECTED_OOB_BYTE and ECC_GET_PROTECTED_OOB_BYTE - implement dma access for read_buf and write_buf, more efficient. - delete waiting dma finish in write process and let NAND_CMD_PAGEPROG and RB command go on queuing - add waiting the completed flag of last ecc page be set, for more strict Changes since v5 at [6]: - use instr->delay_ns in exec_op() to caculate the delay cycle - delete struct meson_nfc_info_format and use macros instead - delete "is_scramble" in struct meson_nfc_nand_chip - add WARN_ON_ONCE() for chip > MAX_CE_NUM - drop param *mtd* or struct *nfc* if param *nand exist - substitute set_data_oob and get_data_oob for prase_data_oob and format_data_oob - split timings caculating and setting timings - move info_buf and data_buf to struct meson_nfc_nand_chip Changes since v4 at [5]: - remove the initial default divider(CLK_DIV_MASK) in meson_nfc_clk_init() - dt-bindings: remove staus, add "rx" and "tx" clock, and node rename Changes since v3 at [4]: - remove partition table and some used props from dt-bindings Changes since v2 at [3]: - remove some hardcode time value, like twb - use dev wait R/B instead of nand_soft_waitrdy - implement nfc ecc init by ecc helper - rework nfc buffer init to register the maximun buffer when several chips - free nfc buffer when error and cleanup - add variable to teack all the already assigned CS lines - fix mtd->name use the first cs line only - remove dt "nand-enable-scrambler" and use NAND_NEED_SCRAMBLING instead. - move setuping ECC fileds after the identification phase - use nand_scan() and attach_chip() - check one event to return IRQ_NONE - delete cast when of_device_get_match_data - use nand_controller_init() helper - remove nfc driver complains when calling devm_ioremap_resource - clear irqs before setting up irq handler Changes since v1 at [1]: - adopt property amlogic,nand-enable-scrambler - thanks Martin - drop nand pins in DT - convert clk access to emmc clkc model - fix regiser field definition alignment - drop nand-user-mode - parse cs id from DT - rework n2m, m2n function - explain why insert two "IDLE" command - implement exec_op() - drop meson_nfc_get_nand_chip_dts() - release resource once error occur in meson_nfc_nand_chips_init(), - call nand_cleanup(nand) once mtd_device_register fail Items not addressed ( or confirmed ) in this version: - convert to ECC conf helper() - convert to dma coherent API - how to construct mtd->name [1] https://lkml.kernel.org/r/20180613161314.14894-1-yixun.lan@amlogic.com [2] https://lkml.kernel.org/r/20180712211244.11428-1-yixun.lan@amlogic.com [3] https://lkml.kernel.org/r/20180719094612.5833-1-yixun.lan@amlogic.com [4] https://lkml.kernel.org/r/1536317831-58056-1-git-send-email-jianxin.pan@amlogic.com/ [5] https://lore.kernel.org/r/1537433449-65213-2-git-send-email-jianxin.pan@amlogic.com/ [6] https://lore.kernel.org/r/1539839345-14021-1-git-send-email-jianxin.pan@amlogic.com [7] https://lore.kernel.org/r/1541090542-19618-1-git-send-email-jianxin.pan@amlogic.com [8] http://lkml.kernel.org/r/1542386439-30166-1-git-send-email-jianxin.pan@amlogic.com Liang Yang (2): dt-bindings: nand: meson: add Amlogic NAND controller driver mtd: rawnand: meson: add support for Amlogic NAND flash controller .../devicetree/bindings/mtd/amlogic,meson-nand.txt | 60 + drivers/mtd/nand/raw/Kconfig | 10 + drivers/mtd/nand/raw/Makefile | 1 + drivers/mtd/nand/raw/meson_nand.c | 1467 ++++++++++++++++++++ 4 files changed, 1538 insertions(+) create mode 100644 Documentation/devicetree/bindings/mtd/amlogic,meson-nand.txt create mode 100644 drivers/mtd/nand/raw/meson_nand.c