@@ -3096,19 +3096,12 @@ void phy_get_pause(struct phy_device *phydev, bool *tx_pause, bool *rx_pause)
3096
3096
EXPORT_SYMBOL (phy_get_pause );
3097
3097
3098
3098
#if IS_ENABLED (CONFIG_OF_MDIO )
3099
- static int phy_get_int_delay_property (struct device * dev , const char * name )
3099
+ static int phy_get_u32_property (struct device * dev , const char * name , u32 * val )
3100
3100
{
3101
- s32 int_delay ;
3102
- int ret ;
3103
-
3104
- ret = device_property_read_u32 (dev , name , & int_delay );
3105
- if (ret )
3106
- return ret ;
3107
-
3108
- return int_delay ;
3101
+ return device_property_read_u32 (dev , name , val );
3109
3102
}
3110
3103
#else
3111
- static int phy_get_int_delay_property (struct device * dev , const char * name )
3104
+ static int phy_get_u32_property (struct device * dev , const char * name , u32 * val )
3112
3105
{
3113
3106
return - EINVAL ;
3114
3107
}
@@ -3133,12 +3126,12 @@ static int phy_get_int_delay_property(struct device *dev, const char *name)
3133
3126
s32 phy_get_internal_delay (struct phy_device * phydev , struct device * dev ,
3134
3127
const int * delay_values , int size , bool is_rx )
3135
3128
{
3136
- s32 delay ;
3137
- int i ;
3129
+ int i , ret ;
3130
+ u32 delay ;
3138
3131
3139
3132
if (is_rx ) {
3140
- delay = phy_get_int_delay_property (dev , "rx-internal-delay-ps" );
3141
- if (delay < 0 && size == 0 ) {
3133
+ ret = phy_get_u32_property (dev , "rx-internal-delay-ps" , & delay );
3134
+ if (ret < 0 && size == 0 ) {
3142
3135
if (phydev -> interface == PHY_INTERFACE_MODE_RGMII_ID ||
3143
3136
phydev -> interface == PHY_INTERFACE_MODE_RGMII_RXID )
3144
3137
return 1 ;
@@ -3147,8 +3140,8 @@ s32 phy_get_internal_delay(struct phy_device *phydev, struct device *dev,
3147
3140
}
3148
3141
3149
3142
} else {
3150
- delay = phy_get_int_delay_property (dev , "tx-internal-delay-ps" );
3151
- if (delay < 0 && size == 0 ) {
3143
+ ret = phy_get_u32_property (dev , "tx-internal-delay-ps" , & delay );
3144
+ if (ret < 0 && size == 0 ) {
3152
3145
if (phydev -> interface == PHY_INTERFACE_MODE_RGMII_ID ||
3153
3146
phydev -> interface == PHY_INTERFACE_MODE_RGMII_TXID )
3154
3147
return 1 ;
@@ -3157,8 +3150,8 @@ s32 phy_get_internal_delay(struct phy_device *phydev, struct device *dev,
3157
3150
}
3158
3151
}
3159
3152
3160
- if (delay < 0 )
3161
- return delay ;
3153
+ if (ret < 0 )
3154
+ return ret ;
3162
3155
3163
3156
if (size == 0 )
3164
3157
return delay ;
@@ -3193,6 +3186,30 @@ s32 phy_get_internal_delay(struct phy_device *phydev, struct device *dev,
3193
3186
}
3194
3187
EXPORT_SYMBOL (phy_get_internal_delay );
3195
3188
3189
+ /**
3190
+ * phy_get_tx_amplitude_gain - stores tx amplitude gain in @val
3191
+ * @phydev: phy_device struct
3192
+ * @dev: pointer to the devices device struct
3193
+ * @linkmode: linkmode for which the tx amplitude gain should be retrieved
3194
+ * @val: tx amplitude gain
3195
+ *
3196
+ * Returns: 0 on success, < 0 on failure
3197
+ */
3198
+ int phy_get_tx_amplitude_gain (struct phy_device * phydev , struct device * dev ,
3199
+ enum ethtool_link_mode_bit_indices linkmode ,
3200
+ u32 * val )
3201
+ {
3202
+ switch (linkmode ) {
3203
+ case ETHTOOL_LINK_MODE_100baseT_Full_BIT :
3204
+ return phy_get_u32_property (dev ,
3205
+ "tx-amplitude-100base-tx-percent" ,
3206
+ val );
3207
+ default :
3208
+ return - EINVAL ;
3209
+ }
3210
+ }
3211
+ EXPORT_SYMBOL_GPL (phy_get_tx_amplitude_gain );
3212
+
3196
3213
static int phy_led_set_brightness (struct led_classdev * led_cdev ,
3197
3214
enum led_brightness value )
3198
3215
{
0 commit comments