| 340 | #endif |
| 341 | |
| 342 | static int |
| 343 | nexus_activate_resource(device_t bus, device_t child, int type, int rid, |
| 344 | struct resource *r) |
| 345 | { |
| 346 | int err; |
| 347 | bus_addr_t paddr; |
| 348 | bus_size_t psize; |
| 349 | bus_space_handle_t vaddr; |
| 350 | |
| 351 | if ((err = rman_activate_resource(r)) != 0) |
| 352 | return (err); |
| 353 | |
| 354 | /* |
| 355 | * If this is a memory resource, map it into the kernel. |
| 356 | */ |
| 357 | if (type == SYS_RES_MEMORY || type == SYS_RES_IOPORT) { |
| 358 | paddr = (bus_addr_t)rman_get_start(r); |
| 359 | psize = (bus_size_t)rman_get_size(r); |
| 360 | #ifdef FDT |
| 361 | err = bus_space_map(fdtbus_bs_tag, paddr, psize, 0, &vaddr); |
| 362 | if (err != 0) { |
| 363 | rman_deactivate_resource(r); |
| 364 | return (err); |
| 365 | } |
| 366 | rman_set_bustag(r, fdtbus_bs_tag); |
| 367 | #else |
| 368 | vaddr = (bus_space_handle_t)pmap_mapdev((vm_offset_t)paddr, |
| 369 | (vm_size_t)psize); |
| 370 | if (vaddr == 0) { |
| 371 | rman_deactivate_resource(r); |
| 372 | return (ENOMEM); |
| 373 | } |
| 374 | rman_set_bustag(r, (void *)1); |
| 375 | #endif |
| 376 | rman_set_virtual(r, (void *)vaddr); |
| 377 | rman_set_bushandle(r, vaddr); |
| 378 | return (0); |
| 379 | } else if (type == SYS_RES_IRQ) { |
| 380 | err = intr_activate_irq(child, r); |
| 381 | if (err != 0) { |
| 382 | rman_deactivate_resource(r); |
| 383 | return (err); |
| 384 | } |
| 385 | } |
| 386 | return (0); |
| 387 | } |
| 388 | |
| 389 | static int |
| 390 | nexus_deactivate_resource(device_t bus, device_t child, int type, int rid, |
nothing calls this directly
no test coverage detected