linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* something gets odd when I set the mtd.dev.parent
@ 2010-03-02  2:20 Peter Pan
  2010-03-02  3:18 ` Peter Pan
  0 siblings, 1 reply; 2+ messages in thread
From: Peter Pan @ 2010-03-02  2:20 UTC (permalink / raw)
  To: Scott Wood; +Cc: linuxppc-dev

2010/2/27 Peter Pan <pppeterpppan@gmail.com>:
> 2010/2/27 Scott Wood <scottwood@freescale.com>:
>> On Fri, Feb 26, 2010 at 10:08:09AM +0800, Peter Pan wrote:
>> There isn't one. =A0I was not under the impression that such a configura=
tion
>> was even possible (how do you control ALE/CLE, for example?). =A0There i=
s a
>> NAND driver that uses UPM, though -- perhaps you could use that?
>>
>> How specifically is NAND connected to the SoC on your board? =A0What abo=
ut it
>> suggests GPCM?
>>
>> -Scott
>>

We use Address A20 and A21 connect to ALE and CLE, the data bus is
connected through a buffer.
The RE is OE AND with CS. the WE is PBS0 AND with CS. CE pin is
connect to ground. It works
fine in VxWorks. And also in our previous Linux version 2.6.22.

Now, I get a odd problem. My GPCM Nand flash driver is mostly copied
from fsl_upm.c. In the fun_probe
function, I have printed out the of_device pointer status as follows:
ofdev=3D 0xcf851ca0
ofdev->dev=3D 0xcf851cb0
ofdev->dev.class=3D 0xcf851d50

Then I set the &ofdev->dev to mtd.dev.parent using
fun->mtd.dev.parent =3D &ofdev->dev;

Then I print out the values:
fun->mtd.dev.parent=3D 0xcf851cb0
fun->mtd.dev.parent->class=3D 0x0

The parent pointer is identical, but the class member is NULL, which
makes the access of NULL pointer oops
later.

I'm wondering why this could happen. The pointer points at the same
address, shouldn't all the members be the
same?

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: something gets odd when I set the mtd.dev.parent
  2010-03-02  2:20 something gets odd when I set the mtd.dev.parent Peter Pan
@ 2010-03-02  3:18 ` Peter Pan
  0 siblings, 0 replies; 2+ messages in thread
From: Peter Pan @ 2010-03-02  3:18 UTC (permalink / raw)
  To: Scott Wood; +Cc: linuxppc-dev

Problem solved. The NULL oops is due to the mtd->dev.class->p is NULL,
which makes the spin_lock in "get_device_parent" function uses a false
spin_lock_t struct.
the line is "spin_lock(&dev->class->p->class_dirs.list_lock);"
That is mainly because in function add_mtd_device function uses the
static struct mtd_class to fill into mtd->dev.class. The static struct
is not initialized because I drop the driver in our custom dirctory,
which is in /arch/powerpc/platforms/..., not in the /drivers/mtd/nand
directory, after I put the file there and modifies the Makefile,
everything works fine.

2010/3/2 Peter Pan <pppeterpppan@gmail.com>:
>
> We use Address A20 and A21 connect to ALE and CLE, the data bus is
> connected through a buffer.
> The RE is OE AND with CS. the WE is PBS0 AND with CS. CE pin is
> connect to ground. It works
> fine in VxWorks. And also in our previous Linux version 2.6.22.
>
> Now, I get a odd problem. My GPCM Nand flash driver is mostly copied
> from fsl_upm.c. In the fun_probe
> function, I have printed out the of_device pointer status as follows:
> ofdev= 0xcf851ca0
> ofdev->dev= 0xcf851cb0
> ofdev->dev.class= 0xcf851d50
>
> Then I set the &ofdev->dev to mtd.dev.parent using
> fun->mtd.dev.parent = &ofdev->dev;
>
> Then I print out the values:
> fun->mtd.dev.parent= 0xcf851cb0
> fun->mtd.dev.parent->class= 0x0
>
> The parent pointer is identical, but the class member is NULL, which
> makes the access of NULL pointer oops
> later.
>
> I'm wondering why this could happen. The pointer points at the same
> address, shouldn't all the members be the
> same?
>

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2010-03-02  3:18 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-03-02  2:20 something gets odd when I set the mtd.dev.parent Peter Pan
2010-03-02  3:18 ` Peter Pan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).