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