Lines Matching full:db

142 #define dm9000_dbg(db, lev, msg...) do {		\  argument
144 dev_dbg(db->dev, msg); \
159 ior(struct board_info *db, int reg) in ior() argument
161 writeb(reg, db->io_addr); in ior()
162 return readb(db->io_data); in ior()
170 iow(struct board_info *db, int reg, int value) in iow() argument
172 writeb(reg, db->io_addr); in iow()
173 writeb(value, db->io_data); in iow()
177 dm9000_reset(struct board_info *db) in dm9000_reset() argument
179 dev_dbg(db->dev, "resetting device\n"); in dm9000_reset()
185 iow(db, DM9000_NCR, NCR_RST | NCR_MAC_LBK); in dm9000_reset()
187 if (ior(db, DM9000_NCR) & 1) in dm9000_reset()
188 dev_err(db->dev, "dm9000 did not respond to first reset\n"); in dm9000_reset()
190 iow(db, DM9000_NCR, 0); in dm9000_reset()
191 iow(db, DM9000_NCR, NCR_RST | NCR_MAC_LBK); in dm9000_reset()
193 if (ior(db, DM9000_NCR) & 1) in dm9000_reset()
194 dev_err(db->dev, "dm9000 did not respond to second reset\n"); in dm9000_reset()
266 static void dm9000_msleep(struct board_info *db, unsigned int ms) in dm9000_msleep() argument
268 if (db->in_suspend || db->in_timeout) in dm9000_msleep()
278 struct board_info *db = netdev_priv(dev); in dm9000_phy_read() local
283 mutex_lock(&db->addr_lock); in dm9000_phy_read()
285 spin_lock_irqsave(&db->lock, flags); in dm9000_phy_read()
288 reg_save = readb(db->io_addr); in dm9000_phy_read()
291 iow(db, DM9000_EPAR, DM9000_PHY | reg); in dm9000_phy_read()
294 iow(db, DM9000_EPCR, EPCR_ERPRR | EPCR_EPOS); in dm9000_phy_read()
296 writeb(reg_save, db->io_addr); in dm9000_phy_read()
297 spin_unlock_irqrestore(&db->lock, flags); in dm9000_phy_read()
299 dm9000_msleep(db, 1); /* Wait read complete */ in dm9000_phy_read()
301 spin_lock_irqsave(&db->lock, flags); in dm9000_phy_read()
302 reg_save = readb(db->io_addr); in dm9000_phy_read()
304 iow(db, DM9000_EPCR, 0x0); /* Clear phyxcer read command */ in dm9000_phy_read()
307 ret = (ior(db, DM9000_EPDRH) << 8) | ior(db, DM9000_EPDRL); in dm9000_phy_read()
310 writeb(reg_save, db->io_addr); in dm9000_phy_read()
311 spin_unlock_irqrestore(&db->lock, flags); in dm9000_phy_read()
313 mutex_unlock(&db->addr_lock); in dm9000_phy_read()
315 dm9000_dbg(db, 5, "phy_read[%02x] -> %04x\n", reg, ret); in dm9000_phy_read()
324 struct board_info *db = netdev_priv(dev); in dm9000_phy_write() local
328 dm9000_dbg(db, 5, "phy_write[%02x] = %04x\n", reg, value); in dm9000_phy_write()
329 if (!db->in_timeout) in dm9000_phy_write()
330 mutex_lock(&db->addr_lock); in dm9000_phy_write()
332 spin_lock_irqsave(&db->lock, flags); in dm9000_phy_write()
335 reg_save = readb(db->io_addr); in dm9000_phy_write()
338 iow(db, DM9000_EPAR, DM9000_PHY | reg); in dm9000_phy_write()
341 iow(db, DM9000_EPDRL, value); in dm9000_phy_write()
342 iow(db, DM9000_EPDRH, value >> 8); in dm9000_phy_write()
345 iow(db, DM9000_EPCR, EPCR_EPOS | EPCR_ERPRW); in dm9000_phy_write()
347 writeb(reg_save, db->io_addr); in dm9000_phy_write()
348 spin_unlock_irqrestore(&db->lock, flags); in dm9000_phy_write()
350 dm9000_msleep(db, 1); /* Wait write complete */ in dm9000_phy_write()
352 spin_lock_irqsave(&db->lock, flags); in dm9000_phy_write()
353 reg_save = readb(db->io_addr); in dm9000_phy_write()
355 iow(db, DM9000_EPCR, 0x0); /* Clear phyxcer write command */ in dm9000_phy_write()
358 writeb(reg_save, db->io_addr); in dm9000_phy_write()
360 spin_unlock_irqrestore(&db->lock, flags); in dm9000_phy_write()
361 if (!db->in_timeout) in dm9000_phy_write()
362 mutex_unlock(&db->addr_lock); in dm9000_phy_write()
371 static void dm9000_set_io(struct board_info *db, int byte_width) in dm9000_set_io() argument
379 db->dumpblk = dm9000_dumpblk_8bit; in dm9000_set_io()
380 db->outblk = dm9000_outblk_8bit; in dm9000_set_io()
381 db->inblk = dm9000_inblk_8bit; in dm9000_set_io()
386 dev_dbg(db->dev, ": 3 byte IO, falling back to 16bit\n"); in dm9000_set_io()
389 db->dumpblk = dm9000_dumpblk_16bit; in dm9000_set_io()
390 db->outblk = dm9000_outblk_16bit; in dm9000_set_io()
391 db->inblk = dm9000_inblk_16bit; in dm9000_set_io()
396 db->dumpblk = dm9000_dumpblk_32bit; in dm9000_set_io()
397 db->outblk = dm9000_outblk_32bit; in dm9000_set_io()
398 db->inblk = dm9000_inblk_32bit; in dm9000_set_io()
403 static void dm9000_schedule_poll(struct board_info *db) in dm9000_schedule_poll() argument
405 if (db->type == TYPE_DM9000E) in dm9000_schedule_poll()
406 schedule_delayed_work(&db->phy_poll, HZ * 2); in dm9000_schedule_poll()
420 dm9000_read_locked(struct board_info *db, int reg) in dm9000_read_locked() argument
425 spin_lock_irqsave(&db->lock, flags); in dm9000_read_locked()
426 ret = ior(db, reg); in dm9000_read_locked()
427 spin_unlock_irqrestore(&db->lock, flags); in dm9000_read_locked()
432 static int dm9000_wait_eeprom(struct board_info *db) in dm9000_wait_eeprom() argument
449 status = dm9000_read_locked(db, DM9000_EPCR); in dm9000_wait_eeprom()
457 dev_dbg(db->dev, "timeout waiting EEPROM\n"); in dm9000_wait_eeprom()
469 dm9000_read_eeprom(struct board_info *db, int offset, u8 *to) in dm9000_read_eeprom() argument
473 if (db->flags & DM9000_PLATF_NO_EEPROM) { in dm9000_read_eeprom()
479 mutex_lock(&db->addr_lock); in dm9000_read_eeprom()
481 spin_lock_irqsave(&db->lock, flags); in dm9000_read_eeprom()
483 iow(db, DM9000_EPAR, offset); in dm9000_read_eeprom()
484 iow(db, DM9000_EPCR, EPCR_ERPRR); in dm9000_read_eeprom()
486 spin_unlock_irqrestore(&db->lock, flags); in dm9000_read_eeprom()
488 dm9000_wait_eeprom(db); in dm9000_read_eeprom()
493 spin_lock_irqsave(&db->lock, flags); in dm9000_read_eeprom()
495 iow(db, DM9000_EPCR, 0x0); in dm9000_read_eeprom()
497 to[0] = ior(db, DM9000_EPDRL); in dm9000_read_eeprom()
498 to[1] = ior(db, DM9000_EPDRH); in dm9000_read_eeprom()
500 spin_unlock_irqrestore(&db->lock, flags); in dm9000_read_eeprom()
502 mutex_unlock(&db->addr_lock); in dm9000_read_eeprom()
509 dm9000_write_eeprom(struct board_info *db, int offset, u8 *data) in dm9000_write_eeprom() argument
513 if (db->flags & DM9000_PLATF_NO_EEPROM) in dm9000_write_eeprom()
516 mutex_lock(&db->addr_lock); in dm9000_write_eeprom()
518 spin_lock_irqsave(&db->lock, flags); in dm9000_write_eeprom()
519 iow(db, DM9000_EPAR, offset); in dm9000_write_eeprom()
520 iow(db, DM9000_EPDRH, data[1]); in dm9000_write_eeprom()
521 iow(db, DM9000_EPDRL, data[0]); in dm9000_write_eeprom()
522 iow(db, DM9000_EPCR, EPCR_WEP | EPCR_ERPRW); in dm9000_write_eeprom()
523 spin_unlock_irqrestore(&db->lock, flags); in dm9000_write_eeprom()
525 dm9000_wait_eeprom(db); in dm9000_write_eeprom()
529 spin_lock_irqsave(&db->lock, flags); in dm9000_write_eeprom()
530 iow(db, DM9000_EPCR, 0); in dm9000_write_eeprom()
531 spin_unlock_irqrestore(&db->lock, flags); in dm9000_write_eeprom()
533 mutex_unlock(&db->addr_lock); in dm9000_write_eeprom()
748 static void dm9000_show_carrier(struct board_info *db, in dm9000_show_carrier() argument
752 struct net_device *ndev = db->ndev; in dm9000_show_carrier()
753 struct mii_if_info *mii = &db->mii; in dm9000_show_carrier()
754 unsigned ncr = dm9000_read_locked(db, DM9000_NCR); in dm9000_show_carrier()
758 dev_info(db->dev, in dm9000_show_carrier()
763 dev_info(db->dev, "%s: link down\n", ndev->name); in dm9000_show_carrier()
771 struct board_info *db = container_of(dw, struct board_info, phy_poll); in dm9000_poll_work() local
772 struct net_device *ndev = db->ndev; in dm9000_poll_work()
774 if (db->flags & DM9000_PLATF_SIMPLE_PHY && in dm9000_poll_work()
775 !(db->flags & DM9000_PLATF_EXT_PHY)) { in dm9000_poll_work()
776 unsigned nsr = dm9000_read_locked(db, DM9000_NSR); in dm9000_poll_work()
783 if (netif_msg_link(db)) in dm9000_poll_work()
784 dm9000_show_carrier(db, new_carrier, nsr); in dm9000_poll_work()
792 mii_check_media(&db->mii, netif_msg_link(db), 0); in dm9000_poll_work()
795 dm9000_schedule_poll(db); in dm9000_poll_work()
804 dm9000_release_board(struct platform_device *pdev, struct board_info *db) in dm9000_release_board() argument
808 iounmap(db->io_addr); in dm9000_release_board()
809 iounmap(db->io_data); in dm9000_release_board()
813 if (db->data_req) in dm9000_release_board()
814 release_resource(db->data_req); in dm9000_release_board()
815 kfree(db->data_req); in dm9000_release_board()
817 if (db->addr_req) in dm9000_release_board()
818 release_resource(db->addr_req); in dm9000_release_board()
819 kfree(db->addr_req); in dm9000_release_board()
839 struct board_info *db = netdev_priv(dev); in dm9000_hash_table_unlocked() local
846 dm9000_dbg(db, 1, "entering %s\n", __func__); in dm9000_hash_table_unlocked()
849 iow(db, oft, dev->dev_addr[i]); in dm9000_hash_table_unlocked()
865 iow(db, oft++, hash_table[i]); in dm9000_hash_table_unlocked()
866 iow(db, oft++, hash_table[i] >> 8); in dm9000_hash_table_unlocked()
869 iow(db, DM9000_RCR, rcr); in dm9000_hash_table_unlocked()
875 struct board_info *db = netdev_priv(dev); in dm9000_hash_table() local
878 spin_lock_irqsave(&db->lock, flags); in dm9000_hash_table()
880 spin_unlock_irqrestore(&db->lock, flags); in dm9000_hash_table()
884 dm9000_mask_interrupts(struct board_info *db) in dm9000_mask_interrupts() argument
886 iow(db, DM9000_IMR, IMR_PAR); in dm9000_mask_interrupts()
890 dm9000_unmask_interrupts(struct board_info *db) in dm9000_unmask_interrupts() argument
892 iow(db, DM9000_IMR, db->imr_all); in dm9000_unmask_interrupts()
901 struct board_info *db = netdev_priv(dev); in dm9000_init_dm9000() local
905 dm9000_dbg(db, 1, "entering %s\n", __func__); in dm9000_init_dm9000()
907 dm9000_reset(db); in dm9000_init_dm9000()
908 dm9000_mask_interrupts(db); in dm9000_init_dm9000()
911 db->io_mode = ior(db, DM9000_ISR) >> 6; /* ISR bit7:6 keeps I/O mode */ in dm9000_init_dm9000()
915 iow(db, DM9000_RCSR, in dm9000_init_dm9000()
918 iow(db, DM9000_GPCR, GPCR_GEP_CNTL); /* Let GPIO0 output */ in dm9000_init_dm9000()
919 iow(db, DM9000_GPR, 0); in dm9000_init_dm9000()
924 if (db->type == TYPE_DM9000B) { in dm9000_init_dm9000()
929 ncr = (db->flags & DM9000_PLATF_EXT_PHY) ? NCR_EXT_PHY : 0; in dm9000_init_dm9000()
934 if (db->wake_supported) in dm9000_init_dm9000()
937 iow(db, DM9000_NCR, ncr); in dm9000_init_dm9000()
940 iow(db, DM9000_TCR, 0); /* TX Polling clear */ in dm9000_init_dm9000()
941 iow(db, DM9000_BPTR, 0x3f); /* Less 3Kb, 200us */ in dm9000_init_dm9000()
942 iow(db, DM9000_FCR, 0xff); /* Flow Control */ in dm9000_init_dm9000()
943 iow(db, DM9000_SMCR, 0); /* Special Mode */ in dm9000_init_dm9000()
945 iow(db, DM9000_NSR, NSR_WAKEST | NSR_TX2END | NSR_TX1END); in dm9000_init_dm9000()
946 iow(db, DM9000_ISR, ISR_CLR_STATUS); /* Clear interrupt status */ in dm9000_init_dm9000()
952 if (db->type != TYPE_DM9000E) in dm9000_init_dm9000()
955 db->imr_all = imr; in dm9000_init_dm9000()
958 db->tx_pkt_cnt = 0; in dm9000_init_dm9000()
959 db->queue_pkt_len = 0; in dm9000_init_dm9000()
966 struct board_info *db = netdev_priv(dev); in dm9000_timeout() local
971 spin_lock_irqsave(&db->lock, flags); in dm9000_timeout()
972 db->in_timeout = 1; in dm9000_timeout()
973 reg_save = readb(db->io_addr); in dm9000_timeout()
977 dm9000_unmask_interrupts(db); in dm9000_timeout()
983 writeb(reg_save, db->io_addr); in dm9000_timeout()
984 db->in_timeout = 0; in dm9000_timeout()
985 spin_unlock_irqrestore(&db->lock, flags); in dm9000_timeout()
1019 struct board_info *db = netdev_priv(dev); in dm9000_start_xmit() local
1021 dm9000_dbg(db, 3, "%s:\n", __func__); in dm9000_start_xmit()
1023 if (db->tx_pkt_cnt > 1) in dm9000_start_xmit()
1026 spin_lock_irqsave(&db->lock, flags); in dm9000_start_xmit()
1029 writeb(DM9000_MWCMD, db->io_addr); in dm9000_start_xmit()
1031 (db->outblk)(db->io_data, skb->data, skb->len); in dm9000_start_xmit()
1034 db->tx_pkt_cnt++; in dm9000_start_xmit()
1036 if (db->tx_pkt_cnt == 1) { in dm9000_start_xmit()
1040 db->queue_pkt_len = skb->len; in dm9000_start_xmit()
1041 db->queue_ip_summed = skb->ip_summed; in dm9000_start_xmit()
1045 spin_unlock_irqrestore(&db->lock, flags); in dm9000_start_xmit()
1058 static void dm9000_tx_done(struct net_device *dev, struct board_info *db) in dm9000_tx_done() argument
1060 int tx_status = ior(db, DM9000_NSR); /* Got TX status */ in dm9000_tx_done()
1064 db->tx_pkt_cnt--; in dm9000_tx_done()
1067 if (netif_msg_tx_done(db)) in dm9000_tx_done()
1068 dev_dbg(db->dev, "tx done, NSR %02x\n", tx_status); in dm9000_tx_done()
1071 if (db->tx_pkt_cnt > 0) in dm9000_tx_done()
1072 dm9000_send_packet(dev, db->queue_ip_summed, in dm9000_tx_done()
1073 db->queue_pkt_len); in dm9000_tx_done()
1090 struct board_info *db = netdev_priv(dev); in dm9000_rx() local
1099 ior(db, DM9000_MRCMDX); /* Dummy read */ in dm9000_rx()
1102 rxbyte = readb(db->io_data); in dm9000_rx()
1106 dev_warn(db->dev, "status check fail: %d\n", rxbyte); in dm9000_rx()
1107 iow(db, DM9000_RCR, 0x00); /* Stop Device */ in dm9000_rx()
1116 writeb(DM9000_MRCMD, db->io_addr); in dm9000_rx()
1118 (db->inblk)(db->io_data, &rxhdr, sizeof(rxhdr)); in dm9000_rx()
1122 if (netif_msg_rx_status(db)) in dm9000_rx()
1123 dev_dbg(db->dev, "RX: status %02x, length %04x\n", in dm9000_rx()
1129 if (netif_msg_rx_err(db)) in dm9000_rx()
1130 dev_dbg(db->dev, "RX: Bad Packet (runt)\n"); in dm9000_rx()
1134 dev_dbg(db->dev, "RST: RX Len:%x\n", RxLen); in dm9000_rx()
1143 if (netif_msg_rx_err(db)) in dm9000_rx()
1144 dev_dbg(db->dev, "fifo error\n"); in dm9000_rx()
1148 if (netif_msg_rx_err(db)) in dm9000_rx()
1149 dev_dbg(db->dev, "crc error\n"); in dm9000_rx()
1153 if (netif_msg_rx_err(db)) in dm9000_rx()
1154 dev_dbg(db->dev, "length error\n"); in dm9000_rx()
1167 (db->inblk)(db->io_data, rdptr, RxLen); in dm9000_rx()
1184 (db->dumpblk)(db->io_data, RxLen); in dm9000_rx()
1192 struct board_info *db = netdev_priv(dev); in dm9000_interrupt() local
1197 dm9000_dbg(db, 3, "entering %s\n", __func__); in dm9000_interrupt()
1201 /* holders of db->lock must always block IRQs */ in dm9000_interrupt()
1202 spin_lock_irqsave(&db->lock, flags); in dm9000_interrupt()
1205 reg_save = readb(db->io_addr); in dm9000_interrupt()
1207 dm9000_mask_interrupts(db); in dm9000_interrupt()
1209 int_status = ior(db, DM9000_ISR); /* Got ISR */ in dm9000_interrupt()
1210 iow(db, DM9000_ISR, int_status); /* Clear ISR status */ in dm9000_interrupt()
1212 if (netif_msg_intr(db)) in dm9000_interrupt()
1213 dev_dbg(db->dev, "interrupt status %02x\n", int_status); in dm9000_interrupt()
1221 dm9000_tx_done(dev, db); in dm9000_interrupt()
1223 if (db->type != TYPE_DM9000E) { in dm9000_interrupt()
1226 schedule_delayed_work(&db->phy_poll, 1); in dm9000_interrupt()
1230 dm9000_unmask_interrupts(db); in dm9000_interrupt()
1232 writeb(reg_save, db->io_addr); in dm9000_interrupt()
1234 spin_unlock_irqrestore(&db->lock, flags); in dm9000_interrupt()
1242 struct board_info *db = netdev_priv(dev); in dm9000_wol_interrupt() local
1246 spin_lock_irqsave(&db->lock, flags); in dm9000_wol_interrupt()
1248 nsr = ior(db, DM9000_NSR); in dm9000_wol_interrupt()
1249 wcr = ior(db, DM9000_WCR); in dm9000_wol_interrupt()
1251 dev_dbg(db->dev, "%s: NSR=0x%02x, WCR=0x%02x\n", __func__, nsr, wcr); in dm9000_wol_interrupt()
1255 iow(db, DM9000_NSR, NSR_WAKEST); in dm9000_wol_interrupt()
1258 dev_info(db->dev, "wake by link status change\n"); in dm9000_wol_interrupt()
1260 dev_info(db->dev, "wake by sample packet\n"); in dm9000_wol_interrupt()
1262 dev_info(db->dev, "wake by magic packet\n"); in dm9000_wol_interrupt()
1264 dev_err(db->dev, "wake signalled with no reason? " in dm9000_wol_interrupt()
1268 spin_unlock_irqrestore(&db->lock, flags); in dm9000_wol_interrupt()
1292 struct board_info *db = netdev_priv(dev); in dm9000_open() local
1295 if (netif_msg_ifup(db)) in dm9000_open()
1296 dev_dbg(db->dev, "enabling %s\n", dev->name); in dm9000_open()
1302 dev_warn(db->dev, "WARNING: no IRQ resource flags set.\n"); in dm9000_open()
1307 iow(db, DM9000_GPR, 0); /* REG_1F bit0 activate phyxcer */ in dm9000_open()
1318 dm9000_unmask_interrupts(db); in dm9000_open()
1321 db->dbug_cnt = 0; in dm9000_open()
1323 mii_check_media(&db->mii, netif_msg_link(db), 1); in dm9000_open()
1327 schedule_delayed_work(&db->phy_poll, 1); in dm9000_open()
1335 struct board_info *db = netdev_priv(dev); in dm9000_shutdown() local
1339 iow(db, DM9000_GPR, 0x01); /* Power-Down PHY */ in dm9000_shutdown()
1340 dm9000_mask_interrupts(db); in dm9000_shutdown()
1341 iow(db, DM9000_RCR, 0x00); /* Disable RX */ in dm9000_shutdown()
1351 struct board_info *db = netdev_priv(ndev); in dm9000_stop() local
1353 if (netif_msg_ifdown(db)) in dm9000_stop()
1354 dev_dbg(db->dev, "shutting down %s\n", ndev->name); in dm9000_stop()
1356 cancel_delayed_work_sync(&db->phy_poll); in dm9000_stop()
1416 struct board_info *db; /* Point a board information structure */ in dm9000_probe() local
1482 db = netdev_priv(ndev); in dm9000_probe()
1484 db->dev = &pdev->dev; in dm9000_probe()
1485 db->ndev = ndev; in dm9000_probe()
1487 db->power_supply = power; in dm9000_probe()
1489 spin_lock_init(&db->lock); in dm9000_probe()
1490 mutex_init(&db->addr_lock); in dm9000_probe()
1492 INIT_DELAYED_WORK(&db->phy_poll, dm9000_poll_work); in dm9000_probe()
1494 db->addr_res = platform_get_resource(pdev, IORESOURCE_MEM, 0); in dm9000_probe()
1495 db->data_res = platform_get_resource(pdev, IORESOURCE_MEM, 1); in dm9000_probe()
1497 if (!db->addr_res || !db->data_res) { in dm9000_probe()
1498 dev_err(db->dev, "insufficient resources addr=%p data=%p\n", in dm9000_probe()
1499 db->addr_res, db->data_res); in dm9000_probe()
1510 db->irq_wake = platform_get_irq_optional(pdev, 1); in dm9000_probe()
1511 if (db->irq_wake >= 0) { in dm9000_probe()
1512 dev_dbg(db->dev, "wakeup irq %d\n", db->irq_wake); in dm9000_probe()
1514 ret = request_irq(db->irq_wake, dm9000_wol_interrupt, in dm9000_probe()
1515 IRQF_SHARED, dev_name(db->dev), ndev); in dm9000_probe()
1517 dev_err(db->dev, "cannot get wakeup irq (%d)\n", ret); in dm9000_probe()
1521 ret = irq_set_irq_wake(db->irq_wake, 1); in dm9000_probe()
1523 dev_err(db->dev, "irq %d cannot set wakeup (%d)\n", in dm9000_probe()
1524 db->irq_wake, ret); in dm9000_probe()
1526 irq_set_irq_wake(db->irq_wake, 0); in dm9000_probe()
1527 db->wake_supported = 1; in dm9000_probe()
1532 iosize = resource_size(db->addr_res); in dm9000_probe()
1533 db->addr_req = request_mem_region(db->addr_res->start, iosize, in dm9000_probe()
1536 if (db->addr_req == NULL) { in dm9000_probe()
1537 dev_err(db->dev, "cannot claim address reg area\n"); in dm9000_probe()
1542 db->io_addr = ioremap(db->addr_res->start, iosize); in dm9000_probe()
1544 if (db->io_addr == NULL) { in dm9000_probe()
1545 dev_err(db->dev, "failed to ioremap address reg\n"); in dm9000_probe()
1550 iosize = resource_size(db->data_res); in dm9000_probe()
1551 db->data_req = request_mem_region(db->data_res->start, iosize, in dm9000_probe()
1554 if (db->data_req == NULL) { in dm9000_probe()
1555 dev_err(db->dev, "cannot claim data reg area\n"); in dm9000_probe()
1560 db->io_data = ioremap(db->data_res->start, iosize); in dm9000_probe()
1562 if (db->io_data == NULL) { in dm9000_probe()
1563 dev_err(db->dev, "failed to ioremap data reg\n"); in dm9000_probe()
1569 ndev->base_addr = (unsigned long)db->io_addr; in dm9000_probe()
1572 dm9000_set_io(db, iosize); in dm9000_probe()
1580 dm9000_set_io(db, 1); in dm9000_probe()
1583 dm9000_set_io(db, 2); in dm9000_probe()
1586 dm9000_set_io(db, 4); in dm9000_probe()
1592 db->inblk = pdata->inblk; in dm9000_probe()
1595 db->outblk = pdata->outblk; in dm9000_probe()
1598 db->dumpblk = pdata->dumpblk; in dm9000_probe()
1600 db->flags = pdata->flags; in dm9000_probe()
1604 db->flags |= DM9000_PLATF_SIMPLE_PHY; in dm9000_probe()
1607 dm9000_reset(db); in dm9000_probe()
1611 id_val = ior(db, DM9000_VIDL); in dm9000_probe()
1612 id_val |= (u32)ior(db, DM9000_VIDH) << 8; in dm9000_probe()
1613 id_val |= (u32)ior(db, DM9000_PIDL) << 16; in dm9000_probe()
1614 id_val |= (u32)ior(db, DM9000_PIDH) << 24; in dm9000_probe()
1618 dev_err(db->dev, "read wrong id 0x%08x\n", id_val); in dm9000_probe()
1622 dev_err(db->dev, "wrong id: 0x%08x\n", id_val); in dm9000_probe()
1629 id_val = ior(db, DM9000_CHIPR); in dm9000_probe()
1630 dev_dbg(db->dev, "dm9000 revision 0x%02x\n", id_val); in dm9000_probe()
1634 db->type = TYPE_DM9000A; in dm9000_probe()
1637 db->type = TYPE_DM9000B; in dm9000_probe()
1640 dev_dbg(db->dev, "ID %02x => defaulting to DM9000E\n", id_val); in dm9000_probe()
1641 db->type = TYPE_DM9000E; in dm9000_probe()
1645 if (db->type == TYPE_DM9000A || db->type == TYPE_DM9000B) { in dm9000_probe()
1656 db->msg_enable = NETIF_MSG_LINK; in dm9000_probe()
1657 db->mii.phy_id_mask = 0x1f; in dm9000_probe()
1658 db->mii.reg_num_mask = 0x1f; in dm9000_probe()
1659 db->mii.force_media = 0; in dm9000_probe()
1660 db->mii.full_duplex = 0; in dm9000_probe()
1661 db->mii.dev = ndev; in dm9000_probe()
1662 db->mii.mdio_read = dm9000_phy_read; in dm9000_probe()
1663 db->mii.mdio_write = dm9000_phy_write; in dm9000_probe()
1669 dm9000_read_eeprom(db, i / 2, ndev->dev_addr+i); in dm9000_probe()
1681 ndev->dev_addr[i] = ior(db, i+DM9000_PAR); in dm9000_probe()
1696 dev_warn(db->dev, "%s: Invalid ethernet MAC address. Please set using ip\n", in dm9000_probe()
1699 ndev->name, dm9000_type_to_char(db->type), in dm9000_probe()
1700 db->io_addr, db->io_data, ndev->irq, in dm9000_probe()
1706 dev_err(db->dev, "not found (%d).\n", ret); in dm9000_probe()
1708 dm9000_release_board(pdev, db); in dm9000_probe()
1722 struct board_info *db; in dm9000_drv_suspend() local
1725 db = netdev_priv(ndev); in dm9000_drv_suspend()
1726 db->in_suspend = 1; in dm9000_drv_suspend()
1734 if (!db->wake_state) in dm9000_drv_suspend()
1744 struct board_info *db = netdev_priv(ndev); in dm9000_drv_resume() local
1750 if (!db->wake_state) { in dm9000_drv_resume()
1752 dm9000_unmask_interrupts(db); in dm9000_drv_resume()
1758 db->in_suspend = 0; in dm9000_drv_resume()