From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933509AbcFJRPb (ORCPT ); Fri, 10 Jun 2016 13:15:31 -0400 Received: from mail-db3on0066.outbound.protection.outlook.com ([157.55.234.66]:48352 "EHLO emea01-db3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S933423AbcFJRPW (ORCPT ); Fri, 10 Jun 2016 13:15:22 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=han.xu@nxp.com; From: Han Xu To: , , , , , , , , , , CC: , Subject: [PATCH v2 1/6] mtd: nand: gpmi: add GPMI NAND support for i.MX7D Date: Fri, 10 Jun 2016 12:01:29 -0500 Message-ID: <1465578094-8816-2-git-send-email-han.xu@nxp.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1465578094-8816-1-git-send-email-han.xu@nxp.com> References: <1465578094-8816-1-git-send-email-han.xu@nxp.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [192.88.168.49] X-ClientProxiedBy: SN1PR07CA0016.namprd07.prod.outlook.com (10.162.170.154) To VI1PR0401MB1855.eurprd04.prod.outlook.com (10.165.235.21) X-MS-Office365-Filtering-Correlation-Id: 1bcafe0b-8efb-4b96-9bfd-08d39150ad16 X-Microsoft-Exchange-Diagnostics: 1;VI1PR0401MB1855;2:+kDVs2q2sk0J9D8ShKMosUEKLe6w2sG9mVSum0wJQn4Dmbta+JimDwKwWjfHZhNL9/qUVVxCkCGbIn+h66TZT2cJczDVBw4Qv8vMgcD4vSL1iLBg0dH07wYYxSUHQaDCFbgHQN4XmGknJYHAq+Ad6kIpljs3rpr9ivHQe4/aKxkg+79GFfR5CGGvLupWs6Qp;3:BUDl4kfnpx0EmCWxoq349G9bNWJ14JAedEU11a0iPR5QHSTfij4atT/fecnPklK0EtWRlpHc7143xO58pJraqXqzd4gyJAcE/IfnpPHyOHXfd3GjjTA2xqjZgUXIgx4l;25:pgl2TBEULehP1EzB5MzGSEGL+PjIFTj4M5F6Xo7C+oPjEIrpw9KX1c8etF0a+erRZA3nlXQgGE6/SDs48C8ERLZ2qDL/aykHSeTS6+phIKvXVPExaYFrqrh+5qXpuH/Fmlp3ZkY7Iov9UVvwcbTOJQ+ASwpZmOQR4JT7ph4dvIb1Bs18vuYQmHSQ3rXEkDAlM8gUR+MUnagODq/cM3NyioAokPKaEusHf/WLfrfM9PuzW6HsrZ5OsnLkGpD3bS73fqjxVgFe0p/idlbNodTkqnvzTCu9j3eafWytoaY9tQwW3jWEiDndNyYHkifqfWtZf1G1RkXHXR4yss4x78fwZ+kMOuiQlFL1jPCalVDxj0xyfbMYw3goFUdrrNTBpgqU/1PJ88jwYkMCkbHXKPDf68gWaBkktnV5kagpeXtb9eU= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0401MB1855; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0401MB1855;20:rjsaR3txITKmnw9sFPJE8AXryF6O6YINvIP303sXnO4cQVO2o5J9ie4taMwCuCR2zO4pTBCwOFJbICS/+glVnp4iXsWQuulCw5PSq/f1/hmDZ0iJFjkjVR/NFkSZGqf3cG6emk48SmSHGz223PcMtOAq/Q2kq2251mAiwM6sdq68tUv3AJ4Bihtl8wUR9s5BkLZF4dHtm7KWkqhrLDLdJHY9kFYLlxhZyU/uZa6kOD7gZDWQUXeo4apY8IdSaAqLsxq/0cBQ5+oTdRaVuO1Utg0yZFPTi2Y4msSd/T3tSlGp7Gk9tR4PbTgbhR9XqludZvgjQ23CBTGQkm906hNa+a7hTlYb8gX9ZafZhuHD+IARu1gm/cppI4g9MWXchjGY/xrtOzBIbTGZ0NLGZggsejVWXmArrP7fcL6BUOv8RaNqarrjUGpoEAAeS1HYCt9Z8j0/bOKbMGJG3i5ztnbfSqCilIrKUlUJzfkb8JN5ZJ8anIPK9vF7DNs2yBeQptOq;4:IZj1w9FILKBGU9AtRKsEn1ZKdRSnGOy7kivKcbfVzhZsLZBvCssgiW1TiduHUK5lhcDnfACMhAwebegfuhPdaARQyGf0wNbY1699EkFWvlZ48revcAtTmg+JWZ7N+KuLbIR7ohKwWUpyArzbBo5srNqrDIKQWhrKmq6BP5nlaGjrirGRLMfAnwek/pyF0fT5oC/BHvrL7ADPBxfeLGLYravopb2XvNv5vknIzkHKrOwkzKOokLtmO50aaRZJVAkQRNM43DZjo4AvA5Rwfi3OseDqwknM2jphwwRnqoYMfQblIPZJqCWCNORiYy3TKH0Qeu1rOA+eJAunPqxXHfwNmlLSfpRugAbQGR9TqtGZOcgzti1wq7maWVSpwX+lkTDMcJFN4xP/HHY8y1z9OrvY1lDqpvJ0Plsj1hnTLe8BxVQ0wbTTS8PZBSPlu6etrBBI X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6055026);SRVR:VI1PR0401MB1855;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0401MB1855; X-Forefront-PRVS: 096943F07A X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(7916002)(189002)(199003)(76176999)(50986999)(77096005)(101416001)(92566002)(19580405001)(2906002)(68736007)(106356001)(586003)(19580395003)(229853001)(5008740100001)(4326007)(105586002)(48376002)(97736004)(6116002)(5001770100001)(8676002)(36756003)(50466002)(81166006)(189998001)(50226002)(47776003)(5003940100001)(81156014)(3846002)(33646002)(2950100001)(2201001)(66066001)(86362001)(42186005)(575784001)(5004730100002)(921003)(2004002)(217873001)(1121003);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR0401MB1855;H:Cayman.am.freescale.net;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;CAT:NONE;LANG:en;CAT:NONE; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;VI1PR0401MB1855;23:2eTfQ9csYBOnhRPz/bCy2Nv5hoAaR5h+urB/1GJ?= =?us-ascii?Q?jaqJwUTfqWhsyI4rRsHgjpHGN2jySamqf0RmH2ha88gEV+DBSYAH2mnEsSz6?= =?us-ascii?Q?S4Htcsqm0+MOCxaPzJXsnu46iVSJtBR4KHxjm/C27is+J+EC1JJfN3JcETtq?= =?us-ascii?Q?fcY98tXEPfkrAr+C73Dp7gv8wukuwpPZ8rv8rLQDw/z1lkV84/XQLiHSxQmS?= =?us-ascii?Q?aZT9zynXvWefXz7NU90TwQI0wylwCDfwFskaXjeEBG5OONHVeEkPtI0vrdhT?= =?us-ascii?Q?MLrbMx9Wd1ryd7IhJM6Y4Z1wn7lrCkS3zYPths2Ft6xbwcbPCnff+Qtri7Io?= =?us-ascii?Q?lNgar41ETg1bAFGIFFvKRS54QzUe4FxDam/MasSFb3cPqVReoj8/u0uS9YxE?= =?us-ascii?Q?LV2adIPEcMxlP9q756/WkkY6m7K75EODFQ948gmItDE/PL85RdDjiJIP5SYW?= =?us-ascii?Q?Qly0Jb4bgyJYSM+9YKAl+FdPXlenlHK/wBcLnfl3nyQp9Jsa67iFATCDXtOw?= =?us-ascii?Q?XClEU8Qp3M14saZiLqD3KGfA1+Sh2RtO1UKytsXfpToiYVi+glqBcLgyZo5D?= =?us-ascii?Q?Hg98UMf/lm2fwepvH1neH/RYXob4lPGulLJy/BD/LMhMqtzv+v0jCn7eMLKs?= =?us-ascii?Q?Kj0ioYizTmrMXY2Xus0qaS5aEHt9q4zuaod3G+fYPM9r676+OraZtyzfEneK?= =?us-ascii?Q?+NBsvJXmVcgs7wkgpyOrD49nmbyt53qi52kK+qHIa4q4BkfhSpHFl3SCyiz6?= =?us-ascii?Q?91sx7GFUcN/qVnvfaoqaWXhzF9dX4Yq/lMJMvb+VOxbkZkU2W2KotJsmK4Z8?= =?us-ascii?Q?2GDKEy+t1aO/auV16rSBRnGtpa74q6KwvNL3fHoc+7qg3FEinlfvwEsez2SS?= =?us-ascii?Q?aNbDbJ+r3Q1E1nuCoT6LYZxLzZf28ve8GNwHfcRUg7W3fElj2YdG7qchlhsE?= =?us-ascii?Q?sS77nVZwSpyYpNB1Ex/Bjs382z/+QDeHuHbsuQUo8+ALS2sS7RtLTej0NgX7?= =?us-ascii?Q?PJBERx3/A0HN1dE0eVj9LMBblruEpS7GijtYQpvmXi7JKFFhM1YHVEKB229I?= =?us-ascii?Q?2dZqL83P1/r0s/HDpictbr+OwyFSAGZdFFHZGyjP6y77WtXBZhYrhGzJh2pC?= =?us-ascii?Q?DefNv7m1c0iN23Jv9pxSrk6ZjJ2oIlW+RtM+uBm9uJJc+ZkBctgmGBIqqnWq?= =?us-ascii?Q?/CtAdxwKhUYKfpqI=3D?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR0401MB1855;6:qdVOI32ozeclJLUCKcqljAoGJqGdFH3CWx6EJ6CCSRhOrXMxbUx53MsVB2PGGKkHfDbGKVzsJ6+zkHfmblN7MH4uNCNfdlA+ZXwLOyHRhgNRtjGa30mkHMsi3zwmQHguNba3/P07OQJCK0HiPnt1w8jQpVXKo+cOcuGGvTves+5bkKm0pJ8sb8LZ9BayMmwfP4xiavg9t+nhvVCIKHyTpK/Flh8EF1xwjVWNOQv7v7Y+IFPh+O7/MEvUvykyii/gIblmsNGaJkDFKh5qmDMGk8rfoSpBQpJY+KmtPO+u+2yAzihcWkieHFN1FkR7Ncvk;5:x7UoicwP2SJYoVMn2/FKRpkgA1UWMVYvLhZ2ULmI9QbXCrbux8mIhyt+/JhumIBYmHkmFl3Ok6xJRwGb9DB9o+8uOtRvcizkozQGGIyYy1Gghx3xxjOuZRMItPFS26jpNg7gAfOjfpmxdXK2CTp6QQ==;24:KKB3qE8xW+kl/QmniSsQHSM+I29Wyma8lWYtl0PmHo3Y5r9lfyR80JjYSSA9z1RMJIAdaS/KNweEo81cZ7Jn8PwLzDGFXB+IoR4C5krdIuQ=;7:3ct1QfWjHwsVQcKX4aLjmj0P05wf0ujdk1pyhSczRlSyfsymEY0oz5cXbRlZv2WTpm4VP4eTK2q55QWn/+QVTLucCA6s5qRUmRvkcwz8JVCjCIxQvMD0rXZDFOyO4x/BdMnij/6JvkwMAZdpaV5+t4tpcINJWub2Hn222RsmCxQ3DcgouHBMOcVbmoXlHBqStWxuL847+7/9RNd9OKo3r2mv8ZbJW4Q1b9JWnqyQzV0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2016 17:00:05.4847 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0401MB1855 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 | 30 ++++++++++++++++++++++++------ drivers/mtd/nand/gpmi-nand/gpmi-nand.h | 7 +++++-- 4 files changed, 42 insertions(+), 19 deletions(-) diff --git a/drivers/mtd/nand/gpmi-nand/bch-regs.h b/drivers/mtd/nand/gpmi-nand/bch-regs.h index 05bb91f..228142c 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-2016 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 0f68a99..358ff5d 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-2016 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 6e46156..a8936fd 100644 --- a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c +++ b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c @@ -1,7 +1,7 @@ /* * Freescale GPMI NAND Flash Driver * - * Copyright (C) 2010-2015 Freescale Semiconductor, Inc. + * Copyright (C) 2010-2016 Freescale Semiconductor, Inc. * Copyright (C) 2008 Embedded Alley Solutions, Inc. * * This program is free software; you can redistribute it and/or modify @@ -110,6 +110,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; @@ -601,6 +607,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; @@ -618,6 +628,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; @@ -634,7 +646,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. * @@ -1965,8 +1977,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; } @@ -1987,6 +1999,7 @@ static int gpmi_nand_init(struct gpmi_nand_data *this) struct nand_chip *chip = &this->nand; struct mtd_info *mtd = nand_to_mtd(chip); int ret; + int max_chips; /* init current chip */ this->current_chip = -1; @@ -2021,7 +2034,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); + max_chips = (GPMI_IS_MX6(this) || GPMI_IS_MX7(this)) ? 2 : 1; + ret = nand_scan_ident(mtd, max_chips, NULL); if (ret) goto err_out; @@ -2074,7 +2088,11 @@ 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 = &gpmi_devdata_imx7d, + }, { /* sentinel */ } + }; 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 4e49a1f..04a3584 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-2016 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 { @@ -305,6 +306,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