diff options
author | Ryan Hsu <ryanhsu@qca.qualcomm.com> | 2011-12-13 04:11:07 -0500 |
---|---|---|
committer | Kalle Valo <kvalo@qca.qualcomm.com> | 2011-12-14 12:29:52 -0500 |
commit | 39586bf272c77365a547867c8009bb92cc70b9f0 (patch) | |
tree | 6c029b41fd238cc5aa33741f090fe9bd852bf41e /drivers/net/wireless/ath | |
parent | 10509f903ebb7d2a02571f30cb937dd923b023cf (diff) |
ath6kl: Support different uart_tx pin and refclk configuration
AR6003 family use uart_tx=8 and refclk=26Mhz by default, and AR6004 family
uses different uart_tx pin and could also support various xtal source,
moves these per hw configuration.
Signed-off-by: Ryan Hsu <ryanhsu@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Diffstat (limited to 'drivers/net/wireless/ath')
-rw-r--r-- | drivers/net/wireless/ath/ath6kl/core.h | 2 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath6kl/init.c | 39 |
2 files changed, 32 insertions, 9 deletions
diff --git a/drivers/net/wireless/ath/ath6kl/core.h b/drivers/net/wireless/ath/ath6kl/core.h index 8bc1907f8ded..5f481c4dc55a 100644 --- a/drivers/net/wireless/ath/ath6kl/core.h +++ b/drivers/net/wireless/ath/ath6kl/core.h | |||
@@ -565,6 +565,8 @@ struct ath6kl { | |||
565 | u32 board_ext_data_addr; | 565 | u32 board_ext_data_addr; |
566 | u32 reserved_ram_size; | 566 | u32 reserved_ram_size; |
567 | u32 board_addr; | 567 | u32 board_addr; |
568 | u32 refclk_hz; | ||
569 | u32 uarttx_pin; | ||
568 | 570 | ||
569 | const char *fw_otp; | 571 | const char *fw_otp; |
570 | const char *fw; | 572 | const char *fw; |
diff --git a/drivers/net/wireless/ath/ath6kl/init.c b/drivers/net/wireless/ath/ath6kl/init.c index 040a79f6ee61..c614049d7b2e 100644 --- a/drivers/net/wireless/ath/ath6kl/init.c +++ b/drivers/net/wireless/ath/ath6kl/init.c | |||
@@ -41,6 +41,8 @@ static const struct ath6kl_hw hw_list[] = { | |||
41 | .app_load_addr = 0x543180, | 41 | .app_load_addr = 0x543180, |
42 | .board_ext_data_addr = 0x57e500, | 42 | .board_ext_data_addr = 0x57e500, |
43 | .reserved_ram_size = 6912, | 43 | .reserved_ram_size = 6912, |
44 | .refclk_hz = 26000000, | ||
45 | .uarttx_pin = 8, | ||
44 | 46 | ||
45 | /* hw2.0 needs override address hardcoded */ | 47 | /* hw2.0 needs override address hardcoded */ |
46 | .app_start_override_addr = 0x944C00, | 48 | .app_start_override_addr = 0x944C00, |
@@ -60,6 +62,8 @@ static const struct ath6kl_hw hw_list[] = { | |||
60 | .app_load_addr = 0x1234, | 62 | .app_load_addr = 0x1234, |
61 | .board_ext_data_addr = 0x542330, | 63 | .board_ext_data_addr = 0x542330, |
62 | .reserved_ram_size = 512, | 64 | .reserved_ram_size = 512, |
65 | .refclk_hz = 26000000, | ||
66 | .uarttx_pin = 8, | ||
63 | 67 | ||
64 | .fw_otp = AR6003_HW_2_1_1_OTP_FILE, | 68 | .fw_otp = AR6003_HW_2_1_1_OTP_FILE, |
65 | .fw = AR6003_HW_2_1_1_FIRMWARE_FILE, | 69 | .fw = AR6003_HW_2_1_1_FIRMWARE_FILE, |
@@ -77,6 +81,8 @@ static const struct ath6kl_hw hw_list[] = { | |||
77 | .board_ext_data_addr = 0x437000, | 81 | .board_ext_data_addr = 0x437000, |
78 | .reserved_ram_size = 19456, | 82 | .reserved_ram_size = 19456, |
79 | .board_addr = 0x433900, | 83 | .board_addr = 0x433900, |
84 | .refclk_hz = 26000000, | ||
85 | .uarttx_pin = 11, | ||
80 | 86 | ||
81 | .fw = AR6004_HW_1_0_FIRMWARE_FILE, | 87 | .fw = AR6004_HW_1_0_FIRMWARE_FILE, |
82 | .fw_api2 = AR6004_HW_1_0_FIRMWARE_2_FILE, | 88 | .fw_api2 = AR6004_HW_1_0_FIRMWARE_2_FILE, |
@@ -91,6 +97,8 @@ static const struct ath6kl_hw hw_list[] = { | |||
91 | .board_ext_data_addr = 0x437000, | 97 | .board_ext_data_addr = 0x437000, |
92 | .reserved_ram_size = 11264, | 98 | .reserved_ram_size = 11264, |
93 | .board_addr = 0x43d400, | 99 | .board_addr = 0x43d400, |
100 | .refclk_hz = 40000000, | ||
101 | .uarttx_pin = 11, | ||
94 | 102 | ||
95 | .fw = AR6004_HW_1_1_FIRMWARE_FILE, | 103 | .fw = AR6004_HW_1_1_FIRMWARE_FILE, |
96 | .fw_api2 = AR6004_HW_1_1_FIRMWARE_2_FILE, | 104 | .fw_api2 = AR6004_HW_1_1_FIRMWARE_2_FILE, |
@@ -124,7 +132,6 @@ static const struct ath6kl_hw hw_list[] = { | |||
124 | */ | 132 | */ |
125 | #define WLAN_CONFIG_DISCONNECT_TIMEOUT 10 | 133 | #define WLAN_CONFIG_DISCONNECT_TIMEOUT 10 |
126 | 134 | ||
127 | #define CONFIG_AR600x_DEBUG_UART_TX_PIN 8 | ||
128 | 135 | ||
129 | #define ATH6KL_DATA_OFFSET 64 | 136 | #define ATH6KL_DATA_OFFSET 64 |
130 | struct sk_buff *ath6kl_buf_alloc(int size) | 137 | struct sk_buff *ath6kl_buf_alloc(int size) |
@@ -443,7 +450,7 @@ int ath6kl_configure_target(struct ath6kl *ar) | |||
443 | { | 450 | { |
444 | u32 param, ram_reserved_size; | 451 | u32 param, ram_reserved_size; |
445 | u8 fw_iftype, fw_mode = 0, fw_submode = 0; | 452 | u8 fw_iftype, fw_mode = 0, fw_submode = 0; |
446 | int i; | 453 | int i, status; |
447 | 454 | ||
448 | /* | 455 | /* |
449 | * Note: Even though the firmware interface type is | 456 | * Note: Even though the firmware interface type is |
@@ -545,6 +552,24 @@ int ath6kl_configure_target(struct ath6kl *ar) | |||
545 | /* use default number of control buffers */ | 552 | /* use default number of control buffers */ |
546 | return -EIO; | 553 | return -EIO; |
547 | 554 | ||
555 | /* Configure GPIO AR600x UART */ | ||
556 | param = ar->hw.uarttx_pin; | ||
557 | status = ath6kl_bmi_write(ar, | ||
558 | ath6kl_get_hi_item_addr(ar, | ||
559 | HI_ITEM(hi_dbg_uart_txpin)), | ||
560 | (u8 *)¶m, 4); | ||
561 | if (status) | ||
562 | return status; | ||
563 | |||
564 | /* Configure target refclk_hz */ | ||
565 | param = ar->hw.refclk_hz; | ||
566 | status = ath6kl_bmi_write(ar, | ||
567 | ath6kl_get_hi_item_addr(ar, | ||
568 | HI_ITEM(hi_refclk_hz)), | ||
569 | (u8 *)¶m, 4); | ||
570 | if (status) | ||
571 | return status; | ||
572 | |||
548 | return 0; | 573 | return 0; |
549 | } | 574 | } |
550 | 575 | ||
@@ -1344,13 +1369,6 @@ static int ath6kl_init_upload(struct ath6kl *ar) | |||
1344 | if (status) | 1369 | if (status) |
1345 | return status; | 1370 | return status; |
1346 | 1371 | ||
1347 | /* Configure GPIO AR6003 UART */ | ||
1348 | param = CONFIG_AR600x_DEBUG_UART_TX_PIN; | ||
1349 | status = ath6kl_bmi_write(ar, | ||
1350 | ath6kl_get_hi_item_addr(ar, | ||
1351 | HI_ITEM(hi_dbg_uart_txpin)), | ||
1352 | (u8 *)¶m, 4); | ||
1353 | |||
1354 | return status; | 1372 | return status; |
1355 | } | 1373 | } |
1356 | 1374 | ||
@@ -1382,6 +1400,9 @@ static int ath6kl_init_hw_params(struct ath6kl *ar) | |||
1382 | "app_start_override_addr 0x%x board_ext_data_addr 0x%x reserved_ram_size 0x%x", | 1400 | "app_start_override_addr 0x%x board_ext_data_addr 0x%x reserved_ram_size 0x%x", |
1383 | ar->hw.app_start_override_addr, ar->hw.board_ext_data_addr, | 1401 | ar->hw.app_start_override_addr, ar->hw.board_ext_data_addr, |
1384 | ar->hw.reserved_ram_size); | 1402 | ar->hw.reserved_ram_size); |
1403 | ath6kl_dbg(ATH6KL_DBG_BOOT, | ||
1404 | "refclk_hz %d uarttx_pin %d", | ||
1405 | ar->hw.refclk_hz, ar->hw.uarttx_pin); | ||
1385 | 1406 | ||
1386 | return 0; | 1407 | return 0; |
1387 | } | 1408 | } |