= libertas = The libertas driver made its debut in the [[http://laptop.org/|OLPC XO]] laptop, where it drives a Marvell 88W8388 USB device. In addition to the USB front-end, the driver now includes support for Compact``Flash, SDIO, and GSPI interfaces. = supported chips = * Marvell 88W8385 CF/SDIO * Marvell 88W8388 USB * Marvell 88W8686 SDIO/GSPI = available devices = * Ambi``Com WL54CF (CF) * Spark``LAN WCFM-100 (CF) * Pretec CompactWLAN 802.11g CFEWGS * Quatech Airborne (SDIO) * Sy``Chip Murata LBWA18HEPZ (SDIO/GSPI) * prototype boards * OLPC laptop = working = * station (with limited roaming support) * ad-hoc * Mesh on USB devices (802.11s like) = related tools = * lbsdebug . Mainly interesting for developers, it allows to switch various debug messages on and of. * lbsfwcutter . Can extract a firmware out of a binary file. You can get the source of the tools via . {{{git clone git://git.infradead.org/users/schurig/libertas-tools.git tools}}} = device firmware = All devices need firmware, which can be found in the `libertas/` directory in the [[http://git.kernel.org/?p=linux/kernel/git/dwmw2/linux-firmware.git;a=shortlog|Linux firmware tree]]. * USB . The [[http://git.kernel.org/?p=linux/kernel/git/dwmw2/linux-firmware.git;a=shortlog|Linux firmware tree]] contains `libertas/usb8388_v5.bin` and `libertas/usb8388_v9.bin`. The firmware image must be placed in `/lib/firmware/usb8388.bin`. The firmware image can also be downloaded from [[http://dev.laptop.org/pub/firmware/libertas/|OLPC's libertas firmware page]]. * CF . Get the libertas-tools from above and change into the `fwcutter/` directory. Type `make`. The makefile will download a binary driver, extract the firmware out of it, checks it. Copy the two firmware files `libertas_helper.fw` and `libertas.fw` from the `fwcutter/` directory into the `/lib/firmware/` directory. * SDIO . Claud Yu got the driver working, using a firmware 8.73.7.p3 (downloaded from marvell.com). The 9.70.3.p18 firmware doesn't support the CMD_802_11_DATA_RATE command that the libertas driver currently needs. * GSPI . The GSPI firmware is available in the [[http://git.kernel.org/?p=linux/kernel/git/dwmw2/linux-firmware.git;a=shortlog|Linux firmware tree]]. Copy `libertas/gspi8686_v9_helper.bin` to `/lib/firmware/libertas/gspi8686_hlp.bin` and `libertas/gspi8686_v9.bin` to `/lib/firmware/libertas/gspi8686.bin`. = using the GSPI device = GSPI devices are intended to be used in embedded systems. They require an IRQ line (driven by the {{{WiFi}}} device) and that the SPI host controller is able to keep the Chip Select signal asserted through multiple bus accesses. Add the `libertas_spi` device to the SPI device tree in your arch/xxx/mach-xxx/boards/xxx.c -- that file should include `` and define `libertas_spi_platform_data`. The SPI `.bits_per_word` should be set to 16 and `.mode` left at the default (`SPI_MODE_0`). You must also configure a pin for the SPI device IRQ. The `.dummy_writes` option in `libertas_spi_platform_data` may be set to 1 (the host will clock out dummy bytes, recommended) or 0 (the host will use a fixed delay) -- use 0 if you are having trouble with 1 or if you are using a low SPI clock speed. `struct libertas_spi_platform_data` provides two (optional) function pointers that the driver will call before setting up or tearing down the network interface: {{{ int (*setup)(struct spi_device *spi); int (*teardown)(struct spi_device *spi); }}} You should provide suitable functions here if your embedded system needs to perform additional initialization or cleanup, such as configuring clocks or GPIO pins, for the wireless device. = mailing list = * [[http://lists.infradead.org/mailman/listinfo/libertas-dev|libertas-dev]] * [[http://vger.kernel.org/majordomo-info.html|linux-wireless]] = irc = . Some developers and users might be reachable in '''#libertas''' on '''*.freenode.net''', see http://freenode.net/irc_servers.shtml to find a IRC node near you. = additional web sources = * [[http://wiki.laptop.org/go/Marvell_Wireless_Module|OLPC Wireless module overview]] * [[http://wiki.laptop.org/images/f/f3/Firmware-Spec-v5.1-MV-S103752-00.pdf|Firmware specification]] and [[http://dev.laptop.org/ticket/2177|Errata]] * [[http://wiki.laptop.org/go/Libertas|list of chips and devices]] * [[http://wiki.laptop.org/go/Marvell_microkernel|used microkernel]] * [[http://wiki.laptop.org/go/88W8388|low-level info about the USB]]