Message ID | 20230311150647.22935-2-sireeshkodali1@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | f94557154d9fc77c392844523388edd4661a27a3 |
Delegated to: | Kalle Valo |
Headers | show |
Series | net: wireless: wcn36xx: Add support for pronto-v3 | expand |
Sireesh Kodali <sireeshkodali1@gmail.com> writes: > From: Vladimir Lypak <vladimir.lypak@gmail.com> > > Pronto v3 has a different DXE address than prior Pronto versions. This > patch changes the macro to return the correct register address based on > the pronto version. > > Signed-off-by: Vladimir Lypak <vladimir.lypak@gmail.com> > Signed-off-by: Sireesh Kodali <sireeshkodali1@gmail.com> > --- > drivers/net/wireless/ath/wcn36xx/dxe.c | 23 +++++++++++----------- > drivers/net/wireless/ath/wcn36xx/dxe.h | 4 ++-- > drivers/net/wireless/ath/wcn36xx/main.c | 1 + > drivers/net/wireless/ath/wcn36xx/wcn36xx.h | 1 + > 4 files changed, 16 insertions(+), 13 deletions(-) The title should be: wifi: wcn36xx: add support for pronto-v3 I can fix that, no need to resend because of this.
On Mon Mar 13, 2023 at 11:22 AM IST, Kalle Valo wrote: > Sireesh Kodali <sireeshkodali1@gmail.com> writes: > > > From: Vladimir Lypak <vladimir.lypak@gmail.com> > > > > Pronto v3 has a different DXE address than prior Pronto versions. This > > patch changes the macro to return the correct register address based on > > the pronto version. > > > > Signed-off-by: Vladimir Lypak <vladimir.lypak@gmail.com> > > Signed-off-by: Sireesh Kodali <sireeshkodali1@gmail.com> > > --- > > drivers/net/wireless/ath/wcn36xx/dxe.c | 23 +++++++++++----------- > > drivers/net/wireless/ath/wcn36xx/dxe.h | 4 ++-- > > drivers/net/wireless/ath/wcn36xx/main.c | 1 + > > drivers/net/wireless/ath/wcn36xx/wcn36xx.h | 1 + > > 4 files changed, 16 insertions(+), 13 deletions(-) > > The title should be: > > wifi: wcn36xx: add support for pronto-v3 > > I can fix that, no need to resend because of this. > > -- > https://patchwork.kernel.org/project/linux-wireless/list/ > > https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches Thank you, I'll keep this in mind when submitting future patches
On Sat, 11 Mar 2023 at 16:07, Sireesh Kodali <sireeshkodali1@gmail.com> wrote: > > From: Vladimir Lypak <vladimir.lypak@gmail.com> > > Pronto v3 has a different DXE address than prior Pronto versions. This > patch changes the macro to return the correct register address based on > the pronto version. > > Signed-off-by: Vladimir Lypak <vladimir.lypak@gmail.com> > Signed-off-by: Sireesh Kodali <sireeshkodali1@gmail.com> Acked-by: Loic Poulain <loic.poulain@linaro.org> Could you also submit a change for the new 'qcom,pronto-v3-pil' compatible in the related devicetree documentation ? (bindings/remoteproc/qcom,wcnss-pil.txt)
On Tue Mar 14, 2023 at 2:19 PM IST, Loic Poulain wrote: > On Sat, 11 Mar 2023 at 16:07, Sireesh Kodali <sireeshkodali1@gmail.com> wrote: > > > > From: Vladimir Lypak <vladimir.lypak@gmail.com> > > > > Pronto v3 has a different DXE address than prior Pronto versions. This > > patch changes the macro to return the correct register address based on > > the pronto version. > > > > Signed-off-by: Vladimir Lypak <vladimir.lypak@gmail.com> > > Signed-off-by: Sireesh Kodali <sireeshkodali1@gmail.com> > > Acked-by: Loic Poulain <loic.poulain@linaro.org> > > Could you also submit a change for the new 'qcom,pronto-v3-pil' > compatible in the related devicetree documentation ? > (bindings/remoteproc/qcom,wcnss-pil.txt) The changes to the device tree were only recently merged LKML link: https://lkml.org/lkml/2022/9/30/1502
On Tue, 14 Mar 2023 at 19:04, Sireesh Kodali <sireeshkodali1@gmail.com> wrote: > > On Tue Mar 14, 2023 at 2:19 PM IST, Loic Poulain wrote: > > On Sat, 11 Mar 2023 at 16:07, Sireesh Kodali <sireeshkodali1@gmail.com> wrote: > > > > > > From: Vladimir Lypak <vladimir.lypak@gmail.com> > > > > > > Pronto v3 has a different DXE address than prior Pronto versions. This > > > patch changes the macro to return the correct register address based on > > > the pronto version. > > > > > > Signed-off-by: Vladimir Lypak <vladimir.lypak@gmail.com> > > > Signed-off-by: Sireesh Kodali <sireeshkodali1@gmail.com> > > > > Acked-by: Loic Poulain <loic.poulain@linaro.org> > > > > Could you also submit a change for the new 'qcom,pronto-v3-pil' > > compatible in the related devicetree documentation ? > > (bindings/remoteproc/qcom,wcnss-pil.txt) > > The changes to the device tree were only recently merged > LKML link: https://lkml.org/lkml/2022/9/30/1502 Perfect, thanks. Loic
Sireesh Kodali <sireeshkodali1@gmail.com> wrote: > Pronto v3 has a different DXE address than prior Pronto versions. This > patch changes the macro to return the correct register address based on > the pronto version. > > Signed-off-by: Vladimir Lypak <vladimir.lypak@gmail.com> > Signed-off-by: Sireesh Kodali <sireeshkodali1@gmail.com> > Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com> Patch applied to ath-next branch of ath.git, thanks. f94557154d9f wifi: wcn36xx: add support for pronto-v3
diff --git a/drivers/net/wireless/ath/wcn36xx/dxe.c b/drivers/net/wireless/ath/wcn36xx/dxe.c index 4e9e13941c8f..9013f056eecb 100644 --- a/drivers/net/wireless/ath/wcn36xx/dxe.c +++ b/drivers/net/wireless/ath/wcn36xx/dxe.c @@ -112,8 +112,8 @@ int wcn36xx_dxe_alloc_ctl_blks(struct wcn36xx *wcn) wcn->dxe_rx_l_ch.desc_num = WCN36XX_DXE_CH_DESC_NUMB_RX_L; wcn->dxe_rx_h_ch.desc_num = WCN36XX_DXE_CH_DESC_NUMB_RX_H; - wcn->dxe_tx_l_ch.dxe_wq = WCN36XX_DXE_WQ_TX_L; - wcn->dxe_tx_h_ch.dxe_wq = WCN36XX_DXE_WQ_TX_H; + wcn->dxe_tx_l_ch.dxe_wq = WCN36XX_DXE_WQ_TX_L(wcn); + wcn->dxe_tx_h_ch.dxe_wq = WCN36XX_DXE_WQ_TX_H(wcn); wcn->dxe_tx_l_ch.ctrl_bd = WCN36XX_DXE_CTRL_TX_L_BD; wcn->dxe_tx_h_ch.ctrl_bd = WCN36XX_DXE_CTRL_TX_H_BD; @@ -165,8 +165,9 @@ void wcn36xx_dxe_free_ctl_blks(struct wcn36xx *wcn) wcn36xx_dxe_free_ctl_block(&wcn->dxe_rx_h_ch); } -static int wcn36xx_dxe_init_descs(struct device *dev, struct wcn36xx_dxe_ch *wcn_ch) +static int wcn36xx_dxe_init_descs(struct wcn36xx *wcn, struct wcn36xx_dxe_ch *wcn_ch) { + struct device *dev = wcn->dev; struct wcn36xx_dxe_desc *cur_dxe = NULL; struct wcn36xx_dxe_desc *prev_dxe = NULL; struct wcn36xx_dxe_ctl *cur_ctl = NULL; @@ -190,11 +191,11 @@ static int wcn36xx_dxe_init_descs(struct device *dev, struct wcn36xx_dxe_ch *wcn switch (wcn_ch->ch_type) { case WCN36XX_DXE_CH_TX_L: cur_dxe->ctrl = WCN36XX_DXE_CTRL_TX_L; - cur_dxe->dst_addr_l = WCN36XX_DXE_WQ_TX_L; + cur_dxe->dst_addr_l = WCN36XX_DXE_WQ_TX_L(wcn); break; case WCN36XX_DXE_CH_TX_H: cur_dxe->ctrl = WCN36XX_DXE_CTRL_TX_H; - cur_dxe->dst_addr_l = WCN36XX_DXE_WQ_TX_H; + cur_dxe->dst_addr_l = WCN36XX_DXE_WQ_TX_H(wcn); break; case WCN36XX_DXE_CH_RX_L: cur_dxe->ctrl = WCN36XX_DXE_CTRL_RX_L; @@ -914,7 +915,7 @@ int wcn36xx_dxe_init(struct wcn36xx *wcn) /***************************************/ /* Init descriptors for TX LOW channel */ /***************************************/ - ret = wcn36xx_dxe_init_descs(wcn->dev, &wcn->dxe_tx_l_ch); + ret = wcn36xx_dxe_init_descs(wcn, &wcn->dxe_tx_l_ch); if (ret) { dev_err(wcn->dev, "Error allocating descriptor\n"); return ret; @@ -928,14 +929,14 @@ int wcn36xx_dxe_init(struct wcn36xx *wcn) /* Program DMA destination addr for TX LOW */ wcn36xx_dxe_write_register(wcn, WCN36XX_DXE_CH_DEST_ADDR_TX_L, - WCN36XX_DXE_WQ_TX_L); + WCN36XX_DXE_WQ_TX_L(wcn)); wcn36xx_dxe_read_register(wcn, WCN36XX_DXE_REG_CH_EN, ®_data); /***************************************/ /* Init descriptors for TX HIGH channel */ /***************************************/ - ret = wcn36xx_dxe_init_descs(wcn->dev, &wcn->dxe_tx_h_ch); + ret = wcn36xx_dxe_init_descs(wcn, &wcn->dxe_tx_h_ch); if (ret) { dev_err(wcn->dev, "Error allocating descriptor\n"); goto out_err_txh_ch; @@ -950,14 +951,14 @@ int wcn36xx_dxe_init(struct wcn36xx *wcn) /* Program DMA destination addr for TX HIGH */ wcn36xx_dxe_write_register(wcn, WCN36XX_DXE_CH_DEST_ADDR_TX_H, - WCN36XX_DXE_WQ_TX_H); + WCN36XX_DXE_WQ_TX_H(wcn)); wcn36xx_dxe_read_register(wcn, WCN36XX_DXE_REG_CH_EN, ®_data); /***************************************/ /* Init descriptors for RX LOW channel */ /***************************************/ - ret = wcn36xx_dxe_init_descs(wcn->dev, &wcn->dxe_rx_l_ch); + ret = wcn36xx_dxe_init_descs(wcn, &wcn->dxe_rx_l_ch); if (ret) { dev_err(wcn->dev, "Error allocating descriptor\n"); goto out_err_rxl_ch; @@ -988,7 +989,7 @@ int wcn36xx_dxe_init(struct wcn36xx *wcn) /***************************************/ /* Init descriptors for RX HIGH channel */ /***************************************/ - ret = wcn36xx_dxe_init_descs(wcn->dev, &wcn->dxe_rx_h_ch); + ret = wcn36xx_dxe_init_descs(wcn, &wcn->dxe_rx_h_ch); if (ret) { dev_err(wcn->dev, "Error allocating descriptor\n"); goto out_err_rxh_ch; diff --git a/drivers/net/wireless/ath/wcn36xx/dxe.h b/drivers/net/wireless/ath/wcn36xx/dxe.h index 26a31edf52e9..dd8c684a3ba7 100644 --- a/drivers/net/wireless/ath/wcn36xx/dxe.h +++ b/drivers/net/wireless/ath/wcn36xx/dxe.h @@ -135,8 +135,8 @@ H2H_TEST_RX_TX = DMA2 WCN36xx_DXE_CTRL_ENDIANNESS) /* TODO This must calculated properly but not hardcoded */ -#define WCN36XX_DXE_WQ_TX_L 0x17 -#define WCN36XX_DXE_WQ_TX_H 0x17 +#define WCN36XX_DXE_WQ_TX_L(wcn) ((wcn)->is_pronto_v3 ? 0x6 : 0x17) +#define WCN36XX_DXE_WQ_TX_H(wcn) ((wcn)->is_pronto_v3 ? 0x6 : 0x17) #define WCN36XX_DXE_WQ_RX_L 0xB #define WCN36XX_DXE_WQ_RX_H 0x4 diff --git a/drivers/net/wireless/ath/wcn36xx/main.c b/drivers/net/wireless/ath/wcn36xx/main.c index 3b79cc1c7c5b..8dbd115a393c 100644 --- a/drivers/net/wireless/ath/wcn36xx/main.c +++ b/drivers/net/wireless/ath/wcn36xx/main.c @@ -1508,6 +1508,7 @@ static int wcn36xx_platform_get_resources(struct wcn36xx *wcn, } wcn->is_pronto = !!of_device_is_compatible(mmio_node, "qcom,pronto"); + wcn->is_pronto_v3 = !!of_device_is_compatible(mmio_node, "qcom,pronto-v3-pil"); /* Map the CCU memory */ index = of_property_match_string(mmio_node, "reg-names", "ccu"); diff --git a/drivers/net/wireless/ath/wcn36xx/wcn36xx.h b/drivers/net/wireless/ath/wcn36xx/wcn36xx.h index 9aa08b636d08..ff4a8e5d7209 100644 --- a/drivers/net/wireless/ath/wcn36xx/wcn36xx.h +++ b/drivers/net/wireless/ath/wcn36xx/wcn36xx.h @@ -217,6 +217,7 @@ struct wcn36xx { u8 fw_major; u32 fw_feat_caps[WCN36XX_HAL_CAPS_SIZE]; bool is_pronto; + bool is_pronto_v3; /* extra byte for the NULL termination */ u8 crm_version[WCN36XX_HAL_VERSION_LENGTH + 1];