static int tricn_init(adapter_t *adapter) { int i, sme = 1; if (!(readl(adapter->regs + A_ESPI_RX_RESET) & F_RX_CLK_STATUS)) { CH_ERR("%s: ESPI clock not ready\n", adapter->name); return -1; } writel(F_ESPI_RX_CORE_RST, adapter->regs + A_ESPI_RX_RESET); if (sme) { tricn_write(adapter, 0, 0, 0, TRICN_CNFG, 0x81); tricn_write(adapter, 0, 1, 0, TRICN_CNFG, 0x81); tricn_write(adapter, 0, 2, 0, TRICN_CNFG, 0x81); } for (i = 1; i <= 8; i++) tricn_write(adapter, 0, 0, i, TRICN_CNFG, 0xf1); for (i = 1; i <= 2; i++) tricn_write(adapter, 0, 1, i, TRICN_CNFG, 0xf1); for (i = 1; i <= 3; i++) tricn_write(adapter, 0, 2, i, TRICN_CNFG, 0xe1); tricn_write(adapter, 0, 2, 4, TRICN_CNFG, 0xf1); tricn_write(adapter, 0, 2, 5, TRICN_CNFG, 0xe1); tricn_write(adapter, 0, 2, 6, TRICN_CNFG, 0xf1); tricn_write(adapter, 0, 2, 7, TRICN_CNFG, 0x80); tricn_write(adapter, 0, 2, 8, TRICN_CNFG, 0xf1); writel(F_ESPI_RX_CORE_RST | F_ESPI_RX_LNK_RST, adapter->regs + A_ESPI_RX_RESET); return 0; }
/* 3. Deassert rx_reset_link */ static int tricn_init(adapter_t *adapter) { int i = 0; int sme = 1; int stat = 0; int timeout = 0; int is_ready = 0; int dynamic_deskew = 0; if (dynamic_deskew) sme = 0; /* 1 */ timeout=1000; do { stat = readl(adapter->regs + A_ESPI_RX_RESET); is_ready = (stat & 0x4); timeout--; udelay(5); } while (!is_ready || (timeout==0)); writel(0x2, adapter->regs + A_ESPI_RX_RESET); if (timeout==0) { CH_ERR("ESPI : ERROR : Timeout tricn_init() \n"); t1_fatal_err(adapter); } /* 2 */ if (sme) { tricn_write(adapter, 0, 0, 0, TRICN_CNFG, 0x81); tricn_write(adapter, 0, 1, 0, TRICN_CNFG, 0x81); tricn_write(adapter, 0, 2, 0, TRICN_CNFG, 0x81); } for (i=1; i<= 8; i++) tricn_write(adapter, 0, 0, i, TRICN_CNFG, 0xf1); for (i=1; i<= 2; i++) tricn_write(adapter, 0, 1, i, TRICN_CNFG, 0xf1); for (i=1; i<= 3; i++) tricn_write(adapter, 0, 2, i, TRICN_CNFG, 0xe1); for (i=4; i<= 4; i++) tricn_write(adapter, 0, 2, i, TRICN_CNFG, 0xf1); for (i=5; i<= 5; i++) tricn_write(adapter, 0, 2, i, TRICN_CNFG, 0xe1); for (i=6; i<= 6; i++) tricn_write(adapter, 0, 2, i, TRICN_CNFG, 0xf1); for (i=7; i<= 7; i++) tricn_write(adapter, 0, 2, i, TRICN_CNFG, 0x80); for (i=8; i<= 8; i++) tricn_write(adapter, 0, 2, i, TRICN_CNFG, 0xf1); /* 3 */ writel(0x3, adapter->regs + A_ESPI_RX_RESET); return 0; }