xref: /openbmc/qemu/include/hw/net/ftgmac100.h (revision 59084feb256c617063e0dbe7e64821ae8852d7cf)
1bd44300dSCédric Le Goater /*
2bd44300dSCédric Le Goater  * Faraday FTGMAC100 Gigabit Ethernet
3bd44300dSCédric Le Goater  *
4bd44300dSCédric Le Goater  * Copyright (C) 2016-2017, IBM Corporation.
5bd44300dSCédric Le Goater  *
6bd44300dSCédric Le Goater  * This code is licensed under the GPL version 2 or later. See the
7bd44300dSCédric Le Goater  * COPYING file in the top-level directory.
8bd44300dSCédric Le Goater  */
9bd44300dSCédric Le Goater 
10bd44300dSCédric Le Goater #ifndef FTGMAC100_H
11bd44300dSCédric Le Goater #define FTGMAC100_H
12db1015e9SEduardo Habkost #include "qom/object.h"
13bd44300dSCédric Le Goater 
14bd44300dSCédric Le Goater #define TYPE_FTGMAC100 "ftgmac100"
158063396bSEduardo Habkost OBJECT_DECLARE_SIMPLE_TYPE(FTGMAC100State, FTGMAC100)
16bd44300dSCédric Le Goater 
17eec2f9ccSJamin Lin #define FTGMAC100_MEM_SIZE 0x1000
18eec2f9ccSJamin Lin #define FTGMAC100_REG_MEM_SIZE 0x100
19*578c6e9eSJamin Lin #define FTGMAC100_REG_HIGH_MEM_SIZE 0x100
20*578c6e9eSJamin Lin #define FTGMAC100_REG_HIGH_OFFSET 0x100
21eec2f9ccSJamin Lin 
22bd44300dSCédric Le Goater #include "hw/sysbus.h"
23bd44300dSCédric Le Goater #include "net/net.h"
24bd44300dSCédric Le Goater 
25cd679a76SCédric Le Goater /*
26cd679a76SCédric Le Goater  * Max frame size for the receiving buffer
27cd679a76SCédric Le Goater  */
28cd679a76SCédric Le Goater #define FTGMAC100_MAX_FRAME_SIZE    9220
29cd679a76SCédric Le Goater 
30db1015e9SEduardo Habkost struct FTGMAC100State {
31bd44300dSCédric Le Goater     /*< private >*/
32bd44300dSCédric Le Goater     SysBusDevice parent_obj;
33bd44300dSCédric Le Goater 
34bd44300dSCédric Le Goater     /*< public >*/
35bd44300dSCédric Le Goater     NICState *nic;
36bd44300dSCédric Le Goater     NICConf conf;
37bd44300dSCédric Le Goater     qemu_irq irq;
38eec2f9ccSJamin Lin     MemoryRegion iomem_container;
39bd44300dSCédric Le Goater     MemoryRegion iomem;
40*578c6e9eSJamin Lin     MemoryRegion iomem_high;
41bd44300dSCédric Le Goater 
42cd679a76SCédric Le Goater     uint8_t frame[FTGMAC100_MAX_FRAME_SIZE];
43bd44300dSCédric Le Goater 
44bd44300dSCédric Le Goater     uint32_t irq_state;
45bd44300dSCédric Le Goater     uint32_t isr;
46bd44300dSCédric Le Goater     uint32_t ier;
47bd44300dSCédric Le Goater     uint32_t rx_enabled;
48bd44300dSCédric Le Goater     uint32_t math[2];
49bd44300dSCédric Le Goater     uint32_t rbsr;
50bd44300dSCédric Le Goater     uint32_t itc;
51bd44300dSCédric Le Goater     uint32_t aptcr;
52bd44300dSCédric Le Goater     uint32_t dblac;
53bd44300dSCédric Le Goater     uint32_t revr;
54bd44300dSCédric Le Goater     uint32_t fear1;
55bd44300dSCédric Le Goater     uint32_t tpafcr;
56bd44300dSCédric Le Goater     uint32_t maccr;
57bd44300dSCédric Le Goater     uint32_t phycr;
58bd44300dSCédric Le Goater     uint32_t phydata;
59bd44300dSCédric Le Goater     uint32_t fcr;
600b51fd0fSJamin Lin     uint64_t rx_ring;
610b51fd0fSJamin Lin     uint64_t rx_descriptor;
620b51fd0fSJamin Lin     uint64_t tx_ring;
630b51fd0fSJamin Lin     uint64_t tx_descriptor;
64bd44300dSCédric Le Goater 
65bd44300dSCédric Le Goater     uint32_t phy_status;
66bd44300dSCédric Le Goater     uint32_t phy_control;
67bd44300dSCédric Le Goater     uint32_t phy_advertise;
68bd44300dSCédric Le Goater     uint32_t phy_int;
69bd44300dSCédric Le Goater     uint32_t phy_int_mask;
701335fe3eSCédric Le Goater 
711335fe3eSCédric Le Goater     bool aspeed;
721335fe3eSCédric Le Goater     uint32_t txdes0_edotr;
731335fe3eSCédric Le Goater     uint32_t rxdes0_edorr;
74*578c6e9eSJamin Lin     bool dma64;
75db1015e9SEduardo Habkost };
76bd44300dSCédric Le Goater 
77289251b0SCédric Le Goater #define TYPE_ASPEED_MII "aspeed-mmi"
788063396bSEduardo Habkost OBJECT_DECLARE_SIMPLE_TYPE(AspeedMiiState, ASPEED_MII)
79289251b0SCédric Le Goater 
80289251b0SCédric Le Goater /*
81289251b0SCédric Le Goater  * AST2600 MII controller
82289251b0SCédric Le Goater  */
83db1015e9SEduardo Habkost struct AspeedMiiState {
84289251b0SCédric Le Goater     /*< private >*/
85289251b0SCédric Le Goater     SysBusDevice parent_obj;
86289251b0SCédric Le Goater 
87289251b0SCédric Le Goater     FTGMAC100State *nic;
88289251b0SCédric Le Goater 
89289251b0SCédric Le Goater     MemoryRegion iomem;
90289251b0SCédric Le Goater     uint32_t phycr;
91289251b0SCédric Le Goater     uint32_t phydata;
92db1015e9SEduardo Habkost };
93289251b0SCédric Le Goater 
94bd44300dSCédric Le Goater #endif
95