12db48d03SMark Cave-Ayland /* 22db48d03SMark Cave-Ayland * QEMU NS SONIC DP8393x netcard 32db48d03SMark Cave-Ayland * 42db48d03SMark Cave-Ayland * Copyright (c) 2008-2009 Herve Poussineau 52db48d03SMark Cave-Ayland * 62db48d03SMark Cave-Ayland * This program is free software; you can redistribute it and/or 72db48d03SMark Cave-Ayland * modify it under the terms of the GNU General Public License as 82db48d03SMark Cave-Ayland * published by the Free Software Foundation; either version 2 of 92db48d03SMark Cave-Ayland * the License, or (at your option) any later version. 102db48d03SMark Cave-Ayland * 112db48d03SMark Cave-Ayland * This program is distributed in the hope that it will be useful, 122db48d03SMark Cave-Ayland * but WITHOUT ANY WARRANTY; without even the implied warranty of 132db48d03SMark Cave-Ayland * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 142db48d03SMark Cave-Ayland * GNU General Public License for more details. 152db48d03SMark Cave-Ayland * 162db48d03SMark Cave-Ayland * You should have received a copy of the GNU General Public License along 172db48d03SMark Cave-Ayland * with this program; if not, see <http://www.gnu.org/licenses/>. 182db48d03SMark Cave-Ayland */ 192db48d03SMark Cave-Ayland 202db48d03SMark Cave-Ayland #ifndef HW_NET_DP8393X_H 212db48d03SMark Cave-Ayland #define HW_NET_DP8393X_H 222db48d03SMark Cave-Ayland 232db48d03SMark Cave-Ayland #include "hw/sysbus.h" 242db48d03SMark Cave-Ayland #include "net/net.h" 25*8be545baSRichard Henderson #include "system/memory.h" 262db48d03SMark Cave-Ayland 272db48d03SMark Cave-Ayland #define SONIC_REG_COUNT 0x40 282db48d03SMark Cave-Ayland 292db48d03SMark Cave-Ayland #define TYPE_DP8393X "dp8393x" 302db48d03SMark Cave-Ayland OBJECT_DECLARE_SIMPLE_TYPE(dp8393xState, DP8393X) 312db48d03SMark Cave-Ayland 322db48d03SMark Cave-Ayland struct dp8393xState { 332db48d03SMark Cave-Ayland SysBusDevice parent_obj; 342db48d03SMark Cave-Ayland 352db48d03SMark Cave-Ayland /* Hardware */ 362db48d03SMark Cave-Ayland uint8_t it_shift; 372db48d03SMark Cave-Ayland bool big_endian; 382db48d03SMark Cave-Ayland bool last_rba_is_full; 392db48d03SMark Cave-Ayland qemu_irq irq; 402db48d03SMark Cave-Ayland int irq_level; 412db48d03SMark Cave-Ayland QEMUTimer *watchdog; 422db48d03SMark Cave-Ayland int64_t wt_last_update; 432db48d03SMark Cave-Ayland NICConf conf; 442db48d03SMark Cave-Ayland NICState *nic; 452db48d03SMark Cave-Ayland MemoryRegion mmio; 462db48d03SMark Cave-Ayland 472db48d03SMark Cave-Ayland /* Registers */ 482db48d03SMark Cave-Ayland uint16_t cam[16][3]; 492db48d03SMark Cave-Ayland uint16_t regs[SONIC_REG_COUNT]; 502db48d03SMark Cave-Ayland 512db48d03SMark Cave-Ayland /* Temporaries */ 522db48d03SMark Cave-Ayland uint8_t tx_buffer[0x10000]; 532db48d03SMark Cave-Ayland int loopback_packet; 542db48d03SMark Cave-Ayland 552db48d03SMark Cave-Ayland /* Memory access */ 562db48d03SMark Cave-Ayland MemoryRegion *dma_mr; 572db48d03SMark Cave-Ayland AddressSpace as; 582db48d03SMark Cave-Ayland }; 592db48d03SMark Cave-Ayland 602db48d03SMark Cave-Ayland #endif 61