From patchwork Fri Jan 8 15:08:57 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxim Levitsky X-Patchwork-Id: 42514 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 438DBB7B6C for ; Sat, 9 Jan 2010 02:10:33 +1100 (EST) Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.69 #1 (Red Hat Linux)) id 1NTGSa-0000Ku-13; Fri, 08 Jan 2010 15:09:08 +0000 Received: from mail-fx0-f222.google.com ([209.85.220.222]) by bombadil.infradead.org with esmtp (Exim 4.69 #1 (Red Hat Linux)) id 1NTGST-0000Iz-G3 for linux-mtd@lists.infradead.org; Fri, 08 Jan 2010 15:09:05 +0000 Received: by fxm22 with SMTP id 22so21924924fxm.2 for ; Fri, 08 Jan 2010 07:09:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:subject:from:to:cc :in-reply-to:references:content-type:date:message-id:mime-version :x-mailer:content-transfer-encoding; bh=nZlETv3VB/Yx11SqiS2/9kwMfqJbCdABIqqsglZDcdg=; b=e7NXcteTlgFlMIph0iOTAPlCKqu05G/EdTy6vy1XLcwLj9o9JPSr+IVJ3utKXUzgnF LubBv8JfMMEVYGK2UW42Fj0BNDVDczYx01JDUQI5pyTC3djPCO/lUHH5ArWSdZqsnMLa e7H6MqSOM3JCrdx98tiJ1bqauLnW0jairg08A= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=subject:from:to:cc:in-reply-to:references:content-type:date :message-id:mime-version:x-mailer:content-transfer-encoding; b=NEcxttcljqysrOfyX6cSaQdcVrJgdE5pCmK2HPFYXNCsiQYJXrphC151J7yOR18AC0 QsIXrfJAi0MOXTwTBr303NWHNu3eBs5gjHuiPQILsbhzeXwOV/Ev6O+ZRgQllxYMFZcb sSeT7ObwDiKWX+smRwDa1h/plZ6pli17PPhyk= Received: by 10.223.132.204 with SMTP id c12mr3357405fat.80.1262963340683; Fri, 08 Jan 2010 07:09:00 -0800 (PST) Received: from ?10.1.0.2? (IGLD-84-228-118-133.inter.net.il [84.228.118.133]) by mx.google.com with ESMTPS id z10sm170511fka.0.2010.01.08.07.08.59 (version=SSLv3 cipher=RC4-MD5); Fri, 08 Jan 2010 07:09:00 -0800 (PST) Subject: [PATCH 5/9] MTD: nand subsystem, export nand_do_read_oob and nand_do_write_oob From: Maxim Levitsky To: linux-kernel In-Reply-To: <1262963092.12577.14.camel@maxim-laptop> References: <1262963092.12577.14.camel@maxim-laptop> Date: Fri, 08 Jan 2010 17:08:57 +0200 Message-ID: <1262963337.12577.19.camel@maxim-laptop> Mime-Version: 1.0 X-Mailer: Evolution 2.28.1 X-CRM114-Version: 20090807-BlameThorstenAndJenny ( TRE 0.7.6 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20100108_100901_656453_05D10494 X-CRM114-Status: GOOD ( 17.33 ) X-Spam-Score: 0.0 (/) X-Spam-Report: SpamAssassin version 3.2.5 on bombadil.infradead.org summary: Content analysis details: (0.0 points) pts rule name description ---- ---------------------- -------------------------------------------------- _SUMMARY_ Cc: joern , linux-mtd , Alex Dubov X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-mtd-bounces@lists.infradead.org Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org >From 5dbd1e5f7b5a4fe76053e25e744327156f015c6f Mon Sep 17 00:00:00 2001 From: Maxim Levitsky Date: Fri, 8 Jan 2010 15:54:42 +0200 Subject: [PATCH 5/9] MTD: nand subsystem, export nand_do_read_oob and nand_do_write_oob Drivers might need sane way to read/write oob area, but can't use mtd interface due to locking. Signed-off-by: Maxim Levitsky --- drivers/mtd/nand/nand_base.c | 10 +++++----- include/linux/mtd/nand.h | 5 +++++ 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c index 8f2958f..8e31245 100644 --- a/drivers/mtd/nand/nand_base.c +++ b/drivers/mtd/nand/nand_base.c @@ -99,9 +99,6 @@ static struct nand_ecclayout nand_oob_128 = { static int nand_get_device(struct nand_chip *chip, struct mtd_info *mtd, int new_state); -static int nand_do_write_oob(struct mtd_info *mtd, loff_t to, - struct mtd_oob_ops *ops); - /* * For devices which display every fart in the system on a separate LED. Is * compiled away when LED support is disabled. @@ -1536,7 +1533,7 @@ static int nand_write_oob_syndrome(struct mtd_info *mtd, * * NAND read out-of-band data from the spare area */ -static int nand_do_read_oob(struct mtd_info *mtd, loff_t from, +int nand_do_read_oob(struct mtd_info *mtd, loff_t from, struct mtd_oob_ops *ops) { int page, realpage, chipnr, sndcmd = 1; @@ -1620,6 +1617,7 @@ static int nand_do_read_oob(struct mtd_info *mtd, loff_t from, ops->oobretlen = ops->ooblen; return 0; } +EXPORT_SYMBOL_GPL(nand_do_read_oob); /** * nand_read_oob - [MTD Interface] NAND read data and/or out-of-band @@ -2110,7 +2108,7 @@ static int nand_write(struct mtd_info *mtd, loff_t to, size_t len, * * NAND write out-of-band */ -static int nand_do_write_oob(struct mtd_info *mtd, loff_t to, +int nand_do_write_oob(struct mtd_info *mtd, loff_t to, struct mtd_oob_ops *ops) { int chipnr, page, status, len; @@ -2181,6 +2179,7 @@ static int nand_do_write_oob(struct mtd_info *mtd, loff_t to, return 0; } +EXPORT_SYMBOL_GPL(nand_do_write_oob); /** * nand_write_oob - [MTD Interface] NAND write data and/or out-of-band @@ -3082,6 +3081,7 @@ EXPORT_SYMBOL_GPL(nand_scan_ident); EXPORT_SYMBOL_GPL(nand_scan_tail); EXPORT_SYMBOL_GPL(nand_release); + static int __init nand_base_init(void) { led_trigger_register_simple("nand-disk", &nand_led_trigger); diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h index ccab9df..75575fb 100644 --- a/include/linux/mtd/nand.h +++ b/include/linux/mtd/nand.h @@ -469,6 +469,11 @@ extern int nand_erase_nand(struct mtd_info *mtd, struct erase_info *instr, extern int nand_do_read(struct mtd_info *mtd, loff_t from, size_t len, size_t * retlen, uint8_t * buf); +extern int nand_do_read_oob(struct mtd_info *mtd, loff_t from, + struct mtd_oob_ops *ops); + +extern int nand_do_write_oob(struct mtd_info *mtd, loff_t to, + struct mtd_oob_ops *ops); /** * struct platform_nand_chip - chip level device structure * @nr_chips: max. number of chips to scan for