Lines Matching refs:sc_dci

82 	struct at91dci_softc sc_dci;	/* must be first */
95 at91dci_vbus_interrupt(&sc->sc_dci, vbus_val);
148 sc->sc_dci.sc_clocks_on = &at91_udp_clocks_on;
149 sc->sc_dci.sc_clocks_off = &at91_udp_clocks_off;
150 sc->sc_dci.sc_clocks_arg = sc;
151 sc->sc_dci.sc_pull_up = &at91_udp_pull_up;
152 sc->sc_dci.sc_pull_down = &at91_udp_pull_down;
153 sc->sc_dci.sc_pull_arg = sc;
156 sc->sc_dci.sc_bus.parent = dev;
157 sc->sc_dci.sc_bus.devices = sc->sc_dci.sc_devices;
158 sc->sc_dci.sc_bus.devices_max = AT91_MAX_DEVICES;
161 if (usb_bus_mem_alloc_all(&sc->sc_dci.sc_bus,
165 callout_init_mtx(&sc->sc_vbus, &sc->sc_dci.sc_bus.bus_mtx, 0);
192 sc->sc_dci.sc_io_res =
195 if (!(sc->sc_dci.sc_io_res)) {
199 sc->sc_dci.sc_io_tag = rman_get_bustag(sc->sc_dci.sc_io_res);
200 sc->sc_dci.sc_io_hdl = rman_get_bushandle(sc->sc_dci.sc_io_res);
201 sc->sc_dci.sc_io_size = rman_get_size(sc->sc_dci.sc_io_res);
204 sc->sc_dci.sc_irq_res =
206 if (!(sc->sc_dci.sc_irq_res)) {
209 sc->sc_dci.sc_bus.bdev = device_add_child(dev, "usbus", -1);
210 if (!(sc->sc_dci.sc_bus.bdev)) {
213 device_set_ivars(sc->sc_dci.sc_bus.bdev, &sc->sc_dci.sc_bus);
216 err = bus_setup_intr(dev, sc->sc_dci.sc_irq_res, INTR_TYPE_BIO | INTR_MPSAFE,
217 NULL, (driver_intr_t *)at91dci_interrupt, sc, &sc->sc_dci.sc_intr_hdl);
219 err = bus_setup_intr(dev, sc->sc_dci.sc_irq_res, INTR_TYPE_BIO | INTR_MPSAFE,
220 (driver_intr_t *)at91dci_interrupt, sc, &sc->sc_dci.sc_intr_hdl);
223 sc->sc_dci.sc_intr_hdl = NULL;
227 err = at91dci_init(&sc->sc_dci);
229 err = device_probe_and_attach(sc->sc_dci.sc_bus.bdev);
235 USB_BUS_LOCK(&sc->sc_dci.sc_bus);
237 USB_BUS_UNLOCK(&sc->sc_dci.sc_bus);
253 if (sc->sc_dci.sc_bus.bdev) {
254 bdev = sc->sc_dci.sc_bus.bdev;
261 USB_BUS_LOCK(&sc->sc_dci.sc_bus);
263 USB_BUS_UNLOCK(&sc->sc_dci.sc_bus);
268 AT91_UDP_WRITE_4(&sc->sc_dci, AT91_UDP_TXVC, AT91_UDP_TXVC_DIS);
271 AT91_UDP_WRITE_4(&sc->sc_dci, AT91_UDP_IDR, 0xFFFFFFFF);
272 AT91_UDP_WRITE_4(&sc->sc_dci, AT91_UDP_ICR, 0xFFFFFFFF);
274 if (sc->sc_dci.sc_irq_res && sc->sc_dci.sc_intr_hdl) {
278 at91dci_uninit(&sc->sc_dci);
280 err = bus_teardown_intr(dev, sc->sc_dci.sc_irq_res,
281 sc->sc_dci.sc_intr_hdl);
282 sc->sc_dci.sc_intr_hdl = NULL;
284 if (sc->sc_dci.sc_irq_res) {
286 sc->sc_dci.sc_irq_res);
287 sc->sc_dci.sc_irq_res = NULL;
289 if (sc->sc_dci.sc_io_res) {
291 sc->sc_dci.sc_io_res);
292 sc->sc_dci.sc_io_res = NULL;
294 usb_bus_mem_free_all(&sc->sc_dci.sc_bus, NULL);