All of lore.kernel.org
 help / color / mirror / Atom feed
From: Cyril Bur <cyrilbur@gmail.com>
To: Neelesh Gupta <neelegup@linux.vnet.ibm.com>
Cc: linuxppc-dev@ozlabs.org, Joel Stanley <joel@jms.id.au>,
	Jeremy Kerr <jk@ozlabs.org>
Subject: Re: [PATCH V3] drivers/mtd: add powernv flash MTD abstraction driver
Date: Mon, 01 Jun 2015 13:18:24 +1000	[thread overview]
Message-ID: <1433128704.2881.3.camel@cyril> (raw)
In-Reply-To: <55682FDC.8030505@linux.vnet.ibm.com>

On Fri, 2015-05-29 at 14:52 +0530, Neelesh Gupta wrote:
> 
> [...]
> 
> > +/**
> > + * @mtd: the device
> > + * @erase: the erase info
> > + * Returns 0 if erase successful or -ERRNO if an error occurred
> > + */
> > +static int powernv_flash_erase(struct mtd_info *mtd, struct erase_info *erase)
> > +{
> > +	int rc;
> > +
> > +	erase->state = MTD_ERASING;
> > +
> > +	/* todo: register our own notifier to do a true async implementation */
> > +	rc =  powernv_flash_async_op(mtd, FLASH_OP_ERASE, erase->addr,
> > +			erase->len, NULL, NULL);
> > +
> > +	if (rc) {
> > +		erase->fail_addr = erase->addr;
> > +		erase->state = MTD_ERASE_FAILED;
> > +	} else {
> > +		erase->state = MTD_ERASE_DONE;
> > +	}
> > +	mtd_erase_callback(erase);
> 
> return rc ? You also document the same  '.... or -ERRNO if an error
> occurred'
> 
Good catch, I'll amend.

> > +	return 0;
> > +}
> > +
> > +/**
> > + * powernv_flash_set_driver_info - Fill the mtd_info structure and docg3
> > + * structure @pdev: The platform device
> > + * @mtd: The structure to fill
> > + */
> > +static int powernv_flash_set_driver_info(struct device *dev,
> > +		struct mtd_info *mtd)
> > +{
> > +	u64 size;
> > +	u32 erase_size;
> > +	int rc;
> > +
> > +	rc = of_property_read_u32(dev->of_node, "ibm,flash-block-size",
> > +			&erase_size);
> > +	if (rc) {
> > +		dev_err(dev, "couldn't get resource block size information\n");
> > +		return rc;
> > +	}
> > +
> > +	rc = of_property_read_u64(dev->of_node, "reg", &size);
> > +	if (rc) {
> > +		dev_err(dev, "couldn't get resource size information\n");
> > +		return rc;
> > +	}
> > +
> > +	/*
> > +	 * Going to have to check what details I need to set and how to
> > +	 * get them
> > +	 */
> > +	mtd->name = of_get_property(dev->of_node, "name", NULL);
> > +	mtd->type = MTD_NORFLASH;
> > +	mtd->flags = MTD_WRITEABLE;
> > +	mtd->size = size;
> > +	mtd->erasesize = erase_size;
> > +	mtd->writebufsize = mtd->writesize = 1;
> > +	mtd->owner = THIS_MODULE;
> > +	mtd->_erase = powernv_flash_erase;
> > +	mtd->_read = powernv_flash_read;
> > +	mtd->_write = powernv_flash_write;
> > +	mtd->dev.parent = dev;
> > +	return 0;
> > +}
> > +
> > +/**
> > + * powernv_flash_probe
> > + * @pdev: platform device
> > + *
> > + * Returns 0 on success, -ENOMEM, -ENXIO on error
> > + */
> > +static int powernv_flash_probe(struct platform_device *pdev)
> > +{
> > +	struct device *dev = &pdev->dev;
> > +	struct powernv_flash *data;
> > +	int ret;
> > +
> > +	data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL);
> > +	if (!data) {
> > +		ret = -ENOMEM;
> > +		goto out;
> > +	}
> > +	data->mtd.priv = data;
> 
> 'mtd' is contained within the 'data' so you can cast 'mtd' to get the
> 'data'
> anywhere you want using container_of() macro.. 'priv' can be used to
> pass
> an unrelated structure ....  just a thought, you may ignore it.. :)

Yeah, I think I couldn't agree with myself when I wrote and I figured
there might be something I'd want to use priv for. There never was, that
stayed. I realised it got quite circular and there are now many ways of
getting back to data, I can't see any harm in leaving it like that,
except the strangeness of it.

Thanks,

Cyril
> Rest looks ok.
> 
> Neelesh.
> 
> 

  reply	other threads:[~2015-06-01  3:18 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-29  7:33 [PATCH V3] drivers/mtd: add powernv flash MTD abstraction driver Cyril Bur
2015-05-29  9:22 ` Neelesh Gupta
2015-06-01  3:18   ` Cyril Bur [this message]
2015-06-01  3:26   ` Cyril Bur
2015-06-02  3:58     ` [V3] " Michael Ellerman
  -- strict thread matches above, loose matches on Subject: below --
2015-06-02  4:26 [PATCH V3] " Cyril Bur
2015-06-02  5:14 ` Neelesh Gupta
2015-06-05  4:40 ` Cyril Bur
2015-06-05  4:40   ` Cyril Bur
2015-06-05  8:16   ` Richard Weinberger
2015-06-05  8:16     ` Richard Weinberger
2015-06-11  5:43     ` Michael Ellerman
2015-06-11  5:43       ` Michael Ellerman
2015-06-11  6:28       ` Richard Weinberger
2015-06-11  6:28         ` Richard Weinberger

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=1433128704.2881.3.camel@cyril \
    --to=cyrilbur@gmail.com \
    --cc=jk@ozlabs.org \
    --cc=joel@jms.id.au \
    --cc=linuxppc-dev@ozlabs.org \
    --cc=neelegup@linux.vnet.ibm.com \
    /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.