• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500-V1.0.1.40_1.0.68/src/linux/linux-2.6/drivers/net/chelsio/

Lines Matching defs:cmac

97 static int pmread(struct cmac *cmac, u32 reg, u32 * data32)
99 t1_tpi_read(cmac->adapter, OFFSET(reg), data32);
103 static int pmwrite(struct cmac *cmac, u32 reg, u32 data32)
105 t1_tpi_write(cmac->adapter, OFFSET(reg), data32);
110 static int pm3393_reset(struct cmac *cmac)
123 static int pm3393_interrupt_enable(struct cmac *cmac)
129 pmwrite(cmac, SUNI1x10GEXP_REG_SERDES_3125_INTERRUPT_ENABLE, 0xffff);
130 pmwrite(cmac, SUNI1x10GEXP_REG_XRF_INTERRUPT_ENABLE, 0xffff);
131 pmwrite(cmac, SUNI1x10GEXP_REG_XRF_DIAG_INTERRUPT_ENABLE, 0xffff);
132 pmwrite(cmac, SUNI1x10GEXP_REG_RXOAM_INTERRUPT_ENABLE, 0xffff);
135 pmwrite(cmac, SUNI1x10GEXP_REG_MSTAT_INTERRUPT_MASK_0, 0);
136 pmwrite(cmac, SUNI1x10GEXP_REG_MSTAT_INTERRUPT_MASK_1, 0);
137 pmwrite(cmac, SUNI1x10GEXP_REG_MSTAT_INTERRUPT_MASK_2, 0);
138 pmwrite(cmac, SUNI1x10GEXP_REG_MSTAT_INTERRUPT_MASK_3, 0);
140 pmwrite(cmac, SUNI1x10GEXP_REG_IFLX_FIFO_OVERFLOW_ENABLE, 0xffff);
141 pmwrite(cmac, SUNI1x10GEXP_REG_PL4ODP_INTERRUPT_MASK, 0xffff);
142 pmwrite(cmac, SUNI1x10GEXP_REG_XTEF_INTERRUPT_ENABLE, 0xffff);
143 pmwrite(cmac, SUNI1x10GEXP_REG_TXOAM_INTERRUPT_ENABLE, 0xffff);
144 pmwrite(cmac, SUNI1x10GEXP_REG_RXXG_CONFIG_3, 0xffff);
145 pmwrite(cmac, SUNI1x10GEXP_REG_PL4IO_LOCK_DETECT_MASK, 0xffff);
146 pmwrite(cmac, SUNI1x10GEXP_REG_TXXG_CONFIG_3, 0xffff);
147 pmwrite(cmac, SUNI1x10GEXP_REG_PL4IDU_INTERRUPT_MASK, 0xffff);
148 pmwrite(cmac, SUNI1x10GEXP_REG_EFLX_FIFO_OVERFLOW_ERROR_ENABLE, 0xffff);
152 pmwrite(cmac, SUNI1x10GEXP_REG_GLOBAL_INTERRUPT_ENABLE,
156 pl_intr = readl(cmac->adapter->regs + A_PL_ENABLE);
158 writel(pl_intr, cmac->adapter->regs + A_PL_ENABLE);
162 static int pm3393_interrupt_disable(struct cmac *cmac)
167 pmwrite(cmac, SUNI1x10GEXP_REG_SERDES_3125_INTERRUPT_ENABLE, 0);
168 pmwrite(cmac, SUNI1x10GEXP_REG_XRF_INTERRUPT_ENABLE, 0);
169 pmwrite(cmac, SUNI1x10GEXP_REG_XRF_DIAG_INTERRUPT_ENABLE, 0);
170 pmwrite(cmac, SUNI1x10GEXP_REG_RXOAM_INTERRUPT_ENABLE, 0);
171 pmwrite(cmac, SUNI1x10GEXP_REG_MSTAT_INTERRUPT_MASK_0, 0);
172 pmwrite(cmac, SUNI1x10GEXP_REG_MSTAT_INTERRUPT_MASK_1, 0);
173 pmwrite(cmac, SUNI1x10GEXP_REG_MSTAT_INTERRUPT_MASK_2, 0);
174 pmwrite(cmac, SUNI1x10GEXP_REG_MSTAT_INTERRUPT_MASK_3, 0);
175 pmwrite(cmac, SUNI1x10GEXP_REG_IFLX_FIFO_OVERFLOW_ENABLE, 0);
176 pmwrite(cmac, SUNI1x10GEXP_REG_PL4ODP_INTERRUPT_MASK, 0);
177 pmwrite(cmac, SUNI1x10GEXP_REG_XTEF_INTERRUPT_ENABLE, 0);
178 pmwrite(cmac, SUNI1x10GEXP_REG_TXOAM_INTERRUPT_ENABLE, 0);
179 pmwrite(cmac, SUNI1x10GEXP_REG_RXXG_CONFIG_3, 0);
180 pmwrite(cmac, SUNI1x10GEXP_REG_PL4IO_LOCK_DETECT_MASK, 0);
181 pmwrite(cmac, SUNI1x10GEXP_REG_TXXG_CONFIG_3, 0);
182 pmwrite(cmac, SUNI1x10GEXP_REG_PL4IDU_INTERRUPT_MASK, 0);
183 pmwrite(cmac, SUNI1x10GEXP_REG_EFLX_FIFO_OVERFLOW_ERROR_ENABLE, 0);
186 pmwrite(cmac, SUNI1x10GEXP_REG_GLOBAL_INTERRUPT_ENABLE, 0);
189 t1_tpi_read(cmac->adapter, A_ELMER0_INT_ENABLE, &elmer);
191 t1_tpi_write(cmac->adapter, A_ELMER0_INT_ENABLE, elmer);
201 static int pm3393_interrupt_clear(struct cmac *cmac)
210 pmread(cmac, SUNI1x10GEXP_REG_SERDES_3125_INTERRUPT_STATUS, &val32);
211 pmread(cmac, SUNI1x10GEXP_REG_XRF_INTERRUPT_STATUS, &val32);
212 pmread(cmac, SUNI1x10GEXP_REG_XRF_DIAG_INTERRUPT_STATUS, &val32);
213 pmread(cmac, SUNI1x10GEXP_REG_RXOAM_INTERRUPT_STATUS, &val32);
214 pmread(cmac, SUNI1x10GEXP_REG_PL4ODP_INTERRUPT, &val32);
215 pmread(cmac, SUNI1x10GEXP_REG_XTEF_INTERRUPT_STATUS, &val32);
216 pmread(cmac, SUNI1x10GEXP_REG_IFLX_FIFO_OVERFLOW_INTERRUPT, &val32);
217 pmread(cmac, SUNI1x10GEXP_REG_TXOAM_INTERRUPT_STATUS, &val32);
218 pmread(cmac, SUNI1x10GEXP_REG_RXXG_INTERRUPT, &val32);
219 pmread(cmac, SUNI1x10GEXP_REG_TXXG_INTERRUPT, &val32);
220 pmread(cmac, SUNI1x10GEXP_REG_PL4IDU_INTERRUPT, &val32);
221 pmread(cmac, SUNI1x10GEXP_REG_EFLX_FIFO_OVERFLOW_ERROR_INDICATION,
223 pmread(cmac, SUNI1x10GEXP_REG_PL4IO_LOCK_DETECT_STATUS, &val32);
224 pmread(cmac, SUNI1x10GEXP_REG_PL4IO_LOCK_DETECT_CHANGE, &val32);
228 pmread(cmac, SUNI1x10GEXP_REG_MASTER_INTERRUPT_STATUS, &val32);
232 t1_tpi_read(cmac->adapter, A_ELMER0_INT_CAUSE, &elmer);
234 t1_tpi_write(cmac->adapter, A_ELMER0_INT_CAUSE, elmer);
238 pl_intr = readl(cmac->adapter->regs + A_PL_CAUSE);
240 writel(pl_intr, cmac->adapter->regs + A_PL_CAUSE);
246 static int pm3393_interrupt_handler(struct cmac *cmac)
251 pmread(cmac, SUNI1x10GEXP_REG_MASTER_INTERRUPT_STATUS,
253 CH_DBG(cmac->adapter, INTR, "PM3393 intr cause 0x%x\n",
256 pm3393_interrupt_clear(cmac);
261 static int pm3393_enable(struct cmac *cmac, int which)
264 pmwrite(cmac, SUNI1x10GEXP_REG_RXXG_CONFIG_1,
270 if (cmac->instance->fc & PAUSE_RX)
272 if (cmac->instance->fc & PAUSE_TX)
274 pmwrite(cmac, SUNI1x10GEXP_REG_TXXG_CONFIG_1, val);
277 cmac->instance->enabled |= which;
281 static int pm3393_enable_port(struct cmac *cmac, int which)
284 pmwrite(cmac, SUNI1x10GEXP_REG_MSTAT_CONTROL,
287 memset(&cmac->stats, 0, sizeof(struct cmac_statistics));
289 pm3393_enable(cmac, which);
291 t1_link_changed(cmac->adapter, 0);
295 static int pm3393_disable(struct cmac *cmac, int which)
298 pmwrite(cmac, SUNI1x10GEXP_REG_RXXG_CONFIG_1, RXXG_CONF1_VAL);
300 pmwrite(cmac, SUNI1x10GEXP_REG_TXXG_CONFIG_1, TXXG_CONF1_VAL);
308 cmac->instance->enabled &= ~which;
312 static int pm3393_loopback_enable(struct cmac *cmac)
317 static int pm3393_loopback_disable(struct cmac *cmac)
322 static int pm3393_set_mtu(struct cmac *cmac, int mtu)
324 int enabled = cmac->instance->enabled;
333 pm3393_disable(cmac, MAC_DIRECTION_RX | MAC_DIRECTION_TX);
335 pmwrite(cmac, SUNI1x10GEXP_REG_RXXG_MAX_FRAME_LENGTH, mtu);
336 pmwrite(cmac, SUNI1x10GEXP_REG_TXXG_MAX_FRAME_SIZE, mtu);
339 pm3393_enable(cmac, enabled);
343 static int pm3393_set_rx_mode(struct cmac *cmac, struct t1_rx_mode *rm)
345 int enabled = cmac->instance->enabled & MAC_DIRECTION_RX;
350 pm3393_disable(cmac, MAC_DIRECTION_RX);
352 pmread(cmac, SUNI1x10GEXP_REG_RXXG_ADDRESS_FILTER_CONTROL_2, &rx_mode);
355 pmwrite(cmac, SUNI1x10GEXP_REG_RXXG_ADDRESS_FILTER_CONTROL_2,
364 pmwrite(cmac, SUNI1x10GEXP_REG_RXXG_MULTICAST_HASH_LOW, 0xffff);
365 pmwrite(cmac, SUNI1x10GEXP_REG_RXXG_MULTICAST_HASH_MIDLOW, 0xffff);
366 pmwrite(cmac, SUNI1x10GEXP_REG_RXXG_MULTICAST_HASH_MIDHIGH, 0xffff);
367 pmwrite(cmac, SUNI1x10GEXP_REG_RXXG_MULTICAST_HASH_HIGH, 0xffff);
379 pmwrite(cmac, SUNI1x10GEXP_REG_RXXG_MULTICAST_HASH_LOW, mc_filter[0]);
380 pmwrite(cmac, SUNI1x10GEXP_REG_RXXG_MULTICAST_HASH_MIDLOW, mc_filter[1]);
381 pmwrite(cmac, SUNI1x10GEXP_REG_RXXG_MULTICAST_HASH_MIDHIGH, mc_filter[2]);
382 pmwrite(cmac, SUNI1x10GEXP_REG_RXXG_MULTICAST_HASH_HIGH, mc_filter[3]);
386 pmwrite(cmac, SUNI1x10GEXP_REG_RXXG_ADDRESS_FILTER_CONTROL_2, (u16)rx_mode);
389 pm3393_enable(cmac, MAC_DIRECTION_RX);
394 static int pm3393_get_speed_duplex_fc(struct cmac *cmac, int *speed,
402 *fc = cmac->instance->fc;
406 static int pm3393_set_speed_duplex_fc(struct cmac *cmac, int speed, int duplex,
416 if (fc != cmac->instance->fc) {
417 cmac->instance->fc = (u8) fc;
418 if (cmac->instance->enabled & MAC_DIRECTION_TX)
419 pm3393_enable(cmac, MAC_DIRECTION_TX);
442 static const struct cmac_statistics *pm3393_update_statistics(struct cmac *mac,
512 static int pm3393_macaddress_get(struct cmac *cmac, u8 mac_addr[6])
514 memcpy(mac_addr, cmac->instance->mac_addr, 6);
518 static int pm3393_macaddress_set(struct cmac *cmac, u8 ma[6])
520 u32 val, lo, mid, hi, enabled = cmac->instance->enabled;
541 memcpy(cmac->instance->mac_addr, ma, 6);
549 pm3393_disable(cmac, MAC_DIRECTION_RX | MAC_DIRECTION_TX);
552 pmwrite(cmac, SUNI1x10GEXP_REG_RXXG_SA_15_0, lo);
553 pmwrite(cmac, SUNI1x10GEXP_REG_RXXG_SA_31_16, mid);
554 pmwrite(cmac, SUNI1x10GEXP_REG_RXXG_SA_47_32, hi);
557 pmwrite(cmac, SUNI1x10GEXP_REG_TXXG_SA_15_0, lo);
558 pmwrite(cmac, SUNI1x10GEXP_REG_TXXG_SA_31_16, mid);
559 pmwrite(cmac, SUNI1x10GEXP_REG_TXXG_SA_47_32, hi);
565 pmread(cmac, SUNI1x10GEXP_REG_RXXG_ADDRESS_FILTER_CONTROL_0, &val);
567 pmwrite(cmac, SUNI1x10GEXP_REG_RXXG_ADDRESS_FILTER_CONTROL_0, val);
569 pmwrite(cmac, SUNI1x10GEXP_REG_RXXG_EXACT_MATCH_ADDR_1_LOW, lo);
570 pmwrite(cmac, SUNI1x10GEXP_REG_RXXG_EXACT_MATCH_ADDR_1_MID, mid);
571 pmwrite(cmac, SUNI1x10GEXP_REG_RXXG_EXACT_MATCH_ADDR_1_HIGH, hi);
574 pmwrite(cmac, SUNI1x10GEXP_REG_RXXG_ADDRESS_FILTER_CONTROL_0, val);
577 pm3393_enable(cmac, enabled);
581 static void pm3393_destroy(struct cmac *cmac)
583 kfree(cmac);
606 static struct cmac *pm3393_mac_create(adapter_t *adapter, int index)
608 struct cmac *cmac;
610 cmac = kzalloc(sizeof(*cmac) + sizeof(cmac_instance), GFP_KERNEL);
611 if (!cmac)
614 cmac->ops = &pm3393_ops;
615 cmac->instance = (cmac_instance *) (cmac + 1);
616 cmac->adapter = adapter;
617 cmac->instance->fc = PAUSE_TX | PAUSE_RX;
700 return cmac;