1d8c838a5SMaxime Chevallier /* SPDX-License-Identifier: GPL-2.0-or-later */ 2d8c838a5SMaxime Chevallier /* 3d8c838a5SMaxime Chevallier * link caps internal header, for link modes <-> capabilities <-> interfaces 4d8c838a5SMaxime Chevallier * conversions. 5d8c838a5SMaxime Chevallier */ 6d8c838a5SMaxime Chevallier 7d8c838a5SMaxime Chevallier #ifndef __PHY_CAPS_H 8d8c838a5SMaxime Chevallier #define __PHY_CAPS_H 9d8c838a5SMaxime Chevallier 10d8c838a5SMaxime Chevallier #include <linux/ethtool.h> 11d8c838a5SMaxime Chevallier 12d8c838a5SMaxime Chevallier enum { 13d8c838a5SMaxime Chevallier LINK_CAPA_10HD = 0, 14d8c838a5SMaxime Chevallier LINK_CAPA_10FD, 15d8c838a5SMaxime Chevallier LINK_CAPA_100HD, 16d8c838a5SMaxime Chevallier LINK_CAPA_100FD, 17d8c838a5SMaxime Chevallier LINK_CAPA_1000HD, 18d8c838a5SMaxime Chevallier LINK_CAPA_1000FD, 19d8c838a5SMaxime Chevallier LINK_CAPA_2500FD, 20d8c838a5SMaxime Chevallier LINK_CAPA_5000FD, 21d8c838a5SMaxime Chevallier LINK_CAPA_10000FD, 22d8c838a5SMaxime Chevallier LINK_CAPA_20000FD, 23d8c838a5SMaxime Chevallier LINK_CAPA_25000FD, 24d8c838a5SMaxime Chevallier LINK_CAPA_40000FD, 25d8c838a5SMaxime Chevallier LINK_CAPA_50000FD, 26d8c838a5SMaxime Chevallier LINK_CAPA_56000FD, 27d8c838a5SMaxime Chevallier LINK_CAPA_100000FD, 28d8c838a5SMaxime Chevallier LINK_CAPA_200000FD, 29d8c838a5SMaxime Chevallier LINK_CAPA_400000FD, 30d8c838a5SMaxime Chevallier LINK_CAPA_800000FD, 31d8c838a5SMaxime Chevallier 32d8c838a5SMaxime Chevallier __LINK_CAPA_MAX, 33d8c838a5SMaxime Chevallier }; 34d8c838a5SMaxime Chevallier 35d8c838a5SMaxime Chevallier struct link_capabilities { 36d8c838a5SMaxime Chevallier int speed; 37d8c838a5SMaxime Chevallier unsigned int duplex; 38d8c838a5SMaxime Chevallier __ETHTOOL_DECLARE_LINK_MODE_MASK(linkmodes); 39d8c838a5SMaxime Chevallier }; 40d8c838a5SMaxime Chevallier 41d8c838a5SMaxime Chevallier int phy_caps_init(void); 42d8c838a5SMaxime Chevallier 43*8c8c4a87SMaxime Chevallier size_t phy_caps_speeds(unsigned int *speeds, size_t size, 44*8c8c4a87SMaxime Chevallier unsigned long *linkmodes); 45*8c8c4a87SMaxime Chevallier 46d8c838a5SMaxime Chevallier #endif /* __PHY_CAPS_H */ 47