예제 #1
0
파일: pcibr_ate.c 프로젝트: 274914765/C
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);
}
예제 #2
0
파일: pcibr_ate.c 프로젝트: 1x23/unifi-gpl
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);
}