void hns_ppe_com_srst(struct ppe_common_cb *ppe_common, u32 val) { int comm_index = ppe_common->comm_index; struct dsaf_device *dsaf_dev = ppe_common->dsaf_dev; u32 reg_val; u32 reg_addr; if (comm_index == HNS_DSAF_COMM_SERVICE_NW_IDX) { reg_val = RESET_REQ_OR_DREQ; if (val == 0) reg_addr = DSAF_SUB_SC_RCB_PPE_COM_RESET_REQ_REG; else reg_addr = DSAF_SUB_SC_RCB_PPE_COM_RESET_DREQ_REG; } else { reg_val = 0x100 << (comm_index - 1); if (val == 0) reg_addr = DSAF_SUB_SC_PPE_RESET_REQ_REG; else reg_addr = DSAF_SUB_SC_PPE_RESET_DREQ_REG; } dsaf_write_reg(dsaf_dev->sc_base, reg_addr, reg_val); }
/** * hns_xgmac__lf_rf_control_init - initial the lf rf control register * @mac_drv: mac driver */ static void hns_xgmac_lf_rf_control_init(struct mac_driver *mac_drv) { u32 val = 0; dsaf_set_bit(val, XGMAC_UNIDIR_EN_B, 0); dsaf_set_bit(val, XGMAC_RF_TX_EN_B, 1); dsaf_set_field(val, XGMAC_LF_RF_INSERT_M, XGMAC_LF_RF_INSERT_S, 0); dsaf_write_reg(mac_drv, XGMAC_MAC_TX_LF_RF_CONTROL_REG, val); }
void hns_dsaf_rst(struct dsaf_device *dsaf_dev, u32 val) { u32 xbar_reg_addr; u32 nt_reg_addr; if (!val) { xbar_reg_addr = DSAF_SUB_SC_XBAR_RESET_REQ_REG; nt_reg_addr = DSAF_SUB_SC_NT_RESET_REQ_REG; } else { xbar_reg_addr = DSAF_SUB_SC_XBAR_RESET_DREQ_REG; nt_reg_addr = DSAF_SUB_SC_NT_RESET_DREQ_REG; } dsaf_write_reg(dsaf_dev->sc_base, xbar_reg_addr, RESET_REQ_OR_DREQ); dsaf_write_reg(dsaf_dev->sc_base, nt_reg_addr, RESET_REQ_OR_DREQ); }
void hns_dsaf_ge_srst_by_port(struct dsaf_device *dsaf_dev, u32 port, u32 val) { u32 reg_val_1; u32 reg_val_2; if (port >= DSAF_GE_NUM) return; if (port < DSAF_SERVICE_NW_NUM) { reg_val_1 = 0x1 << port; reg_val_2 = 0x1041041 << port; if (val == 0) { dsaf_write_reg(dsaf_dev->sc_base, DSAF_SUB_SC_GE_RESET_REQ1_REG, reg_val_1); dsaf_write_reg(dsaf_dev->sc_base, DSAF_SUB_SC_GE_RESET_REQ0_REG, reg_val_2); } else { dsaf_write_reg(dsaf_dev->sc_base, DSAF_SUB_SC_GE_RESET_DREQ0_REG, reg_val_2); dsaf_write_reg(dsaf_dev->sc_base, DSAF_SUB_SC_GE_RESET_DREQ1_REG, reg_val_1); } } else { reg_val_1 = 0x15540 << (port - 6); reg_val_2 = 0x100 << (port - 6); if (val == 0) { dsaf_write_reg(dsaf_dev->sc_base, DSAF_SUB_SC_GE_RESET_REQ1_REG, reg_val_1); dsaf_write_reg(dsaf_dev->sc_base, DSAF_SUB_SC_PPE_RESET_REQ_REG, reg_val_2); } else { dsaf_write_reg(dsaf_dev->sc_base, DSAF_SUB_SC_GE_RESET_DREQ1_REG, reg_val_1); dsaf_write_reg(dsaf_dev->sc_base, DSAF_SUB_SC_PPE_RESET_DREQ_REG, reg_val_2); } } }
void hns_ppe_srst_by_port(struct dsaf_device *dsaf_dev, u32 port, u32 val) { u32 reg_val = 0; u32 reg_addr; reg_val |= RESET_REQ_OR_DREQ << port; if (val == 0) reg_addr = DSAF_SUB_SC_PPE_RESET_REQ_REG; else reg_addr = DSAF_SUB_SC_PPE_RESET_DREQ_REG; dsaf_write_reg(dsaf_dev->sc_base, reg_addr, reg_val); }
void hns_dsaf_xge_core_srst_by_port(struct dsaf_device *dsaf_dev, u32 port, u32 val) { u32 reg_val = 0; u32 reg_addr; if (port >= DSAF_XGE_NUM) return; reg_val |= XGMAC_TRX_CORE_SRST_M << port; if (val == 0) reg_addr = DSAF_SUB_SC_XGE_RESET_REQ_REG; else reg_addr = DSAF_SUB_SC_XGE_RESET_DREQ_REG; dsaf_write_reg(dsaf_dev->sc_base, reg_addr, reg_val); }
void hns_dsaf_xge_srst_by_port(struct dsaf_device *dsaf_dev, u32 port, u32 val) { u32 reg_val = 0; u32 reg_addr; if (port >= DSAF_XGE_NUM) return; reg_val |= RESET_REQ_OR_DREQ; reg_val |= 0x2082082 << port; if (val == 0) reg_addr = DSAF_SUB_SC_XGE_RESET_REQ_REG; else reg_addr = DSAF_SUB_SC_XGE_RESET_DREQ_REG; dsaf_write_reg(dsaf_dev->sc_base, reg_addr, reg_val); }