[PATCH v3] ath10k: Override CE5 configuration for QCA6147 device
Julian Calaby
julian.calaby at gmail.com
Thu Nov 12 02:47:28 PST 2015
Hi Ryan,
On Thu, Nov 12, 2015 at 5:21 AM, Ryan Hsu <ryanhsu at qca.qualcomm.com> wrote:
> 'Commit a70587b3389a ("ath10k: configure copy engine 5 for HTT messages")'
> Introduces to use the unused CE5 for target to host message.
>
> For the device like QCA6174, CE5 already assigned for other feature.
> So for QCA6174, override the CE5 configuration and use the CE1 instead.
>
> This patch is based on Rajkumar's earlier patch.
>
> Fixes: a70587b3389a ("ath10k: configure copy engine 5 for HTT messages")
> Signed-off-by: Rajkumar Manoharan <rmanohar at qti.qualcomm.com>
> Signed-off-by: Ryan Hsu <ryanhsu at qca.qualcomm.com>
> ---
> drivers/net/wireless/ath/ath10k/pci.c | 32 +++++++++++++++++++++++++++++---
> 1 file changed, 29 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath10k/pci.c b/drivers/net/wireless/ath/ath10k/pci.c
> index 5c91a67..2a48376 100644
> --- a/drivers/net/wireless/ath/ath10k/pci.c
> +++ b/drivers/net/wireless/ath/ath10k/pci.c
> @@ -113,7 +113,7 @@ static void ath10k_pci_htt_tx_cb(struct ath10k_ce_pipe *ce_state);
> static void ath10k_pci_htt_rx_cb(struct ath10k_ce_pipe *ce_state);
> static void ath10k_pci_pktlog_rx_cb(struct ath10k_ce_pipe *ce_state);
>
> -static const struct ce_attr host_ce_config_wlan[] = {
> +static struct ce_attr host_ce_config_wlan[] = {
> /* CE0: host->target HTC control and raw streams */
> {
> .flags = CE_ATTR_FLAGS,
> @@ -219,7 +219,7 @@ static const struct ce_attr host_ce_config_wlan[] = {
> };
>
> /* Target firmware's Copy Engine configuration. */
> -static const struct ce_pipe_config target_ce_config_wlan[] = {
> +static struct ce_pipe_config target_ce_config_wlan[] = {
> /* CE0: host->target HTC control and raw streams */
> {
> .pipenum = __cpu_to_le32(0),
> @@ -332,7 +332,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 struct service_to_pipe target_service_to_ce_map_wlan[] = {
> {
> __cpu_to_le32(ATH10K_HTC_SVC_ID_WMI_DATA_VO),
> __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */
> @@ -2038,6 +2038,29 @@ static int ath10k_pci_init_config(struct ath10k *ar)
> return 0;
> }
>
> +static void ath10k_pci_override_ce_config(struct ath10k *ar)
> +{
> + struct ce_attr *attr;
> + struct ce_pipe_config *config;
> +
> + /* For QCA6174 we're overriding the Copy Engine 5 configuration,
> + * since it is currently used for other feature.
> + */
> +
> + /* Override Host's Copy Engine 5 configuration */
> + attr = &host_ce_config_wlan[5];
> + attr->src_sz_max = 0;
> + attr->dest_nentries = 0;
> +
> + /* Override Target firmware's Copy Engine configuration */
> + config = &target_ce_config_wlan[5];
> + config->pipedir = __cpu_to_le32(PIPEDIR_OUT);
> + config->nbytes_max = __cpu_to_le32(2048);
> +
> + /* Map from service/endpoint to Copy Engine */
> + target_service_to_ce_map_wlan[15].pipenum = __cpu_to_le32(1);
> +}
> +
Stupid question: Why not have two different versions of each struct?
One for QCA6174 and one for everyone else, and choose the appropriate
one when they're uploaded to the firmware / used?
I believe there's a struct full of part specific data, it could
potentially go in there.
Thanks,
--
Julian Calaby
Email: julian.calaby at gmail.com
Profile: http://www.google.com/profiles/julian.calaby/
More information about the ath10k
mailing list