Lines Matching refs:doorbell

313 	rdev->doorbell.base = pci_resource_start(rdev->pdev, 2);  in radeon_doorbell_init()
314 rdev->doorbell.size = pci_resource_len(rdev->pdev, 2); in radeon_doorbell_init()
316 rdev->doorbell.num_doorbells = min_t(u32, rdev->doorbell.size / sizeof(u32), RADEON_MAX_DOORBELLS); in radeon_doorbell_init()
317 if (rdev->doorbell.num_doorbells == 0) in radeon_doorbell_init()
320 rdev->doorbell.ptr = ioremap(rdev->doorbell.base, rdev->doorbell.num_doorbells * sizeof(u32)); in radeon_doorbell_init()
321 if (rdev->doorbell.ptr == NULL) { in radeon_doorbell_init()
324 DRM_INFO("doorbell mmio base: 0x%08X\n", (uint32_t)rdev->doorbell.base); in radeon_doorbell_init()
325 DRM_INFO("doorbell mmio size: %u\n", (unsigned)rdev->doorbell.size); in radeon_doorbell_init()
327 memset(&rdev->doorbell.used, 0, sizeof(rdev->doorbell.used)); in radeon_doorbell_init()
341 iounmap(rdev->doorbell.ptr); in radeon_doorbell_fini()
342 rdev->doorbell.ptr = NULL; in radeon_doorbell_fini()
354 int radeon_doorbell_get(struct radeon_device *rdev, u32 *doorbell) in radeon_doorbell_get() argument
356 unsigned long offset = find_first_zero_bit(rdev->doorbell.used, rdev->doorbell.num_doorbells); in radeon_doorbell_get()
357 if (offset < rdev->doorbell.num_doorbells) { in radeon_doorbell_get()
358 __set_bit(offset, rdev->doorbell.used); in radeon_doorbell_get()
359 *doorbell = offset; in radeon_doorbell_get()
374 void radeon_doorbell_free(struct radeon_device *rdev, u32 doorbell) in radeon_doorbell_free() argument
376 if (doorbell < rdev->doorbell.num_doorbells) in radeon_doorbell_free()
377 __clear_bit(doorbell, rdev->doorbell.used); in radeon_doorbell_free()
400 if (rdev->doorbell.size > rdev->doorbell.num_doorbells * sizeof(u32)) { in radeon_doorbell_get_kfd_info()
401 *aperture_base = rdev->doorbell.base; in radeon_doorbell_get_kfd_info()
402 *aperture_size = rdev->doorbell.size; in radeon_doorbell_get_kfd_info()
403 *start_offset = rdev->doorbell.num_doorbells * sizeof(u32); in radeon_doorbell_get_kfd_info()