xref: /qemu/include/hw/usb/hcd-musb.h (revision 7a5951f6)
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