mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-18 22:14:16 +00:00
ath11k: Refactor ath11k_msi_config
Move ath11k_msi_config to array of structures to add multiple pci devices support. No functional changes. Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.4.0.1.r2-00012-QCAHKSWPL_SILICONZ-1 Signed-off-by: Anilkumar Kolli <akolli@codeaurora.org> Signed-off-by: Kalle Valo <kvalo@codeaurora.org> Link: https://lore.kernel.org/r/1612946530-28504-2-git-send-email-akolli@codeaurora.org
This commit is contained in:
parent
9c349dbd07
commit
7a3aed0c3c
2 changed files with 23 additions and 17 deletions
|
|
@ -50,14 +50,16 @@ static const struct ath11k_bus_params ath11k_pci_bus_params = {
|
|||
.fixed_mem_region = false,
|
||||
};
|
||||
|
||||
static const struct ath11k_msi_config msi_config = {
|
||||
.total_vectors = 32,
|
||||
.total_users = 4,
|
||||
.users = (struct ath11k_msi_user[]) {
|
||||
{ .name = "MHI", .num_vectors = 3, .base_vector = 0 },
|
||||
{ .name = "CE", .num_vectors = 10, .base_vector = 3 },
|
||||
{ .name = "WAKE", .num_vectors = 1, .base_vector = 13 },
|
||||
{ .name = "DP", .num_vectors = 18, .base_vector = 14 },
|
||||
static const struct ath11k_msi_config ath11k_msi_config[] = {
|
||||
{
|
||||
.total_vectors = 32,
|
||||
.total_users = 4,
|
||||
.users = (struct ath11k_msi_user[]) {
|
||||
{ .name = "MHI", .num_vectors = 3, .base_vector = 0 },
|
||||
{ .name = "CE", .num_vectors = 10, .base_vector = 3 },
|
||||
{ .name = "WAKE", .num_vectors = 1, .base_vector = 13 },
|
||||
{ .name = "DP", .num_vectors = 18, .base_vector = 14 },
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
|
|
@ -406,14 +408,15 @@ int ath11k_pci_get_user_msi_assignment(struct ath11k_pci *ab_pci, char *user_nam
|
|||
u32 *base_vector)
|
||||
{
|
||||
struct ath11k_base *ab = ab_pci->ab;
|
||||
const struct ath11k_msi_config *msi_config = ab_pci->msi_config;
|
||||
int idx;
|
||||
|
||||
for (idx = 0; idx < msi_config.total_users; idx++) {
|
||||
if (strcmp(user_name, msi_config.users[idx].name) == 0) {
|
||||
*num_vectors = msi_config.users[idx].num_vectors;
|
||||
*user_base_data = msi_config.users[idx].base_vector
|
||||
for (idx = 0; idx < msi_config->total_users; idx++) {
|
||||
if (strcmp(user_name, msi_config->users[idx].name) == 0) {
|
||||
*num_vectors = msi_config->users[idx].num_vectors;
|
||||
*user_base_data = msi_config->users[idx].base_vector
|
||||
+ ab_pci->msi_ep_base_data;
|
||||
*base_vector = msi_config.users[idx].base_vector;
|
||||
*base_vector = msi_config->users[idx].base_vector;
|
||||
|
||||
ath11k_dbg(ab, ATH11K_DBG_PCI, "Assign MSI to user: %s, num_vectors: %d, user_base_data: %u, base_vector: %u\n",
|
||||
user_name, *num_vectors, *user_base_data,
|
||||
|
|
@ -760,17 +763,18 @@ static void ath11k_pci_ce_irqs_enable(struct ath11k_base *ab)
|
|||
static int ath11k_pci_enable_msi(struct ath11k_pci *ab_pci)
|
||||
{
|
||||
struct ath11k_base *ab = ab_pci->ab;
|
||||
const struct ath11k_msi_config *msi_config = ab_pci->msi_config;
|
||||
struct msi_desc *msi_desc;
|
||||
int num_vectors;
|
||||
int ret;
|
||||
|
||||
num_vectors = pci_alloc_irq_vectors(ab_pci->pdev,
|
||||
msi_config.total_vectors,
|
||||
msi_config.total_vectors,
|
||||
msi_config->total_vectors,
|
||||
msi_config->total_vectors,
|
||||
PCI_IRQ_MSI);
|
||||
if (num_vectors != msi_config.total_vectors) {
|
||||
if (num_vectors != msi_config->total_vectors) {
|
||||
ath11k_err(ab, "failed to get %d MSI vectors, only %d available",
|
||||
msi_config.total_vectors, num_vectors);
|
||||
msi_config->total_vectors, num_vectors);
|
||||
|
||||
if (num_vectors >= 0)
|
||||
return -EINVAL;
|
||||
|
|
@ -1138,6 +1142,7 @@ static int ath11k_pci_probe(struct pci_dev *pdev,
|
|||
goto err_pci_free_region;
|
||||
}
|
||||
|
||||
ab_pci->msi_config = &ath11k_msi_config[0];
|
||||
ret = ath11k_pci_enable_msi(ab_pci);
|
||||
if (ret) {
|
||||
ath11k_err(ab, "failed to enable msi: %d\n", ret);
|
||||
|
|
|
|||
|
|
@ -73,6 +73,7 @@ struct ath11k_pci {
|
|||
char amss_path[100];
|
||||
u32 msi_ep_base_data;
|
||||
struct mhi_controller *mhi_ctrl;
|
||||
const struct ath11k_msi_config *msi_config;
|
||||
unsigned long mhi_state;
|
||||
u32 register_window;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue