From: Erik Stromdahl <[email protected]>
Add hardware parameters for QCA9377 sdio devices, it's now properly supported.
Signed-off-by: Erik Stromdahl <[email protected]>
Signed-off-by: Kalle Valo <[email protected]>
---
I don't have any working QCA9377 SDIO hardware so I would appreciate any
test reports. This should apply cleanly to ath.git master branch (at least to
tag ath-201909230832):
https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git/log/?h=master
drivers/net/wireless/ath/ath10k/core.c | 27 +++++++++++++++++++++++++++
drivers/net/wireless/ath/ath10k/hw.h | 3 +++
2 files changed, 30 insertions(+)
diff --git a/drivers/net/wireless/ath/ath10k/core.c b/drivers/net/wireless/ath/ath10k/core.c
index 36c62d66c19e..e5572d4b6ae9 100644
--- a/drivers/net/wireless/ath/ath10k/core.c
+++ b/drivers/net/wireless/ath/ath10k/core.c
@@ -539,6 +539,33 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
.tx_stats_over_pktlog = false,
},
{
+ .id = QCA9377_HW_1_1_DEV_VERSION,
+ .dev_id = QCA9377_1_0_DEVICE_ID,
+ .bus = ATH10K_BUS_SDIO,
+ .name = "qca9377 hw1.1 sdio",
+ .patch_load_addr = QCA9377_HW_1_0_PATCH_LOAD_ADDR,
+ .uart_pin = 19,
+ .otp_exe_param = 0,
+ .channel_counters_freq_hz = 88000,
+ .max_probe_resp_desc_thres = 0,
+ .cal_data_len = 8124,
+ .fw = {
+ .dir = QCA9377_HW_1_0_FW_DIR,
+ .board = QCA9377_HW_1_0_BOARD_DATA_FILE,
+ .board_size = QCA9377_BOARD_DATA_SZ,
+ .board_ext_size = QCA9377_BOARD_EXT_DATA_SZ,
+ },
+ .hw_ops = &qca6174_ops,
+ .hw_clk = qca6174_clk,
+ .target_cpu_freq = 176000000,
+ .decap_align_bytes = 4,
+ .n_cipher_suites = 8,
+ .num_peers = TARGET_QCA9377_HL_NUM_PEERS,
+ .ast_skid_limit = 0x10,
+ .num_wds_entries = 0x20,
+ .uart_pin_workaround = true,
+ },
+ {
.id = QCA4019_HW_1_0_DEV_VERSION,
.dev_id = 0,
.bus = ATH10K_BUS_AHB,
diff --git a/drivers/net/wireless/ath/ath10k/hw.h b/drivers/net/wireless/ath/ath10k/hw.h
index 2ae57c1de7b5..ddb1d23ec6de 100644
--- a/drivers/net/wireless/ath/ath10k/hw.h
+++ b/drivers/net/wireless/ath/ath10k/hw.h
@@ -768,6 +768,9 @@ ath10k_is_rssi_enable(struct ath10k_hw_params *hw,
#define TARGET_HL_TLV_AST_SKID_LIMIT 16
#define TARGET_HL_TLV_NUM_WDS_ENTRIES 2
+/* Target specific defines for QCA9377 high latency firmware */
+#define TARGET_QCA9377_HL_NUM_PEERS 15
+
/* Diagnostic Window */
#define CE_DIAG_PIPE 7
--
2.7.4
> On 26 Sep 2019, at 6:24 pm, Kalle Valo <[email protected]> wrote:
>
> From: Erik Stromdahl <[email protected]>
>
> Add hardware parameters for QCA9377 sdio devices, it's now properly supported.
>
> Signed-off-by: Erik Stromdahl <[email protected]>
> Signed-off-by: Kalle Valo <[email protected]>
> ---
>
> I don't have any working QCA9377 SDIO hardware so I would appreciate any
> test reports. This should apply cleanly to ath.git master branch (at least to
> tag ath-201909230832):
>
> https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git/log/?h=master
>
> drivers/net/wireless/ath/ath10k/core.c | 27 +++++++++++++++++++++++++++
> drivers/net/wireless/ath/ath10k/hw.h | 3 +++
> 2 files changed, 30 insertions(+)
>
> diff --git a/drivers/net/wireless/ath/ath10k/core.c b/drivers/net/wireless/ath/ath10k/core.c
> index 36c62d66c19e..e5572d4b6ae9 100644
> --- a/drivers/net/wireless/ath/ath10k/core.c
> +++ b/drivers/net/wireless/ath/ath10k/core.c
> @@ -539,6 +539,33 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
> .tx_stats_over_pktlog = false,
> },
> {
> + .id = QCA9377_HW_1_1_DEV_VERSION,
> + .dev_id = QCA9377_1_0_DEVICE_ID,
> + .bus = ATH10K_BUS_SDIO,
> + .name = "qca9377 hw1.1 sdio",
> + .patch_load_addr = QCA9377_HW_1_0_PATCH_LOAD_ADDR,
> + .uart_pin = 19,
> + .otp_exe_param = 0,
> + .channel_counters_freq_hz = 88000,
> + .max_probe_resp_desc_thres = 0,
> + .cal_data_len = 8124,
> + .fw = {
> + .dir = QCA9377_HW_1_0_FW_DIR,
> + .board = QCA9377_HW_1_0_BOARD_DATA_FILE,
> + .board_size = QCA9377_BOARD_DATA_SZ,
> + .board_ext_size = QCA9377_BOARD_EXT_DATA_SZ,
> + },
> + .hw_ops = &qca6174_ops,
> + .hw_clk = qca6174_clk,
> + .target_cpu_freq = 176000000,
> + .decap_align_bytes = 4,
> + .n_cipher_suites = 8,
> + .num_peers = TARGET_QCA9377_HL_NUM_PEERS,
> + .ast_skid_limit = 0x10,
> + .num_wds_entries = 0x20,
> + .uart_pin_workaround = true,
> + },
> + {
> .id = QCA4019_HW_1_0_DEV_VERSION,
> .dev_id = 0,
> .bus = ATH10K_BUS_AHB,
> diff --git a/drivers/net/wireless/ath/ath10k/hw.h b/drivers/net/wireless/ath/ath10k/hw.h
> index 2ae57c1de7b5..ddb1d23ec6de 100644
> --- a/drivers/net/wireless/ath/ath10k/hw.h
> +++ b/drivers/net/wireless/ath/ath10k/hw.h
> @@ -768,6 +768,9 @@ ath10k_is_rssi_enable(struct ath10k_hw_params *hw,
> #define TARGET_HL_TLV_AST_SKID_LIMIT 16
> #define TARGET_HL_TLV_NUM_WDS_ENTRIES 2
>
> +/* Target specific defines for QCA9377 high latency firmware */
> +#define TARGET_QCA9377_HL_NUM_PEERS 15
> +
> /* Diagnostic Window */
> #define CE_DIAG_PIPE 7
>
Tested and working fine using Linux 5.6-rc3 and SDIO firmware from [1].
[ 5.391369] ath10k_sdio mmc2:0001:1: qca9377 hw1.1 sdio target 0x05020001 chip_id 0x00000000 sub 0000:0000
[ 5.391379] ath10k_sdio mmc2:0001:1: kconfig debug 0 debugfs 0 tracing 0 dfs 0 testmode 0
[ 5.391632] ath10k_sdio mmc2:0001:1: firmware ver WLAN.TF.1.1.1-00061-QCATFSWPZ-1 api 5 features ignore-otp crc32 7746e551
[ 5.624198] ath10k_sdio mmc2:0001:1: failed to fetch board data for bus=sdio,vendor=0271,device=0701,subsystem-vendor=0000,subsystem-device=0000 from ath10k/QCA9377/hw1.0/board-2.bin
[ 5.624473] ath10k_sdio mmc2:0001:1: board_file api 1 bmi_id N/A crc32 544289f7
[ 6.775882] ath10k_sdio mmc2:0001:1: htt-ver 3.32 wmi-op 4 htt-op 3 cal otp max-sta 32 raw 0 hwcrypto 1
[ 6.854066] ath: EEPROM regdomain sanitized
[ 6.854073] ath: EEPROM regdomain: 0x64
[ 6.854075] ath: EEPROM indicates we should expect a direct regpair map
[ 6.854082] ath: Country alpha2 being used: 00
[ 6.854083] ath: Regpair used: 0x64
[ 8.444189] ath: EEPROM regdomain: 0x8114
[ 8.444194] ath: EEPROM indicates we should expect a country code
[ 8.444196] ath: doing EEPROM country->regdmn map search
[ 8.444198] ath: country maps to regdmn code: 0x37
[ 8.444201] ath: Country alpha2 being used: DE
[ 8.444203] ath: Regpair used: 0x37
[ 8.444206] ath: regdomain 0x8114 dynamically updated by country element
The test device is an Amlogic S905D STB device from O2.cz that I have just submitted a working device-tree for [2].
If you need a QCA9377 test device, I have a duplicate/spare of the box and would be happy to post it.
Tested-by: Christian Hewitt <[email protected]>
[1] https://github.com/chewitt/qca-firmware
[2] https://patchwork.kernel.org/project/linux-amlogic/list/?series=249525
On 3/2/20 12:45 PM, Christian Hewitt wrote:
>
>> On 26 Sep 2019, at 6:24 pm, Kalle Valo <[email protected]> wrote:
>>
>> From: Erik Stromdahl <[email protected]>
>>
>> Add hardware parameters for QCA9377 sdio devices, it's now properly supported.
>>
>> Signed-off-by: Erik Stromdahl <[email protected]>
>> Signed-off-by: Kalle Valo <[email protected]>
>> ---
>>
>> I don't have any working QCA9377 SDIO hardware so I would appreciate any
>> test reports. This should apply cleanly to ath.git master branch (at least to
>> tag ath-201909230832):
>>
>> https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git/log/?h=master
>>
>> drivers/net/wireless/ath/ath10k/core.c | 27 +++++++++++++++++++++++++++
>> drivers/net/wireless/ath/ath10k/hw.h | 3 +++
>> 2 files changed, 30 insertions(+)
>>
>> diff --git a/drivers/net/wireless/ath/ath10k/core.c b/drivers/net/wireless/ath/ath10k/core.c
>> index 36c62d66c19e..e5572d4b6ae9 100644
>> --- a/drivers/net/wireless/ath/ath10k/core.c
>> +++ b/drivers/net/wireless/ath/ath10k/core.c
>> @@ -539,6 +539,33 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
>> .tx_stats_over_pktlog = false,
>> },
>> {
>> + .id = QCA9377_HW_1_1_DEV_VERSION,
>> + .dev_id = QCA9377_1_0_DEVICE_ID,
>> + .bus = ATH10K_BUS_SDIO,
>> + .name = "qca9377 hw1.1 sdio",
>> + .patch_load_addr = QCA9377_HW_1_0_PATCH_LOAD_ADDR,
>> + .uart_pin = 19,
>> + .otp_exe_param = 0,
>> + .channel_counters_freq_hz = 88000,
>> + .max_probe_resp_desc_thres = 0,
>> + .cal_data_len = 8124,
>> + .fw = {
>> + .dir = QCA9377_HW_1_0_FW_DIR,
>> + .board = QCA9377_HW_1_0_BOARD_DATA_FILE,
>> + .board_size = QCA9377_BOARD_DATA_SZ,
>> + .board_ext_size = QCA9377_BOARD_EXT_DATA_SZ,
>> + },
>> + .hw_ops = &qca6174_ops,
>> + .hw_clk = qca6174_clk,
>> + .target_cpu_freq = 176000000,
>> + .decap_align_bytes = 4,
>> + .n_cipher_suites = 8,
>> + .num_peers = TARGET_QCA9377_HL_NUM_PEERS,
>> + .ast_skid_limit = 0x10,
>> + .num_wds_entries = 0x20,
>> + .uart_pin_workaround = true,
>> + },
>> + {
>> .id = QCA4019_HW_1_0_DEV_VERSION,
>> .dev_id = 0,
>> .bus = ATH10K_BUS_AHB,
>> diff --git a/drivers/net/wireless/ath/ath10k/hw.h b/drivers/net/wireless/ath/ath10k/hw.h
>> index 2ae57c1de7b5..ddb1d23ec6de 100644
>> --- a/drivers/net/wireless/ath/ath10k/hw.h
>> +++ b/drivers/net/wireless/ath/ath10k/hw.h
>> @@ -768,6 +768,9 @@ ath10k_is_rssi_enable(struct ath10k_hw_params *hw,
>> #define TARGET_HL_TLV_AST_SKID_LIMIT 16
>> #define TARGET_HL_TLV_NUM_WDS_ENTRIES 2
>>
>> +/* Target specific defines for QCA9377 high latency firmware */
>> +#define TARGET_QCA9377_HL_NUM_PEERS 15
>> +
>> /* Diagnostic Window */
>> #define CE_DIAG_PIPE 7
>>
>
> Tested and working fine using Linux 5.6-rc3 and SDIO firmware from [1].
>
> [ 5.391369] ath10k_sdio mmc2:0001:1: qca9377 hw1.1 sdio target 0x05020001 chip_id 0x00000000 sub 0000:0000
> [ 5.391379] ath10k_sdio mmc2:0001:1: kconfig debug 0 debugfs 0 tracing 0 dfs 0 testmode 0
> [ 5.391632] ath10k_sdio mmc2:0001:1: firmware ver WLAN.TF.1.1.1-00061-QCATFSWPZ-1 api 5 features ignore-otp crc32 7746e551
> [ 5.624198] ath10k_sdio mmc2:0001:1: failed to fetch board data for bus=sdio,vendor=0271,device=0701,subsystem-vendor=0000,subsystem-device=0000 from ath10k/QCA9377/hw1.0/board-2.bin
> [ 5.624473] ath10k_sdio mmc2:0001:1: board_file api 1 bmi_id N/A crc32 544289f7
> [ 6.775882] ath10k_sdio mmc2:0001:1: htt-ver 3.32 wmi-op 4 htt-op 3 cal otp max-sta 32 raw 0 hwcrypto 1
> [ 6.854066] ath: EEPROM regdomain sanitized
> [ 6.854073] ath: EEPROM regdomain: 0x64
> [ 6.854075] ath: EEPROM indicates we should expect a direct regpair map
> [ 6.854082] ath: Country alpha2 being used: 00
> [ 6.854083] ath: Regpair used: 0x64
> [ 8.444189] ath: EEPROM regdomain: 0x8114
> [ 8.444194] ath: EEPROM indicates we should expect a country code
> [ 8.444196] ath: doing EEPROM country->regdmn map search
> [ 8.444198] ath: country maps to regdmn code: 0x37
> [ 8.444201] ath: Country alpha2 being used: DE
> [ 8.444203] ath: Regpair used: 0x37
> [ 8.444206] ath: regdomain 0x8114 dynamically updated by country element
>
> The test device is an Amlogic S905D STB device from O2.cz that I have just submitted a working device-tree for [2].
>
> If you need a QCA9377 test device, I have a duplicate/spare of the box and would be happy to post it.
>
> Tested-by: Christian Hewitt <[email protected]>
>
> [1] https://github.com/chewitt/qca-firmware
> [2] https://patchwork.kernel.org/project/linux-amlogic/list/?series=249525
>
I have received a lot of questions lately about this patch (why it has not been integrated).
It is actually the only missing piece in order to have working QCA9377 support on mainline.
Unless there is a good reason not to add it, I think it should be integrated.
--
Erik
Kalle Valo <[email protected]> wrote:
> Add hardware parameters for QCA9377 sdio devices, it's now properly supported.
>
> Signed-off-by: Erik Stromdahl <[email protected]>
> Signed-off-by: Kalle Valo <[email protected]>
Patch applied to ath-next branch of ath.git, thanks.
6e51b0e4913c ath10k: add QCA9377 sdio hw_param item
--
https://patchwork.kernel.org/patch/11162833/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
Erik Stromdahl <[email protected]> writes:
> On 3/2/20 12:45 PM, Christian Hewitt wrote:
>>
>>> On 26 Sep 2019, at 6:24 pm, Kalle Valo <[email protected]> wrote:
>>>
>>> From: Erik Stromdahl <[email protected]>
>>>
>>> Add hardware parameters for QCA9377 sdio devices, it's now properly supported.
>>>
>>> Signed-off-by: Erik Stromdahl <[email protected]>
>>> Signed-off-by: Kalle Valo <[email protected]>
[...]
>> Tested and working fine using Linux 5.6-rc3 and SDIO firmware from [1].
>>
>> [ 5.391369] ath10k_sdio mmc2:0001:1: qca9377 hw1.1 sdio target
>> 0x05020001 chip_id 0x00000000 sub 0000:0000
>> [ 5.391379] ath10k_sdio mmc2:0001:1: kconfig debug 0 debugfs 0
>> tracing 0 dfs 0 testmode 0
>> [ 5.391632] ath10k_sdio mmc2:0001:1: firmware ver
>> WLAN.TF.1.1.1-00061-QCATFSWPZ-1 api 5 features ignore-otp crc32
>> 7746e551
>> [ 5.624198] ath10k_sdio mmc2:0001:1: failed to fetch board data for
>> bus=sdio,vendor=0271,device=0701,subsystem-vendor=0000,subsystem-device=0000
>> from ath10k/QCA9377/hw1.0/board-2.bin
>> [ 5.624473] ath10k_sdio mmc2:0001:1: board_file api 1 bmi_id N/A crc32 544289f7
>> [ 6.775882] ath10k_sdio mmc2:0001:1: htt-ver 3.32 wmi-op 4 htt-op 3
>> cal otp max-sta 32 raw 0 hwcrypto 1
>> [ 6.854066] ath: EEPROM regdomain sanitized
>> [ 6.854073] ath: EEPROM regdomain: 0x64
>> [ 6.854075] ath: EEPROM indicates we should expect a direct regpair map
>> [ 6.854082] ath: Country alpha2 being used: 00
>> [ 6.854083] ath: Regpair used: 0x64
>> [ 8.444189] ath: EEPROM regdomain: 0x8114
>> [ 8.444194] ath: EEPROM indicates we should expect a country code
>> [ 8.444196] ath: doing EEPROM country->regdmn map search
>> [ 8.444198] ath: country maps to regdmn code: 0x37
>> [ 8.444201] ath: Country alpha2 being used: DE
>> [ 8.444203] ath: Regpair used: 0x37
>> [ 8.444206] ath: regdomain 0x8114 dynamically updated by country element
>>
>> The test device is an Amlogic S905D STB device from O2.cz that I
>> have just submitted a working device-tree for [2].
>>
>> If you need a QCA9377 test device, I have a duplicate/spare of the
>> box and would be happy to post it.
>>
>> Tested-by: Christian Hewitt <[email protected]>
>>
>> [1] https://github.com/chewitt/qca-firmware
>> [2] https://patchwork.kernel.org/project/linux-amlogic/list/?series=249525
>>
>
> I have received a lot of questions lately about this patch (why it has
> not been integrated).
> It is actually the only missing piece in order to have working QCA9377
> support on mainline.
>
> Unless there is a good reason not to add it, I think it should be integrated.
Thanks for testing, I applied it now.
--
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches