From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932074AbbIIWrQ (ORCPT ); Wed, 9 Sep 2015 18:47:16 -0400 Received: from mail-by2on0102.outbound.protection.outlook.com ([207.46.100.102]:32448 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753966AbbIIWqu (ORCPT ); Wed, 9 Sep 2015 18:46:50 -0400 Authentication-Results: spf=fail (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; From: Han Xu To: CC: , , , , , , , , , , Subject: [PATCH v4 4/6] mtd: nand: gpmi: add GPMI NAND support for i.MX7D Date: Wed, 9 Sep 2015 17:37:22 -0500 Message-ID: <1441838244-2106-5-git-send-email-b45815@freescale.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1441838244-2106-1-git-send-email-b45815@freescale.com> References: <1441838244-2106-1-git-send-email-b45815@freescale.com> X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11OLC010;1:p0NlL9Wg4FD3Vq9byqjS570difxDzcII4Dtr93ouUi+qb4wnKSanFUPyxZW2/yvaDQzA58lBKh3cG/+oy8Aftzv3AvtzDopyNQSSy1DiS0BEXvTGAo9uKvVLSdVNLgGiNnnPo1/jp1Bb+N90zK0eDYOQyyuwZnT3pWfn7pZi8qt5cNzt4ZxgCXhZ4EBNuGOV2h9LeSDhCJh1J9lQvcShtxw/nE745uzAVdronavhKx6MMMXrgj+94u1Unj67voWbjlTO5begV5ywt2se7eDQBguYrDtxjlyaDR2ogvmhiCOPqpnJLgumniqdpDriUSh/ByM0GUdu4CaHKtl6YGerEIwoFJvRquIZ8sEAwlvktw6xGfY9sfB4JxhXtF6GVc7EUkVPVP86h+yT15cAlljOhQ== X-Forefront-Antispam-Report: CIP:192.88.168.50;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(85426001)(5007970100001)(105606002)(46102003)(48376002)(50226001)(189998001)(4001540100001)(87936001)(5003940100001)(36756003)(68736005)(2950100001)(64706001)(77096005)(50466002)(81156007)(5001830100001)(62966003)(47776003)(77156002)(5001960100002)(11100500001)(104016003)(19580405001)(575784001)(19580395003)(33646002)(110136002)(2351001)(97736004)(5001860100001)(229853001)(50986999)(76176999)(92566002)(6806004)(5001920100001)(106466001)(2004002)(217873001);DIR:OUT;SFP:1102;SCL:1;SRVR:BN3PR0301MB1298;H:tx30smr01.am.freescale.net;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; MIME-Version: 1.0 Content-Type: text/plain X-Microsoft-Exchange-Diagnostics: 1;BN3PR0301MB1298;2:sMjljEoXSrsqCDRc93P1An+DfvbuSafN+W6rRCsTo9FDiZNTw9yPYgMppjITz/t44OTtTmT0/Nt6imnFMLjYwlpn6/zzCdc0wlBquQpM2mfqLBzB7/RLB4+1J/eaayvld4oc/+hOoC+fTFTUwrHilk1SwS+amHHoqe8ZDDMuDp0=;3:BIuwA/Sls7Bi15wJiyc50MjF5W9XXKLIHpPurTA7RPPlMwWUjgR/QI1pJdy7iTiR3PieQHCj4dqIsEXHej7OIXMDMuQvMIrKlrGTcV17Qg9V1vSCNO6wi+lWIbNP3vGjB6zAIC2c3M5s6bj0Ul8iRaPr+jCDdQhtKGHAEAgb2RcSP5b0YETYayabY3BHW8rkg0Xvk2s16V0gw35xNji8ULXuFXmcSfJhbN4GjXBAtyc=;25:H+nObH1XHFbf+mV39E/tOjrQZ2UH1fHEzzqMg4oo3yfQwOA3+XDJPotFwKqaTV64mRRegQfevNeeiEmCPUsfV5PzkwEhAnj5MR004V1K3pzqa4s+Kbx9CqCmGQ4u8SsKd1PcDvxDUvM9UStsPl2uRK6+UBhTH4TPYkpNvEVvQfFUdQyOAcYIaYHr4BCPV+BA0ETi9qYU56Np048mJzrVf/6U4SbVOcXzOJRUXNHFVMowQ8pBx8csqTb4PBwZdaZh X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN3PR0301MB1298; X-Microsoft-Exchange-Diagnostics: 1;BN3PR0301MB1298;20:ScYMli6r0feHBuVGbSbSQhgF7I1IxTcVDnyEMtild9TU85VRCWQuo0fthJ9+4NmynTwTT826JFVR658hqk01LyXZyLOdpV7Cn4tkZTB01sKiHZsQkPorvfJvhYwj7xxX0AARlS1qkA3OpICUUbpRn26kdIv5FLh6/g5eHJzNwULhz4ovzwwS2ha/ZeR6xEUWQBPP5nozBAbVPq4j6faGonGtOX7IbZwh9+ahnuOsuc2ut+4y3G1BW/me6rCMsNuQA7iTrcibhcSWPq50y2cGHI/+e/ocdZn/XR6tO4ifEhA30Q1tq0dr8ZHfAuIb9QmWaYhA2eoykKtLjV3HYC1+D0wCRk70hQ3FDeflvweIb1Q=;4:gyjpxt2d0nHfiiPcyXkCui1mYgu6Tyg2xeNsRCqrXsLwGXSBwGOLxTL7FUMRU7lnTOM3Lsu4p/e4Uu5N/gf9GJG7TG05sa78Jh760cg2sIGVKkEhIGGab3Bpvv1dWjjIVGTDzCZJhxsTMSaVnwLcuh53G7BDUMjsjsygKGyoCJqSYrAxzLo92g+osXZHJsFuYJF3oh/F/rjpB57c7tfiw9gnml+fbXQPenDkD/g67OyOCGQE52Aw57oi4wurKWkHBPV/Lv2TeTME2AMppD9pPIY9WV3qGm5N7KygC0RFCKqnoezhBC8imaEfkrfxeFpP X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(8121501046)(5005006)(3002001);SRVR:BN3PR0301MB1298;BCL:0;PCL:0;RULEID:;SRVR:BN3PR0301MB1298; X-Forefront-PRVS: 0694C54398 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BN3PR0301MB1298;23:7LHKC7PshdGtVoLfLDuSK8avY8Y6deX0uRVULfZ?= =?us-ascii?Q?J2QriCdy9+8aPWv52+a4v4PsCCi0hU28/ellAOKxlsD0sYDDO1DBZ6UOI1sJ?= =?us-ascii?Q?0btKiogx22wdyRqx036zj9m3oh67jCgEJe8fkEOh/w1LUKe/rw1Q1MPjpOAw?= =?us-ascii?Q?ZiIu/YRHDz51FXMu5tyTqNbJqTNDHy4pt7lwF3ZdSz20Z8wmSSNec5L3pzC9?= =?us-ascii?Q?A0giRQGTLXXUgH6oIewdkAC7DDw6q/Jghlo0zmODSDmR2c0v27ipmoSNo8Ki?= =?us-ascii?Q?I9koP4Lj5207DQ5xroVJkPCLAlA1NeYOxkWm18uUIMpJsTuu0KkIv6r5+u9/?= =?us-ascii?Q?WcOOUO3WpLREgloz2/oz5DXAzUFkMatR3jmNoazLjM9ZveksnRIVL/Fuw4NJ?= =?us-ascii?Q?cTJMwm4M2giYI5I5j2Qxnny2QNUjyRtXt/hrzarJPDyUzP6qVfDdSE3S8IxI?= =?us-ascii?Q?pJdmTWhva80VymXYGExXjCCyIuh+0f9SMqHI2T1WTboi4HMsygrn5I+36Kdm?= =?us-ascii?Q?ZGfI47MsLPKl7nNI96MgpBg1sD6erzrBfPw/tz7MBpaEP4pka194/ZNfOKFg?= =?us-ascii?Q?cUX8LysUmr2tH1+7td0UYFfA9c94NyKrX1Dkd6K02DNcVAKvh6Gf9bHjqh3T?= =?us-ascii?Q?Fu67dOxuvm3vZJDYzzS2tusLVFuQ/Ov7IAQ6bA1hahe0BlqpGtpF8w0AinYP?= =?us-ascii?Q?pvvSOE5xYncRAP7t29akhipC8P9zQ07xv3iq4yZIdV3d0/sycXoVylTwsWQ1?= =?us-ascii?Q?cMP2U6wOQ+FsCL163KzO4a3EE9XNV8gRqK6HfxDBQMfGIHMc5t3Tckt5kLwD?= =?us-ascii?Q?VKT1poXs6jA3WlU1+VLd+GtXKR0lmoUIlV8mxFH25TTXbzYiPno2WH6FFy7+?= =?us-ascii?Q?dJ4yXLjSlcvagA+g2qHwomLW/dV+IHd2yJXDQcFhlzos5WFacyUkeO9sUkn8?= =?us-ascii?Q?mQEdg2dFqay+euo7gule7G+evQxezrOataDUPuBo1KqQObiJZGMGVcaGDFR+?= =?us-ascii?Q?pAaZArctsgC8JtnmehMNMgWLLk+5bPO9Cl4e2JI89m/w6raIkt7pTX/1SKhA?= =?us-ascii?Q?2Pumr52nvasdIC6Luh2cQSyptCxDCLrlDvtMktqxd43umFlw9eoCBgljmRLZ?= =?us-ascii?Q?yLQoL4ofNuawaJ5Jor2jrMahSlff/JsTG29bOGC9CteDjDqAaYmA4O/4pQuF?= =?us-ascii?Q?a5fgkIF8MPKoL7OpGFTBNGYILDzxB83pHy4D1e4Ug6kfS3jT410B9vsO9E40?= =?us-ascii?Q?htUcmBMD4uXoq+J0aJKNfio1OtLxHA09On6NagrpM8i3LVsYhih5wflKUlkZ?= =?us-ascii?Q?cpQ=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;BN3PR0301MB1298;5:EG+2bXwDGp5RoOTY7O+pkvaTJyp3gH6CITt3+MrDIAj7wFxXHer8Zn1j9AHVPRGZ8W3JcbXVQp567JdVwNieyGMPSaHcGTvDwdh3CwNaxlil38HKmZQnksomAZHJba5fLhr31aENROf6OLgSnPqh5g==;24:COAC75Clvjn3zgg1YF/J55siOLI1aI9Ie/gNNVXdWbLcnToDxTBsiLraT9r27MmU190iTHX0BvYlkxAuNrSeTGmZ8coYqLq2/1gO6Gi/u+o=;20:AlOTXw4pM6xnuV+cRREfaDRplSIjMS6NKiDucFFZNSkyxt4/kQ/iuR83GvK0M49gMYsYAeaM0WEqXfzLqv5P5w== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Sep 2015 22:46:46.3830 (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: BN3PR0301MB1298 X-Microsoft-Exchange-Diagnostics: 1;BN3PR0301MB0852;2:/cihQpHrGXDliGBcua/7MxHywMJs1FqwtNKhEWdmPvBFIgnF+/ApmhEZbxm6AAngT19MAipdv3kbr7nbN7740yK/KqJUD9+YOK8+bHclXj/scKfXro9QC1uszQ6n6ZxZcnSZ3KCbQLUSNcAEu+q+Hkmxg3Gkp4qIc4dQF9k425A=;23:iBFKsvQXuArn7Ze5mJUbW8MT4nHmlrfnRm7dpI8iG0PlUpQj7h8uDC8LJIkIMYXBEsUVGAqkt1G1adYa6H//acLCgn8deXWOcsjVT36Wq40MEQyawk9MvX3HtWk4xoYgVYPd3wsWu0Ciw5iAgjQ/62NF6YLD8tqa3lR7TR4ZnW0K4F6uZuYI8HtlV5fH84FH X-OriginatorOrg: freescale.com Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org support GPMI NAND on i.MX7D Signed-off-by: Han Xu --- drivers/mtd/nand/gpmi-nand/bch-regs.h | 14 +++++++------- drivers/mtd/nand/gpmi-nand/gpmi-lib.c | 10 ++++++---- drivers/mtd/nand/gpmi-nand/gpmi-nand.c | 26 +++++++++++++++++++++----- drivers/mtd/nand/gpmi-nand/gpmi-nand.h | 7 +++++-- 4 files changed, 39 insertions(+), 18 deletions(-) diff --git a/drivers/mtd/nand/gpmi-nand/bch-regs.h b/drivers/mtd/nand/gpmi-nand/bch-regs.h index 05bb91f..53e58bc 100644 --- a/drivers/mtd/nand/gpmi-nand/bch-regs.h +++ b/drivers/mtd/nand/gpmi-nand/bch-regs.h @@ -1,7 +1,7 @@ /* * Freescale GPMI NAND Flash Driver * - * Copyright 2008-2011 Freescale Semiconductor, Inc. + * Copyright 2008-2015 Freescale Semiconductor, Inc. * Copyright 2008 Embedded Alley Solutions, Inc. * * This program is free software; you can redistribute it and/or modify @@ -54,7 +54,7 @@ #define MX6Q_BP_BCH_FLASH0LAYOUT0_ECC0 11 #define MX6Q_BM_BCH_FLASH0LAYOUT0_ECC0 (0x1f << MX6Q_BP_BCH_FLASH0LAYOUT0_ECC0) #define BF_BCH_FLASH0LAYOUT0_ECC0(v, x) \ - (GPMI_IS_MX6(x) \ + ((GPMI_IS_MX6(x) || GPMI_IS_MX7(x)) \ ? (((v) << MX6Q_BP_BCH_FLASH0LAYOUT0_ECC0) \ & MX6Q_BM_BCH_FLASH0LAYOUT0_ECC0) \ : (((v) << BP_BCH_FLASH0LAYOUT0_ECC0) \ @@ -65,7 +65,7 @@ #define MX6Q_BM_BCH_FLASH0LAYOUT0_GF_13_14 \ (0x1 << MX6Q_BP_BCH_FLASH0LAYOUT0_GF_13_14) #define BF_BCH_FLASH0LAYOUT0_GF(v, x) \ - ((GPMI_IS_MX6(x) && ((v) == 14)) \ + (((GPMI_IS_MX6(x) || GPMI_IS_MX7(x)) && ((v) == 14))\ ? (((1) << MX6Q_BP_BCH_FLASH0LAYOUT0_GF_13_14) \ & MX6Q_BM_BCH_FLASH0LAYOUT0_GF_13_14) \ : 0 \ @@ -77,7 +77,7 @@ #define MX6Q_BM_BCH_FLASH0LAYOUT0_DATA0_SIZE \ (0x3ff << BP_BCH_FLASH0LAYOUT0_DATA0_SIZE) #define BF_BCH_FLASH0LAYOUT0_DATA0_SIZE(v, x) \ - (GPMI_IS_MX6(x) \ + ((GPMI_IS_MX6(x) || GPMI_IS_MX7(x)) \ ? (((v) >> 2) & MX6Q_BM_BCH_FLASH0LAYOUT0_DATA0_SIZE) \ : ((v) & BM_BCH_FLASH0LAYOUT0_DATA0_SIZE) \ ) @@ -96,7 +96,7 @@ #define MX6Q_BP_BCH_FLASH0LAYOUT1_ECCN 11 #define MX6Q_BM_BCH_FLASH0LAYOUT1_ECCN (0x1f << MX6Q_BP_BCH_FLASH0LAYOUT1_ECCN) #define BF_BCH_FLASH0LAYOUT1_ECCN(v, x) \ - (GPMI_IS_MX6(x) \ + ((GPMI_IS_MX6(x) || GPMI_IS_MX7(x)) \ ? (((v) << MX6Q_BP_BCH_FLASH0LAYOUT1_ECCN) \ & MX6Q_BM_BCH_FLASH0LAYOUT1_ECCN) \ : (((v) << BP_BCH_FLASH0LAYOUT1_ECCN) \ @@ -107,7 +107,7 @@ #define MX6Q_BM_BCH_FLASH0LAYOUT1_GF_13_14 \ (0x1 << MX6Q_BP_BCH_FLASH0LAYOUT1_GF_13_14) #define BF_BCH_FLASH0LAYOUT1_GF(v, x) \ - ((GPMI_IS_MX6(x) && ((v) == 14)) \ + (((GPMI_IS_MX6(x) || GPMI_IS_MX7(x)) && ((v) == 14))\ ? (((1) << MX6Q_BP_BCH_FLASH0LAYOUT1_GF_13_14) \ & MX6Q_BM_BCH_FLASH0LAYOUT1_GF_13_14) \ : 0 \ @@ -119,7 +119,7 @@ #define MX6Q_BM_BCH_FLASH0LAYOUT1_DATAN_SIZE \ (0x3ff << BP_BCH_FLASH0LAYOUT1_DATAN_SIZE) #define BF_BCH_FLASH0LAYOUT1_DATAN_SIZE(v, x) \ - (GPMI_IS_MX6(x) \ + ((GPMI_IS_MX6(x) || GPMI_IS_MX7(x)) \ ? (((v) >> 2) & MX6Q_BM_BCH_FLASH0LAYOUT1_DATAN_SIZE) \ : ((v) & BM_BCH_FLASH0LAYOUT1_DATAN_SIZE) \ ) diff --git a/drivers/mtd/nand/gpmi-nand/gpmi-lib.c b/drivers/mtd/nand/gpmi-nand/gpmi-lib.c index 43fa16b..1f26a79 100644 --- a/drivers/mtd/nand/gpmi-nand/gpmi-lib.c +++ b/drivers/mtd/nand/gpmi-nand/gpmi-lib.c @@ -1,7 +1,7 @@ /* * Freescale GPMI NAND Flash Driver * - * Copyright (C) 2008-2011 Freescale Semiconductor, Inc. + * Copyright (C) 2008-2015 Freescale Semiconductor, Inc. * Copyright (C) 2008 Embedded Alley Solutions, Inc. * * This program is free software; you can redistribute it and/or modify @@ -971,7 +971,8 @@ int gpmi_extra_init(struct gpmi_nand_data *this) struct nand_chip *chip = &this->nand; /* Enable the asynchronous EDO feature. */ - if (GPMI_IS_MX6(this) && chip->onfi_version) { + if ((GPMI_IS_MX6(this) || GPMI_IS_MX7(this)) && + chip->onfi_version) { int mode = onfi_get_async_timing_mode(chip); /* We only support the timing mode 4 and mode 5. */ @@ -1093,12 +1094,13 @@ int gpmi_is_ready(struct gpmi_nand_data *this, unsigned chip) if (GPMI_IS_MX23(this)) { mask = MX23_BM_GPMI_DEBUG_READY0 << chip; reg = readl(r->gpmi_regs + HW_GPMI_DEBUG); - } else if (GPMI_IS_MX28(this) || GPMI_IS_MX6(this)) { + } else if (GPMI_IS_MX28(this) || GPMI_IS_MX6(this) || + GPMI_IS_MX7(this)) { /* * In the imx6, all the ready/busy pins are bound * together. So we only need to check chip 0. */ - if (GPMI_IS_MX6(this)) + if (GPMI_IS_MX6(this) || GPMI_IS_MX7(this)) chip = 0; /* MX28 shares the same R/B register as MX6Q. */ diff --git a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c index 632876c..d161569 100644 --- a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c +++ b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c @@ -77,6 +77,12 @@ static const struct gpmi_devdata gpmi_devdata_imx6sx = { .max_chain_delay = 12, }; +static const struct gpmi_devdata gpmi_devdata_imx7d = { + .type = IS_MX7D, + .bch_max_ecc_strength = 62, + .max_chain_delay = 12, +}; + static irqreturn_t bch_irq(int irq, void *cookie) { struct gpmi_nand_data *this = cookie; @@ -575,6 +581,10 @@ static char *extra_clks_for_mx6q[GPMI_CLK_MAX] = { "gpmi_apb", "gpmi_bch", "gpmi_bch_apb", "per1_bch", }; +static char *extra_clks_for_mx7d[GPMI_CLK_MAX] = { + "gpmi_bch_apb", +}; + static int gpmi_get_clks(struct gpmi_nand_data *this) { struct resources *r = &this->resources; @@ -592,6 +602,8 @@ static int gpmi_get_clks(struct gpmi_nand_data *this) /* Get extra clocks */ if (GPMI_IS_MX6(this)) extra_clks = extra_clks_for_mx6q; + if (GPMI_IS_MX7(this)) + extra_clks = extra_clks_for_mx7d; if (!extra_clks) return 0; @@ -608,7 +620,7 @@ static int gpmi_get_clks(struct gpmi_nand_data *this) r->clock[i] = clk; } - if (GPMI_IS_MX6(this)) + if (GPMI_IS_MX6(this) || GPMI_IS_MX7(this)) /* * Set the default value for the gpmi clock. * @@ -1869,8 +1881,8 @@ static int gpmi_init_last(struct gpmi_nand_data *this) * (1) the chip is imx6, and * (2) the size of the ECC parity is byte aligned. */ - if (GPMI_IS_MX6(this) && - ((bch_geo->gf_len * bch_geo->ecc_strength) % 8) == 0) { + if ((GPMI_IS_MX6(this) || GPMI_IS_MX7(this)) && + ((bch_geo->gf_len * bch_geo->ecc_strength) % 8) == 0) { ecc->read_subpage = gpmi_ecc_read_subpage; chip->options |= NAND_SUBPAGE_READ; } @@ -1936,7 +1948,8 @@ static int gpmi_nand_init(struct gpmi_nand_data *this) if (ret) goto err_out; - ret = nand_scan_ident(mtd, GPMI_IS_MX6(this) ? 2 : 1, NULL); + ret = nand_scan_ident(mtd, GPMI_IS_MX6(this) || + GPMI_IS_MX7(this) ? 2 : 1, NULL); if (ret) goto err_out; @@ -1980,7 +1993,10 @@ static const struct of_device_id gpmi_nand_id_table[] = { }, { .compatible = "fsl,imx6sx-gpmi-nand", .data = &gpmi_devdata_imx6sx, - }, {} + }, { + .compatible = "fsl,imx7d-gpmi-nand", + .data = (void *)&gpmi_devdata_imx7d, + } }; MODULE_DEVICE_TABLE(of, gpmi_nand_id_table); diff --git a/drivers/mtd/nand/gpmi-nand/gpmi-nand.h b/drivers/mtd/nand/gpmi-nand/gpmi-nand.h index 544062f..58b3d69 100644 --- a/drivers/mtd/nand/gpmi-nand/gpmi-nand.h +++ b/drivers/mtd/nand/gpmi-nand/gpmi-nand.h @@ -1,7 +1,7 @@ /* * Freescale GPMI NAND Flash Driver * - * Copyright (C) 2010-2011 Freescale Semiconductor, Inc. + * Copyright (C) 2010-2015 Freescale Semiconductor, Inc. * Copyright (C) 2008 Embedded Alley Solutions, Inc. * * This program is free software; you can redistribute it and/or modify @@ -123,7 +123,8 @@ enum gpmi_type { IS_MX23, IS_MX28, IS_MX6Q, - IS_MX6SX + IS_MX6SX, + IS_MX7D, }; struct gpmi_devdata { @@ -306,6 +307,8 @@ void gpmi_copy_bits(u8 *dst, size_t dst_bit_off, #define GPMI_IS_MX28(x) ((x)->devdata->type == IS_MX28) #define GPMI_IS_MX6Q(x) ((x)->devdata->type == IS_MX6Q) #define GPMI_IS_MX6SX(x) ((x)->devdata->type == IS_MX6SX) +#define GPMI_IS_MX7D(x) ((x)->devdata->type == IS_MX7D) #define GPMI_IS_MX6(x) (GPMI_IS_MX6Q(x) || GPMI_IS_MX6SX(x)) +#define GPMI_IS_MX7(x) (GPMI_IS_MX7D(x)) #endif -- 1.9.1