mdio-open-alliance.h 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /*
  3. * mdio-open-alliance.h - definition of OPEN Alliance SIG standard registers
  4. */
  5. #ifndef __MDIO_OPEN_ALLIANCE__
  6. #define __MDIO_OPEN_ALLIANCE__
  7. #include <linux/mdio.h>
  8. /* NOTE: all OATC14 registers are located in MDIO_MMD_VEND2 */
  9. /* Open Alliance TC14 (10BASE-T1S) registers */
  10. #define MDIO_OATC14_PLCA_IDVER 0xca00 /* PLCA ID and version */
  11. #define MDIO_OATC14_PLCA_CTRL0 0xca01 /* PLCA Control register 0 */
  12. #define MDIO_OATC14_PLCA_CTRL1 0xca02 /* PLCA Control register 1 */
  13. #define MDIO_OATC14_PLCA_STATUS 0xca03 /* PLCA Status register */
  14. #define MDIO_OATC14_PLCA_TOTMR 0xca04 /* PLCA TO Timer register */
  15. #define MDIO_OATC14_PLCA_BURST 0xca05 /* PLCA BURST mode register */
  16. /* Open Alliance TC14 PLCA IDVER register */
  17. #define MDIO_OATC14_PLCA_IDM 0xff00 /* PLCA MAP ID */
  18. #define MDIO_OATC14_PLCA_VER 0x00ff /* PLCA MAP version */
  19. /* Open Alliance TC14 PLCA CTRL0 register */
  20. #define MDIO_OATC14_PLCA_EN BIT(15) /* PLCA enable */
  21. #define MDIO_OATC14_PLCA_RST BIT(14) /* PLCA reset */
  22. /* Open Alliance TC14 PLCA CTRL1 register */
  23. #define MDIO_OATC14_PLCA_NCNT 0xff00 /* PLCA node count */
  24. #define MDIO_OATC14_PLCA_ID 0x00ff /* PLCA local node ID */
  25. /* Open Alliance TC14 PLCA STATUS register */
  26. #define MDIO_OATC14_PLCA_PST BIT(15) /* PLCA status indication */
  27. /* Open Alliance TC14 PLCA TOTMR register */
  28. #define MDIO_OATC14_PLCA_TOT 0x00ff
  29. /* Open Alliance TC14 PLCA BURST register */
  30. #define MDIO_OATC14_PLCA_MAXBC 0xff00
  31. #define MDIO_OATC14_PLCA_BTMR 0x00ff
  32. /* Version Identifiers */
  33. #define OATC14_IDM 0x0a00
  34. /*
  35. * Open Alliance TC14 (10BASE-T1S) - Advanced Diagnostic Features Registers
  36. *
  37. * Refer to the OPEN Alliance documentation:
  38. * https://opensig.org/automotive-ethernet-specifications/
  39. *
  40. * Specification:
  41. * "10BASE-T1S Advanced Diagnostic PHY Features"
  42. * https://opensig.org/wp-content/uploads/2025/06/OPEN_Alliance_10BASE-T1S_Advanced_PHY_features_for-automotive_Ethernet_V2.1b.pdf
  43. */
  44. /* Advanced Diagnostic Features Capability Register*/
  45. #define MDIO_OATC14_ADFCAP 0xcc00
  46. #define OATC14_ADFCAP_HDD_CAPABILITY GENMASK(10, 8)
  47. #define OATC14_ADFCAP_SQIPLUS_CAPABILITY GENMASK(4, 1)
  48. #define OATC14_ADFCAP_SQI_CAPABILITY BIT(0)
  49. /* Harness Defect Detection Register */
  50. #define MDIO_OATC14_HDD 0xcc01
  51. #define OATC14_HDD_CONTROL BIT(15)
  52. #define OATC14_HDD_READY BIT(14)
  53. #define OATC14_HDD_START_CONTROL BIT(13)
  54. #define OATC14_HDD_VALID BIT(2)
  55. #define OATC14_HDD_SHORT_OPEN_STATUS GENMASK(1, 0)
  56. /* Dynamic Channel Quality SQI Register */
  57. #define MDIO_OATC14_DCQ_SQI 0xcc03
  58. #define OATC14_DCQ_SQI_VALUE GENMASK(2, 0)
  59. /* Dynamic Channel Quality SQI Plus Register */
  60. #define MDIO_OATC14_DCQ_SQIPLUS 0xcc04
  61. #define OATC14_DCQ_SQIPLUS_VALUE GENMASK(7, 0)
  62. /* SQI is supported using 3 bits means 8 levels (0-7) */
  63. #define OATC14_SQI_MAX_LEVEL 7
  64. /* Bus Short/Open Status:
  65. * 0 0 - no fault; everything is ok. (Default)
  66. * 0 1 - detected as an open or missing termination(s)
  67. * 1 0 - detected as a short or extra termination(s)
  68. * 1 1 - fault but fault type not detectable. More details can be available by
  69. * vender specific register if supported.
  70. */
  71. enum oatc14_hdd_status {
  72. OATC14_HDD_STATUS_CABLE_OK = 0,
  73. OATC14_HDD_STATUS_OPEN,
  74. OATC14_HDD_STATUS_SHORT,
  75. OATC14_HDD_STATUS_NOT_DETECTABLE,
  76. };
  77. #endif /* __MDIO_OPEN_ALLIANCE__ */