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