12c89d911SPhilippe Mathieu-Daudé /* 22c89d911SPhilippe Mathieu-Daudé * "Inventra" High-speed Dual-Role Controller (MUSB-HDRC), Mentor Graphics, 32c89d911SPhilippe Mathieu-Daudé * USB2.0 OTG compliant core used in various chips. 42c89d911SPhilippe Mathieu-Daudé * 52c89d911SPhilippe Mathieu-Daudé * Only host-mode and non-DMA accesses are currently supported. 62c89d911SPhilippe Mathieu-Daudé * 72c89d911SPhilippe Mathieu-Daudé * Copyright (C) 2008 Nokia Corporation 82c89d911SPhilippe Mathieu-Daudé * Written by Andrzej Zaborowski <balrog@zabor.org> 92c89d911SPhilippe Mathieu-Daudé * 102c89d911SPhilippe Mathieu-Daudé * SPDX-License-Identifier: GPL-2.0-or-later 112c89d911SPhilippe Mathieu-Daudé */ 122c89d911SPhilippe Mathieu-Daudé 1352581c71SMarkus Armbruster #ifndef HW_USB_HCD_MUSB_H 1452581c71SMarkus Armbruster #define HW_USB_HCD_MUSB_H 152c89d911SPhilippe Mathieu-Daudé 167a5951f6SMarkus Armbruster #include "exec/hwaddr.h" 177a5951f6SMarkus Armbruster 182c89d911SPhilippe Mathieu-Daudé enum musb_irq_source_e { 192c89d911SPhilippe Mathieu-Daudé musb_irq_suspend = 0, 202c89d911SPhilippe Mathieu-Daudé musb_irq_resume, 212c89d911SPhilippe Mathieu-Daudé musb_irq_rst_babble, 222c89d911SPhilippe Mathieu-Daudé musb_irq_sof, 232c89d911SPhilippe Mathieu-Daudé musb_irq_connect, 242c89d911SPhilippe Mathieu-Daudé musb_irq_disconnect, 252c89d911SPhilippe Mathieu-Daudé musb_irq_vbus_request, 262c89d911SPhilippe Mathieu-Daudé musb_irq_vbus_error, 272c89d911SPhilippe Mathieu-Daudé musb_irq_rx, 282c89d911SPhilippe Mathieu-Daudé musb_irq_tx, 292c89d911SPhilippe Mathieu-Daudé musb_set_vbus, 302c89d911SPhilippe Mathieu-Daudé musb_set_session, 312c89d911SPhilippe Mathieu-Daudé /* Add new interrupts here */ 322c89d911SPhilippe Mathieu-Daudé musb_irq_max /* total number of interrupts defined */ 332c89d911SPhilippe Mathieu-Daudé }; 342c89d911SPhilippe Mathieu-Daudé 35efb22b2fSPhilippe Mathieu-Daudé /* TODO convert hcd-musb to QOM/qdev and remove MUSBReadFunc/MUSBWriteFunc */ 36efb22b2fSPhilippe Mathieu-Daudé typedef void MUSBWriteFunc(void *opaque, hwaddr addr, uint32_t value); 37efb22b2fSPhilippe Mathieu-Daudé typedef uint32_t MUSBReadFunc(void *opaque, hwaddr addr); 38efb22b2fSPhilippe Mathieu-Daudé extern MUSBReadFunc * const musb_read[]; 39efb22b2fSPhilippe Mathieu-Daudé extern MUSBWriteFunc * const musb_write[]; 402c89d911SPhilippe Mathieu-Daudé 412c89d911SPhilippe Mathieu-Daudé typedef struct MUSBState MUSBState; 422c89d911SPhilippe Mathieu-Daudé 432c89d911SPhilippe Mathieu-Daudé MUSBState *musb_init(DeviceState *parent_device, int gpio_base); 442c89d911SPhilippe Mathieu-Daudé void musb_reset(MUSBState *s); 452c89d911SPhilippe Mathieu-Daudé uint32_t musb_core_intr_get(MUSBState *s); 462c89d911SPhilippe Mathieu-Daudé void musb_core_intr_clear(MUSBState *s, uint32_t mask); 472c89d911SPhilippe Mathieu-Daudé void musb_set_size(MUSBState *s, int epnum, int size, int is_tx); 482c89d911SPhilippe Mathieu-Daudé 492c89d911SPhilippe Mathieu-Daudé #endif 50