public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Thomas Chou <thomas@wytron.com.tw>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v4 1/3] dm: implement a MTD uclass
Date: Sat, 7 Nov 2015 21:43:28 +0800	[thread overview]
Message-ID: <563E0000.6040105@wytron.com.tw> (raw)
In-Reply-To: <CAD6G_RSVwR_Vbcw3JcHtOdT854X8jdRn52bv5WNvia+yEq_a+A@mail.gmail.com>

HI Jagan,

On 2015?11?07? 20:35, Jagan Teki wrote:
>> It seems we are working toward the same direction. :)
>
> Sorry, I couldn't understand this looks we're in different direction.
>
> Let me explain what I thought about mtd_info usage. udevice should be
> part of underlying flash structure's like cfi, nand and spi_flash and
> mtd_info should be used for it's core api's like _erase. _read and
> _write and underlying driver will use their global structure that
> include's mtd and udevice as a function pointer like this.

Please see v5 of this patch and v3 of altera qspi.

The uclass priv of mtd class is an auto-allocated mtd_info. The 
spi_flash_priv includes both mtd_info and spi_flash. So the only 
difference is the spi_flash. This is because cfi uses struct flash, 
while spi flash uses struct spi_flash. So it is better to leave the 
struct flash to driver allocation.

The mtd->priv points to struct spi_flash for spi flash, and points to 
struct flash for cfi flash. It serves the same purpose.

The struct flash has *mtd. The struct spi_flash has *mtd, too.

I added struct udevice *dev to mtd_info. The struct spi_flash has *dev, 
but struct flash has not.

>
> struct spi_flash {
>     struct mtd_info *info;
>     struct udevice *device;
> }
>

struct flash {
...
struct mtd_info *info;
}

> struct spi_flash_priv {
>          struct spi_flash        flash;
>          struct mtd_info         mtd;
> };
>

Simply,
struct mtd_info.


> static int spi_flash_std_probe(struct udevice *dev)
> {
>          struct spi_flash_priv *priv = dev_get_uclass_priv(dev);
>          struct spi_slave *spi = dev_get_parent_priv(dev);
>          struct spi_flash *flash;
>          int ret;
>
>          flash = &priv->flash;
>          flash->mtd = &priv->mtd;

mtd = dev_get_uclass_priv(dev);
flash->mtd = mtd;

>
>          flash->spi = spi;
>          flash->priv = priv;
>
>          priv->mtd.priv = flash;
>          flash->dev = dev;

mtd->priv = flash;
mtd->dev = dev;

flash->mtd->dev is the same as spi's flash->dev

> }
>
> U_BOOT_DRIVER(spi_flash_std) = {
>          .name           = "spi_flash_std",
>          .id             = UCLASS_SPI_FLASH,
>          .of_match       = spi_flash_std_ids,
>          .probe          = spi_flash_std_probe,
>          .priv_auto_alloc_size = sizeof(struct spi_flash_priv),
> };
>
> This is the way I have implemented mtd on spi-flash[1] [2]
> [1] https://patchwork.ozlabs.org/patch/529397/
> [2] https://patchwork.ozlabs.org/patch/529399/
>
> Please explain how this related your approach of adding udevice to mtd.
>

The flash ops which u-boot commands calls are built upon mtd ops.

eg,
write_buff()
{
   mtd_write();
}

flash_erase()
{
   mtd_erase();
}

Please let me know what do you think. Thanks. :)

Best regards,
Thomas

  reply	other threads:[~2015-11-07 13:43 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-08  7:34 [U-Boot] [PATCH] dm: implement a cfi flash uclass Thomas Chou
2015-10-09  9:36 ` Simon Glass
2015-10-09 13:31   ` Thomas Chou
2015-10-11  5:16     ` Thomas Chou
2015-10-11  5:41       ` Bin Meng
2015-10-11  7:25         ` Thomas Chou
2015-10-11  7:30 ` [U-Boot] [PATCH v2] " Thomas Chou
2015-10-11  7:54   ` Bin Meng
2015-10-11  8:54     ` Thomas Chou
2015-10-11  9:10       ` Bin Meng
2015-10-11 12:24         ` Thomas Chou
2015-10-11 12:43           ` Bin Meng
2015-10-11 13:29             ` Thomas Chou
2015-10-11 21:47               ` Simon Glass
2015-10-12  0:07                 ` Thomas Chou
2015-10-12  3:07                 ` Bin Meng
2015-10-11  9:35     ` Thomas Chou
2015-10-30 13:33 ` [U-Boot] [PATCH v3 1/3] dm: implement a MTD uclass Thomas Chou
2015-10-30 13:33   ` [U-Boot] [PATCH v3 2/3] cfi_flash: convert to driver model Thomas Chou
2015-11-02  8:20     ` Stefan Roese
2015-11-03  0:23       ` Thomas Chou
2015-11-03  5:56         ` Stefan Roese
2015-11-03  6:25           ` Thomas Chou
2015-11-03  7:22             ` Stefan Roese
2015-10-30 13:33   ` [U-Boot] [PATCH v3 3/3] nios2: use cfi flash " Thomas Chou
2015-11-03 13:09 ` [U-Boot] [PATCH v4 1/3] dm: implement a MTD uclass Thomas Chou
2015-11-03 13:09   ` [U-Boot] [PATCH v4 2/3] cfi_flash: convert to driver model Thomas Chou
2015-11-03 13:54     ` Stefan Roese
2015-11-06  1:09       ` Thomas Chou
2015-11-06  6:04         ` Stefan Roese
2015-11-06  6:33           ` Thomas Chou
2015-11-06  3:15     ` Simon Glass
2015-11-06  4:34       ` Thomas Chou
2015-11-06 23:58         ` Simon Glass
2015-11-03 13:09   ` [U-Boot] [PATCH v4 3/3] nios2: use cfi flash " Thomas Chou
2015-11-03 14:41   ` [U-Boot] [PATCH v4 1/3] dm: implement a MTD uclass Jagan Teki
2015-11-03 14:49     ` Thomas Chou
2015-11-03 14:55       ` Jagan Teki
2015-11-03 14:58         ` Jagan Teki
2015-11-04  3:12         ` Thomas Chou
2015-11-07 12:35           ` Jagan Teki
2015-11-07 13:43             ` Thomas Chou [this message]
2015-11-06 12:06   ` Simon Glass
2015-11-06 13:25     ` Thomas Chou
2015-11-06 23:58       ` Simon Glass
2015-11-07  7:57 ` [U-Boot] [PATCH v5 " Thomas Chou
2015-11-07  7:57   ` [U-Boot] [PATCH v5 2/3] cfi_flash: convert to driver model Thomas Chou
2015-11-09 20:24     ` Simon Glass
2015-12-06  8:23     ` Jagan Teki
2015-12-06 11:37       ` Thomas Chou
2015-12-06 13:10         ` Jagan Teki
2015-12-06 13:35           ` Thomas Chou
2015-12-06 15:03             ` Jagan Teki
2015-12-07  9:11               ` Thomas Chou
2015-11-07  7:57   ` [U-Boot] [PATCH v5 3/3] nios2: use cfi flash " Thomas Chou

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=563E0000.6040105@wytron.com.tw \
    --to=thomas@wytron.com.tw \
    --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