mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 20:51:03 +02:00
mhi: pci_generic: Fix shared MSI vector support
When a shared MSI vector must be used (e.g. when VTd is disabled on x86_64), each event MSI vector must be set to the shared vector idx. Signed-off-by: Loic Poulain <loic.poulain@linaro.org> Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> Reviewed-by: Hemant Kumar<hemantk@codeaurora.org> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
This commit is contained in:
committed by
Manivannan Sadhasivam
parent
fcba4b2047
commit
b91c3b30e2
@@ -154,7 +154,7 @@ static const struct mhi_channel_config modem_qcom_v1_mhi_channels[] = {
|
|||||||
MHI_CHANNEL_CONFIG_HW_DL(101, "IP_HW0", 128, 3),
|
MHI_CHANNEL_CONFIG_HW_DL(101, "IP_HW0", 128, 3),
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct mhi_event_config modem_qcom_v1_mhi_events[] = {
|
static struct mhi_event_config modem_qcom_v1_mhi_events[] = {
|
||||||
/* first ring is control+data ring */
|
/* first ring is control+data ring */
|
||||||
MHI_EVENT_CONFIG_CTRL(0),
|
MHI_EVENT_CONFIG_CTRL(0),
|
||||||
/* DIAG dedicated event ring */
|
/* DIAG dedicated event ring */
|
||||||
@@ -164,7 +164,7 @@ static const struct mhi_event_config modem_qcom_v1_mhi_events[] = {
|
|||||||
MHI_EVENT_CONFIG_HW_DATA(3, 101)
|
MHI_EVENT_CONFIG_HW_DATA(3, 101)
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct mhi_controller_config modem_qcom_v1_mhiv_config = {
|
static struct mhi_controller_config modem_qcom_v1_mhiv_config = {
|
||||||
.max_channels = 128,
|
.max_channels = 128,
|
||||||
.timeout_ms = 8000,
|
.timeout_ms = 8000,
|
||||||
.num_channels = ARRAY_SIZE(modem_qcom_v1_mhi_channels),
|
.num_channels = ARRAY_SIZE(modem_qcom_v1_mhi_channels),
|
||||||
@@ -295,8 +295,12 @@ static int mhi_pci_get_irqs(struct mhi_controller *mhi_cntrl,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (nr_vectors < mhi_cntrl->nr_irqs) {
|
if (nr_vectors < mhi_cntrl->nr_irqs) {
|
||||||
dev_warn(&pdev->dev, "Not enough MSI vectors (%d/%d), use shared MSI\n",
|
dev_warn(&pdev->dev, "using shared MSI\n");
|
||||||
nr_vectors, mhi_cntrl_config->num_events);
|
|
||||||
|
/* Patch msi vectors, use only one (shared) */
|
||||||
|
for (i = 0; i < mhi_cntrl_config->num_events; i++)
|
||||||
|
mhi_cntrl_config->event_cfg[i].irq = 0;
|
||||||
|
mhi_cntrl->nr_irqs = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
irq = devm_kcalloc(&pdev->dev, mhi_cntrl->nr_irqs, sizeof(int), GFP_KERNEL);
|
irq = devm_kcalloc(&pdev->dev, mhi_cntrl->nr_irqs, sizeof(int), GFP_KERNEL);
|
||||||
|
Reference in New Issue
Block a user