usb/xhci: add include/hw/usb/xhci.h header file
Move a bunch of defines which might be needed outside core xhci code to that place. Add XHCI_ prefixes to avoid name clashes. No functional change. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Reviewed-by: Sai Pavan Boddu <sai.pavan.boddu@xilinx.com> Message-id: 20201020074844.5304-3-kraxel@redhat.com
This commit is contained in:
parent
284e269d7e
commit
848db5257d
@ -34,8 +34,8 @@ static Property nec_xhci_properties[] = {
|
|||||||
xhci.flags, XHCI_FLAG_SS_FIRST, true),
|
xhci.flags, XHCI_FLAG_SS_FIRST, true),
|
||||||
DEFINE_PROP_BIT("force-pcie-endcap", XHCIPciState, xhci.flags,
|
DEFINE_PROP_BIT("force-pcie-endcap", XHCIPciState, xhci.flags,
|
||||||
XHCI_FLAG_FORCE_PCIE_ENDCAP, false),
|
XHCI_FLAG_FORCE_PCIE_ENDCAP, false),
|
||||||
DEFINE_PROP_UINT32("intrs", XHCIPciState, xhci.numintrs, MAXINTRS),
|
DEFINE_PROP_UINT32("intrs", XHCIPciState, xhci.numintrs, XHCI_MAXINTRS),
|
||||||
DEFINE_PROP_UINT32("slots", XHCIPciState, xhci.numslots, MAXSLOTS),
|
DEFINE_PROP_UINT32("slots", XHCIPciState, xhci.numslots, XHCI_MAXSLOTS),
|
||||||
DEFINE_PROP_END_OF_LIST(),
|
DEFINE_PROP_END_OF_LIST(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -240,8 +240,8 @@ static void qemu_xhci_instance_init(Object *obj)
|
|||||||
|
|
||||||
s->msi = ON_OFF_AUTO_OFF;
|
s->msi = ON_OFF_AUTO_OFF;
|
||||||
s->msix = ON_OFF_AUTO_AUTO;
|
s->msix = ON_OFF_AUTO_AUTO;
|
||||||
xhci->numintrs = MAXINTRS;
|
xhci->numintrs = XHCI_MAXINTRS;
|
||||||
xhci->numslots = MAXSLOTS;
|
xhci->numslots = XHCI_MAXSLOTS;
|
||||||
xhci_set_flag(xhci, XHCI_FLAG_SS_FIRST);
|
xhci_set_flag(xhci, XHCI_FLAG_SS_FIRST);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,8 +69,8 @@ static void xhci_sysbus_instance_init(Object *obj)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static Property xhci_sysbus_props[] = {
|
static Property xhci_sysbus_props[] = {
|
||||||
DEFINE_PROP_UINT32("intrs", XHCISysbusState, xhci.numintrs, MAXINTRS),
|
DEFINE_PROP_UINT32("intrs", XHCISysbusState, xhci.numintrs, XHCI_MAXINTRS),
|
||||||
DEFINE_PROP_UINT32("slots", XHCISysbusState, xhci.numslots, MAXSLOTS),
|
DEFINE_PROP_UINT32("slots", XHCISysbusState, xhci.numslots, XHCI_MAXSLOTS),
|
||||||
DEFINE_PROP_END_OF_LIST(),
|
DEFINE_PROP_END_OF_LIST(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -15,7 +15,6 @@
|
|||||||
#include "hcd-xhci.h"
|
#include "hcd-xhci.h"
|
||||||
#include "hw/sysbus.h"
|
#include "hw/sysbus.h"
|
||||||
|
|
||||||
#define TYPE_XHCI_SYSBUS "sysbus-xhci"
|
|
||||||
#define XHCI_SYSBUS(obj) \
|
#define XHCI_SYSBUS(obj) \
|
||||||
OBJECT_CHECK(XHCISysbusState, (obj), TYPE_XHCI_SYSBUS)
|
OBJECT_CHECK(XHCISysbusState, (obj), TYPE_XHCI_SYSBUS)
|
||||||
|
|
||||||
|
@ -46,15 +46,13 @@
|
|||||||
#define TRANSFER_LIMIT 256
|
#define TRANSFER_LIMIT 256
|
||||||
|
|
||||||
#define LEN_CAP 0x40
|
#define LEN_CAP 0x40
|
||||||
#define LEN_OPER (0x400 + 0x10 * MAXPORTS)
|
#define LEN_OPER (0x400 + 0x10 * XHCI_MAXPORTS)
|
||||||
#define LEN_RUNTIME ((MAXINTRS + 1) * 0x20)
|
#define LEN_RUNTIME ((XHCI_MAXINTRS + 1) * 0x20)
|
||||||
#define LEN_DOORBELL ((MAXSLOTS + 1) * 0x20)
|
#define LEN_DOORBELL ((XHCI_MAXSLOTS + 1) * 0x20)
|
||||||
|
|
||||||
#define OFF_OPER LEN_CAP
|
#define OFF_OPER LEN_CAP
|
||||||
#define OFF_RUNTIME 0x1000
|
#define OFF_RUNTIME 0x1000
|
||||||
#define OFF_DOORBELL 0x2000
|
#define OFF_DOORBELL 0x2000
|
||||||
/* must be power of 2 */
|
|
||||||
#define LEN_REGS 0x4000
|
|
||||||
|
|
||||||
#if (OFF_OPER + LEN_OPER) > OFF_RUNTIME
|
#if (OFF_OPER + LEN_OPER) > OFF_RUNTIME
|
||||||
#error Increase OFF_RUNTIME
|
#error Increase OFF_RUNTIME
|
||||||
@ -62,8 +60,8 @@
|
|||||||
#if (OFF_RUNTIME + LEN_RUNTIME) > OFF_DOORBELL
|
#if (OFF_RUNTIME + LEN_RUNTIME) > OFF_DOORBELL
|
||||||
#error Increase OFF_DOORBELL
|
#error Increase OFF_DOORBELL
|
||||||
#endif
|
#endif
|
||||||
#if (OFF_DOORBELL + LEN_DOORBELL) > LEN_REGS
|
#if (OFF_DOORBELL + LEN_DOORBELL) > XHCI_LEN_REGS
|
||||||
# error Increase LEN_REGS
|
# error Increase XHCI_LEN_REGS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* bit definitions */
|
/* bit definitions */
|
||||||
@ -3276,11 +3274,11 @@ static void usb_xhci_init(XHCIState *xhci)
|
|||||||
|
|
||||||
xhci->usbsts = USBSTS_HCH;
|
xhci->usbsts = USBSTS_HCH;
|
||||||
|
|
||||||
if (xhci->numports_2 > MAXPORTS_2) {
|
if (xhci->numports_2 > XHCI_MAXPORTS_2) {
|
||||||
xhci->numports_2 = MAXPORTS_2;
|
xhci->numports_2 = XHCI_MAXPORTS_2;
|
||||||
}
|
}
|
||||||
if (xhci->numports_3 > MAXPORTS_3) {
|
if (xhci->numports_3 > XHCI_MAXPORTS_3) {
|
||||||
xhci->numports_3 = MAXPORTS_3;
|
xhci->numports_3 = XHCI_MAXPORTS_3;
|
||||||
}
|
}
|
||||||
usbports = MAX(xhci->numports_2, xhci->numports_3);
|
usbports = MAX(xhci->numports_2, xhci->numports_3);
|
||||||
xhci->numports = xhci->numports_2 + xhci->numports_3;
|
xhci->numports = xhci->numports_2 + xhci->numports_3;
|
||||||
@ -3302,7 +3300,7 @@ static void usb_xhci_init(XHCIState *xhci)
|
|||||||
USB_SPEED_MASK_LOW |
|
USB_SPEED_MASK_LOW |
|
||||||
USB_SPEED_MASK_FULL |
|
USB_SPEED_MASK_FULL |
|
||||||
USB_SPEED_MASK_HIGH;
|
USB_SPEED_MASK_HIGH;
|
||||||
assert(i < MAXPORTS);
|
assert(i < XHCI_MAXPORTS);
|
||||||
snprintf(port->name, sizeof(port->name), "usb2 port #%d", i+1);
|
snprintf(port->name, sizeof(port->name), "usb2 port #%d", i+1);
|
||||||
speedmask |= port->speedmask;
|
speedmask |= port->speedmask;
|
||||||
}
|
}
|
||||||
@ -3316,7 +3314,7 @@ static void usb_xhci_init(XHCIState *xhci)
|
|||||||
}
|
}
|
||||||
port->uport = &xhci->uports[i];
|
port->uport = &xhci->uports[i];
|
||||||
port->speedmask = USB_SPEED_MASK_SUPER;
|
port->speedmask = USB_SPEED_MASK_SUPER;
|
||||||
assert(i < MAXPORTS);
|
assert(i < XHCI_MAXPORTS);
|
||||||
snprintf(port->name, sizeof(port->name), "usb3 port #%d", i+1);
|
snprintf(port->name, sizeof(port->name), "usb3 port #%d", i+1);
|
||||||
speedmask |= port->speedmask;
|
speedmask |= port->speedmask;
|
||||||
}
|
}
|
||||||
@ -3331,8 +3329,8 @@ static void usb_xhci_realize(DeviceState *dev, Error **errp)
|
|||||||
|
|
||||||
XHCIState *xhci = XHCI(dev);
|
XHCIState *xhci = XHCI(dev);
|
||||||
|
|
||||||
if (xhci->numintrs > MAXINTRS) {
|
if (xhci->numintrs > XHCI_MAXINTRS) {
|
||||||
xhci->numintrs = MAXINTRS;
|
xhci->numintrs = XHCI_MAXINTRS;
|
||||||
}
|
}
|
||||||
while (xhci->numintrs & (xhci->numintrs - 1)) { /* ! power of 2 */
|
while (xhci->numintrs & (xhci->numintrs - 1)) { /* ! power of 2 */
|
||||||
xhci->numintrs++;
|
xhci->numintrs++;
|
||||||
@ -3340,8 +3338,8 @@ static void usb_xhci_realize(DeviceState *dev, Error **errp)
|
|||||||
if (xhci->numintrs < 1) {
|
if (xhci->numintrs < 1) {
|
||||||
xhci->numintrs = 1;
|
xhci->numintrs = 1;
|
||||||
}
|
}
|
||||||
if (xhci->numslots > MAXSLOTS) {
|
if (xhci->numslots > XHCI_MAXSLOTS) {
|
||||||
xhci->numslots = MAXSLOTS;
|
xhci->numslots = XHCI_MAXSLOTS;
|
||||||
}
|
}
|
||||||
if (xhci->numslots < 1) {
|
if (xhci->numslots < 1) {
|
||||||
xhci->numslots = 1;
|
xhci->numslots = 1;
|
||||||
@ -3355,7 +3353,7 @@ static void usb_xhci_realize(DeviceState *dev, Error **errp)
|
|||||||
usb_xhci_init(xhci);
|
usb_xhci_init(xhci);
|
||||||
xhci->mfwrap_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, xhci_mfwrap_timer, xhci);
|
xhci->mfwrap_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, xhci_mfwrap_timer, xhci);
|
||||||
|
|
||||||
memory_region_init(&xhci->mem, OBJECT(dev), "xhci", LEN_REGS);
|
memory_region_init(&xhci->mem, OBJECT(dev), "xhci", XHCI_LEN_REGS);
|
||||||
memory_region_init_io(&xhci->mem_cap, OBJECT(dev), &xhci_cap_ops, xhci,
|
memory_region_init_io(&xhci->mem_cap, OBJECT(dev), &xhci_cap_ops, xhci,
|
||||||
"capabilities", LEN_CAP);
|
"capabilities", LEN_CAP);
|
||||||
memory_region_init_io(&xhci->mem_oper, OBJECT(dev), &xhci_oper_ops, xhci,
|
memory_region_init_io(&xhci->mem_oper, OBJECT(dev), &xhci_oper_ops, xhci,
|
||||||
|
@ -24,23 +24,13 @@
|
|||||||
#include "qom/object.h"
|
#include "qom/object.h"
|
||||||
|
|
||||||
#include "hw/usb.h"
|
#include "hw/usb.h"
|
||||||
|
#include "hw/usb/xhci.h"
|
||||||
#include "sysemu/dma.h"
|
#include "sysemu/dma.h"
|
||||||
|
|
||||||
#define TYPE_XHCI "base-xhci"
|
|
||||||
#define TYPE_NEC_XHCI "nec-usb-xhci"
|
|
||||||
#define TYPE_QEMU_XHCI "qemu-xhci"
|
|
||||||
|
|
||||||
OBJECT_DECLARE_SIMPLE_TYPE(XHCIState, XHCI)
|
OBJECT_DECLARE_SIMPLE_TYPE(XHCIState, XHCI)
|
||||||
|
|
||||||
#define MAXPORTS_2 15
|
|
||||||
#define MAXPORTS_3 15
|
|
||||||
|
|
||||||
#define MAXPORTS (MAXPORTS_2 + MAXPORTS_3)
|
|
||||||
#define MAXSLOTS 64
|
|
||||||
#define MAXINTRS 16
|
|
||||||
|
|
||||||
/* Very pessimistic, let's hope it's enough for all cases */
|
/* Very pessimistic, let's hope it's enough for all cases */
|
||||||
#define EV_QUEUE (((3 * 24) + 16) * MAXSLOTS)
|
#define EV_QUEUE (((3 * 24) + 16) * XHCI_MAXSLOTS)
|
||||||
|
|
||||||
typedef struct XHCIStreamContext XHCIStreamContext;
|
typedef struct XHCIStreamContext XHCIStreamContext;
|
||||||
typedef struct XHCIEPContext XHCIEPContext;
|
typedef struct XHCIEPContext XHCIEPContext;
|
||||||
@ -217,15 +207,15 @@ typedef struct XHCIState {
|
|||||||
uint32_t dcbaap_high;
|
uint32_t dcbaap_high;
|
||||||
uint32_t config;
|
uint32_t config;
|
||||||
|
|
||||||
USBPort uports[MAX_CONST(MAXPORTS_2, MAXPORTS_3)];
|
USBPort uports[MAX_CONST(XHCI_MAXPORTS_2, XHCI_MAXPORTS_3)];
|
||||||
XHCIPort ports[MAXPORTS];
|
XHCIPort ports[XHCI_MAXPORTS];
|
||||||
XHCISlot slots[MAXSLOTS];
|
XHCISlot slots[XHCI_MAXSLOTS];
|
||||||
uint32_t numports;
|
uint32_t numports;
|
||||||
|
|
||||||
/* Runtime Registers */
|
/* Runtime Registers */
|
||||||
int64_t mfindex_start;
|
int64_t mfindex_start;
|
||||||
QEMUTimer *mfwrap_timer;
|
QEMUTimer *mfwrap_timer;
|
||||||
XHCIInterrupter intr[MAXINTRS];
|
XHCIInterrupter intr[XHCI_MAXINTRS];
|
||||||
|
|
||||||
XHCIRing cmd_ring;
|
XHCIRing cmd_ring;
|
||||||
|
|
||||||
|
19
include/hw/usb/xhci.h
Normal file
19
include/hw/usb/xhci.h
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#ifndef HW_USB_XHCI_H
|
||||||
|
#define HW_USB_XHCI_H
|
||||||
|
|
||||||
|
#define TYPE_XHCI "base-xhci"
|
||||||
|
#define TYPE_NEC_XHCI "nec-usb-xhci"
|
||||||
|
#define TYPE_QEMU_XHCI "qemu-xhci"
|
||||||
|
#define TYPE_XHCI_SYSBUS "sysbus-xhci"
|
||||||
|
|
||||||
|
#define XHCI_MAXPORTS_2 15
|
||||||
|
#define XHCI_MAXPORTS_3 15
|
||||||
|
|
||||||
|
#define XHCI_MAXPORTS (XHCI_MAXPORTS_2 + XHCI_MAXPORTS_3)
|
||||||
|
#define XHCI_MAXSLOTS 64
|
||||||
|
#define XHCI_MAXINTRS 16
|
||||||
|
|
||||||
|
/* must be power of 2 */
|
||||||
|
#define XHCI_LEN_REGS 0x4000
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in New Issue
Block a user