Marvell 8385 datasheet
Dan Williams
dcbw at redhat.com
Tue Apr 6 16:43:08 EDT 2010
On Tue, 2010-04-06 at 18:45 +0200, Cyril HAENEL wrote:
>
> Cyril HAENEL a écrit :
> >
> > Cyril HAENEL a écrit :
> >> Hi,
> >>
> >> Anyone know where I can found the marvell 8385 chip datasheet ? I
> >> know it exists a command to enter the chip in standby mode, to have a
> >> very low current consumption.
> >> I want to modify the libertas driver to send this command to the chip
> >> during the driver unloading.
> >>
> >> The goal is to save power on my board. Actually I power off the
> >> pcmcia socket but on my board I have not implemented buffers between
> >> the bus and the wifi card, and not implemented the ability to
> >> physically cut the power line of the wifi card.
> >> Actually after I powered off the pcmcia socket (to properly unload
> >> the cs libertas driver), I force the wifi card reset line and it
> >> enters a relatively low consumption : 40mA.
> >>
> >> But now I want to do more and send the standby command during
> >> libertas driver unloading. Whis this command, I know that the wifi
> >> card should consume 5mA only...
> >>
> >> Regards,
> >> Cyril HAENEL
> >>
> >>
> > I answer to myself : I found again the file I was looking for....
> > It's the marvell firmware version 5.1 specification...
> > Full power down seem's to be activated by sending the
> > CMD_802_11_DEEP_SLEEP command (0x3E)
> > The firmware doesn't answer to this command, thus I think it can be
> > pretty easy to send this command juste before the drivers exits.
> >
> I answer to myself again :
>
> It works ! Now I send the CMD_802_11_DEEP_SLEEP command in the
> if_cs_detach() function (in if_cs.c).
> The current consumption fall below 5mA, really good !
The best thing to do here would be to implement the:
int (*enter_deep_sleep) (struct lbs_private *priv);
int (*exit_deep_sleep) (struct lbs_private *priv);
int (*reset_deep_sleep_wakeup) (struct lbs_private *priv);
handlers for if_cs.c. enter_deep_sleep() should be pretty much the same
for everything, but exit_deep_sleep and reset_deep_sleep_wakeup depend
on the bus type (in your case CF) and possibly the firmware as well.
Any idea how your device exits deep sleep? It's usually by writing to a
register on the device or by changing the state of some line going to
the device.
Dan
More information about the libertas-dev
mailing list