static int rtldsa_839x_stp_get(struct rtl838x_switch_priv *priv, u16 msti, int port, u32 port_state[])
{
+ struct table_reg *r = rtl_table_get(RTL8390_TBL_0, 5);
int idx = 3 - ((port + 12) / 16);
int bit = 2 * ((port + 12) % 16);
- u32 cmd = 1 << 16 | /* Execute cmd */
- 0 << 15 | /* Read */
- 5 << 12 | /* Table type 0b101 */
- (msti & 0xfff);
- priv->r->exec_tbl0_cmd(cmd);
+ rtl_table_read(r, msti);
for (int i = 0; i < 4; i++)
- port_state[i] = sw_r32(priv->r->tbl_access_data_0(i));
+ port_state[i] = sw_r32(rtl_table_data(r, i));
+ rtl_table_release(r);
return (port_state[idx] >> bit) & 3;
}
static void rtl839x_stp_set(struct rtl838x_switch_priv *priv, u16 msti, u32 port_state[])
{
- u32 cmd = 1 << 16 | /* Execute cmd */
- 1 << 15 | /* Write */
- 5 << 12 | /* Table type 0b101 */
- (msti & 0xfff);
+ struct table_reg *r = rtl_table_get(RTL8390_TBL_0, 5);
+
for (int i = 0; i < 4; i++)
- sw_w32(port_state[i], priv->r->tbl_access_data_0(i));
- priv->r->exec_tbl0_cmd(cmd);
+ sw_w32(port_state[i], rtl_table_data(r, i));
+ rtl_table_write(r, msti);
+ rtl_table_release(r);
}
/* Enables or disables the EEE/EEEP capability of a port */