From patchwork Fri Dec 21 11:45:22 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jianxin Pan X-Patchwork-Id: 10740321 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 557BA1399 for ; Fri, 21 Dec 2018 11:45:59 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 43FA8284EE for ; Fri, 21 Dec 2018 11:45:59 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 370D9285A9; Fri, 21 Dec 2018 11:45:59 +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=unavailable 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 F1DDC284EE for ; Fri, 21 Dec 2018 11:45:58 +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=sGuCzQY6cUs67wkcpU7zIaIDeUSB898ZUnqdgMQu3fw=; b=QEdbrkaplSBGQV +/ZZlOIrgjmQH4orVuxnDpWf+dip5hgxNvWrO1VoZ8TjweedeyMaAXGOlTkhk+0BUrr+liOtfSABn BUeN6FLhEpzvYIXtU7WgJ5/yDVzdhQZkl0mJfUWs6QuJsxE8eFte8Mrj8pVlB3pkUEHJ9VADGPlFi MSP0M52YLysevgeWwK6IaFVz232nSFT5gY1ABVJuwMn3isw9vzqrGWSqotoaukq1NPDEjwKOOU/1m OOg99QB4A8Tp9C90miM2KairSJprvpbsAN8Fl6MrblR00fDRLCudLplYsRRi0DhxAJ+CzNxcNnzgX +uvuyhPUVs/N95u8jQAQ==; 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 1gaJFa-00059q-Vg; Fri, 21 Dec 2018 11:45:55 +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 1gaJFW-00058C-7I; Fri, 21 Dec 2018 11:45:51 +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; Fri, 21 Dec 2018 19:46:00 +0800 From: Jianxin Pan To: Boris Brezillon , Subject: [PATCH RESEND v8 0/2] mtd: rawnand: meson: add Amlogic NAND driver support Date: Fri, 21 Dec 2018 19:45:22 +0800 Message-ID: <1545392724-6637-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-20181221_034550_258580_187DE900 X-CRM114-Status: GOOD ( 11.62 ) X-BeenThere: linux-arm-kernel@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-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=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 | 1468 ++++++++++++++++++++ 4 files changed, 1539 insertions(+) create mode 100644 Documentation/devicetree/bindings/mtd/amlogic,meson-nand.txt create mode 100644 drivers/mtd/nand/raw/meson_nand.c