xref: /qemu/include/hw/adc/zynq-xadc.h (revision 6e76d35f2375c3ef58aaaccbe5cee54b20a1f74a)
174fcbd22SGuenter Roeck /*
274fcbd22SGuenter Roeck  * Device model for Zynq ADC controller
374fcbd22SGuenter Roeck  *
474fcbd22SGuenter Roeck  * Copyright (c) 2015 Guenter Roeck <linux@roeck-us.net>
574fcbd22SGuenter Roeck  *
674fcbd22SGuenter Roeck  * This program is free software; you can redistribute it and/or
774fcbd22SGuenter Roeck  * modify it under the terms of the GNU General Public License
874fcbd22SGuenter Roeck  * as published by the Free Software Foundation; either version
974fcbd22SGuenter Roeck  * 2 of the License, or (at your option) any later version.
1074fcbd22SGuenter Roeck  *
1174fcbd22SGuenter Roeck  * You should have received a copy of the GNU General Public License along
1274fcbd22SGuenter Roeck  * with this program; if not, see <http://www.gnu.org/licenses/>.
1374fcbd22SGuenter Roeck  */
1474fcbd22SGuenter Roeck 
1574fcbd22SGuenter Roeck #ifndef ZYNQ_XADC_H
1674fcbd22SGuenter Roeck #define ZYNQ_XADC_H
1774fcbd22SGuenter Roeck 
1874fcbd22SGuenter Roeck #include "hw/sysbus.h"
19db1015e9SEduardo Habkost #include "qom/object.h"
2074fcbd22SGuenter Roeck 
2174fcbd22SGuenter Roeck #define ZYNQ_XADC_MMIO_SIZE     0x0020
2274fcbd22SGuenter Roeck #define ZYNQ_XADC_NUM_IO_REGS   (ZYNQ_XADC_MMIO_SIZE / 4)
2374fcbd22SGuenter Roeck #define ZYNQ_XADC_NUM_ADC_REGS  128
2474fcbd22SGuenter Roeck #define ZYNQ_XADC_FIFO_DEPTH    15
2574fcbd22SGuenter Roeck 
26e178113fSMarkus Armbruster #define TYPE_ZYNQ_XADC          "xlnx-zynq-xadc"
278063396bSEduardo Habkost OBJECT_DECLARE_SIMPLE_TYPE(ZynqXADCState, ZYNQ_XADC)
2874fcbd22SGuenter Roeck 
29db1015e9SEduardo Habkost struct ZynqXADCState {
3074fcbd22SGuenter Roeck     /*< private >*/
3174fcbd22SGuenter Roeck     SysBusDevice parent_obj;
3274fcbd22SGuenter Roeck 
3374fcbd22SGuenter Roeck     /*< public >*/
3474fcbd22SGuenter Roeck     MemoryRegion iomem;
3574fcbd22SGuenter Roeck 
3674fcbd22SGuenter Roeck     uint32_t regs[ZYNQ_XADC_NUM_IO_REGS];
3774fcbd22SGuenter Roeck     uint16_t xadc_regs[ZYNQ_XADC_NUM_ADC_REGS];
3874fcbd22SGuenter Roeck     uint16_t xadc_read_reg_previous;
3974fcbd22SGuenter Roeck     uint16_t xadc_dfifo[ZYNQ_XADC_FIFO_DEPTH];
4074fcbd22SGuenter Roeck     uint16_t xadc_dfifo_entries;
4174fcbd22SGuenter Roeck 
42*6e76d35fSPhilippe Mathieu-Daudé     qemu_irq irq;
43db1015e9SEduardo Habkost };
4474fcbd22SGuenter Roeck 
4574fcbd22SGuenter Roeck #endif /* ZYNQ_XADC_H */
46