void ralink_com_attach(device_t parent, device_t self, void *aux) { const struct mainbus_attach_args *ma = aux; struct ralink_com_softc * const rtsc = device_private(self); struct com_softc * const sc = &rtsc->sc_com; bus_space_handle_t ioh; int error; if ((error = bus_space_map(ma->ma_memt, RA_UART_LITE_BASE, 0x1000, 0, &ioh)) != 0) { aprint_error(": can't map registers, error=%d\n", error); return; } COM_INIT_REGS(sc->sc_regs, ma->ma_memt, ioh, RA_UART_LITE_BASE); sc->sc_dev = self; sc->sc_frequency = RA_UART_FREQ; sc->sc_regs.cr_nports = 0x1000; sc->sc_type = COM_TYPE_AU1x00; sc->enabled = 1; ralink_com_initmap(&sc->sc_regs); rtsc->sc_ih = ra_intr_establish(RA_IRQ_UARTL, comintr, sc, 1); com_attach_subr(sc); }
/* * ralink_ohci_attach */ static void ralink_ohci_attach(device_t parent, device_t self, void *aux) { struct ralink_ohci_softc * const sc = device_private(self); const struct mainbus_attach_args *ma = aux; usbd_status status; int error; #ifdef RALINK_OHCI_DEBUG const char * const devname = device_xname(self); #endif aprint_naive(": OHCI USB controller\n"); aprint_normal(": OHCI USB controller\n"); sc->sc_ohci.sc_dev = self; sc->sc_ohci.sc_bus.hci_private = sc; sc->sc_ohci.iot = ma->ma_memt; sc->sc_ohci.sc_bus.dmatag = ma->ma_dmat; /* Map I/O registers */ if ((error = bus_space_map(sc->sc_ohci.iot, RT3XXX_OHCI_BASE, RT3XXX_BLOCK_SIZE, 0, &sc->sc_ohci.ioh)) != 0) { aprint_error_dev(self, "can't map OHCI registers, " "error=%d\n", error); return; } sc->sc_ohci.sc_size = RT3XXX_BLOCK_SIZE; #ifdef RALINK_OHCI_DEBUG printf("%s sc: %p ma: %p\n", devname, sc, ma); printf("%s memt: %p dmat: %p\n", devname, ma->ma_memt, ma->ma_dmat); printf("%s: OHCI HcRevision=0x%x\n", devname, OREAD4(&sc->sc_ohci, OHCI_REVISION)); printf("%s: OHCI HcControl=0x%x\n", devname, OREAD4(&sc->sc_ohci, OHCI_CONTROL)); printf("%s: OHCI HcCommandStatus=0x%x\n", devname, OREAD4(&sc->sc_ohci, OHCI_COMMAND_STATUS)); printf("%s: OHCI HcInterruptStatus=0x%x\n", devname, OREAD4(&sc->sc_ohci, OHCI_INTERRUPT_STATUS)); #endif /* Disable OHCI interrupts. */ OWRITE4(&sc->sc_ohci, OHCI_INTERRUPT_DISABLE, OHCI_ALL_INTRS); /* establish the MIPS level interrupt */ sc->sc_ih = ra_intr_establish(RA_IRQ_USB, ohci_intr, sc, 0); if (sc->sc_ih == NULL) { aprint_error_dev(self, "unable to establish irq %d\n", RA_IRQ_USB); goto fail_0; } /* Set vendor for root hub descriptor. */ sc->sc_ohci.sc_id_vendor = 0x1814; strlcpy(sc->sc_ohci.sc_vendor, "Ralink", sizeof(sc->sc_ohci.sc_vendor)); /* Initialize OHCI */ status = ohci_init(&sc->sc_ohci); if (status != USBD_NORMAL_COMPLETION) { aprint_error_dev(self, "init failed, error=%d\n", status); goto fail_0; } #if NEHCI > 0 ralink_usb_hc_add(&sc->sc_hc, self); #endif if (!pmf_device_register1(self, ohci_suspend, ohci_resume, ohci_shutdown)) aprint_error_dev(self, "couldn't establish power handler\n"); /* Attach usb device. */ sc->sc_ohci.sc_child = config_found(self, &sc->sc_ohci.sc_bus, usbctlprint); return; fail_0: bus_space_unmap(sc->sc_ohci.iot, sc->sc_ohci.ioh, sc->sc_ohci.sc_size); sc->sc_ohci.sc_size = 0; }