Lines Matching refs:doorbell

340 	rdev->doorbell.base = pci_resource_start(rdev->pdev, 2);  in radeon_doorbell_init()
341 rdev->doorbell.size = pci_resource_len(rdev->pdev, 2); in radeon_doorbell_init()
343 rdev->doorbell.num_doorbells = min_t(u32, rdev->doorbell.size / sizeof(u32), RADEON_MAX_DOORBELLS); in radeon_doorbell_init()
344 if (rdev->doorbell.num_doorbells == 0) in radeon_doorbell_init()
347 rdev->doorbell.ptr = ioremap(rdev->doorbell.base, rdev->doorbell.num_doorbells * sizeof(u32)); in radeon_doorbell_init()
348 if (rdev->doorbell.ptr == NULL) { in radeon_doorbell_init()
351 DRM_INFO("doorbell mmio base: 0x%08X\n", (uint32_t)rdev->doorbell.base); in radeon_doorbell_init()
352 DRM_INFO("doorbell mmio size: %u\n", (unsigned)rdev->doorbell.size); in radeon_doorbell_init()
354 memset(&rdev->doorbell.used, 0, sizeof(rdev->doorbell.used)); in radeon_doorbell_init()
368 iounmap(rdev->doorbell.ptr); in radeon_doorbell_fini()
369 rdev->doorbell.ptr = NULL; in radeon_doorbell_fini()
381 int radeon_doorbell_get(struct radeon_device *rdev, u32 *doorbell) in radeon_doorbell_get() argument
383 unsigned long offset = find_first_zero_bit(rdev->doorbell.used, rdev->doorbell.num_doorbells); in radeon_doorbell_get()
384 if (offset < rdev->doorbell.num_doorbells) { in radeon_doorbell_get()
385 __set_bit(offset, rdev->doorbell.used); in radeon_doorbell_get()
386 *doorbell = offset; in radeon_doorbell_get()
401 void radeon_doorbell_free(struct radeon_device *rdev, u32 doorbell) in radeon_doorbell_free() argument
403 if (doorbell < rdev->doorbell.num_doorbells) in radeon_doorbell_free()
404 __clear_bit(doorbell, rdev->doorbell.used); in radeon_doorbell_free()