| /* |
| * The file intends to implement the functions needed by EEH, which is |
| * built on IODA compliant chip. Actually, lots of functions related |
| * to EEH would be built based on the OPAL APIs. |
| * |
| * Copyright Benjamin Herrenschmidt & Gavin Shan, IBM Corporation 2013. |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License as published by |
| * the Free Software Foundation; either version 2 of the License, or |
| * (at your option) any later version. |
| */ |
| |
| #include <linux/bootmem.h> |
| #include <linux/delay.h> |
| #include <linux/init.h> |
| #include <linux/io.h> |
| #include <linux/irq.h> |
| #include <linux/kernel.h> |
| #include <linux/msi.h> |
| #include <linux/pci.h> |
| #include <linux/string.h> |
| |
| #include <asm/eeh.h> |
| #include <asm/eeh_event.h> |
| #include <asm/io.h> |
| #include <asm/iommu.h> |
| #include <asm/msi_bitmap.h> |
| #include <asm/opal.h> |
| #include <asm/pci-bridge.h> |
| #include <asm/ppc-pci.h> |
| #include <asm/tce.h> |
| |
| #include "powernv.h" |
| #include "pci.h" |
| |
| /** |
| * ioda_eeh_post_init - Chip dependent post initialization |
| * @hose: PCI controller |
| * |
| * The function will be called after eeh PEs and devices |
| * have been built. That means the EEH is ready to supply |
| * service with I/O cache. |
| */ |
| static int ioda_eeh_post_init(struct pci_controller *hose) |
| { |
| struct pnv_phb *phb = hose->private_data; |
| |
| /* FIXME: Enable it for PHB3 later */ |
| if (phb->type == PNV_PHB_IODA1) |
| phb->eeh_enabled = 1; |
| |
| return 0; |
| } |
| |
| struct pnv_eeh_ops ioda_eeh_ops = { |
| .post_init = ioda_eeh_post_init, |
| .set_option = NULL, |
| .get_state = NULL, |
| .reset = NULL, |
| .get_log = NULL, |
| .configure_bridge = NULL, |
| .next_error = NULL |
| }; |