All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefano Babic <sbabic@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 02/11] SPL: NAND: add support for mxs nand
Date: Mon, 14 Apr 2014 13:38:17 +0200	[thread overview]
Message-ID: <534BC8A9.4060708@denx.de> (raw)
In-Reply-To: <1396504871-1454-3-git-send-email-tharvey@gateworks.com>

Hi Tim,

sorry for late review.

On 03/04/2014 08:01, Tim Harvey wrote:
> This utilizes existing nand support, including the mtd layer to provide a
> a method to load an image off nand for SPL. It is somewhat bulky but avoids
> duplicating code.
> 
> This will need to be split out and re-based on top of Tom's recent patch to
> add MTD NAND support which is needed here.
> 
> Signed-off-by: Tim Harvey <tharvey@gateworks.com>
> ---
>  drivers/mtd/Makefile            | 11 ++++++++++
>  drivers/mtd/nand/Makefile       |  9 ++++++++
>  drivers/mtd/nand/mxs_nand_spl.c | 46 +++++++++++++++++++++++++++++++++++++++++
>  spl/Makefile                    |  1 +
>  4 files changed, 67 insertions(+)
>  create mode 100644 drivers/mtd/nand/mxs_nand_spl.c
> 
> diff --git a/drivers/mtd/Makefile b/drivers/mtd/Makefile
> index 5467a95..10ec470 100644
> --- a/drivers/mtd/Makefile
> +++ b/drivers/mtd/Makefile
> @@ -5,6 +5,15 @@
>  # SPDX-License-Identifier:	GPL-2.0+
>  #
>  
> +ifdef CONFIG_SPL_BUILD
> +
> +ifdef CONFIG_SPL_NAND_MXS
> +obj-y += mtdcore.o
> +obj-y += mtdpart.o
> +endif

This is usually:

obj-$(CONFIG_SPL_NAND_MXS) += mtdcore.o mtdpart.o

> +
> +else # not spl
> +
>  ifneq (,$(findstring y,$(CONFIG_MTD_DEVICE)$(CONFIG_CMD_NAND)$(CONFIG_CMD_ONENAND)))
>  obj-y += mtdcore.o
>  endif
> @@ -18,3 +27,5 @@ obj-$(CONFIG_FTSMC020) += ftsmc020.o
>  obj-$(CONFIG_FLASH_CFI_LEGACY) += jedec_flash.o
>  obj-$(CONFIG_MW_EEPROM) += mw_eeprom.o
>  obj-$(CONFIG_ST_SMI) += st_smi.o
> +
> +endif
> diff --git a/drivers/mtd/nand/Makefile b/drivers/mtd/nand/Makefile
> index 02b149c..8b1a37a 100644
> --- a/drivers/mtd/nand/Makefile
> +++ b/drivers/mtd/nand/Makefile
> @@ -19,6 +19,14 @@ obj-$(CONFIG_SPL_NAND_ECC) += nand_ecc.o
>  obj-$(CONFIG_SPL_NAND_BASE) += nand_base.o
>  obj-$(CONFIG_SPL_NAND_INIT) += nand.o
>  
> +ifdef CONFIG_SPL_NAND_MXS
> +obj-y += mxs_nand_spl.o
> +obj-y += nand_bbt.o
> +obj-y += nand_ids.o
> +obj-y += nand_util.o
> +obj-y += nand_ecc.o
> +endif
> +

Ditto.

