Exemplo n.º 1
0
static void
musbotg_vbus_poll(struct musbotg_super_softc *sc, int port)
{
	uint32_t stat;

	if (sc->sc_otg[port].sc_mode == MUSB2_DEVICE_MODE)
		musbotg_vbus_interrupt(&sc->sc_otg[port], 1);
	else {
		stat = USBCTRL_READ4(sc, port, USBCTRL_STAT);
		musbotg_vbus_interrupt(&sc->sc_otg[port], stat & 1);
	}
}
Exemplo n.º 2
0
static void
musbotg_vbus_poll(struct musbotg_super_softc *sc)
{
	uint8_t vbus_val = 1;		/* fake VBUS on - TODO */

	/* just forward it */
	musbotg_vbus_interrupt(&sc->sc_otg, vbus_val);
}
Exemplo n.º 3
0
static void
musbotg_wrapper_interrupt(void *arg)
{
	struct musbotg_softc *sc = arg;
	struct musbotg_super_softc *ssc = sc->sc_platform_data;
	uint32_t stat, stat0, stat1;
	stat = USBCTRL_READ4(ssc, sc->sc_id, USBCTRL_STAT);
	stat0 = USBCTRL_READ4(ssc, sc->sc_id, USBCTRL_IRQ_STAT0);
	stat1 = USBCTRL_READ4(ssc, sc->sc_id, USBCTRL_IRQ_STAT1);
	if (stat0)
		USBCTRL_WRITE4(ssc, sc->sc_id, USBCTRL_IRQ_STAT0, stat0);
	if (stat1)
		USBCTRL_WRITE4(ssc, sc->sc_id, USBCTRL_IRQ_STAT1, stat1);

	DPRINTFN(4, "port%d: stat0=%08x stat1=%08x, stat=%08x\n",
	    sc->sc_id, stat0, stat1, stat);

	if (stat1 & IRQ_STAT1_DRVVBUS)
		musbotg_vbus_interrupt(sc, stat & 1);

	musbotg_interrupt(arg, ((stat0 >> 16) & 0xffff),
	    stat0 & 0xffff, stat1 & 0xff);
}