uap8xxx: Import uAP support for Marvell sd8686 chips

Patch imported from:
https://github.com/chrisw957/meta-gumstix/blob/d0dbc51e1643860f9066c5e817db023fb062362c/recipes-kernel/linux/linux-sakoman-3.5/libertas_uap.patch
uap8xxx: General code cleanup

Indentation and style:
- Make uses always tabs.
- Ensure that code looks nice with 8-spaces per tab.
- Removed extra uneeded spaces around "*" for pointers.

Other:
- Removed dead code marked with "#if 0 ... #endif"
uap8xxx: Update driver to new procfs API

Update the usage of the procfs API done by the driver.
uap8xxx: Remove support for old kernels

The driver is to be maintained in-sync with the kernel sources, so there is
no use in keeping the #ifdef'd branches for different kernel versions.
uap8xxx: Clean up code style and comments
uap8xxx: Set names for firmware files as fixed

Define default names of firmware files (mrvl/sd8688_helper.bin and
mrvl/sd8688_ap.bin) and declare them with MODULE_FIRMWARE(). Also,
remove the fw_name and helper_name module parameters. There is
only one set of firmware known to work with the driver, so it is
of little use to keep them around.
uap8xxx: Remove macros for GCC attribute usage

In the kernel source the norm is to use the __attribute__(...) syntax,
so make the driver use it instead of defining auxiliar macros.
uap8xxx: Use functions directly instead of macros

The norm in the kernel source is to use kernel functions and avoid
macros which do not add a significative amount of code simplification.
Moreover, using standard kernel symbol names allows to better keep up
with changes in code out of the driver.
uap8xxx: Inline sparsely used functions

Some small functions are used only a small number of times, so the code is
actually clearer when those are expanded in-line in their call sites.
uap8xxx: Use debugfs instead of file in procfs

Exposes debugfs entries for the data previously available at
"/proc/<interface>/debug", under "<debugfs>/uap8xxx/<interface>/".
As a bonus, multiple interfaces are properly handled; the old code
only worked okay for one interface due to the poor use of the
table describing the debug entries.
uap8xxx: Remove redefinition of the BIT() macro

The BIT() macro is defined by the kernel headers, there is no need to have
it repeated in the driver.
uap8xxx: Support u64 and decimes entries in debugfs

The table describing the debugfs entries can now specify whether an items is
to be shown as hex or decimal, and u64 values are supported.
uap8xxx: Clean up device identifiers table

- Use the SDIO_DEVICE_ID_MARVELL_LIBERTAS defined by the kernel headers,
	removing the local definition.
- Add the SDIO_DEVICE_ID_MARVELL_8688WLAN device. At least the SD8688
	present in the Dreamplug revision with model number 003-DS2001 is known
	to report this identifier.
- Use a name for the table more coherent with what the rest of the drivers
	in the kernel do.
uap8xxx: Clean uap_sdio.c, use sdio_(read|write)b

Cleans up uap_sdio.c, renaming it to if_sdio.c (to follow the same
convention as other drivers, e.g. libertas), fix some symbol names,
enable the skeleton if_sdio_suspend/if_sdio_resume functions, and
use sdio_readb()/sdio_writeb() to access the I/O registers instead
of ad-hoc functions.
uap8xxx: Use if_sdio_read_scratch() for FW status

Remove the sd_read_firmware_status() function, and read firmware
status by using if_sdio_read_scratch(). The former is used only
once, and it was a thin wrapper around the later, so there is no
point in keeping it.
uap8xxx: Use make_{gid,uid} instead of integers

When assigning kgid_t and kuid_t values, use make_kgid() and make_uid(),
which take into account user namespaces, instead of just assigning the
UID/GID values.

Signed-off-by: Adrian Perez de Castro <aperez@igalia.com>
libertas: Select WEXT_PRIV for inclusion
give Sandisk/Kingston SDHC cards some slack before the SWITCH command

[MMC] give Sandisk/Kingston SDHC cards some slack before the SWITCH command

Without this delay, those cards simply won't work in high speed mode
as the SWITCH command does not succeeds.

Signed-off-by: Nicolas Pitre <nico@marvell.com>
Tested-by: Martin Michlmayr <tbm@cyrius.com>
mvsdio: Voodoo patch
mmc_core: Bigger timeout, needed by some SDIO cards