From patchwork Wed Apr 22 02:51:31 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Brownell X-Patchwork-Id: 26290 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 bilbo.ozlabs.org (Postfix) with ESMTPS id E04B1B6F44 for ; Wed, 22 Apr 2009 13:09:14 +1000 (EST) Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.69 #1 (Red Hat Linux)) id 1LwSlF-0004Ov-2b; Wed, 22 Apr 2009 03:04:33 +0000 Received: from n15.bullet.mail.mud.yahoo.com ([68.142.206.42]) by bombadil.infradead.org with smtp (Exim 4.69 #1 (Red Hat Linux)) id 1LwSl0-0004OG-Oi for linux-mtd@lists.infradead.org; Wed, 22 Apr 2009 03:04:30 +0000 Received: from [209.191.108.96] by n15.bullet.mail.mud.yahoo.com with NNFMP; 22 Apr 2009 03:04:17 -0000 Received: from [68.142.201.250] by t3.bullet.mud.yahoo.com with NNFMP; 22 Apr 2009 03:04:17 -0000 Received: from [127.0.0.1] by omp411.mail.mud.yahoo.com with NNFMP; 22 Apr 2009 03:04:17 -0000 X-Yahoo-Newman-Id: 555596.43169.bm@omp411.mail.mud.yahoo.com Received: (qmail 51511 invoked from network); 22 Apr 2009 03:04:17 -0000 DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=pacbell.net; h=Received:X-YMail-OSG:X-Yahoo-Newman-Property:To:Subject:Cc:Content-Disposition:From:Date:MIME-Version:Message-Id:Content-Type:Content-Transfer-Encoding; b=b7X712oGKqj6zZfr1Vud7rUnLIicwTwN70xeyL4RV2Se6FO7ZXNNQ0BYuPrTOLZJ3ImrtwCznPjN036SASurfcqA7Dci/I+6ZEyjzNKT5Iqvj3qS3MSmqzebJWqv63tvQaYU8aDCfCGQuu6bj61vlYAcSDdraPOJ+31Jjr+i6UY= ; Received: from unknown (HELO albert) (david-b@69.226.223.132 with plain) by smtp103.sbc.mail.sp1.yahoo.com with SMTP; 22 Apr 2009 03:04:16 -0000 X-YMail-OSG: 3HfG92oVM1n_j1tAutiBBo7ogQCvUjy3XkdgXgi_z2mRsU25O1Uw3OAADBtVJfZWsBcsEAXnfZLELfxJ89xs9tpB5MdC0lc5TRYmwJOVcmWvWPBZmn0EARpWLPPNtfT1mrTMSQMg1ChDBm8UhXo3wsGnwRD6iedNEsARyvDnXX6ZeguVkK61wUzioAki5va04CtmnPSQNckYdyIxRoTRppxFA9CkUnviW2o3XW1T8LiMSuYr4yIxOlfMMJlGahWC.pyRPcj.Mxd1S5bsdXRFu5qcxVRoN5eQR8xWTHSMXtDHcKOFE242jgsqXi2RNbsirhsbQg-- X-Yahoo-Newman-Property: ymail-3 To: Linux MTD Subject: [patch/RESEND 2.6.30-rc2 2/3] NAND: minor davinci_nand cleanup Content-Disposition: inline From: David Brownell Date: Tue, 21 Apr 2009 19:51:31 -0700 MIME-Version: 1.0 Message-Id: <200904211951.31776.david-b@pacbell.net> X-Spam-Score: 0.0 (/) Cc: Snehaprabha Narnakaje , DaVinci , dwmw2@infradead.org, Thomas Gleixner , Andrew Morton X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.11 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: David Brownell Make the DaVinci NAND driver require platform_data with board-specific configuration. We can't actually do any kind of sane job of configuring it otherwise. Also fix the comment about picking the "best" ECC mode. We can't do those any more; that relied on knowing what kind of CPU we're using (they don't all support 4-bit ECC), and current policy is that drivers not have cpu_is_*() checks. Signed-off-by: David Brownell Signed-off-by: Kevin Hilman --- RESEND 7-april version -- refreshing against current kernel Seems appropriate for 2.6.30 merge, but not essential. drivers/mtd/nand/davinci_nand.c | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) --- a/drivers/mtd/nand/davinci_nand.c +++ b/drivers/mtd/nand/davinci_nand.c @@ -306,6 +306,10 @@ static int __init nand_davinci_probe(str uint32_t val; nand_ecc_modes_t ecc_mode; + /* insist on board-specific configuration */ + if (!pdata) + return -ENODEV; + /* which external chipselect will we be managing? */ if (pdev->id < 0 || pdev->id > 3) return -ENODEV; @@ -351,7 +355,7 @@ static int __init nand_davinci_probe(str info->chip.select_chip = nand_davinci_select_chip; /* options such as NAND_USE_FLASH_BBT or 16-bit widths */ - info->chip.options = pdata ? pdata->options : 0; + info->chip.options = pdata->options; info->ioaddr = (uint32_t __force) vaddr; @@ -360,14 +364,8 @@ static int __init nand_davinci_probe(str info->mask_chipsel = pdata->mask_chipsel; /* use nandboot-capable ALE/CLE masks by default */ - if (pdata && pdata->mask_ale) - info->mask_ale = pdata->mask_cle; - else - info->mask_ale = MASK_ALE; - if (pdata && pdata->mask_cle) - info->mask_cle = pdata->mask_cle; - else - info->mask_cle = MASK_CLE; + info->mask_ale = pdata->mask_cle ? : MASK_ALE; + info->mask_cle = pdata->mask_cle ? : MASK_CLE; /* Set address of hardware control function */ info->chip.cmd_ctrl = nand_davinci_hwcontrol; @@ -377,11 +375,8 @@ static int __init nand_davinci_probe(str info->chip.read_buf = nand_davinci_read_buf; info->chip.write_buf = nand_davinci_write_buf; - /* use board-specific ECC config; else, the best available */ - if (pdata) - ecc_mode = pdata->ecc_mode; - else - ecc_mode = NAND_ECC_HW; + /* Use board-specific ECC config */ + ecc_mode = pdata->ecc_mode; switch (ecc_mode) { case NAND_ECC_NONE: @@ -469,7 +464,7 @@ static int __init nand_davinci_probe(str info->mtd.name = master_name; } - if (mtd_parts_nb <= 0 && pdata) { + if (mtd_parts_nb <= 0) { mtd_parts = pdata->parts; mtd_parts_nb = pdata->nr_parts; } @@ -482,7 +477,7 @@ static int __init nand_davinci_probe(str info->partitioned = true; } - } else if (pdata && pdata->nr_parts) { + } else if (pdata->nr_parts) { dev_warn(&pdev->dev, "ignoring %d default partitions on %s\n", pdata->nr_parts, info->mtd.name); }