void pcibr_ate_free(struct pcibus_info *pcibus_info, int index) { volatile u64 ate; int count; unsigned long flags; if (pcibr_invalidate_ate) { /* For debugging purposes, clear the valid bit in the ATE */ ate = *pcibr_ate_addr(pcibus_info, index); count = pcibus_info->pbi_int_ate_resource.ate[index]; ate_write(pcibus_info, index, count, (ate & ~PCI32_ATE_V)); } spin_lock_irqsave(&pcibus_info->pbi_lock, flags); free_ate_resource(&pcibus_info->pbi_int_ate_resource, index); spin_unlock_irqrestore(&pcibus_info->pbi_lock, flags); }
void pcibr_ate_free(struct pcibus_info *pcibus_info, int index) { volatile uint64_t ate; int count; uint64_t flags; if (pcibr_invalidate_ate) { /* For debugging purposes, clear the valid bit in the ATE */ ate = *pcibr_ate_addr(pcibus_info, index); count = pcibus_info->pbi_int_ate_resource.ate[index]; ate_write(pcibus_info, index, count, (ate & ~PCI32_ATE_V)); } flags = pcibr_lock(pcibus_info); free_ate_resource(&pcibus_info->pbi_int_ate_resource, index); pcibr_unlock(pcibus_info, flags); }