>  else # not spl
>  
>  NORMAL_DRIVERS=y
> @@ -65,5 +73,6 @@ else  # minimal SPL drivers
>  obj-$(CONFIG_NAND_FSL_ELBC) += fsl_elbc_spl.o
>  obj-$(CONFIG_NAND_FSL_IFC) += fsl_ifc_spl.o
>  obj-$(CONFIG_NAND_MXC) += mxc_nand_spl.o
> +obj-$(CONFIG_NAND_MXS) += mxs_nand_spl.o mxs_nand.o
>  
>  endif # drivers
> diff --git a/drivers/mtd/nand/mxs_nand_spl.c b/drivers/mtd/nand/mxs_nand_spl.c
> new file mode 100644
> index 0000000..ec07eb1
> --- /dev/null
> +++ b/drivers/mtd/nand/mxs_nand_spl.c
> @@ -0,0 +1,46 @@
> +/*
> + * (C) Copyright 2014
> + * Tim Harvey, Gateworks Corporation, tharvey at gateworks.com
> + *
> + * SPDX-License-Identifier:	GPL-2.0+
> + */
> +
> +#include <common.h>
> +#include <nand.h>
> +
> +static nand_info_t mtd;
> +static struct nand_chip nand_chip;
> +
> +int nand_spl_load_image(uint32_t offs, unsigned int size, void *dst)
> +{
> +	size_t sz, actual;
> +
> +	debug("%s offset:0x%08x len:%d\n", __func__, offs, size);
> +	sz = size;
> +	nand_read_skip_bad(&mtd, (loff_t) offs, &sz, &actual, size, dst);
> +	debug("read %d/%d bytes\n", sz, actual);
> +
> +	return 0;
> +}
> +
> +void nand_init(void)
> +{
> +	int ret;
> +
> +	board_nand_init(&nand_chip);
> +	mtd.priv = &nand_chip;
> +	if (nand_chip.select_chip)
> +		nand_chip.select_chip(&mtd, 0);
> +
> +	ret = nand_scan(&mtd, 1);
> +	if (!ret)
> +		ret = nand_scan_tail(&mtd);
> +	debug("oobsize=%d pagesize=%d\n", mtd.oobsize, mtd.writesize);
> +	printf("NAND: %llu MiB\n", (mtd.size / (1024 * 1024)));
> +}
> +
> +void nand_deselect(void)
> +{
> +	if (nand_chip.select_chip)
> +		nand_chip.select_chip(&mtd, -1);
> +}
> diff --git a/spl/Makefile b/spl/Makefile
> index 346d0aa..6a2c80f 100644
> --- a/spl/Makefile
> +++ b/spl/Makefile
> @@ -103,6 +103,7 @@ libs-y += fs/
>  libs-$(CONFIG_SPL_LIBGENERIC_SUPPORT) += lib/
>  libs-$(CONFIG_SPL_POWER_SUPPORT) += drivers/power/ drivers/power/pmic/
>  libs-$(if $(CONFIG_CMD_NAND),$(CONFIG_SPL_NAND_SUPPORT)) += drivers/mtd/nand/
> +libs-$(CONFIG_SPL_NAND_MXS) += drivers/mtd/
>  libs-$(CONFIG_SPL_DRIVERS_MISC_SUPPORT) += drivers/misc/
>  libs-$(CONFIG_SPL_ONENAND_SUPPORT) += drivers/mtd/onenand/
>  libs-$(CONFIG_SPL_DMA_SUPPORT) += drivers/dma/
> 

