#include "irq.h"
#include "devices.h"
+#define OMAP3_HSUSB_DEBUG
+
+#ifdef OMAP3_HSUSB_DEBUG
+#define TRACE(fmt,...) fprintf(stderr, "%s: " fmt "\n", __FUNCTION__, ##__VA_ARGS__)
+#else
+#define TRACE(...)
+#endif
+
+
struct tusb_s {
int iomemtype[2];
qemu_irq irq;
{
struct tusb_s *s = (struct tusb_s *) opaque;
uint16_t otg_status = s->otg_status;
+ TRACE("intr 0x%08x, 0x%08x, 0x%08x", source, level, musb_core_intr_get(s->musb));
switch (source) {
case musb_set_vbus:
+ TRACE("dealing with VBUS");
if (level)
otg_status |= TUSB_DEV_OTG_STAT_VBUS_VALID;
else
break;
case musb_set_session:
+ TRACE("dealing with SESSION");
/* XXX: only if TUSB_PHY_OTG_CTRL_OTG_SESS_END_EN set? */
/* XXX: only if TUSB_PRCM_MNGMT_OTG_SESS_END_EN set? */
if (level) {
case musb_irq_tx:
case musb_irq_rx:
+ TRACE("rxtx");
s->usbip_intr = musb_core_intr_get(s->musb);
/* Fall through. */
default:
#define MGC_M_ULPI_REGCTL_COMPLETE 0x02
#define MGC_M_ULPI_REGCTL_REG 0x01
+#define MUSB_DEBUG
+
+#ifdef MUSB_DEBUG
+#define TRACE(fmt,...) fprintf(stderr, "%s: " fmt "\n", __FUNCTION__, ##__VA_ARGS__)
+#else
+#define TRACE(...)
+#endif
+
+
static void musb_attach(USBPort *port, USBDevice *dev);
struct musb_s {
static uint8_t musb_busctl_readb(void *opaque, int ep, int addr)
{
struct musb_s *s = (struct musb_s *) opaque;
+ TRACE("ADDR = 0x%08x", addr);
switch (addr) {
/* For USB2.0 HS hubs only */
struct musb_s *s = (struct musb_s *) opaque;
int ep, i;
uint8_t ret;
+ TRACE("ADDR = 0x%08x", addr);
switch (addr) {
case MUSB_HDRC_FADDR:
{
struct musb_s *s = (struct musb_s *) opaque;
int ep;
+ TRACE("ADDR = 0x%08x = %08x", addr, value);
switch (addr) {
case MUSB_HDRC_FADDR:
struct musb_s *s = (struct musb_s *) opaque;
int ep, i;
uint16_t ret;
+ TRACE("ADDR = 0x%08x", addr);
switch (addr) {
case MUSB_HDRC_INTRTX:
{
struct musb_s *s = (struct musb_s *) opaque;
int ep;
+ TRACE("ADDR = 0x%08x = %08x", addr, value);
switch (addr) {
case MUSB_HDRC_INTRTXE:
struct musb_s *s = (struct musb_s *) opaque;
struct musb_ep_s *ep;
int epnum;
+ TRACE("ADDR = 0x%08x", addr);
switch (addr) {
case MUSB_HDRC_FIFO ... (MUSB_HDRC_FIFO + 0x3f):
struct musb_s *s = (struct musb_s *) opaque;
struct musb_ep_s *ep;
int epnum;
+ TRACE("ADDR = 0x%08x = %08x", addr, value);
switch (addr) {
case MUSB_HDRC_FIFO ... (MUSB_HDRC_FIFO + 0x3f):