From: Marek Vasut <marek.vasut@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 1/4] onenand:samsung Target dependent OneNAND chip probe function
Date: Sun, 20 Nov 2011 01:06:09 +0100 [thread overview]
Message-ID: <201111200106.10197.marek.vasut@gmail.com> (raw)
In-Reply-To: <1320914477-27885-2-git-send-email-l.majewski@samsung.com>
> Separate callback for probing OneNAND memory chip.
> If no special function is defined, default implementation will be used.
>
> This approach gives more flexibility for OneNAND device probing.
>
> Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
> ---
> ./tools/checkpatch.pl -
> total: 0 errors, 0 warnings, 108 lines checked
>
> NOTE: Ignored message types: COMPLEX_MACRO CONSIDER_KSTRTO MINMAX
> MULTISTATEMENT_MACRO_USE_DO_WHILE
>
> ---
> drivers/mtd/onenand/onenand_base.c | 43
> +++++++++++++++++++++++++++++----- drivers/mtd/onenand/samsung.c |
> 10 ++++++++
> include/linux/mtd/onenand.h | 1 +
> include/linux/mtd/samsung_onenand.h | 2 +
> 4 files changed, 49 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/mtd/onenand/onenand_base.c
> b/drivers/mtd/onenand/onenand_base.c index 24e02c2..a557d48 100644
> --- a/drivers/mtd/onenand/onenand_base.c
> +++ b/drivers/mtd/onenand/onenand_base.c
> @@ -2505,23 +2505,24 @@ out:
> }
>
> /**
> - * onenand_probe - [OneNAND Interface] Probe the OneNAND device
> + * onenand_chip_probe - [OneNAND Interface] Probe the OneNAND chip
> * @param mtd MTD device structure
> *
> * OneNAND detection method:
> * Compare the the values from command with ones from register
> */
> -static int onenand_probe(struct mtd_info *mtd)
> +static int onenand_chip_probe(struct mtd_info *mtd)
> {
> struct onenand_chip *this = mtd->priv;
> - int bram_maf_id, bram_dev_id, maf_id, dev_id, ver_id;
> - int density;
> + int bram_maf_id, bram_dev_id, maf_id, dev_id;
> int syscfg;
>
> /* Save system configuration 1 */
> syscfg = this->read_word(this->base + ONENAND_REG_SYS_CFG1);
> +
> /* Clear Sync. Burst Read mode to read BootRAM */
> - this->write_word((syscfg & ~ONENAND_SYS_CFG1_SYNC_READ), this->base +
> ONENAND_REG_SYS_CFG1); + this->write_word((syscfg &
> ~ONENAND_SYS_CFG1_SYNC_READ),
> + this->base + ONENAND_REG_SYS_CFG1);
>
> /* Send the command for reading device ID from BootRAM */
> this->write_word(ONENAND_CMD_READID, this->base + ONENAND_BOOTRAM);
> @@ -2546,13 +2547,38 @@ static int onenand_probe(struct mtd_info *mtd)
> /* Read manufacturer and device IDs from Register */
> maf_id = this->read_word(this->base + ONENAND_REG_MANUFACTURER_ID);
> dev_id = this->read_word(this->base + ONENAND_REG_DEVICE_ID);
> - ver_id = this->read_word(this->base + ONENAND_REG_VERSION_ID);
> - this->technology = this->read_word(this->base + ONENAND_REG_TECHNOLOGY);
>
> /* Check OneNAND device */
> if (maf_id != bram_maf_id || dev_id != bram_dev_id)
> return -ENXIO;
>
> + return 0;
> +}
> +
> +/**
> + * onenand_probe - [OneNAND Interface] Probe the OneNAND device
> + * @param mtd MTD device structure
> + *
> + * OneNAND detection method:
> + * Compare the the values from command with ones from register
> + */
> +int onenand_probe(struct mtd_info *mtd)
> +{
> + struct onenand_chip *this = mtd->priv;
> + int maf_id, dev_id, ver_id;
> + int density;
> + int ret;
> +
> + ret = this->chip_probe(mtd);
> + if (ret)
> + return ret;
> +
> + /* Read manufacturer and device IDs from Register */
> + maf_id = this->read_word(this->base + ONENAND_REG_MANUFACTURER_ID);
> + dev_id = this->read_word(this->base + ONENAND_REG_DEVICE_ID);
> + ver_id = this->read_word(this->base + ONENAND_REG_VERSION_ID);
> + this->technology = this->read_word(this->base + ONENAND_REG_TECHNOLOGY);
> +
> /* Flash device information */
> mtd->name = onenand_print_device_info(dev_id, ver_id);
> this->device_id = dev_id;
> @@ -2659,6 +2685,9 @@ int onenand_scan(struct mtd_info *mtd, int maxchips)
> if (!this->write_bufferram)
> this->write_bufferram = onenand_write_bufferram;
>
> + if (!this->chip_probe)
> + this->chip_probe = onenand_chip_probe;
> +
> if (!this->block_markbad)
> this->block_markbad = onenand_default_block_markbad;
> if (!this->scan_bbt)
> diff --git a/drivers/mtd/onenand/samsung.c b/drivers/mtd/onenand/samsung.c
> index 20b4912..1f4bd81 100644
> --- a/drivers/mtd/onenand/samsung.c
> +++ b/drivers/mtd/onenand/samsung.c
> @@ -590,6 +590,16 @@ static void s3c_set_width_regs(struct onenand_chip
> *this) }
> #endif
>
> +int s5pc110_chip_probe(struct mtd_info *mtd)
> +{
> + return 0;
> +}
> +
> +int s5pc210_chip_probe(struct mtd_info *mtd)
> +{
> + return 0;
> +}
> +
Will there be a problem if you used the default chip_probe() method from the
driver ?
> void s3c_onenand_init(struct mtd_info *mtd)
> {
> struct onenand_chip *this = mtd->priv;
> diff --git a/include/linux/mtd/onenand.h b/include/linux/mtd/onenand.h
> index 5465562..dea42f4 100644
> --- a/include/linux/mtd/onenand.h
> +++ b/include/linux/mtd/onenand.h
> @@ -101,6 +101,7 @@ struct onenand_chip {
> size_t count);
> unsigned short (*read_word) (void __iomem *addr);
> void (*write_word) (unsigned short value, void __iomem *addr);
> + int (*chip_probe)(struct mtd_info *mtd);
> void (*mmcontrol) (struct mtd_info *mtd, int sync_read);
> int (*block_markbad)(struct mtd_info *mtd, loff_t ofs);
> int (*scan_bbt)(struct mtd_info *mtd);
> diff --git a/include/linux/mtd/samsung_onenand.h
> b/include/linux/mtd/samsung_onenand.h index 021fa27..ddb29bb 100644
> --- a/include/linux/mtd/samsung_onenand.h
> +++ b/include/linux/mtd/samsung_onenand.h
> @@ -127,5 +127,7 @@ struct samsung_onenand {
>
> /* common initialize function */
> extern void s3c_onenand_init(struct mtd_info *);
> +extern int s5pc110_chip_probe(struct mtd_info *);
> +extern int s5pc210_chip_probe(struct mtd_info *);
>
> #endif
next prev parent reply other threads:[~2011-11-20 0:06 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-10 8:41 [U-Boot] [PATCH 0/4] onenand: OneNAND board dependent probe and Samsung targets fixes Lukasz Majewski
2011-11-10 8:41 ` [U-Boot] [PATCH 1/4] onenand:samsung Target dependent OneNAND chip probe function Lukasz Majewski
2011-11-20 0:06 ` Marek Vasut [this message]
2011-11-20 23:29 ` Kyungmin Park
2011-11-10 8:41 ` [U-Boot] [PATCH 2/4] onenand:samsung OneNAND chip probe functions added for GONI and C210_Universal Lukasz Majewski
2011-11-10 8:41 ` [U-Boot] [PATCH 3/4] onenand: Replace ONENAND_IS_MLC() test with ONENAND_HAS_4KB() Lukasz Majewski
2011-11-10 8:41 ` [U-Boot] [PATCH 4/4] onenand: samsung: Enable support OneNAND support at Samsung's S5PC210_Universal Lukasz Majewski
2012-03-06 6:54 ` [U-Boot] [RESEND 0/4] onenand: OneNAND board dependent probe and fixes for Samsung targets Lukasz Majewski
2012-03-06 6:54 ` [U-Boot] [RESEND 1/4] onenand:samsung Target dependent OneNAND chip probe function Lukasz Majewski
2012-03-06 6:54 ` [U-Boot] [RESEND 2/4] onenand:samsung OneNAND chip probe functions added for GONI and Exynos4210 Lukasz Majewski
2012-03-06 6:54 ` [U-Boot] [RESEND 3/4] onenand: Replace ONENAND_IS_MLC() test with ONENAND_HAS_4KB() Lukasz Majewski
2012-03-06 6:54 ` [U-Boot] [RESEND 4/4] onenand: samsung: Enable support OneNAND support at Samsung's Exynos4210 Lukasz Majewski
2012-03-06 18:53 ` [U-Boot] OneNAND custodian (was: Re: [RESEND 0/4] onenand: OneNAND board dependent probe and fixes for Samsung targets) Scott Wood
2012-03-07 0:04 ` Kyungmin Park
2012-03-07 9:02 ` Lukasz Majewski
2012-03-07 20:13 ` [U-Boot] OneNAND custodian Scott Wood
2012-03-07 22:15 ` Wolfgang Denk
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=201111200106.10197.marek.vasut@gmail.com \
--to=marek.vasut@gmail.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox