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
					
				| @ -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…
	
		Reference in New Issue
	
	Block a user