@ -655,6 +655,49 @@ static int rtl8366s_sw_set_blinkrate(struct switch_dev *dev,
val - > value . i ) ;
val - > value . i ) ;
}
}
static int rtl8366s_sw_get_max_length ( struct switch_dev * dev ,
const struct switch_attr * attr ,
struct switch_val * val )
{
struct rtl8366_smi * smi = sw_to_rtl8366_smi ( dev ) ;
u32 data ;
rtl8366_smi_read_reg ( smi , RTL8366S_SGCR , & data ) ;
val - > value . i = ( ( data & ( RTL8366S_SGCR_MAX_LENGTH_MASK ) ) > > 4 ) ;
return 0 ;
}
static int rtl8366s_sw_set_max_length ( struct switch_dev * dev ,
const struct switch_attr * attr ,
struct switch_val * val )
{
struct rtl8366_smi * smi = sw_to_rtl8366_smi ( dev ) ;
char length_code ;
switch ( val - > value . i ) {
case 0 :
length_code = RTL8366S_SGCR_MAX_LENGTH_1522 ;
break ;
case 1 :
length_code = RTL8366S_SGCR_MAX_LENGTH_1536 ;
break ;
case 2 :
length_code = RTL8366S_SGCR_MAX_LENGTH_1552 ;
break ;
case 3 :
length_code = RTL8366S_SGCR_MAX_LENGTH_16000 ;
break ;
default :
return - EINVAL ;
}
return rtl8366_smi_rmwr ( smi , RTL8366S_SGCR ,
RTL8366S_SGCR_MAX_LENGTH_MASK ,
length_code ) ;
}
static int rtl8366s_sw_get_learning_enable ( struct switch_dev * dev ,
static int rtl8366s_sw_get_learning_enable ( struct switch_dev * dev ,
const struct switch_attr * attr ,
const struct switch_attr * attr ,
struct switch_val * val )
struct switch_val * val )
@ -863,6 +906,14 @@ static struct switch_attr rtl8366s_globals[] = {
. set = rtl8366s_sw_set_blinkrate ,
. set = rtl8366s_sw_set_blinkrate ,
. get = rtl8366s_sw_get_blinkrate ,
. get = rtl8366s_sw_get_blinkrate ,
. max = 5
. max = 5
} , {
. type = SWITCH_TYPE_INT ,
. name = " max_length " ,
. description = " Get/Set the maximum length of valid packets "
" (0 = 1522, 1 = 1536, 2 = 1552, 3 = 16000 (9216?)) " ,
. set = rtl8366s_sw_set_max_length ,
. get = rtl8366s_sw_get_max_length ,
. max = 3 ,
} ,
} ,
} ;
} ;