aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ti/wl18xx/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/ti/wl18xx/main.c')
-rw-r--r--drivers/net/wireless/ti/wl18xx/main.c32
1 files changed, 21 insertions, 11 deletions
diff --git a/drivers/net/wireless/ti/wl18xx/main.c b/drivers/net/wireless/ti/wl18xx/main.c
index d0daca1d23bc..ec37b16585df 100644
--- a/drivers/net/wireless/ti/wl18xx/main.c
+++ b/drivers/net/wireless/ti/wl18xx/main.c
@@ -456,11 +456,11 @@ static struct wlcore_conf wl18xx_conf = {
456 .always = 0, 456 .always = 0,
457 }, 457 },
458 .fwlog = { 458 .fwlog = {
459 .mode = WL12XX_FWLOG_ON_DEMAND, 459 .mode = WL12XX_FWLOG_CONTINUOUS,
460 .mem_blocks = 2, 460 .mem_blocks = 2,
461 .severity = 0, 461 .severity = 0,
462 .timestamp = WL12XX_FWLOG_TIMESTAMP_DISABLED, 462 .timestamp = WL12XX_FWLOG_TIMESTAMP_DISABLED,
463 .output = WL12XX_FWLOG_OUTPUT_HOST, 463 .output = WL12XX_FWLOG_OUTPUT_DBG_PINS,
464 .threshold = 0, 464 .threshold = 0,
465 }, 465 },
466 .rate = { 466 .rate = {
@@ -505,7 +505,7 @@ static struct wlcore_conf wl18xx_conf = {
505 505
506static struct wl18xx_priv_conf wl18xx_default_priv_conf = { 506static struct wl18xx_priv_conf wl18xx_default_priv_conf = {
507 .ht = { 507 .ht = {
508 .mode = HT_MODE_DEFAULT, 508 .mode = HT_MODE_WIDE,
509 }, 509 },
510 .phy = { 510 .phy = {
511 .phy_standalone = 0x00, 511 .phy_standalone = 0x00,
@@ -516,7 +516,7 @@ static struct wl18xx_priv_conf wl18xx_default_priv_conf = {
516 .auto_detect = 0x00, 516 .auto_detect = 0x00,
517 .dedicated_fem = FEM_NONE, 517 .dedicated_fem = FEM_NONE,
518 .low_band_component = COMPONENT_3_WAY_SWITCH, 518 .low_band_component = COMPONENT_3_WAY_SWITCH,
519 .low_band_component_type = 0x04, 519 .low_band_component_type = 0x05,
520 .high_band_component = COMPONENT_2_WAY_SWITCH, 520 .high_band_component = COMPONENT_2_WAY_SWITCH,
521 .high_band_component_type = 0x09, 521 .high_band_component_type = 0x09,
522 .tcxo_ldo_voltage = 0x00, 522 .tcxo_ldo_voltage = 0x00,
@@ -556,15 +556,15 @@ static struct wl18xx_priv_conf wl18xx_default_priv_conf = {
556 .per_chan_pwr_limit_arr_11p = { 0xff, 0xff, 0xff, 0xff, 556 .per_chan_pwr_limit_arr_11p = { 0xff, 0xff, 0xff, 0xff,
557 0xff, 0xff, 0xff }, 557 0xff, 0xff, 0xff },
558 .psat = 0, 558 .psat = 0,
559 .low_power_val = 0x08,
560 .med_power_val = 0x12,
561 .high_power_val = 0x18,
562 .low_power_val_2nd = 0x05,
563 .med_power_val_2nd = 0x0a,
564 .high_power_val_2nd = 0x14,
565 .external_pa_dc2dc = 0, 559 .external_pa_dc2dc = 0,
566 .number_of_assembled_ant2_4 = 2, 560 .number_of_assembled_ant2_4 = 2,
567 .number_of_assembled_ant5 = 1, 561 .number_of_assembled_ant5 = 1,
562 .low_power_val = 0xff,
563 .med_power_val = 0xff,
564 .high_power_val = 0xff,
565 .low_power_val_2nd = 0xff,
566 .med_power_val_2nd = 0xff,
567 .high_power_val_2nd = 0xff,
568 .tx_rf_margin = 1, 568 .tx_rf_margin = 1,
569 }, 569 },
570}; 570};
@@ -686,6 +686,9 @@ static int wl18xx_identify_chip(struct wl1271 *wl)
686 goto out; 686 goto out;
687 } 687 }
688 688
689 wl->fw_mem_block_size = 272;
690 wl->fwlog_end = 0x40000000;
691
689 wl->scan_templ_id_2_4 = CMD_TEMPL_CFG_PROBE_REQ_2_4; 692 wl->scan_templ_id_2_4 = CMD_TEMPL_CFG_PROBE_REQ_2_4;
690 wl->scan_templ_id_5 = CMD_TEMPL_CFG_PROBE_REQ_5; 693 wl->scan_templ_id_5 = CMD_TEMPL_CFG_PROBE_REQ_5;
691 wl->sched_scan_templ_id_2_4 = CMD_TEMPL_PROBE_REQ_2_4_PERIODIC; 694 wl->sched_scan_templ_id_2_4 = CMD_TEMPL_PROBE_REQ_2_4_PERIODIC;
@@ -988,10 +991,11 @@ static int wl18xx_boot(struct wl1271 *wl)
988 BA_SESSION_RX_CONSTRAINT_EVENT_ID | 991 BA_SESSION_RX_CONSTRAINT_EVENT_ID |
989 REMAIN_ON_CHANNEL_COMPLETE_EVENT_ID | 992 REMAIN_ON_CHANNEL_COMPLETE_EVENT_ID |
990 INACTIVE_STA_EVENT_ID | 993 INACTIVE_STA_EVENT_ID |
991 MAX_TX_FAILURE_EVENT_ID |
992 CHANNEL_SWITCH_COMPLETE_EVENT_ID | 994 CHANNEL_SWITCH_COMPLETE_EVENT_ID |
993 DFS_CHANNELS_CONFIG_COMPLETE_EVENT; 995 DFS_CHANNELS_CONFIG_COMPLETE_EVENT;
994 996
997 wl->ap_event_mask = MAX_TX_FAILURE_EVENT_ID;
998
995 ret = wlcore_boot_run_firmware(wl); 999 ret = wlcore_boot_run_firmware(wl);
996 if (ret < 0) 1000 if (ret < 0)
997 goto out; 1001 goto out;
@@ -1604,6 +1608,11 @@ static bool wl18xx_lnk_low_prio(struct wl1271 *wl, u8 hlid,
1604 return lnk->allocated_pkts < thold; 1608 return lnk->allocated_pkts < thold;
1605} 1609}
1606 1610
1611static u32 wl18xx_convert_hwaddr(struct wl1271 *wl, u32 hwaddr)
1612{
1613 return hwaddr & ~0x80000000;
1614}
1615
1607static int wl18xx_setup(struct wl1271 *wl); 1616static int wl18xx_setup(struct wl1271 *wl);
1608 1617
1609static struct wlcore_ops wl18xx_ops = { 1618static struct wlcore_ops wl18xx_ops = {
@@ -1641,6 +1650,7 @@ static struct wlcore_ops wl18xx_ops = {
1641 .pre_pkt_send = wl18xx_pre_pkt_send, 1650 .pre_pkt_send = wl18xx_pre_pkt_send,
1642 .sta_rc_update = wl18xx_sta_rc_update, 1651 .sta_rc_update = wl18xx_sta_rc_update,
1643 .set_peer_cap = wl18xx_set_peer_cap, 1652 .set_peer_cap = wl18xx_set_peer_cap,
1653 .convert_hwaddr = wl18xx_convert_hwaddr,
1644 .lnk_high_prio = wl18xx_lnk_high_prio, 1654 .lnk_high_prio = wl18xx_lnk_high_prio,
1645 .lnk_low_prio = wl18xx_lnk_low_prio, 1655 .lnk_low_prio = wl18xx_lnk_low_prio,
1646}; 1656};