150e76a73SSai Pavan Boddu /*
250e76a73SSai Pavan Boddu  * QEMU model of the VersalUsb2CtrlRegs Register control/Status block for
350e76a73SSai Pavan Boddu  * USB2.0 controller
450e76a73SSai Pavan Boddu  *
550e76a73SSai Pavan Boddu  * Copyright (c) 2020 Xilinx Inc. Vikram Garhwal <fnu.vikram@xilinx.com>
650e76a73SSai Pavan Boddu  *
750e76a73SSai Pavan Boddu  * Permission is hereby granted, free of charge, to any person obtaining a copy
850e76a73SSai Pavan Boddu  * of this software and associated documentation files (the "Software"), to deal
950e76a73SSai Pavan Boddu  * in the Software without restriction, including without limitation the rights
1050e76a73SSai Pavan Boddu  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1150e76a73SSai Pavan Boddu  * copies of the Software, and to permit persons to whom the Software is
1250e76a73SSai Pavan Boddu  * furnished to do so, subject to the following conditions:
1350e76a73SSai Pavan Boddu  *
1450e76a73SSai Pavan Boddu  * The above copyright notice and this permission notice shall be included in
1550e76a73SSai Pavan Boddu  * all copies or substantial portions of the Software.
1650e76a73SSai Pavan Boddu  *
1750e76a73SSai Pavan Boddu  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1850e76a73SSai Pavan Boddu  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1950e76a73SSai Pavan Boddu  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
2050e76a73SSai Pavan Boddu  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
2150e76a73SSai Pavan Boddu  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
2250e76a73SSai Pavan Boddu  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
2350e76a73SSai Pavan Boddu  * THE SOFTWARE.
2450e76a73SSai Pavan Boddu  */
2550e76a73SSai Pavan Boddu 
2652581c71SMarkus Armbruster #ifndef XLNX_VERSAL_USB2_CTRL_REGS_H
2752581c71SMarkus Armbruster #define XLNX_VERSAL_USB2_CTRL_REGS_H
2850e76a73SSai Pavan Boddu 
297a5951f6SMarkus Armbruster #include "hw/register.h"
307a5951f6SMarkus Armbruster #include "hw/sysbus.h"
317a5951f6SMarkus Armbruster 
3250e76a73SSai Pavan Boddu #define TYPE_XILINX_VERSAL_USB2_CTRL_REGS "xlnx.versal-usb2-ctrl-regs"
3350e76a73SSai Pavan Boddu 
3450e76a73SSai Pavan Boddu #define XILINX_VERSAL_USB2_CTRL_REGS(obj) \
3550e76a73SSai Pavan Boddu      OBJECT_CHECK(VersalUsb2CtrlRegs, (obj), TYPE_XILINX_VERSAL_USB2_CTRL_REGS)
3650e76a73SSai Pavan Boddu 
3750e76a73SSai Pavan Boddu #define USB2_REGS_R_MAX ((0x78 / 4) + 1)
3850e76a73SSai Pavan Boddu 
3950e76a73SSai Pavan Boddu typedef struct VersalUsb2CtrlRegs {
4050e76a73SSai Pavan Boddu     SysBusDevice parent_obj;
4150e76a73SSai Pavan Boddu     MemoryRegion iomem;
4250e76a73SSai Pavan Boddu     qemu_irq irq_ir;
4350e76a73SSai Pavan Boddu 
4450e76a73SSai Pavan Boddu     uint32_t regs[USB2_REGS_R_MAX];
4550e76a73SSai Pavan Boddu     RegisterInfo regs_info[USB2_REGS_R_MAX];
4650e76a73SSai Pavan Boddu } VersalUsb2CtrlRegs;
4750e76a73SSai Pavan Boddu 
4850e76a73SSai Pavan Boddu #endif
49