From patchwork Thu Feb 4 23:30:53 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxim Levitsky X-Patchwork-Id: 44580 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 AA063B7CFE for ; Fri, 5 Feb 2010 10:37:31 +1100 (EST) Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.69 #1 (Red Hat Linux)) id 1NdBCy-0008U5-AE; Thu, 04 Feb 2010 23:34:00 +0000 Received: from fg-out-1718.google.com ([72.14.220.157]) by bombadil.infradead.org with esmtp (Exim 4.69 #1 (Red Hat Linux)) id 1NdBAg-0007EK-WA for linux-mtd@lists.infradead.org; Thu, 04 Feb 2010 23:31:50 +0000 Received: by fg-out-1718.google.com with SMTP id e12so19568fga.0 for ; Thu, 04 Feb 2010 15:31:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:from:to:cc:subject:date :message-id:x-mailer:in-reply-to:references; bh=7fqF4FcIS3zMjULcK7USlZGAbPmeLbkE8rGuAOn3L6s=; b=etr6u7ESH/PROZL0FTGk/bkUoOQqVvoHVaVwDOt7D2zEuo2/+qCvOjpAUWv/3q6lR5 t4ByhC1qp0PC9d1ZtEaCeo4nrYL3fcFtwCKntqDeLnIJUKdNocIGhIRj26crJ2gA05rH HaGYFXKgGex42t7PL8vYZ7uM1n0AoFaXT+Z1s= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; b=HLy0qbF1FPvxc+ohfh4dBQf8OoIogbuWLq/Vx+tEOiv1YFeKK2rq4a6HwZ+d32lSeM vjCz49cCkXTbM1FQZOidSwixiVo/sT4nsBz+gk1Qy2e01prJNcY/LfvLCYcX4Vqt/kPi M9GJ5hSkn4mrGD7/0qlD4wU69ixTUK9ts3NIs= Received: by 10.102.222.7 with SMTP id u7mr1257918mug.1.1265326298066; Thu, 04 Feb 2010 15:31:38 -0800 (PST) Received: from localhost.localdomain (IGLD-84-229-248-49.inter.net.il [84.229.248.49]) by mx.google.com with ESMTPS id u9sm3865749muf.18.2010.02.04.15.31.36 (version=SSLv3 cipher=RC4-MD5); Thu, 04 Feb 2010 15:31:37 -0800 (PST) From: Maxim Levitsky To: David Woodhouse Subject: [PATCH 13/17] MTD: export few functions from nand_base.c Date: Fri, 5 Feb 2010 01:30:53 +0200 Message-Id: <1265326257-4446-14-git-send-email-maximlevitsky@gmail.com> X-Mailer: git-send-email 1.6.3.3 In-Reply-To: <1265326257-4446-1-git-send-email-maximlevitsky@gmail.com> References: <1265326257-4446-1-git-send-email-maximlevitsky@gmail.com> X-CRM114-Version: 20090807-BlameThorstenAndJenny ( TRE 0.7.6 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20100204_183139_267873_CB474F71 X-CRM114-Status: GOOD ( 21.22 ) 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: Maxim Levitsky , Alex Dubov , Artem Bityutskiy , joern , linux-kernel , linux-mtd , Thomas Gleixner 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: , MIME-Version: 1.0 Sender: linux-mtd-bounces@lists.infradead.org Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org This exports: nand_do_read_oob nand_do_write_oob nand_get_device nand_put_device This functions will be used to implement custom oob based bad block handling in upcoming smartmedia common module Signed-off-by: Maxim Levitsky --- drivers/mtd/nand/nand_base.c | 18 +++++++++--------- include/linux/mtd/nand.h | 12 ++++++++++++ 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c index 961c98f..3949d8c 100644 --- a/drivers/mtd/nand/nand_base.c +++ b/drivers/mtd/nand/nand_base.c @@ -96,11 +96,6 @@ static struct nand_ecclayout nand_oob_128 = { .length = 78}} }; -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 @@ -114,7 +109,7 @@ DEFINE_LED_TRIGGER(nand_led_trigger); * * Deselect, release chip lock and wake up anyone waiting on the device */ -static void nand_release_device(struct mtd_info *mtd) +void nand_release_device(struct mtd_info *mtd) { struct nand_chip *chip = mtd->priv; @@ -128,6 +123,7 @@ static void nand_release_device(struct mtd_info *mtd) wake_up(&chip->controller->wq); spin_unlock(&chip->controller->lock); } +EXPORT_SYMBOL_GPL(nand_release_device); /** * nand_read_byte - [DEFAULT] read one byte from the chip @@ -721,7 +717,7 @@ static void panic_nand_get_device(struct nand_chip *chip, * * Get the device and lock it for exclusive access */ -static int +int nand_get_device(struct nand_chip *chip, struct mtd_info *mtd, int new_state) { spinlock_t *lock = &chip->controller->lock; @@ -753,6 +749,7 @@ nand_get_device(struct nand_chip *chip, struct mtd_info *mtd, int new_state) remove_wait_queue(wq, &wait); goto retry; } +EXPORT_SYMBOL_GPL(nand_get_device); /** * panic_nand_wait - [GENERIC] wait until the command is done @@ -1532,7 +1529,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; @@ -1616,6 +1613,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 @@ -2108,7 +2106,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; @@ -2179,6 +2177,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 @@ -3080,6 +3079,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..8c2333a 100644 --- a/include/linux/mtd/nand.h +++ b/include/linux/mtd/nand.h @@ -469,6 +469,18 @@ 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); + +extern int nand_get_device(struct nand_chip *chip, + struct mtd_info *mtd, int new_state); + +extern void nand_release_device(struct mtd_info *mtd); + + /** * struct platform_nand_chip - chip level device structure * @nr_chips: max. number of chips to scan for