xref: /qemu/include/hw/net/dp8393x.h (revision fc524567087c2537b5103cdfc1d41e4f442892b6)
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