This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
RE: Peculiar Register Write problem
- To: "'Lewin A.R.W. Edwards'" <larwe at larwe dot com>,"'eCos discussion'" <ecos-discuss at sources dot redhat dot com>
- Subject: RE: [ECOS] Peculiar Register Write problem
- From: "Trenton D. Adams" <tadams at extremeeng dot com>
- Date: Wed, 27 Jun 2001 09:32:06 -0600
- Organization: Extreme Engineering
> >This is the code for initializing the CL-PS6700 PCMCIA controller.
> >Everything from PCCIRR1 on does not happen. I've put this
> code inside
> >a
>
> [...]
>
> >If I put
> >in those 4 lines after a call to cf_init (), the registers do get set
>
> So we can infer that your init code as posted is not
> complete, and that it
> relies on some other register's state being intialized by
> cf_init(). Look
> at the source for cf_init() and see what registers it
> initializes. Cut and
> paste into your code until the registers become properly writable.
I already did that, cf_init () does nothing but call cf_hwr_init ()
which is my driver initialization function.
> Cirrus's other EDBs use GPIO pins to drive chip select
> signals on various
> hardware. Check in particular that you're setting up the data
> direction
> register for the GPIO pins correctly, I think this is a
> likely culprit for
> your problem. (Just copy the value eCos uses for the time
> being, once you
> develop your own board you could modify it where necessary.
> But whatever
> value eCos uses will be sensible - presumably <g> - for the
> Cirrus board).
What does this have to do with it not working? My code is the same
whether it's in or out of the driver. And as far as I can tell, nothing
occurs from the time I call cf_init () until it returns.