| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- From 440b01a2a9a62352cfa355354d3a4de6c5d96adf Mon Sep 17 00:00:00 2001
- From: Manivannan Sadhasivam <[email protected]>
- Date: Fri, 19 May 2023 19:28:03 +0530
- Subject: [PATCH 06/13] bus: mhi: host: pci_generic: Add support for IP_SW0
- channels
- IP_SW0 channels are used to transfer data over the networking interface
- between MHI endpoint and the host. Define the channels in the MHI v1
- channel config along with dedicated event rings.
- Reviewed-by: Loic Poulain <[email protected]>
- Link: https://lore.kernel.org/r/[email protected]
- Signed-off-by: Manivannan Sadhasivam <[email protected]>
- ---
- drivers/bus/mhi/host/pci_generic.c | 26 ++++++++++++++++++++++----
- 1 file changed, 22 insertions(+), 4 deletions(-)
- --- a/drivers/bus/mhi/host/pci_generic.c
- +++ b/drivers/bus/mhi/host/pci_generic.c
- @@ -212,6 +212,19 @@ struct mhi_pci_dev_info {
- .offload_channel = false, \
- }
-
- +#define MHI_EVENT_CONFIG_SW_DATA(ev_ring, el_count) \
- + { \
- + .num_elements = el_count, \
- + .irq_moderation_ms = 0, \
- + .irq = (ev_ring) + 1, \
- + .priority = 1, \
- + .mode = MHI_DB_BRST_DISABLE, \
- + .data_type = MHI_ER_DATA, \
- + .hardware_event = false, \
- + .client_managed = false, \
- + .offload_channel = false, \
- + }
- +
- #define MHI_EVENT_CONFIG_HW_DATA(ev_ring, el_count, ch_num) \
- { \
- .num_elements = el_count, \
- @@ -237,8 +250,10 @@ static const struct mhi_channel_config m
- MHI_CHANNEL_CONFIG_DL_AUTOQUEUE(21, "IPCR", 8, 0),
- MHI_CHANNEL_CONFIG_UL_FP(34, "FIREHOSE", 32, 0),
- MHI_CHANNEL_CONFIG_DL_FP(35, "FIREHOSE", 32, 0),
- - MHI_CHANNEL_CONFIG_HW_UL(100, "IP_HW0", 128, 2),
- - MHI_CHANNEL_CONFIG_HW_DL(101, "IP_HW0", 128, 3),
- + MHI_CHANNEL_CONFIG_UL(46, "IP_SW0", 64, 2),
- + MHI_CHANNEL_CONFIG_DL(47, "IP_SW0", 64, 3),
- + MHI_CHANNEL_CONFIG_HW_UL(100, "IP_HW0", 128, 4),
- + MHI_CHANNEL_CONFIG_HW_DL(101, "IP_HW0", 128, 5),
- };
-
- static struct mhi_event_config modem_qcom_v1_mhi_events[] = {
- @@ -246,9 +261,12 @@ static struct mhi_event_config modem_qco
- MHI_EVENT_CONFIG_CTRL(0, 64),
- /* DIAG dedicated event ring */
- MHI_EVENT_CONFIG_DATA(1, 128),
- + /* Software channels dedicated event ring */
- + MHI_EVENT_CONFIG_SW_DATA(2, 64),
- + MHI_EVENT_CONFIG_SW_DATA(3, 64),
- /* Hardware channels request dedicated hardware event rings */
- - MHI_EVENT_CONFIG_HW_DATA(2, 1024, 100),
- - MHI_EVENT_CONFIG_HW_DATA(3, 2048, 101)
- + MHI_EVENT_CONFIG_HW_DATA(4, 1024, 100),
- + MHI_EVENT_CONFIG_HW_DATA(5, 2048, 101)
- };
-
- static const struct mhi_controller_config modem_qcom_v1_mhiv_config = {
|