* [PATCH v6 0/3] ath11k: Add IPQ6018 support
@ 2020-08-24 16:44 ` Anilkumar Kolli
0 siblings, 0 replies; 24+ messages in thread
From: Anilkumar Kolli @ 2020-08-24 16:44 UTC (permalink / raw)
To: ath11k; +Cc: linux-wireless, devicetree, Anilkumar Kolli
IPQ6018 has a 5G radio and 2G radio with 2x2
and shares IPQ8074 configuration.
Tested on: IPQ6018 WLAN.HK.2.2-02134-QCAHKSWPL_SILICONZ-1
Tested on: IPQ8074 WLAN.HK.2.4.0.1-00009-QCAHKSWPL_SILICONZ-1
Anilkumar Kolli (3):
dt: bindings: net: update compatible for ath11k
ath11k: copy ce service configs to hw_params
ath11k: add IPQ6018 support
V2:
- Added devicetree reviewers
V3:
- addressed dt bindinds comments
- Reworked on Kalles patches
- copied ce svc configs to hw_params
V4:
- updated dt patch (Rob)
V5:
- Fixes errors in 'make dt_binding_check' (Rob)
V6:
- Rebased on latest ath.git top of tree
.../bindings/net/wireless/qcom,ath11k.yaml | 4 +-
drivers/net/wireless/ath/ath11k/ahb.c | 125 ++++++++++++++++++++-
drivers/net/wireless/ath/ath11k/core.c | 18 ++-
drivers/net/wireless/ath/ath11k/core.h | 1 +
drivers/net/wireless/ath/ath11k/hw.h | 2 +
5 files changed, 138 insertions(+), 12 deletions(-)
--
2.7.4
^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH v6 0/3] ath11k: Add IPQ6018 support
@ 2020-08-24 16:44 ` Anilkumar Kolli
0 siblings, 0 replies; 24+ messages in thread
From: Anilkumar Kolli @ 2020-08-24 16:44 UTC (permalink / raw)
To: ath11k; +Cc: devicetree, Anilkumar Kolli, linux-wireless
IPQ6018 has a 5G radio and 2G radio with 2x2
and shares IPQ8074 configuration.
Tested on: IPQ6018 WLAN.HK.2.2-02134-QCAHKSWPL_SILICONZ-1
Tested on: IPQ8074 WLAN.HK.2.4.0.1-00009-QCAHKSWPL_SILICONZ-1
Anilkumar Kolli (3):
dt: bindings: net: update compatible for ath11k
ath11k: copy ce service configs to hw_params
ath11k: add IPQ6018 support
V2:
- Added devicetree reviewers
V3:
- addressed dt bindinds comments
- Reworked on Kalles patches
- copied ce svc configs to hw_params
V4:
- updated dt patch (Rob)
V5:
- Fixes errors in 'make dt_binding_check' (Rob)
V6:
- Rebased on latest ath.git top of tree
.../bindings/net/wireless/qcom,ath11k.yaml | 4 +-
drivers/net/wireless/ath/ath11k/ahb.c | 125 ++++++++++++++++++++-
drivers/net/wireless/ath/ath11k/core.c | 18 ++-
drivers/net/wireless/ath/ath11k/core.h | 1 +
drivers/net/wireless/ath/ath11k/hw.h | 2 +
5 files changed, 138 insertions(+), 12 deletions(-)
--
2.7.4
--
ath11k mailing list
ath11k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath11k
^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH v6 1/3] dt: bindings: net: update compatible for ath11k
2020-08-24 16:44 ` Anilkumar Kolli
@ 2020-08-24 16:44 ` Anilkumar Kolli
-1 siblings, 0 replies; 24+ messages in thread
From: Anilkumar Kolli @ 2020-08-24 16:44 UTC (permalink / raw)
To: ath11k; +Cc: linux-wireless, devicetree, Anilkumar Kolli
Add IPQ6018 wireless driver support,
its based on ath11k driver.
Signed-off-by: Anilkumar Kolli <akolli@codeaurora.org>
---
V3:
- Use 'enum' rather than oneOf+const.
V4:
- removed oneOf, use just enum (Rob)
V5:
- Fixes errors in 'make dt_binding_check' (Rob)
Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yaml | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yaml b/Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yaml
index a1717db36dba..4b365c9d9378 100644
--- a/Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yaml
+++ b/Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yaml
@@ -17,7 +17,9 @@ description: |
properties:
compatible:
- const: qcom,ipq8074-wifi
+ enum:
+ - qcom,ipq8074-wifi
+ - qcom,ipq6018-wifi
reg:
maxItems: 1
--
2.7.4
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH v6 1/3] dt: bindings: net: update compatible for ath11k
@ 2020-08-24 16:44 ` Anilkumar Kolli
0 siblings, 0 replies; 24+ messages in thread
From: Anilkumar Kolli @ 2020-08-24 16:44 UTC (permalink / raw)
To: ath11k; +Cc: devicetree, Anilkumar Kolli, linux-wireless
Add IPQ6018 wireless driver support,
its based on ath11k driver.
Signed-off-by: Anilkumar Kolli <akolli@codeaurora.org>
---
V3:
- Use 'enum' rather than oneOf+const.
V4:
- removed oneOf, use just enum (Rob)
V5:
- Fixes errors in 'make dt_binding_check' (Rob)
Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yaml | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yaml b/Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yaml
index a1717db36dba..4b365c9d9378 100644
--- a/Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yaml
+++ b/Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yaml
@@ -17,7 +17,9 @@ description: |
properties:
compatible:
- const: qcom,ipq8074-wifi
+ enum:
+ - qcom,ipq8074-wifi
+ - qcom,ipq6018-wifi
reg:
maxItems: 1
--
2.7.4
--
ath11k mailing list
ath11k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath11k
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH v6 2/3] ath11k: copy ce service configs to hw_params
2020-08-24 16:44 ` Anilkumar Kolli
@ 2020-08-24 16:44 ` Anilkumar Kolli
-1 siblings, 0 replies; 24+ messages in thread
From: Anilkumar Kolli @ 2020-08-24 16:44 UTC (permalink / raw)
To: ath11k; +Cc: linux-wireless, devicetree, Anilkumar Kolli
No functional changes, added target ce service configurations to hw_params.
Signed-off-by: Anilkumar Kolli <akolli@codeaurora.org>
---
V3:
- added ce svc configs in hw_params
drivers/net/wireless/ath/ath11k/ahb.c | 14 +++++++++-----
drivers/net/wireless/ath/ath11k/core.c | 6 ------
drivers/net/wireless/ath/ath11k/hw.h | 2 ++
3 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/drivers/net/wireless/ath/ath11k/ahb.c b/drivers/net/wireless/ath/ath11k/ahb.c
index 8466c62a83d6..a45a7d62f283 100644
--- a/drivers/net/wireless/ath/ath11k/ahb.c
+++ b/drivers/net/wireless/ath/ath11k/ahb.c
@@ -159,7 +159,7 @@ static const struct ce_pipe_config target_ce_config_wlan[] = {
* This table is derived from the CE_PCI TABLE, above.
* It is passed to the Target at startup for use by firmware.
*/
-static const struct service_to_pipe target_service_to_ce_map_wlan[] = {
+static const struct service_to_pipe target_service_to_ce_map_wlan_ipq8074[] = {
{
.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VO),
.pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
@@ -579,8 +579,8 @@ static void ath11k_ahb_init_qmi_ce_config(struct ath11k_base *ab)
cfg->tgt_ce_len = ARRAY_SIZE(target_ce_config_wlan) - 1;
cfg->tgt_ce = target_ce_config_wlan;
- cfg->svc_to_ce_map_len = ARRAY_SIZE(target_service_to_ce_map_wlan);
- cfg->svc_to_ce_map = target_service_to_ce_map_wlan;
+ cfg->svc_to_ce_map_len = ab->hw_params.svc_to_ce_map_len;
+ cfg->svc_to_ce_map = ab->hw_params.svc_to_ce_map;
ab->qmi.service_ins_id = ATH11K_QMI_WLFW_SERVICE_INS_ID_V01_IPQ8074;
}
@@ -789,8 +789,8 @@ static int ath11k_ahb_map_service_to_pipe(struct ath11k_base *ab, u16 service_id
bool ul_set = false, dl_set = false;
int i;
- for (i = 0; i < ARRAY_SIZE(target_service_to_ce_map_wlan); i++) {
- entry = &target_service_to_ce_map_wlan[i];
+ for (i = 0; i < ab->hw_params.svc_to_ce_map_len; i++) {
+ entry = &ab->hw_params.svc_to_ce_map[i];
if (__le32_to_cpu(entry->service_id) != service_id)
continue;
@@ -890,6 +890,10 @@ static int ath11k_ahb_probe(struct platform_device *pdev)
goto err_hal_srng_deinit;
}
+ ab->hw_params.svc_to_ce_map_len =
+ ARRAY_SIZE(target_service_to_ce_map_wlan_ipq8074);
+ ab->hw_params.svc_to_ce_map = target_service_to_ce_map_wlan_ipq8074;
+
ath11k_ahb_init_qmi_ce_config(ab);
ret = ath11k_core_init(ab);
diff --git a/drivers/net/wireless/ath/ath11k/core.c b/drivers/net/wireless/ath/ath11k/core.c
index 437b1123a34f..61a6f395c436 100644
--- a/drivers/net/wireless/ath/ath11k/core.c
+++ b/drivers/net/wireless/ath/ath11k/core.c
@@ -812,12 +812,6 @@ int ath11k_core_init(struct ath11k_base *ab)
return ret;
}
- ret = ath11k_init_hw_params(ab);
- if (ret) {
- ath11k_err(ab, "failed to get hw params %d\n", ret);
- return ret;
- }
-
ret = ath11k_core_soc_create(ab);
if (ret) {
ath11k_err(ab, "failed to create soc core: %d\n", ret);
diff --git a/drivers/net/wireless/ath/ath11k/hw.h b/drivers/net/wireless/ath/ath11k/hw.h
index d15fa7fd6d5d..ebe691cb4a13 100644
--- a/drivers/net/wireless/ath/ath11k/hw.h
+++ b/drivers/net/wireless/ath/ath11k/hw.h
@@ -129,6 +129,8 @@ struct ath11k_hw_params {
} fw;
const struct ath11k_hw_ops *hw_ops;
+ const struct service_to_pipe *svc_to_ce_map;
+ int svc_to_ce_map_len;
const struct ath11k_hw_ring_mask *ring_mask;
--
2.7.4
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH v6 2/3] ath11k: copy ce service configs to hw_params
@ 2020-08-24 16:44 ` Anilkumar Kolli
0 siblings, 0 replies; 24+ messages in thread
From: Anilkumar Kolli @ 2020-08-24 16:44 UTC (permalink / raw)
To: ath11k; +Cc: devicetree, Anilkumar Kolli, linux-wireless
No functional changes, added target ce service configurations to hw_params.
Signed-off-by: Anilkumar Kolli <akolli@codeaurora.org>
---
V3:
- added ce svc configs in hw_params
drivers/net/wireless/ath/ath11k/ahb.c | 14 +++++++++-----
drivers/net/wireless/ath/ath11k/core.c | 6 ------
drivers/net/wireless/ath/ath11k/hw.h | 2 ++
3 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/drivers/net/wireless/ath/ath11k/ahb.c b/drivers/net/wireless/ath/ath11k/ahb.c
index 8466c62a83d6..a45a7d62f283 100644
--- a/drivers/net/wireless/ath/ath11k/ahb.c
+++ b/drivers/net/wireless/ath/ath11k/ahb.c
@@ -159,7 +159,7 @@ static const struct ce_pipe_config target_ce_config_wlan[] = {
* This table is derived from the CE_PCI TABLE, above.
* It is passed to the Target at startup for use by firmware.
*/
-static const struct service_to_pipe target_service_to_ce_map_wlan[] = {
+static const struct service_to_pipe target_service_to_ce_map_wlan_ipq8074[] = {
{
.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VO),
.pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
@@ -579,8 +579,8 @@ static void ath11k_ahb_init_qmi_ce_config(struct ath11k_base *ab)
cfg->tgt_ce_len = ARRAY_SIZE(target_ce_config_wlan) - 1;
cfg->tgt_ce = target_ce_config_wlan;
- cfg->svc_to_ce_map_len = ARRAY_SIZE(target_service_to_ce_map_wlan);
- cfg->svc_to_ce_map = target_service_to_ce_map_wlan;
+ cfg->svc_to_ce_map_len = ab->hw_params.svc_to_ce_map_len;
+ cfg->svc_to_ce_map = ab->hw_params.svc_to_ce_map;
ab->qmi.service_ins_id = ATH11K_QMI_WLFW_SERVICE_INS_ID_V01_IPQ8074;
}
@@ -789,8 +789,8 @@ static int ath11k_ahb_map_service_to_pipe(struct ath11k_base *ab, u16 service_id
bool ul_set = false, dl_set = false;
int i;
- for (i = 0; i < ARRAY_SIZE(target_service_to_ce_map_wlan); i++) {
- entry = &target_service_to_ce_map_wlan[i];
+ for (i = 0; i < ab->hw_params.svc_to_ce_map_len; i++) {
+ entry = &ab->hw_params.svc_to_ce_map[i];
if (__le32_to_cpu(entry->service_id) != service_id)
continue;
@@ -890,6 +890,10 @@ static int ath11k_ahb_probe(struct platform_device *pdev)
goto err_hal_srng_deinit;
}
+ ab->hw_params.svc_to_ce_map_len =
+ ARRAY_SIZE(target_service_to_ce_map_wlan_ipq8074);
+ ab->hw_params.svc_to_ce_map = target_service_to_ce_map_wlan_ipq8074;
+
ath11k_ahb_init_qmi_ce_config(ab);
ret = ath11k_core_init(ab);
diff --git a/drivers/net/wireless/ath/ath11k/core.c b/drivers/net/wireless/ath/ath11k/core.c
index 437b1123a34f..61a6f395c436 100644
--- a/drivers/net/wireless/ath/ath11k/core.c
+++ b/drivers/net/wireless/ath/ath11k/core.c
@@ -812,12 +812,6 @@ int ath11k_core_init(struct ath11k_base *ab)
return ret;
}
- ret = ath11k_init_hw_params(ab);
- if (ret) {
- ath11k_err(ab, "failed to get hw params %d\n", ret);
- return ret;
- }
-
ret = ath11k_core_soc_create(ab);
if (ret) {
ath11k_err(ab, "failed to create soc core: %d\n", ret);
diff --git a/drivers/net/wireless/ath/ath11k/hw.h b/drivers/net/wireless/ath/ath11k/hw.h
index d15fa7fd6d5d..ebe691cb4a13 100644
--- a/drivers/net/wireless/ath/ath11k/hw.h
+++ b/drivers/net/wireless/ath/ath11k/hw.h
@@ -129,6 +129,8 @@ struct ath11k_hw_params {
} fw;
const struct ath11k_hw_ops *hw_ops;
+ const struct service_to_pipe *svc_to_ce_map;
+ int svc_to_ce_map_len;
const struct ath11k_hw_ring_mask *ring_mask;
--
2.7.4
--
ath11k mailing list
ath11k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath11k
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH v6 3/3] ath11k: add IPQ6018 support
2020-08-24 16:44 ` Anilkumar Kolli
@ 2020-08-24 16:44 ` Anilkumar Kolli
-1 siblings, 0 replies; 24+ messages in thread
From: Anilkumar Kolli @ 2020-08-24 16:44 UTC (permalink / raw)
To: ath11k; +Cc: linux-wireless, devicetree, Anilkumar Kolli
IPQ6018 has one 5G and one 2G radio with 2x2,
shares ipq8074 configurations.
Signed-off-by: Anilkumar Kolli <akolli@codeaurora.org>
---
drivers/net/wireless/ath/ath11k/ahb.c | 115 ++++++++++++++++++++++++++++++++-
drivers/net/wireless/ath/ath11k/core.c | 12 ++++
drivers/net/wireless/ath/ath11k/core.h | 1 +
3 files changed, 126 insertions(+), 2 deletions(-)
diff --git a/drivers/net/wireless/ath/ath11k/ahb.c b/drivers/net/wireless/ath/ath11k/ahb.c
index a45a7d62f283..f9e1c4001015 100644
--- a/drivers/net/wireless/ath/ath11k/ahb.c
+++ b/drivers/net/wireless/ath/ath11k/ahb.c
@@ -20,6 +20,9 @@ static const struct of_device_id ath11k_ahb_of_match[] = {
{ .compatible = "qcom,ipq8074-wifi",
.data = (void *)ATH11K_HW_IPQ8074,
},
+ { .compatible = "qcom,ipq6018-wifi",
+ .data = (void *)ATH11K_HW_IPQ6018,
+ },
{ }
};
@@ -271,6 +274,108 @@ static const struct service_to_pipe target_service_to_ce_map_wlan_ipq8074[] = {
{ /* terminator entry */ }
};
+static const struct service_to_pipe target_service_to_ce_map_wlan_ipq6018[] = {
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VO),
+ .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
+ .pipenum = __cpu_to_le32(3),
+ },
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VO),
+ .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
+ .pipenum = __cpu_to_le32(2),
+ },
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_BK),
+ .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
+ .pipenum = __cpu_to_le32(3),
+ },
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_BK),
+ .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
+ .pipenum = __cpu_to_le32(2),
+ },
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_BE),
+ .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
+ .pipenum = __cpu_to_le32(3),
+ },
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_BE),
+ .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
+ .pipenum = __cpu_to_le32(2),
+ },
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VI),
+ .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
+ .pipenum = __cpu_to_le32(3),
+ },
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VI),
+ .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
+ .pipenum = __cpu_to_le32(2),
+ },
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_CONTROL),
+ .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
+ .pipenum = __cpu_to_le32(3),
+ },
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_CONTROL),
+ .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
+ .pipenum = __cpu_to_le32(2),
+ },
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_CONTROL_MAC1),
+ .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
+ .pipenum = __cpu_to_le32(7),
+ },
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_CONTROL_MAC1),
+ .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
+ .pipenum = __cpu_to_le32(2),
+ },
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_RSVD_CTRL),
+ .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
+ .pipenum = __cpu_to_le32(0),
+ },
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_RSVD_CTRL),
+ .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
+ .pipenum = __cpu_to_le32(1),
+ },
+ { /* not used */
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_TEST_RAW_STREAMS),
+ .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
+ .pipenum = __cpu_to_le32(0),
+ },
+ { /* not used */
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_TEST_RAW_STREAMS),
+ .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
+ .pipenum = __cpu_to_le32(1),
+ },
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_HTT_DATA_MSG),
+ .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
+ .pipenum = __cpu_to_le32(4),
+ },
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_HTT_DATA_MSG),
+ .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
+ .pipenum = __cpu_to_le32(1),
+ },
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_PKT_LOG),
+ .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
+ .pipenum = __cpu_to_le32(5),
+ },
+
+ /* (Additions here) */
+
+ { /* terminator entry */ }
+};
+
#define ATH11K_IRQ_CE0_OFFSET 4
static const char *irq_name[ATH11K_IRQ_NUM_MAX] = {
@@ -890,9 +995,15 @@ static int ath11k_ahb_probe(struct platform_device *pdev)
goto err_hal_srng_deinit;
}
- ab->hw_params.svc_to_ce_map_len =
+ if (ab->hw_rev == ATH11K_HW_IPQ8074) {
+ ab->hw_params.svc_to_ce_map_len =
ARRAY_SIZE(target_service_to_ce_map_wlan_ipq8074);
- ab->hw_params.svc_to_ce_map = target_service_to_ce_map_wlan_ipq8074;
+ ab->hw_params.svc_to_ce_map = target_service_to_ce_map_wlan_ipq8074;
+ } else if (ab->hw_rev == ATH11K_HW_IPQ6018) {
+ ab->hw_params.svc_to_ce_map_len =
+ ARRAY_SIZE(target_service_to_ce_map_wlan_ipq6018);
+ ab->hw_params.svc_to_ce_map = target_service_to_ce_map_wlan_ipq6018;
+ }
ath11k_ahb_init_qmi_ce_config(ab);
diff --git a/drivers/net/wireless/ath/ath11k/core.c b/drivers/net/wireless/ath/ath11k/core.c
index 61a6f395c436..d7b015ea40c2 100644
--- a/drivers/net/wireless/ath/ath11k/core.c
+++ b/drivers/net/wireless/ath/ath11k/core.c
@@ -69,6 +69,18 @@ static const struct ath11k_hw_params ath11k_hw_params[] = {
.htt_peer_map_v2 = false,
.tcl_0_only = true,
},
+ {
+ .hw_rev = ATH11K_HW_IPQ6018,
+ .name = "ipq6018 hw1.0",
+ .fw = {
+ .dir = "IPQ6018/hw1.0",
+ .board_size = 256 * 1024,
+ .cal_size = 256 * 1024,
+ },
+ .max_radios = 2,
+ .bdf_addr = 0x4ABC0000,
+ .hw_ops = &ipq6018_ops,
+ },
};
static int ath11k_core_create_board_name(struct ath11k_base *ab, char *name,
diff --git a/drivers/net/wireless/ath/ath11k/core.h b/drivers/net/wireless/ath/ath11k/core.h
index d21191c51e10..b9b6dc6f179f 100644
--- a/drivers/net/wireless/ath/ath11k/core.h
+++ b/drivers/net/wireless/ath/ath11k/core.h
@@ -90,6 +90,7 @@ struct ath11k_skb_rxcb {
enum ath11k_hw_rev {
ATH11K_HW_IPQ8074,
+ ATH11K_HW_IPQ6018,
ATH11K_HW_QCA6390_HW20,
};
--
2.7.4
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH v6 3/3] ath11k: add IPQ6018 support
@ 2020-08-24 16:44 ` Anilkumar Kolli
0 siblings, 0 replies; 24+ messages in thread
From: Anilkumar Kolli @ 2020-08-24 16:44 UTC (permalink / raw)
To: ath11k; +Cc: devicetree, Anilkumar Kolli, linux-wireless
IPQ6018 has one 5G and one 2G radio with 2x2,
shares ipq8074 configurations.
Signed-off-by: Anilkumar Kolli <akolli@codeaurora.org>
---
drivers/net/wireless/ath/ath11k/ahb.c | 115 ++++++++++++++++++++++++++++++++-
drivers/net/wireless/ath/ath11k/core.c | 12 ++++
drivers/net/wireless/ath/ath11k/core.h | 1 +
3 files changed, 126 insertions(+), 2 deletions(-)
diff --git a/drivers/net/wireless/ath/ath11k/ahb.c b/drivers/net/wireless/ath/ath11k/ahb.c
index a45a7d62f283..f9e1c4001015 100644
--- a/drivers/net/wireless/ath/ath11k/ahb.c
+++ b/drivers/net/wireless/ath/ath11k/ahb.c
@@ -20,6 +20,9 @@ static const struct of_device_id ath11k_ahb_of_match[] = {
{ .compatible = "qcom,ipq8074-wifi",
.data = (void *)ATH11K_HW_IPQ8074,
},
+ { .compatible = "qcom,ipq6018-wifi",
+ .data = (void *)ATH11K_HW_IPQ6018,
+ },
{ }
};
@@ -271,6 +274,108 @@ static const struct service_to_pipe target_service_to_ce_map_wlan_ipq8074[] = {
{ /* terminator entry */ }
};
+static const struct service_to_pipe target_service_to_ce_map_wlan_ipq6018[] = {
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VO),
+ .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
+ .pipenum = __cpu_to_le32(3),
+ },
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VO),
+ .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
+ .pipenum = __cpu_to_le32(2),
+ },
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_BK),
+ .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
+ .pipenum = __cpu_to_le32(3),
+ },
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_BK),
+ .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
+ .pipenum = __cpu_to_le32(2),
+ },
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_BE),
+ .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
+ .pipenum = __cpu_to_le32(3),
+ },
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_BE),
+ .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
+ .pipenum = __cpu_to_le32(2),
+ },
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VI),
+ .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
+ .pipenum = __cpu_to_le32(3),
+ },
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VI),
+ .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
+ .pipenum = __cpu_to_le32(2),
+ },
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_CONTROL),
+ .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
+ .pipenum = __cpu_to_le32(3),
+ },
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_CONTROL),
+ .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
+ .pipenum = __cpu_to_le32(2),
+ },
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_CONTROL_MAC1),
+ .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
+ .pipenum = __cpu_to_le32(7),
+ },
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_CONTROL_MAC1),
+ .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
+ .pipenum = __cpu_to_le32(2),
+ },
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_RSVD_CTRL),
+ .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
+ .pipenum = __cpu_to_le32(0),
+ },
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_RSVD_CTRL),
+ .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
+ .pipenum = __cpu_to_le32(1),
+ },
+ { /* not used */
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_TEST_RAW_STREAMS),
+ .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
+ .pipenum = __cpu_to_le32(0),
+ },
+ { /* not used */
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_TEST_RAW_STREAMS),
+ .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
+ .pipenum = __cpu_to_le32(1),
+ },
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_HTT_DATA_MSG),
+ .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
+ .pipenum = __cpu_to_le32(4),
+ },
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_HTT_DATA_MSG),
+ .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
+ .pipenum = __cpu_to_le32(1),
+ },
+ {
+ .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_PKT_LOG),
+ .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */
+ .pipenum = __cpu_to_le32(5),
+ },
+
+ /* (Additions here) */
+
+ { /* terminator entry */ }
+};
+
#define ATH11K_IRQ_CE0_OFFSET 4
static const char *irq_name[ATH11K_IRQ_NUM_MAX] = {
@@ -890,9 +995,15 @@ static int ath11k_ahb_probe(struct platform_device *pdev)
goto err_hal_srng_deinit;
}
- ab->hw_params.svc_to_ce_map_len =
+ if (ab->hw_rev == ATH11K_HW_IPQ8074) {
+ ab->hw_params.svc_to_ce_map_len =
ARRAY_SIZE(target_service_to_ce_map_wlan_ipq8074);
- ab->hw_params.svc_to_ce_map = target_service_to_ce_map_wlan_ipq8074;
+ ab->hw_params.svc_to_ce_map = target_service_to_ce_map_wlan_ipq8074;
+ } else if (ab->hw_rev == ATH11K_HW_IPQ6018) {
+ ab->hw_params.svc_to_ce_map_len =
+ ARRAY_SIZE(target_service_to_ce_map_wlan_ipq6018);
+ ab->hw_params.svc_to_ce_map = target_service_to_ce_map_wlan_ipq6018;
+ }
ath11k_ahb_init_qmi_ce_config(ab);
diff --git a/drivers/net/wireless/ath/ath11k/core.c b/drivers/net/wireless/ath/ath11k/core.c
index 61a6f395c436..d7b015ea40c2 100644
--- a/drivers/net/wireless/ath/ath11k/core.c
+++ b/drivers/net/wireless/ath/ath11k/core.c
@@ -69,6 +69,18 @@ static const struct ath11k_hw_params ath11k_hw_params[] = {
.htt_peer_map_v2 = false,
.tcl_0_only = true,
},
+ {
+ .hw_rev = ATH11K_HW_IPQ6018,
+ .name = "ipq6018 hw1.0",
+ .fw = {
+ .dir = "IPQ6018/hw1.0",
+ .board_size = 256 * 1024,
+ .cal_size = 256 * 1024,
+ },
+ .max_radios = 2,
+ .bdf_addr = 0x4ABC0000,
+ .hw_ops = &ipq6018_ops,
+ },
};
static int ath11k_core_create_board_name(struct ath11k_base *ab, char *name,
diff --git a/drivers/net/wireless/ath/ath11k/core.h b/drivers/net/wireless/ath/ath11k/core.h
index d21191c51e10..b9b6dc6f179f 100644
--- a/drivers/net/wireless/ath/ath11k/core.h
+++ b/drivers/net/wireless/ath/ath11k/core.h
@@ -90,6 +90,7 @@ struct ath11k_skb_rxcb {
enum ath11k_hw_rev {
ATH11K_HW_IPQ8074,
+ ATH11K_HW_IPQ6018,
ATH11K_HW_QCA6390_HW20,
};
--
2.7.4
--
ath11k mailing list
ath11k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath11k
^ permalink raw reply related [flat|nested] 24+ messages in thread
* Re: [PATCH v6 1/3] dt: bindings: net: update compatible for ath11k
2020-08-24 16:44 ` Anilkumar Kolli
@ 2020-08-24 21:27 ` Rob Herring
-1 siblings, 0 replies; 24+ messages in thread
From: Rob Herring @ 2020-08-24 21:27 UTC (permalink / raw)
To: Anilkumar Kolli; +Cc: devicetree, linux-wireless, ath11k
On Mon, 24 Aug 2020 22:14:28 +0530, Anilkumar Kolli wrote:
> Add IPQ6018 wireless driver support,
> its based on ath11k driver.
>
> Signed-off-by: Anilkumar Kolli <akolli@codeaurora.org>
> ---
> V3:
> - Use 'enum' rather than oneOf+const.
> V4:
> - removed oneOf, use just enum (Rob)
> V5:
> - Fixes errors in 'make dt_binding_check' (Rob)
>
> Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yaml | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
Reviewed-by: Rob Herring <robh@kernel.org>
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v6 1/3] dt: bindings: net: update compatible for ath11k
@ 2020-08-24 21:27 ` Rob Herring
0 siblings, 0 replies; 24+ messages in thread
From: Rob Herring @ 2020-08-24 21:27 UTC (permalink / raw)
To: Anilkumar Kolli; +Cc: devicetree, linux-wireless, ath11k
On Mon, 24 Aug 2020 22:14:28 +0530, Anilkumar Kolli wrote:
> Add IPQ6018 wireless driver support,
> its based on ath11k driver.
>
> Signed-off-by: Anilkumar Kolli <akolli@codeaurora.org>
> ---
> V3:
> - Use 'enum' rather than oneOf+const.
> V4:
> - removed oneOf, use just enum (Rob)
> V5:
> - Fixes errors in 'make dt_binding_check' (Rob)
>
> Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yaml | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
Reviewed-by: Rob Herring <robh@kernel.org>
--
ath11k mailing list
ath11k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath11k
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v6 0/3] ath11k: Add IPQ6018 support
2020-08-24 16:44 ` Anilkumar Kolli
` (3 preceding siblings ...)
(?)
@ 2020-09-07 9:57 ` Kalle Valo
-1 siblings, 0 replies; 24+ messages in thread
From: Kalle Valo @ 2020-09-07 9:57 UTC (permalink / raw)
To: Anilkumar Kolli; +Cc: devicetree, linux-wireless, ath11k
Anilkumar Kolli <akolli@codeaurora.org> writes:
> IPQ6018 has a 5G radio and 2G radio with 2x2
> and shares IPQ8074 configuration.
>
> Tested on: IPQ6018 WLAN.HK.2.2-02134-QCAHKSWPL_SILICONZ-1
> Tested on: IPQ8074 WLAN.HK.2.4.0.1-00009-QCAHKSWPL_SILICONZ-1
I don't store the cover letters to git, so please move the Tested-on
tags to actual patches so that they are properly archived.
--
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
--
ath11k mailing list
ath11k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath11k
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v6 0/3] ath11k: Add IPQ6018 support
2020-08-24 16:44 ` Anilkumar Kolli
` (4 preceding siblings ...)
(?)
@ 2020-09-07 9:57 ` Kalle Valo
-1 siblings, 0 replies; 24+ messages in thread
From: Kalle Valo @ 2020-09-07 9:57 UTC (permalink / raw)
To: Anilkumar Kolli; +Cc: ath11k, devicetree, linux-wireless
Anilkumar Kolli <akolli@codeaurora.org> writes:
> IPQ6018 has a 5G radio and 2G radio with 2x2
> and shares IPQ8074 configuration.
>
> Tested on: IPQ6018 WLAN.HK.2.2-02134-QCAHKSWPL_SILICONZ-1
> Tested on: IPQ8074 WLAN.HK.2.4.0.1-00009-QCAHKSWPL_SILICONZ-1
I don't store the cover letters to git, so please move the Tested-on
tags to actual patches so that they are properly archived.
--
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v6 2/3] ath11k: copy ce service configs to hw_params
2020-08-24 16:44 ` Anilkumar Kolli
(?)
@ 2020-09-07 9:59 ` Kalle Valo
-1 siblings, 0 replies; 24+ messages in thread
From: Kalle Valo @ 2020-09-07 9:59 UTC (permalink / raw)
To: Anilkumar Kolli; +Cc: ath11k, devicetree, linux-wireless
Anilkumar Kolli <akolli@codeaurora.org> writes:
> No functional changes, added target ce service configurations to hw_params.
>
> Signed-off-by: Anilkumar Kolli <akolli@codeaurora.org>
[...]
> --- a/drivers/net/wireless/ath/ath11k/core.c
> +++ b/drivers/net/wireless/ath/ath11k/core.c
> @@ -812,12 +812,6 @@ int ath11k_core_init(struct ath11k_base *ab)
> return ret;
> }
>
> - ret = ath11k_init_hw_params(ab);
> - if (ret) {
> - ath11k_err(ab, "failed to get hw params %d\n", ret);
> - return ret;
> - }
This is very suspicious.
--
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v6 2/3] ath11k: copy ce service configs to hw_params
2020-08-24 16:44 ` Anilkumar Kolli
(?)
(?)
@ 2020-09-07 9:59 ` Kalle Valo
-1 siblings, 0 replies; 24+ messages in thread
From: Kalle Valo @ 2020-09-07 9:59 UTC (permalink / raw)
To: Anilkumar Kolli; +Cc: devicetree, linux-wireless, ath11k
Anilkumar Kolli <akolli@codeaurora.org> writes:
> No functional changes, added target ce service configurations to hw_params.
>
> Signed-off-by: Anilkumar Kolli <akolli@codeaurora.org>
[...]
> --- a/drivers/net/wireless/ath/ath11k/core.c
> +++ b/drivers/net/wireless/ath/ath11k/core.c
> @@ -812,12 +812,6 @@ int ath11k_core_init(struct ath11k_base *ab)
> return ret;
> }
>
> - ret = ath11k_init_hw_params(ab);
> - if (ret) {
> - ath11k_err(ab, "failed to get hw params %d\n", ret);
> - return ret;
> - }
This is very suspicious.
--
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
--
ath11k mailing list
ath11k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath11k
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v6 3/3] ath11k: add IPQ6018 support
2020-08-24 16:44 ` Anilkumar Kolli
(?)
@ 2020-09-07 10:01 ` Kalle Valo
-1 siblings, 0 replies; 24+ messages in thread
From: Kalle Valo @ 2020-09-07 10:01 UTC (permalink / raw)
To: Anilkumar Kolli; +Cc: ath11k, devicetree, linux-wireless
Anilkumar Kolli <akolli@codeaurora.org> writes:
> IPQ6018 has one 5G and one 2G radio with 2x2,
> shares ipq8074 configurations.
>
> Signed-off-by: Anilkumar Kolli <akolli@codeaurora.org>
[...]
> @@ -890,9 +995,15 @@ static int ath11k_ahb_probe(struct platform_device *pdev)
> goto err_hal_srng_deinit;
> }
>
> - ab->hw_params.svc_to_ce_map_len =
> + if (ab->hw_rev == ATH11K_HW_IPQ8074) {
> + ab->hw_params.svc_to_ce_map_len =
> ARRAY_SIZE(target_service_to_ce_map_wlan_ipq8074);
> - ab->hw_params.svc_to_ce_map = target_service_to_ce_map_wlan_ipq8074;
> + ab->hw_params.svc_to_ce_map = target_service_to_ce_map_wlan_ipq8074;
> + } else if (ab->hw_rev == ATH11K_HW_IPQ6018) {
> + ab->hw_params.svc_to_ce_map_len =
> + ARRAY_SIZE(target_service_to_ce_map_wlan_ipq6018);
> + ab->hw_params.svc_to_ce_map = target_service_to_ce_map_wlan_ipq6018;
> + }
The idea of having ab->hw_params is to avoid the need for hw_rev
sprinkled all over the code, this here defeats the purpose. I recommend
checking if my proposal from an earlier version is implementable:
"You could copy the map arrays to hw.c, as an example see how
ath11k_hw_ring_mask_ipq8074 is implemented. That way we don't need any
new hw_rev checks."
--
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v6 3/3] ath11k: add IPQ6018 support
2020-08-24 16:44 ` Anilkumar Kolli
(?)
(?)
@ 2020-09-07 10:01 ` Kalle Valo
-1 siblings, 0 replies; 24+ messages in thread
From: Kalle Valo @ 2020-09-07 10:01 UTC (permalink / raw)
To: Anilkumar Kolli; +Cc: devicetree, linux-wireless, ath11k
Anilkumar Kolli <akolli@codeaurora.org> writes:
> IPQ6018 has one 5G and one 2G radio with 2x2,
> shares ipq8074 configurations.
>
> Signed-off-by: Anilkumar Kolli <akolli@codeaurora.org>
[...]
> @@ -890,9 +995,15 @@ static int ath11k_ahb_probe(struct platform_device *pdev)
> goto err_hal_srng_deinit;
> }
>
> - ab->hw_params.svc_to_ce_map_len =
> + if (ab->hw_rev == ATH11K_HW_IPQ8074) {
> + ab->hw_params.svc_to_ce_map_len =
> ARRAY_SIZE(target_service_to_ce_map_wlan_ipq8074);
> - ab->hw_params.svc_to_ce_map = target_service_to_ce_map_wlan_ipq8074;
> + ab->hw_params.svc_to_ce_map = target_service_to_ce_map_wlan_ipq8074;
> + } else if (ab->hw_rev == ATH11K_HW_IPQ6018) {
> + ab->hw_params.svc_to_ce_map_len =
> + ARRAY_SIZE(target_service_to_ce_map_wlan_ipq6018);
> + ab->hw_params.svc_to_ce_map = target_service_to_ce_map_wlan_ipq6018;
> + }
The idea of having ab->hw_params is to avoid the need for hw_rev
sprinkled all over the code, this here defeats the purpose. I recommend
checking if my proposal from an earlier version is implementable:
"You could copy the map arrays to hw.c, as an example see how
ath11k_hw_ring_mask_ipq8074 is implemented. That way we don't need any
new hw_rev checks."
--
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
--
ath11k mailing list
ath11k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath11k
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v6 2/3] ath11k: copy ce service configs to hw_params
[not found] ` <87363t52nj.fsf@codeaurora.org>
2020-09-07 10:59 ` akolli
@ 2020-09-07 10:59 ` akolli
1 sibling, 0 replies; 24+ messages in thread
From: akolli @ 2020-09-07 10:59 UTC (permalink / raw)
To: Kalle Valo; +Cc: ath11k, devicetree, linux-wireless
On 2020-09-07 15:28, Kalle Valo wrote:
> Anilkumar Kolli <akolli@codeaurora.org> writes:
>
>> No functional changes, added target ce service configurations to
>> hw_params.
>>
>> Signed-off-by: Anilkumar Kolli <akolli@codeaurora.org>
>
> [...]
>
>> --- a/drivers/net/wireless/ath/ath11k/core.c
>> +++ b/drivers/net/wireless/ath/ath11k/core.c
>> @@ -812,12 +812,6 @@ int ath11k_core_init(struct ath11k_base *ab)
>> return ret;
>> }
>>
>> - ret = ath11k_init_hw_params(ab);
>> - if (ret) {
>> - ath11k_err(ab, "failed to get hw params %d\n", ret);
>> - return ret;
>> - }
>
> This is very suspicious.
ath11k_core_pre_init() is calling ath11k_init_hw_params(), again calling
same function in ath11k_core_init()
is not needed. Will send this as a new patch ?
Thanks
Anil
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v6 2/3] ath11k: copy ce service configs to hw_params
[not found] ` <87363t52nj.fsf@codeaurora.org>
@ 2020-09-07 10:59 ` akolli
2020-09-07 16:25 ` Kalle Valo
2020-09-07 16:25 ` Kalle Valo
2020-09-07 10:59 ` akolli
1 sibling, 2 replies; 24+ messages in thread
From: akolli @ 2020-09-07 10:59 UTC (permalink / raw)
To: Kalle Valo; +Cc: devicetree, linux-wireless, ath11k
On 2020-09-07 15:28, Kalle Valo wrote:
> Anilkumar Kolli <akolli@codeaurora.org> writes:
>
>> No functional changes, added target ce service configurations to
>> hw_params.
>>
>> Signed-off-by: Anilkumar Kolli <akolli@codeaurora.org>
>
> [...]
>
>> --- a/drivers/net/wireless/ath/ath11k/core.c
>> +++ b/drivers/net/wireless/ath/ath11k/core.c
>> @@ -812,12 +812,6 @@ int ath11k_core_init(struct ath11k_base *ab)
>> return ret;
>> }
>>
>> - ret = ath11k_init_hw_params(ab);
>> - if (ret) {
>> - ath11k_err(ab, "failed to get hw params %d\n", ret);
>> - return ret;
>> - }
>
> This is very suspicious.
ath11k_core_pre_init() is calling ath11k_init_hw_params(), again calling
same function in ath11k_core_init()
is not needed. Will send this as a new patch ?
Thanks
Anil
--
ath11k mailing list
ath11k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath11k
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v6 3/3] ath11k: add IPQ6018 support
[not found] ` <87y2ll3nzh.fsf@codeaurora.org>
@ 2020-09-07 11:01 ` akolli
2020-09-07 11:01 ` akolli
1 sibling, 0 replies; 24+ messages in thread
From: akolli @ 2020-09-07 11:01 UTC (permalink / raw)
To: Kalle Valo; +Cc: devicetree, linux-wireless, ath11k
On 2020-09-07 15:30, Kalle Valo wrote:
> Anilkumar Kolli <akolli@codeaurora.org> writes:
>
>> IPQ6018 has one 5G and one 2G radio with 2x2,
>> shares ipq8074 configurations.
>>
>> Signed-off-by: Anilkumar Kolli <akolli@codeaurora.org>
>
> [...]
>
>> @@ -890,9 +995,15 @@ static int ath11k_ahb_probe(struct
>> platform_device *pdev)
>> goto err_hal_srng_deinit;
>> }
>>
>> - ab->hw_params.svc_to_ce_map_len =
>> + if (ab->hw_rev == ATH11K_HW_IPQ8074) {
>> + ab->hw_params.svc_to_ce_map_len =
>> ARRAY_SIZE(target_service_to_ce_map_wlan_ipq8074);
>> - ab->hw_params.svc_to_ce_map = target_service_to_ce_map_wlan_ipq8074;
>> + ab->hw_params.svc_to_ce_map =
>> target_service_to_ce_map_wlan_ipq8074;
>> + } else if (ab->hw_rev == ATH11K_HW_IPQ6018) {
>> + ab->hw_params.svc_to_ce_map_len =
>> + ARRAY_SIZE(target_service_to_ce_map_wlan_ipq6018);
>> + ab->hw_params.svc_to_ce_map =
>> target_service_to_ce_map_wlan_ipq6018;
>> + }
>
> The idea of having ab->hw_params is to avoid the need for hw_rev
> sprinkled all over the code, this here defeats the purpose. I recommend
> checking if my proposal from an earlier version is implementable:
>
> "You could copy the map arrays to hw.c, as an example see how
> ath11k_hw_ring_mask_ipq8074 is implemented. That way we don't need any
> new hw_rev checks."
Thanks for the details, will address and send in next patch set.
Thanks
Anil
--
ath11k mailing list
ath11k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath11k
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v6 3/3] ath11k: add IPQ6018 support
[not found] ` <87y2ll3nzh.fsf@codeaurora.org>
2020-09-07 11:01 ` akolli
@ 2020-09-07 11:01 ` akolli
1 sibling, 0 replies; 24+ messages in thread
From: akolli @ 2020-09-07 11:01 UTC (permalink / raw)
To: Kalle Valo; +Cc: ath11k, devicetree, linux-wireless
On 2020-09-07 15:30, Kalle Valo wrote:
> Anilkumar Kolli <akolli@codeaurora.org> writes:
>
>> IPQ6018 has one 5G and one 2G radio with 2x2,
>> shares ipq8074 configurations.
>>
>> Signed-off-by: Anilkumar Kolli <akolli@codeaurora.org>
>
> [...]
>
>> @@ -890,9 +995,15 @@ static int ath11k_ahb_probe(struct
>> platform_device *pdev)
>> goto err_hal_srng_deinit;
>> }
>>
>> - ab->hw_params.svc_to_ce_map_len =
>> + if (ab->hw_rev == ATH11K_HW_IPQ8074) {
>> + ab->hw_params.svc_to_ce_map_len =
>> ARRAY_SIZE(target_service_to_ce_map_wlan_ipq8074);
>> - ab->hw_params.svc_to_ce_map = target_service_to_ce_map_wlan_ipq8074;
>> + ab->hw_params.svc_to_ce_map =
>> target_service_to_ce_map_wlan_ipq8074;
>> + } else if (ab->hw_rev == ATH11K_HW_IPQ6018) {
>> + ab->hw_params.svc_to_ce_map_len =
>> + ARRAY_SIZE(target_service_to_ce_map_wlan_ipq6018);
>> + ab->hw_params.svc_to_ce_map =
>> target_service_to_ce_map_wlan_ipq6018;
>> + }
>
> The idea of having ab->hw_params is to avoid the need for hw_rev
> sprinkled all over the code, this here defeats the purpose. I recommend
> checking if my proposal from an earlier version is implementable:
>
> "You could copy the map arrays to hw.c, as an example see how
> ath11k_hw_ring_mask_ipq8074 is implemented. That way we don't need any
> new hw_rev checks."
Thanks for the details, will address and send in next patch set.
Thanks
Anil
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v6 0/3] ath11k: Add IPQ6018 support
[not found] ` <877dt552q1.fsf@codeaurora.org>
2020-09-07 11:03 ` akolli
@ 2020-09-07 11:03 ` akolli
1 sibling, 0 replies; 24+ messages in thread
From: akolli @ 2020-09-07 11:03 UTC (permalink / raw)
To: Kalle Valo; +Cc: ath11k, devicetree, linux-wireless
On 2020-09-07 15:27, Kalle Valo wrote:
> Anilkumar Kolli <akolli@codeaurora.org> writes:
>
>> IPQ6018 has a 5G radio and 2G radio with 2x2
>> and shares IPQ8074 configuration.
>>
>> Tested on: IPQ6018 WLAN.HK.2.2-02134-QCAHKSWPL_SILICONZ-1
>> Tested on: IPQ8074 WLAN.HK.2.4.0.1-00009-QCAHKSWPL_SILICONZ-1
>
> I don't store the cover letters to git, so please move the Tested-on
> tags to actual patches so that they are properly archived.
Sure.
Thanks
Anil
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v6 0/3] ath11k: Add IPQ6018 support
[not found] ` <877dt552q1.fsf@codeaurora.org>
@ 2020-09-07 11:03 ` akolli
2020-09-07 11:03 ` akolli
1 sibling, 0 replies; 24+ messages in thread
From: akolli @ 2020-09-07 11:03 UTC (permalink / raw)
To: Kalle Valo; +Cc: devicetree, linux-wireless, ath11k
On 2020-09-07 15:27, Kalle Valo wrote:
> Anilkumar Kolli <akolli@codeaurora.org> writes:
>
>> IPQ6018 has a 5G radio and 2G radio with 2x2
>> and shares IPQ8074 configuration.
>>
>> Tested on: IPQ6018 WLAN.HK.2.2-02134-QCAHKSWPL_SILICONZ-1
>> Tested on: IPQ8074 WLAN.HK.2.4.0.1-00009-QCAHKSWPL_SILICONZ-1
>
> I don't store the cover letters to git, so please move the Tested-on
> tags to actual patches so that they are properly archived.
Sure.
Thanks
Anil
--
ath11k mailing list
ath11k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath11k
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v6 2/3] ath11k: copy ce service configs to hw_params
2020-09-07 10:59 ` akolli
@ 2020-09-07 16:25 ` Kalle Valo
2020-09-07 16:25 ` Kalle Valo
1 sibling, 0 replies; 24+ messages in thread
From: Kalle Valo @ 2020-09-07 16:25 UTC (permalink / raw)
To: akolli; +Cc: devicetree, linux-wireless, ath11k
akolli@codeaurora.org writes:
> On 2020-09-07 15:28, Kalle Valo wrote:
>> Anilkumar Kolli <akolli@codeaurora.org> writes:
>>
>>> No functional changes, added target ce service configurations to
>>> hw_params.
>>>
>>> Signed-off-by: Anilkumar Kolli <akolli@codeaurora.org>
>>
>> [...]
>>
>>> --- a/drivers/net/wireless/ath/ath11k/core.c
>>> +++ b/drivers/net/wireless/ath/ath11k/core.c
>>> @@ -812,12 +812,6 @@ int ath11k_core_init(struct ath11k_base *ab)
>>> return ret;
>>> }
>>>
>>> - ret = ath11k_init_hw_params(ab);
>>> - if (ret) {
>>> - ath11k_err(ab, "failed to get hw params %d\n", ret);
>>> - return ret;
>>> - }
>>
>> This is very suspicious.
>
> ath11k_core_pre_init() is calling ath11k_init_hw_params(), again
> calling same function in ath11k_core_init() is not needed.
>
> Will send this as a new patch ?
Yes, please send this in a new patch with a proper commit log explaining
the situation.
--
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
--
ath11k mailing list
ath11k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath11k
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v6 2/3] ath11k: copy ce service configs to hw_params
2020-09-07 10:59 ` akolli
2020-09-07 16:25 ` Kalle Valo
@ 2020-09-07 16:25 ` Kalle Valo
1 sibling, 0 replies; 24+ messages in thread
From: Kalle Valo @ 2020-09-07 16:25 UTC (permalink / raw)
To: akolli; +Cc: devicetree, linux-wireless, ath11k
akolli@codeaurora.org writes:
> On 2020-09-07 15:28, Kalle Valo wrote:
>> Anilkumar Kolli <akolli@codeaurora.org> writes:
>>
>>> No functional changes, added target ce service configurations to
>>> hw_params.
>>>
>>> Signed-off-by: Anilkumar Kolli <akolli@codeaurora.org>
>>
>> [...]
>>
>>> --- a/drivers/net/wireless/ath/ath11k/core.c
>>> +++ b/drivers/net/wireless/ath/ath11k/core.c
>>> @@ -812,12 +812,6 @@ int ath11k_core_init(struct ath11k_base *ab)
>>> return ret;
>>> }
>>>
>>> - ret = ath11k_init_hw_params(ab);
>>> - if (ret) {
>>> - ath11k_err(ab, "failed to get hw params %d\n", ret);
>>> - return ret;
>>> - }
>>
>> This is very suspicious.
>
> ath11k_core_pre_init() is calling ath11k_init_hw_params(), again
> calling same function in ath11k_core_init() is not needed.
>
> Will send this as a new patch ?
Yes, please send this in a new patch with a proper commit log explaining
the situation.
--
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply [flat|nested] 24+ messages in thread
end of thread, other threads:[~2020-09-07 17:56 UTC | newest]
Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-24 16:44 [PATCH v6 0/3] ath11k: Add IPQ6018 support Anilkumar Kolli
2020-08-24 16:44 ` Anilkumar Kolli
2020-08-24 16:44 ` [PATCH v6 1/3] dt: bindings: net: update compatible for ath11k Anilkumar Kolli
2020-08-24 16:44 ` Anilkumar Kolli
2020-08-24 21:27 ` Rob Herring
2020-08-24 21:27 ` Rob Herring
2020-08-24 16:44 ` [PATCH v6 2/3] ath11k: copy ce service configs to hw_params Anilkumar Kolli
2020-08-24 16:44 ` Anilkumar Kolli
2020-09-07 9:59 ` Kalle Valo
2020-09-07 9:59 ` Kalle Valo
[not found] ` <87363t52nj.fsf@codeaurora.org>
2020-09-07 10:59 ` akolli
2020-09-07 16:25 ` Kalle Valo
2020-09-07 16:25 ` Kalle Valo
2020-09-07 10:59 ` akolli
2020-08-24 16:44 ` [PATCH v6 3/3] ath11k: add IPQ6018 support Anilkumar Kolli
2020-08-24 16:44 ` Anilkumar Kolli
2020-09-07 10:01 ` Kalle Valo
2020-09-07 10:01 ` Kalle Valo
[not found] ` <87y2ll3nzh.fsf@codeaurora.org>
2020-09-07 11:01 ` akolli
2020-09-07 11:01 ` akolli
2020-09-07 9:57 ` [PATCH v6 0/3] ath11k: Add " Kalle Valo
2020-09-07 9:57 ` Kalle Valo
[not found] ` <877dt552q1.fsf@codeaurora.org>
2020-09-07 11:03 ` akolli
2020-09-07 11:03 ` akolli
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.