wl18xx: add new module

Add the wl18xx module and the probe functions.  Use wlcore for the
main parts (not functional at this point due to differences in the
wl18xx initialization).

Signed-off-by: Luciano Coelho <coelho@ti.com>
wlcore_sdio/wl18xx: use SDIO revision number to identify wl18xx chips

At least in PG1, the wl18xx chips use the same SDIO vendor/device ID,
so it's not possible to figure out which driver is to be used.  As a
workaround, we can check the SDIO revision number, because wl18xx uses
3.00 and wl12xx does not.

Signed-off-by: Luciano Coelho <coelho@ti.com>
wl18xx: add empty operations struct

We don't have any chip-specific operations yet, but now wlcore has
defined an operations structure and requires the pointer to be set.

Signed-off-by: Luciano Coelho <coelho@ti.com>
wl18xx: add partition table

Define and add the partition table in the wlcore struct.

Signed-off-by: Luciano Coelho <coelho@ti.com>
wl18xx: add register table

Add the register table with the appropriate values for wl18xx.

Signed-off-by: Luciano Coelho <coelho@ti.com>
wl18xx: add identify chip operation

Add identify_chip operation to detect the chip ID for wl185x and set
the correct firmware name.

Signed-off-by: Luciano Coelho <coelho@ti.com>
wl18xx: add some boot operations and hw-specific configurations

Implement the boot operation.  Add a wl18xx-specific configuration
structure (namely to configure the mac and phy parameters).

The default hw configuration matches the DVP board.

Signed-off-by: Luciano Coelho <coelho@ti.com>
wl18xx: add trigger command and ack event operations

Add the operations that allow wlcore to trigger commands to the
firmware and acknowledge when an event has been fully received.

Allocate a private buffer to hold the maximum sized cmd. Send the
entire length of the buffer each time a command is sent to signal
EOT. Remove the previous EOT mechanism.

Signed-off-by: Luciano Coelho <coelho@ti.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
wl18xx: create per-chip-family private storage

Make use of the wlcore provided private storage in the 18xx low-level
driver.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
wl18xx: set the number of Tx descriptors

Initialize the number of Tx-descriptors for the 18xx family.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
wl18xx: set normal/GEM Tx spare block counts

Initialize the Tx spare block counts for all operating modes in the 18xx
card.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
wl18xx: implement hw op for calculating hw block count per packet

Implement the calc_tx_blocks op for the 18xx family.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
wl18xx: implement hw op for setting blocks in hw_tx_desc

Add the 18xx variant to the HW Tx descriptor union and set the 18xx
specific values during Tx.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
wl18xx: implement hw op for setting frame length in tx_hw_desc

Set the frame length during Tx in a way compatible with the 18xx FW.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
wl18xx: define HW-rate translation elements/tables

Define HW-rate conversion tables for the 18xx chip. Initialize
the appropriate wlcore elements with these tables and values to allow
conversion of HW-rates.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
wl18xx: add fw_status private data

The wl18xx chip passes extra information in the firmware status to the
driver.  Add a private data section to handle that.

Signed-off-by: Luciano Coelho <coelho@ti.com>
wl18xx: set Rx block-size alignment quirk

The 18xx FW sends Rx blocks with aligned length.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
wl18xx: implement hw op for getting rx buffer data alignment

Implement the HW op for getting alignment state in wl18xx. The FW aligns
the Rx Ethernet payload data.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
wl18xx: implement hw op for getting rx packet data length

Implement the 18xx-specific way for getting the length of a Rx packet.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
wl18xx: implement immediate Tx completion

Implement immediate Tx completion for the 18xx family. Move 18xx
specific Tx code to new tx.c/h files and create helper header files
for definitions.

Signed-off-by: Arik Nemtsov <arik@wizery.com>