wcn36xx: Disable 5GHz for wcn3610
Subsystems (3)
PATCH v2 1/1 wcn36xx: Disable 5GHz for wcn3610
wcn3610 can only operate on 2.4GHz band due to RF limitation. If wcn36xx digital block is associated with an external IRIS RF module, retrieve the id and disable 5GHz band in case of wcn3610 id.
---
v2: fixed wrong assignment, which is logically introduces the
same behaviour, but for correctness.
drivers/net/wireless/ath/wcn36xx/main.c | 4 +++- drivers/net/wireless/ath/wcn36xx/wcn36xx.h | 1 + 2 files changed, 4 insertions(+), 1 deletion(-)
drivers/net/wireless/ath/wcn36xx/main.c +3 -1
@@ -1146,7 +1146,7 @@ static int wcn36xx_init_ieee80211(struct wcn36xx *wcn)BIT (NL80211_IFTYPE_MESH_POINT ); wcn->hw->wiphy->bands[NL80211_BAND_2GHZ ] = &wcn_band_2ghz; -if (wcn->rf_id !=RF_IRIS_WCN3620 ) +if (wcn->rf_id !=RF_IRIS_WCN3610 && wcn->rf_id !=RF_IRIS_WCN3620 ) wcn->hw->wiphy->bands[NL80211_BAND_5GHZ ] = &wcn_band_5ghz; wcn->hw->wiphy->max_scan_ssids =WCN36XX_MAX_SCAN_SSIDS ;
@@ -1248,6 +1248,8 @@ static int wcn36xx_platform_get_resources(struct wcn36xx *wcn,if (iris_node) {if (of_device_is_compatible (iris_node,"qcom,wcn3620" )) wcn->rf_id =RF_IRIS_WCN3620 ; +else if (of_device_is_compatible (iris_node,"qcom,wcn3610" )) + wcn->rf_id =RF_IRIS_WCN3610 ;of_node_put (iris_node); }
drivers/net/wireless/ath/wcn36xx/wcn36xx.h +1 -0
@@ -95,6 +95,7 @@ enum wcn36xx_ampdu_state {#define WCN36XX_MAX_POWER (__wcn) (__wcn->hw->conf.chandef.chan->max_power)#define RF_UNKNOWN 0x0000 +#define RF_IRIS_WCN3610 0x3610#define RF_IRIS_WCN3620 0x3620static inline void buff_to_be (u32 *buf,size_t len)
Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project
(adding devicetree list)
Quoted 28 lines · Ramon Fried
wcn3610 can only operate on 2.4GHz band due to RF limitation. If wcn36xx digital block is associated with an external IRIS RF module, retrieve the id and disable 5GHz band in case of wcn3610 id.
Signed-off-by Ramon Fried <[email protected]>---
v2: fixed wrong assignment, which is logically introduces the
same behaviour, but for correctness.drivers/net/wireless/ath/wcn36xx/main.c | 4 +++- drivers/net/wireless/ath/wcn36xx/wcn36xx.h | 1 + 2 files changed, 4 insertions(+), 1 deletion(-)drivers/net/wireless/ath/wcn36xx/main.c +1
-1@@ -1146,7 +1146,7 @@ static int wcn36xx_init_ieee80211(struct wcn36xx *wcn)BIT (NL80211_IFTYPE_MESH_POINT ); wcn->hw->wiphy->bands[NL80211_BAND_2GHZ ] = &wcn_band_2ghz; -if (wcn->rf_id !=RF_IRIS_WCN3620 ) +if (wcn->rf_id !=RF_IRIS_WCN3610 && wcn->rf_id !=RF_IRIS_WCN3620 ) wcn->hw->wiphy->bands[NL80211_BAND_5GHZ ] = &wcn_band_5ghz; wcn->hw->wiphy->max_scan_ssids =WCN36XX_MAX_SCAN_SSIDS ;
drivers/net/wireless/ath/wcn36xx/main.c static int wcn36xx_platform_get_resources(struct wcn36xx *wcn, · line 1254
Quoted 7 lines
drivers/net/wireless/ath/wcn36xx/main.c +2
-0@@ -1248,6 +1248,8 @@ static int wcn36xx_platform_get_resources(struct wcn36xx *wcn,if (iris_node) {if (of_device_is_compatible (iris_node,"qcom,wcn3620" )) wcn->rf_id =RF_IRIS_WCN3620 ; +else if (of_device_is_compatible (iris_node,"qcom,wcn3610" )) + wcn->rf_id =RF_IRIS_WCN3610 ;of_node_put (iris_node); }
Should we document qcom,wcn3610 just like wcn3620 is:
Documentation/devicetree/bindings/remoteproc/qcom,wcnss-pil.txt: "qcom,wcn3620",
Signature · 1 line
Kalle Valo
(adding Bjorn Andersson)
Quoted 41 lines · Kalle Valo
(adding devicetree list)
Quoted 28 lines · Ramon Fried
wcn3610 can only operate on 2.4GHz band due to RF limitation. If wcn36xx digital block is associated with an external IRIS RF module, retrieve the id and disable 5GHz band in case of wcn3610 id.
Signed-off-by Ramon Fried <[email protected]>---
v2: fixed wrong assignment, which is logically introduces the
same behaviour, but for correctness.drivers/net/wireless/ath/wcn36xx/main.c | 4 +++- drivers/net/wireless/ath/wcn36xx/wcn36xx.h | 1 + 2 files changed, 4 insertions(+), 1 deletion(-)drivers/net/wireless/ath/wcn36xx/main.c +1
-1@@ -1146,7 +1146,7 @@ static int wcn36xx_init_ieee80211(struct wcn36xx *wcn)BIT (NL80211_IFTYPE_MESH_POINT ); wcn->hw->wiphy->bands[NL80211_BAND_2GHZ ] = &wcn_band_2ghz; -if (wcn->rf_id !=RF_IRIS_WCN3620 ) +if (wcn->rf_id !=RF_IRIS_WCN3610 && wcn->rf_id !=RF_IRIS_WCN3620 ) wcn->hw->wiphy->bands[NL80211_BAND_5GHZ ] = &wcn_band_5ghz; wcn->hw->wiphy->max_scan_ssids =WCN36XX_MAX_SCAN_SSIDS ;drivers/net/wireless/ath/wcn36xx/main.c static int wcn36xx_platform_get_resources(struct wcn36xx *wcn, · line 1254
Quoted 7 lines
drivers/net/wireless/ath/wcn36xx/main.c +2
-0@@ -1248,6 +1248,8 @@ static int wcn36xx_platform_get_resources(struct wcn36xx *wcn,if (iris_node) {if (of_device_is_compatible (iris_node,"qcom,wcn3620" )) wcn->rf_id =RF_IRIS_WCN3620 ; +else if (of_device_is_compatible (iris_node,"qcom,wcn3610" )) + wcn->rf_id =RF_IRIS_WCN3610 ;of_node_put (iris_node); }Should we document qcom,wcn3610 just like wcn3620 is:
Quoted 1 line
Documentation/devicetree/bindings/remoteproc/qcom,wcnss-pil.txt: "qcom,wcn3620",
IMHO the mentioned bindings is related to the PIL (peripheral image loaded) which is just the firmware part and has nothing to do with wifi frontend(IRIS).
Hi Ramon,
Quoted 6 lines · Ramon Fried
Quoted 3 lines
Should we document qcom,wcn3610 just like wcn3620 is:
Documentation/devicetree/bindings/remoteproc/qcom,wcnss-pil.txt: "qcom,wcn3620",IMHO the mentioned bindings is related to the PIL (peripheral image loaded) which is just the firmware part and has nothing to do with wifi frontend(IRIS).
It seems that the RF is a subnode of the PIL node:
"= SUBNODES
A required subnode of the WCNSS PIL is used to describe the attached rf module and its resource dependencies. It is described by the following properties:"
So we should add qcom,wcn3610 to the exiting list of 'compatible' rf modules.
Regards,
Loic
(really adding Bjorn)
Quoted 45 lines · Ramon Fried
(adding Bjorn Andersson)
Quoted 41 lines · Kalle Valo
(adding devicetree list)
Quoted 28 lines · Ramon Fried
wcn3610 can only operate on 2.4GHz band due to RF limitation. If wcn36xx digital block is associated with an external IRIS RF module, retrieve the id and disable 5GHz band in case of wcn3610 id.
Signed-off-by Ramon Fried <[email protected]>---
v2: fixed wrong assignment, which is logically introduces the
same behaviour, but for correctness.drivers/net/wireless/ath/wcn36xx/main.c | 4 +++- drivers/net/wireless/ath/wcn36xx/wcn36xx.h | 1 + 2 files changed, 4 insertions(+), 1 deletion(-)drivers/net/wireless/ath/wcn36xx/main.c +1
-1@@ -1146,7 +1146,7 @@ static int wcn36xx_init_ieee80211(struct wcn36xx *wcn)BIT (NL80211_IFTYPE_MESH_POINT ); wcn->hw->wiphy->bands[NL80211_BAND_2GHZ ] = &wcn_band_2ghz; -if (wcn->rf_id !=RF_IRIS_WCN3620 ) +if (wcn->rf_id !=RF_IRIS_WCN3610 && wcn->rf_id !=RF_IRIS_WCN3620 ) wcn->hw->wiphy->bands[NL80211_BAND_5GHZ ] = &wcn_band_5ghz; wcn->hw->wiphy->max_scan_ssids =WCN36XX_MAX_SCAN_SSIDS ;drivers/net/wireless/ath/wcn36xx/main.c static int wcn36xx_platform_get_resources(struct wcn36xx *wcn, · line 1254
Quoted 7 lines
drivers/net/wireless/ath/wcn36xx/main.c +2
-0@@ -1248,6 +1248,8 @@ static int wcn36xx_platform_get_resources(struct wcn36xx *wcn,if (iris_node) {if (of_device_is_compatible (iris_node,"qcom,wcn3620" )) wcn->rf_id =RF_IRIS_WCN3620 ; +else if (of_device_is_compatible (iris_node,"qcom,wcn3610" )) + wcn->rf_id =RF_IRIS_WCN3610 ;of_node_put (iris_node); }Should we document qcom,wcn3610 just like wcn3620 is:
Quoted 6 lines
Quoted 2 lines
Documentation/devicetree/bindings/remoteproc/qcom,wcnss-pil.txt:
"qcom,wcn3620",IMHO the mentioned bindings is related to the PIL (peripheral image loaded) which is just the firmware part and has
nothing to do with wifi frontend(IRIS).
Should we then have a bindings document for wcn36xx or is it ok to use compatible strings like this without any docs? I'm not very familiar with the devicetree stuff.
Signature · 1 line
Kalle Valo