855-v6.6-bus-mhi-host-pci_generic-Add-support-for-IP_SW0-chan.patch 2.5 KB

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