[PATCH 2/3 v3] P4080/mtd: Only make elbc nand driver detect nand flash partitions
Zang Roy-R61911
r61911 at freescale.com
Thu Sep 16 06:39:40 EDT 2010
> -----Original Message-----
> From: Anton Vorontsov [mailto:cbouatmailru at gmail.com]
> Sent: Thursday, September 16, 2010 18:14 PM
> To: Zang Roy-R61911
> Cc: Wood Scott-B07421; dedekind1 at gmail.com; Lan Chunhe-B25806; linuxppc-
> dev at ozlabs.org; linux-mtd at lists.infradead.org; akpm at linux-foundation.org;
> dwmw2 at infradead.org; Gala Kumar-B11780
> Subject: Re: [PATCH 2/3 v3] P4080/mtd: Only make elbc nand driver detect nand
> flash partitions
>
> On Thu, Sep 16, 2010 at 06:08:14PM +0800, Zang Roy-R61911 wrote:
> [...]
> > Interesting.
> > How about this?
> > #include <stdio.h>
> > #include <malloc.h>
> >
> > char *foo;
> >
> > void probe(void)
> > {
> > char *bar = NULL;
> >
> > if (!foo) {
> > bar = malloc(sizeof(*bar));
> > if (!bar)
> > return;
> > foo = bar;
> > } else
> > bar = foo;
>
> This willl work of course; but I'd write it as
>
> foo_lock();
> if (!foo)
> foo = alloc();
> foo_unlock();
>
> bar = foo;
> bar->baz;
But my code has some assignment for "foo" instead of a simple
allocation, how about this way for my code:
DEFINE_MUTEX(fsl_elbc_mutex);
...
static int __devinit fsl_elbc_nand_probe(struct platform_device *dev)
{
...
mutex_lock(&fsl_lbc_mutex);
if (!fsl_lbc_ctrl_dev->nand) {
elbc_fcm_ctrl = kzalloc(sizeof(*elbc_fcm_ctrl), GFP_KERNEL);
if (!elbc_fcm_ctrl) {
dev_err(fsl_lbc_ctrl_dev->dev, "failed to allocate "
"memory\n");
ret = -ENOMEM;
goto err;
}
elbc_fcm_ctrl->read_bytes = 0;
elbc_fcm_ctrl->index = 0;
elbc_fcm_ctrl->addr = NULL;
spin_lock_init(&elbc_fcm_ctrl->controller.lock);
init_waitqueue_head(&elbc_fcm_ctrl->controller.wq);
fsl_lbc_ctrl_dev->nand = elbc_fcm_ctrl;
} else
elbc_fcm_ctrl = fsl_lbc_ctrl_dev->nand;
mutex_unlock(&fsl_lbc_mutex);
elbc_fcm_ctrl->chips[bank] = priv;
...
}
Any comment?
Thanks.
Roy
More information about the linux-mtd
mailing list