The main issue (I read also Scott's answer for Patch 4/11) is due to the
fact that you link a lot of MTD code, increasing the footprint. This
becomes an exception, because only a restricted number of function were
introduces for other SOCs (see mxc_nand_spl.c or code in omap_gpmc.c).
Sure that we cannot get rid of it ?

Best regards,
Stefano Babic

-- 
=====================================================================
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================

  reply	other threads:[~2014-04-14 11:38 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-03  6:01 [U-Boot] [PATCH 00/11] MX6: SPL NAND support Tim Harvey
2014-04-03  6:01 ` [U-Boot] [PATCH 01/11] SPL: NAND: remove CONFIG_SYS_NAND_PAGE_SIZE Tim Harvey
2014-04-04  2:33   ` Masahiro Yamada
2014-04-09 14:55   ` Nikita Kiryanov
2014-04-14 11:38   ` Stefano Babic
2014-04-17 14:18     ` Tim Harvey
2014-04-18 22:23       ` Scott Wood
2014-04-03  6:01 ` [U-Boot] [PATCH 02/11] SPL: NAND: add support for mxs nand Tim Harvey
2014-04-14 11:38   ` Stefano Babic [this message]
2014-04-03  6:01 ` [U-Boot] [PATCH 03/11] MX6: provide linker script for SPL Tim Harvey
2014-04-09 14:55   ` Nikita Kiryanov
2014-04-14 12:02   ` Stefano Babic
2014-04-17  6:27     ` Tim Harvey
2014-04-18 21:10       ` Otavio Salvador
2014-04-03  6:01 ` [U-Boot] [PATCH 04/11] MX6: add common SPL configuration Tim Harvey
2014-04-09 14:55   ` Nikita Kiryanov
2014-04-09 15:32     ` Tim Harvey
2014-04-10 14:37       ` Nikita Kiryanov
2014-04-10 21:04         ` Scott Wood
2014-04-03  6:01 ` [U-Boot] [PATCH 05/11] MX6: add boot device support SPL Tim Harvey
2014-04-14 12:27   ` Stefano Babic
2014-04-17  6:16     ` Tim Harvey
2014-04-17  8:59       ` Stefano Babic
2014-04-03  6:01 ` [U-Boot] [PATCH 06/11] MX6: add struct for sharing data between SPL and uboot Tim Harvey
2014-04-09 14:55   ` Nikita Kiryanov
2014-04-14 12:35   ` Stefano Babic
2014-04-17  6:07     ` Tim Harvey
2014-04-17  9:30       ` Stefano Babic
2014-04-17 11:22         ` Igor Grinberg
2014-04-17 11:44           ` Stefano Babic
2014-04-18  6:35             ` Tim Harvey
2014-04-20  7:52               ` Igor Grinberg
2014-04-21 18:28                 ` Tim Harvey
2014-04-22  7:44                   ` Igor Grinberg
2014-04-03  6:01 ` [U-Boot] [PATCH 07/11] MX6: use macro building for MX6Q/MX6DL iomux regs Tim Harvey
2014-04-09 14:57   ` Nikita Kiryanov
2014-04-09 15:46     ` Tim Harvey
2014-04-10 14:08       ` Nikita Kiryanov
2014-04-10 14:51         ` Nikita Kiryanov
2014-04-11  5:23           ` Tim Harvey
2014-04-23 17:07         ` Stefano Babic
2014-04-23 19:00           ` Eric Nelson
2014-04-24  7:07             ` Igor Grinberg
2014-04-24  5:21           ` Tim Harvey
2014-04-23 15:30       ` Stefano Babic
2014-04-03  6:01 ` [U-Boot] [PATCH 08/11] MX6: add mmdc configuration for MX6Q/MX6DL Tim Harvey
2014-04-03  6:01 ` [U-Boot] [PATCH 09/11] IMX: add additional function for pinmux using an array Tim Harvey
2014-04-09 14:56   ` Nikita Kiryanov
2014-04-09 15:40     ` Tim Harvey
2014-04-10 14:41       ` Nikita Kiryanov
2014-04-23  5:03         ` Tim Harvey
2014-04-03  6:01 ` [U-Boot] [PATCH 10/11] ventana: auto-configure for IMX6Q vs IMX6DL Tim Harvey
2014-04-23 17:31   ` Stefano Babic
2014-04-24  5:04     ` Tim Harvey
2014-04-03  6:01 ` [U-Boot] [PATCH 11/11] ventana: switch to SPL Tim Harvey
2014-04-03 18:52   ` Tim Harvey
2014-04-23 18:03   ` Stefano Babic
2014-04-24  8:06     ` Tim Harvey
2014-04-24  8:18       ` Stefano Babic
2014-04-24  8:22       ` Stefan Roese

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=534BC8A9.4060708@denx.de \
    --to=sbabic@denx.de \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.