• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/drivers/net/chelsio/

Lines Matching refs:espi

3  * File: espi.c                                                              *
42 #include "espi.h"
118 void t1_espi_intr_enable(struct peespi *espi)
120 u32 enable, pl_intr = readl(espi->adapter->regs + A_PL_ENABLE);
129 enable = t1_is_T1B(espi->adapter) ? 0 : ESPI_INTR_MASK;
130 writel(enable, espi->adapter->regs + A_ESPI_INTR_ENABLE);
131 writel(pl_intr | F_PL_INTR_ESPI, espi->adapter->regs + A_PL_ENABLE);
134 void t1_espi_intr_clear(struct peespi *espi)
136 readl(espi->adapter->regs + A_ESPI_DIP2_ERR_COUNT);
137 writel(0xffffffff, espi->adapter->regs + A_ESPI_INTR_STATUS);
138 writel(F_PL_INTR_ESPI, espi->adapter->regs + A_PL_CAUSE);
141 void t1_espi_intr_disable(struct peespi *espi)
143 u32 pl_intr = readl(espi->adapter->regs + A_PL_ENABLE);
145 writel(0, espi->adapter->regs + A_ESPI_INTR_ENABLE);
146 writel(pl_intr & ~F_PL_INTR_ESPI, espi->adapter->regs + A_PL_ENABLE);
149 int t1_espi_intr_handler(struct peespi *espi)
151 u32 status = readl(espi->adapter->regs + A_ESPI_INTR_STATUS);
154 espi->intr_cnt.DIP4_err++;
156 espi->intr_cnt.rx_drops++;
158 espi->intr_cnt.tx_drops++;
160 espi->intr_cnt.rx_ovflw++;
162 espi->intr_cnt.parity_err++;
164 espi->intr_cnt.DIP2_parity_err++;
170 readl(espi->adapter->regs + A_ESPI_DIP2_ERR_COUNT);
177 if (status && t1_is_T1B(espi->adapter))
179 writel(status, espi->adapter->regs + A_ESPI_INTR_STATUS);
183 const struct espi_intr_counts *t1_espi_get_intr_counts(struct peespi *espi)
185 return &espi->intr_cnt;
238 int t1_espi_init(struct peespi *espi, int mac_type, int nports)
241 adapter_t *adapter = espi->adapter;
270 espi->misc_ctrl = readl(adapter->regs + A_ESPI_MISC_CONTROL);
271 espi->misc_ctrl &= ~MON_MASK;
272 espi->misc_ctrl |= F_MONITORED_DIRECTION;
274 espi->misc_ctrl |= F_MONITORED_INTERFACE;
275 writel(espi->misc_ctrl, adapter->regs + A_ESPI_MISC_CONTROL);
276 spin_lock_init(&espi->lock);
282 void t1_espi_destroy(struct peespi *espi)
284 kfree(espi);
289 struct peespi *espi = kzalloc(sizeof(*espi), GFP_KERNEL);
291 if (espi)
292 espi->adapter = adapter;
293 return espi;
298 struct peespi *espi = adapter->espi;
302 spin_lock(&espi->lock);
303 espi->misc_ctrl = (val & ~MON_MASK) |
304 (espi->misc_ctrl & MON_MASK);
305 writel(espi->misc_ctrl, adapter->regs + A_ESPI_MISC_CONTROL);
306 spin_unlock(&espi->lock);
311 struct peespi *espi = adapter->espi;
319 if (!spin_trylock(&espi->lock))
322 spin_lock(&espi->lock);
324 if ((sel != (espi->misc_ctrl & MON_MASK))) {
325 writel(((espi->misc_ctrl & ~MON_MASK) | sel),
328 writel(espi->misc_ctrl, adapter->regs + A_ESPI_MISC_CONTROL);
331 spin_unlock(&espi->lock);
342 struct peespi *espi = adapter->espi;
346 if (!spin_trylock(&espi->lock))
349 spin_lock(&espi->lock);
351 if ((espi->misc_ctrl & MON_MASK) != F_MONITORED_DIRECTION) {
352 espi->misc_ctrl = (espi->misc_ctrl & ~MON_MASK) |
354 writel(espi->misc_ctrl, adapter->regs + A_ESPI_MISC_CONTROL);
358 writel(espi->misc_ctrl | V_MONITORED_PORT_NUM(i),
364 writel(espi->misc_ctrl, adapter->regs + A_ESPI_MISC_CONTROL);
365 spin_unlock(&espi->lock);