|
@@ -39,6 +39,96 @@
|
|
|
#define WL12XX_TX_HW_BLOCK_GEM_SPARE 2
|
|
|
#define WL12XX_TX_HW_BLOCK_SIZE 252
|
|
|
|
|
|
+static const u8 wl12xx_rate_to_idx_2ghz[] = {
|
|
|
+ /* MCS rates are used only with 11n */
|
|
|
+ 7, /* WL12XX_CONF_HW_RXTX_RATE_MCS7_SGI */
|
|
|
+ 7, /* WL12XX_CONF_HW_RXTX_RATE_MCS7 */
|
|
|
+ 6, /* WL12XX_CONF_HW_RXTX_RATE_MCS6 */
|
|
|
+ 5, /* WL12XX_CONF_HW_RXTX_RATE_MCS5 */
|
|
|
+ 4, /* WL12XX_CONF_HW_RXTX_RATE_MCS4 */
|
|
|
+ 3, /* WL12XX_CONF_HW_RXTX_RATE_MCS3 */
|
|
|
+ 2, /* WL12XX_CONF_HW_RXTX_RATE_MCS2 */
|
|
|
+ 1, /* WL12XX_CONF_HW_RXTX_RATE_MCS1 */
|
|
|
+ 0, /* WL12XX_CONF_HW_RXTX_RATE_MCS0 */
|
|
|
+
|
|
|
+ 11, /* WL12XX_CONF_HW_RXTX_RATE_54 */
|
|
|
+ 10, /* WL12XX_CONF_HW_RXTX_RATE_48 */
|
|
|
+ 9, /* WL12XX_CONF_HW_RXTX_RATE_36 */
|
|
|
+ 8, /* WL12XX_CONF_HW_RXTX_RATE_24 */
|
|
|
+
|
|
|
+ /* TI-specific rate */
|
|
|
+ CONF_HW_RXTX_RATE_UNSUPPORTED, /* WL12XX_CONF_HW_RXTX_RATE_22 */
|
|
|
+
|
|
|
+ 7, /* WL12XX_CONF_HW_RXTX_RATE_18 */
|
|
|
+ 6, /* WL12XX_CONF_HW_RXTX_RATE_12 */
|
|
|
+ 3, /* WL12XX_CONF_HW_RXTX_RATE_11 */
|
|
|
+ 5, /* WL12XX_CONF_HW_RXTX_RATE_9 */
|
|
|
+ 4, /* WL12XX_CONF_HW_RXTX_RATE_6 */
|
|
|
+ 2, /* WL12XX_CONF_HW_RXTX_RATE_5_5 */
|
|
|
+ 1, /* WL12XX_CONF_HW_RXTX_RATE_2 */
|
|
|
+ 0 /* WL12XX_CONF_HW_RXTX_RATE_1 */
|
|
|
+};
|
|
|
+
|
|
|
+static const u8 wl12xx_rate_to_idx_5ghz[] = {
|
|
|
+ /* MCS rates are used only with 11n */
|
|
|
+ 7, /* WL12XX_CONF_HW_RXTX_RATE_MCS7_SGI */
|
|
|
+ 7, /* WL12XX_CONF_HW_RXTX_RATE_MCS7 */
|
|
|
+ 6, /* WL12XX_CONF_HW_RXTX_RATE_MCS6 */
|
|
|
+ 5, /* WL12XX_CONF_HW_RXTX_RATE_MCS5 */
|
|
|
+ 4, /* WL12XX_CONF_HW_RXTX_RATE_MCS4 */
|
|
|
+ 3, /* WL12XX_CONF_HW_RXTX_RATE_MCS3 */
|
|
|
+ 2, /* WL12XX_CONF_HW_RXTX_RATE_MCS2 */
|
|
|
+ 1, /* WL12XX_CONF_HW_RXTX_RATE_MCS1 */
|
|
|
+ 0, /* WL12XX_CONF_HW_RXTX_RATE_MCS0 */
|
|
|
+
|
|
|
+ 7, /* WL12XX_CONF_HW_RXTX_RATE_54 */
|
|
|
+ 6, /* WL12XX_CONF_HW_RXTX_RATE_48 */
|
|
|
+ 5, /* WL12XX_CONF_HW_RXTX_RATE_36 */
|
|
|
+ 4, /* WL12XX_CONF_HW_RXTX_RATE_24 */
|
|
|
+
|
|
|
+ /* TI-specific rate */
|
|
|
+ CONF_HW_RXTX_RATE_UNSUPPORTED, /* WL12XX_CONF_HW_RXTX_RATE_22 */
|
|
|
+
|
|
|
+ 3, /* WL12XX_CONF_HW_RXTX_RATE_18 */
|
|
|
+ 2, /* WL12XX_CONF_HW_RXTX_RATE_12 */
|
|
|
+ CONF_HW_RXTX_RATE_UNSUPPORTED, /* WL12XX_CONF_HW_RXTX_RATE_11 */
|
|
|
+ 1, /* WL12XX_CONF_HW_RXTX_RATE_9 */
|
|
|
+ 0, /* WL12XX_CONF_HW_RXTX_RATE_6 */
|
|
|
+ CONF_HW_RXTX_RATE_UNSUPPORTED, /* WL12XX_CONF_HW_RXTX_RATE_5_5 */
|
|
|
+ CONF_HW_RXTX_RATE_UNSUPPORTED, /* WL12XX_CONF_HW_RXTX_RATE_2 */
|
|
|
+ CONF_HW_RXTX_RATE_UNSUPPORTED /* WL12XX_CONF_HW_RXTX_RATE_1 */
|
|
|
+};
|
|
|
+
|
|
|
+static const u8 *wl12xx_band_rate_to_idx[] = {
|
|
|
+ [IEEE80211_BAND_2GHZ] = wl12xx_rate_to_idx_2ghz,
|
|
|
+ [IEEE80211_BAND_5GHZ] = wl12xx_rate_to_idx_5ghz
|
|
|
+};
|
|
|
+
|
|
|
+enum wl12xx_hw_rates {
|
|
|
+ WL12XX_CONF_HW_RXTX_RATE_MCS7_SGI = 0,
|
|
|
+ WL12XX_CONF_HW_RXTX_RATE_MCS7,
|
|
|
+ WL12XX_CONF_HW_RXTX_RATE_MCS6,
|
|
|
+ WL12XX_CONF_HW_RXTX_RATE_MCS5,
|
|
|
+ WL12XX_CONF_HW_RXTX_RATE_MCS4,
|
|
|
+ WL12XX_CONF_HW_RXTX_RATE_MCS3,
|
|
|
+ WL12XX_CONF_HW_RXTX_RATE_MCS2,
|
|
|
+ WL12XX_CONF_HW_RXTX_RATE_MCS1,
|
|
|
+ WL12XX_CONF_HW_RXTX_RATE_MCS0,
|
|
|
+ WL12XX_CONF_HW_RXTX_RATE_54,
|
|
|
+ WL12XX_CONF_HW_RXTX_RATE_48,
|
|
|
+ WL12XX_CONF_HW_RXTX_RATE_36,
|
|
|
+ WL12XX_CONF_HW_RXTX_RATE_24,
|
|
|
+ WL12XX_CONF_HW_RXTX_RATE_22,
|
|
|
+ WL12XX_CONF_HW_RXTX_RATE_18,
|
|
|
+ WL12XX_CONF_HW_RXTX_RATE_12,
|
|
|
+ WL12XX_CONF_HW_RXTX_RATE_11,
|
|
|
+ WL12XX_CONF_HW_RXTX_RATE_9,
|
|
|
+ WL12XX_CONF_HW_RXTX_RATE_6,
|
|
|
+ WL12XX_CONF_HW_RXTX_RATE_5_5,
|
|
|
+ WL12XX_CONF_HW_RXTX_RATE_2,
|
|
|
+ WL12XX_CONF_HW_RXTX_RATE_1,
|
|
|
+ WL12XX_CONF_HW_RXTX_RATE_MAX,
|
|
|
+};
|
|
|
|
|
|
static struct wlcore_partition_set wl12xx_ptable[PART_TABLE_LEN] = {
|
|
|
[PART_DOWN] = {
|
|
@@ -741,6 +831,9 @@ static int __devinit wl12xx_probe(struct platform_device *pdev)
|
|
|
wl->num_tx_desc = 16;
|
|
|
wl->normal_tx_spare = WL12XX_TX_HW_BLOCK_SPARE_DEFAULT;
|
|
|
wl->gem_tx_spare = WL12XX_TX_HW_BLOCK_GEM_SPARE;
|
|
|
+ wl->band_rate_to_idx = wl12xx_band_rate_to_idx;
|
|
|
+ wl->hw_tx_rate_tbl_size = WL12XX_CONF_HW_RXTX_RATE_MAX;
|
|
|
+ wl->hw_min_ht_rate = WL12XX_CONF_HW_RXTX_RATE_MCS0;
|
|
|
|
|
|
return wlcore_probe(wl, pdev);
|
|
|
}
|