xfer_mode_rate.h 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. /* SPDX-License-Identifier: BSD-3-Clause */
  2. /*
  3. * Copyright (c) 2020, MIPI Alliance, Inc.
  4. *
  5. * Author: Nicolas Pitre <npitre@baylibre.com>
  6. *
  7. * Transfer Mode/Rate Table definitions as found in extended capability
  8. * sections 0x04 and 0x08.
  9. * This applies starting from I3C HCI v2.0.
  10. */
  11. #ifndef XFER_MODE_RATE_H
  12. #define XFER_MODE_RATE_H
  13. /*
  14. * Master Transfer Mode Table Fixed Indexes.
  15. *
  16. * Indexes 0x0 and 0x8 are mandatory. Availability for the rest must be
  17. * obtained from the mode table in the extended capability area.
  18. * Presence and definitions for indexes beyond these ones may vary.
  19. */
  20. #define XFERMODE_IDX_I3C_SDR 0x00 /* I3C SDR Mode */
  21. #define XFERMODE_IDX_I3C_HDR_DDR 0x01 /* I3C HDR-DDR Mode */
  22. #define XFERMODE_IDX_I3C_HDR_T 0x02 /* I3C HDR-Ternary Mode */
  23. #define XFERMODE_IDX_I3C_HDR_BT 0x03 /* I3C HDR-BT Mode */
  24. #define XFERMODE_IDX_I2C 0x08 /* Legacy I2C Mode */
  25. /*
  26. * Transfer Mode Table Entry Bits Definitions
  27. */
  28. #define XFERMODE_VALID_XFER_ADD_FUNC GENMASK(21, 16)
  29. #define XFERMODE_ML_DATA_XFER_CODING GENMASK(15, 11)
  30. #define XFERMODE_ML_ADDL_LANES GENMASK(10, 8)
  31. #define XFERMODE_SUPPORTED BIT(7)
  32. #define XFERMODE_MODE GENMASK(3, 0)
  33. /*
  34. * Master Data Transfer Rate Selector Values.
  35. *
  36. * These are the values to be used in the command descriptor XFER_RATE field
  37. * and found in the RATE_ID field below.
  38. * The I3C_SDR0, I3C_SDR1, I3C_SDR2, I3C_SDR3, I3C_SDR4 and I2C_FM rates
  39. * are required, everything else is optional and discoverable in the
  40. * Data Transfer Rate Table. Indicated are typical rates. The actual
  41. * rates may vary slightly and are also specified in the Data Transfer
  42. * Rate Table.
  43. */
  44. #define XFERRATE_I3C_SDR0 0x00 /* 12.5 MHz */
  45. #define XFERRATE_I3C_SDR1 0x01 /* 8 MHz */
  46. #define XFERRATE_I3C_SDR2 0x02 /* 6 MHz */
  47. #define XFERRATE_I3C_SDR3 0x03 /* 4 MHz */
  48. #define XFERRATE_I3C_SDR4 0x04 /* 2 MHz */
  49. #define XFERRATE_I3C_SDR_FM_FMP 0x05 /* 400 KHz / 1 MHz */
  50. #define XFERRATE_I3C_SDR_USER6 0x06 /* User Defined */
  51. #define XFERRATE_I3C_SDR_USER7 0x07 /* User Defined */
  52. #define XFERRATE_I2C_FM 0x00 /* 400 KHz */
  53. #define XFERRATE_I2C_FMP 0x01 /* 1 MHz */
  54. #define XFERRATE_I2C_USER2 0x02 /* User Defined */
  55. #define XFERRATE_I2C_USER3 0x03 /* User Defined */
  56. #define XFERRATE_I2C_USER4 0x04 /* User Defined */
  57. #define XFERRATE_I2C_USER5 0x05 /* User Defined */
  58. #define XFERRATE_I2C_USER6 0x06 /* User Defined */
  59. #define XFERRATE_I2C_USER7 0x07 /* User Defined */
  60. /*
  61. * Master Data Transfer Rate Table Mode ID values.
  62. */
  63. #define XFERRATE_MODE_I3C 0x00
  64. #define XFERRATE_MODE_I2C 0x08
  65. /*
  66. * Master Data Transfer Rate Table Entry Bits Definitions
  67. */
  68. #define XFERRATE_MODE_ID GENMASK(31, 28)
  69. #define XFERRATE_RATE_ID GENMASK(22, 20)
  70. #define XFERRATE_ACTUAL_RATE_KHZ GENMASK(19, 0)
  71. #endif