qcacld-3.0: Add PLD API to check if ipa offload is disabled

Add PLD API to check if ipa offload is disabled or not in PLD
layer.

Change-Id: If2ef19cdc16a399cf5abfa495e01bab6da799c8d
CRs-Fixed: 3148041
This commit is contained in:
Vijay Patil 2022-03-10 17:28:09 +05:30 • committed by Madan Koyyalamudi
commit 66dff27cd3
3 changed files with 77 additions and 1 deletions

View file

@ -1,5 +1,6 @@
/*
* Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@ -153,6 +154,16 @@ enum pld_uevent {
PLD_SMMU_FAULT,
};
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0))
/**
* enum pld_device_config - Get PLD device config
* @PLD_IPA_DISABLD: IPA is disabled
*/
enum pld_device_config {
PLD_IPA_DISABLED,
};
#endif
/**
* struct pld_uevent_data - uevent status received from platform driver
* @uevent: uevent type
@ -942,6 +953,21 @@ void pld_thermal_unregister(struct device *dev, int mon_id);
int pld_get_thermal_state(struct device *dev, unsigned long *thermal_state,
int mon_id);
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0))
/**
* pld_is_ipa_offload_disabled() - Check if IPA offload is enabled or not
* @dev: The device structure
*
* Return: Non-zero code for IPA offload disable; zero for IPA offload enable
*/
int pld_is_ipa_offload_disabled(struct device *dev);
#else
int pld_is_ipa_offload_disabled(struct device *dev);
{
return 0;
}
#endif
#if IS_ENABLED(CONFIG_WCNSS_MEM_PRE_ALLOC) && defined(FEATURE_SKB_PRE_ALLOC)
/**

View file

@ -1,5 +1,6 @@
/*
* Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@ -3182,6 +3183,45 @@ int pld_get_thermal_state(struct device *dev, unsigned long *thermal_state,
return errno;
}
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0))
/**
* pld_is_ipa_offload_disabled() - Check if IPA offload is disabled or not
*
* @dev: device
*
* This API will be called to check if IPA offload is disabled or not.
*
* Return: Non-zero for IPA offload is disabled
* Otherwise IPA offload is enabled
*/
int pld_is_ipa_offload_disabled(struct device *dev)
{
unsigned long dev_cfg = 0;
enum pld_bus_type type = pld_get_bus_type(dev);
switch (type) {
case PLD_BUS_TYPE_SNOC:
dev_cfg = pld_snoc_get_device_config();
break;
case PLD_BUS_TYPE_IPCI:
case PLD_BUS_TYPE_PCIE:
case PLD_BUS_TYPE_SDIO:
case PLD_BUS_TYPE_USB:
case PLD_BUS_TYPE_SNOC_FW_SIM:
case PLD_BUS_TYPE_PCIE_FW_SIM:
case PLD_BUS_TYPE_IPCI_FW_SIM:
pr_err("Not supported on type %d\n", type);
break;
default:
pr_err("Invalid device type %d\n", type);
break;
}
return test_bit(PLD_IPA_DISABLED, &dev_cfg);
}
#endif
#ifdef FEATURE_WLAN_TIME_SYNC_FTM
/**
* pld_get_audio_wlan_timestamp() - Get audio timestamp

View file

@ -1,6 +1,6 @@
/*
* Copyright (c) 2016-2020 The Linux Foundation. All rights reserved.
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@ -124,6 +124,11 @@ static inline int pld_snoc_idle_shutdown(struct device *dev)
return 0;
}
static inline unsigned long pld_snoc_get_device_config(void)
{
return 0;
}
static inline int pld_snoc_smmu_map(struct device *dev, phys_addr_t paddr,
uint32_t *iova_addr, size_t size)
{
@ -393,5 +398,10 @@ static inline int pld_snoc_idle_shutdown(struct device *dev)
{
return icnss_idle_shutdown(dev);
}
static inline unsigned long pld_snoc_get_device_config(void)
{
return icnss_get_device_config();
}
#endif
#endif