Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 47b5c838 authored by Linas Vepstas's avatar Linas Vepstas Committed by Paul Mackerras
Browse files

[POWERPC] EEH: enable MMIO/DMA on frozen slot



Add wrapper around the rtas call to enable MMIO or DMA on a frozen pci
slot.

Signed-off-by: default avatarLinas Vepstas <linas@austin.ibm.com>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent cb5b5624
Loading
Loading
Loading
Loading
+29 −0
Original line number Diff line number Diff line
@@ -481,6 +481,35 @@ eeh_slot_availability(struct pci_dn *pdn)
	return -1;
}

/**
 * rtas_pci_enable - enable MMIO or DMA transfers for this slot
 * @pdn pci device node
 */

int
rtas_pci_enable(struct pci_dn *pdn, int function)
{
	int config_addr;
	int rc;

	/* Use PE configuration address, if present */
	config_addr = pdn->eeh_config_addr;
	if (pdn->eeh_pe_config_addr)
		config_addr = pdn->eeh_pe_config_addr;

	rc = rtas_call(ibm_set_eeh_option, 4, 1, NULL,
	               config_addr,
	               BUID_HI(pdn->phb->buid),
	               BUID_LO(pdn->phb->buid),
		            function);

	if (rc)
		printk(KERN_WARNING "EEH: Cannot enable function %d, err=%d dn=%s\n",
		        function, rc, pdn->node->full_name);

	return rc;
}

/**
 * rtas_pci_slot_reset - raises/lowers the pci #RST line
 * @pdn pci device node
+11 −0
Original line number Diff line number Diff line
@@ -68,6 +68,17 @@ struct pci_dev *pci_get_device_by_addr(unsigned long addr);
 */
void eeh_slot_error_detail (struct pci_dn *pdn, int severity);

/**
 * rtas_pci_enableo - enable IO transfers for this slot
 * @pdn:       pci device node
 * @function:  either EEH_THAW_MMIO or EEH_THAW_DMA 
 *
 * Enable I/O transfers to this slot 
 */
#define EEH_THAW_MMIO 2
#define EEH_THAW_DMA  3
int rtas_pci_enable(struct pci_dn *pdn, int function);

/**
 * rtas_set_slot_reset -- unfreeze a frozen slot
 *