Re: working around a Marvell wifi SDIO bug

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Dec 8, 2010 at 1:13 PM, zhangfei gao <zhangfei.gao@xxxxxxxxx> wrote:
> Thanks for suggestion, do you mean
> Not use rfkill totally

If you want rfkill functionality, you can still provide it of course,
but don't give it direct access to the hardware.

You should provide rfkill functionality from within your wlan driver,
and then when ->set_block() is called, you probably want to take down
the wlan interface. Essentially pm_runtime_put_sync should be called,
which will tell SDIO core to power down the chip.

>, which already integrated into bluetooth,
> /net/bluetooth/hci_core.c

Yes, and take a look what it does there - it closes the device - and
doesn't fiddle with gpios directly.

> Instead, SDIO core introduce new regulator domain "gpio" for example
> corresponding to gpio handling,  like "vmcc" corresponding to real
> voltage control.
> SDIO core call regulator_get/regulator_enable/regulator_disalbe("gpio"),
> to pull up and pull down gpio?

You should make sure that mmc_power_off/mmc_power_up will do whatever
needed to power off/on your card.

These functions will call into your host controller (via mmc_set_ios)
and eventually that should trigger your regulator appropriately.

>
> For how to open/close wifi, we used to use rfkill block/unblock wifi,
> which in fact to pull up/down the reset and power pin.
> Then how to open/close wifi in this method, using suspend & resume?

To power on/off your card, your driver will just need to call the
pm_runtime_get/put_* API (see wl1271_sdio_set_power() for reference).

>
> Thanks
>
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux