diff options
author | Balbir Singh <bsingharora@gmail.com> | 2017-12-15 13:59:42 +1100 |
---|---|---|
committer | Stewart Smith <stewart@linux.vnet.ibm.com> | 2018-02-13 01:30:11 -0600 |
commit | 4133e973b4f2bf61d387ac4528bed3acd12b13d9 (patch) | |
tree | e13954807d255e38e65228207c90e53b2fae0231 /hw | |
parent | 725d4a2c6cc7c97bb6754094567d079e70f06323 (diff) | |
download | talos-skiboot-4133e973b4f2bf61d387ac4528bed3acd12b13d9.tar.gz talos-skiboot-4133e973b4f2bf61d387ac4528bed3acd12b13d9.zip |
hw/npu2: support creset of npu2 devices
creset calls in the hw procedure that resets the PHY, we don't
take them out of reset, just put them in reset.
Signed-off-by: Balbir Singh <bsingharora@gmail.com>
Acked-by: Alistair Popple <alistair@popple.id.au>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'hw')
-rw-r--r-- | hw/npu2-hw-procedures.c | 2 | ||||
-rw-r--r-- | hw/npu2.c | 21 |
2 files changed, 21 insertions, 2 deletions
diff --git a/hw/npu2-hw-procedures.c b/hw/npu2-hw-procedures.c index b21c399d..9e4a4316 100644 --- a/hw/npu2-hw-procedures.c +++ b/hw/npu2-hw-procedures.c @@ -233,7 +233,7 @@ static bool poll_fence_status(struct npu2_dev *ndev, uint64_t val) } /* Procedure 1.2.1 - Reset NPU/NDL */ -static uint32_t reset_ntl(struct npu2_dev *ndev) +uint32_t reset_ntl(struct npu2_dev *ndev) { uint64_t val; int lane; @@ -1170,6 +1170,25 @@ static int64_t npu2_freset(struct pci_slot *slot __unused) return OPAL_SUCCESS; } +static int64_t npu2_creset(struct pci_slot *slot) +{ + struct npu2 *p; + int i; + struct npu2_dev *ndev; + + p = phb_to_npu2(slot->phb); + NPU2INF(p, "Creset PHB state\n"); + + for (i = 0; i < p->total_devices; i++) { + ndev = &p->devices[i]; + if (ndev) { + NPU2DEVINF(ndev, "Resetting device\n"); + reset_ntl(ndev); + } + } + return OPAL_SUCCESS; +} + static struct pci_slot *npu2_slot_create(struct phb *phb) { struct pci_slot *slot; @@ -1191,7 +1210,7 @@ static struct pci_slot *npu2_slot_create(struct phb *phb) slot->ops.poll_link = NULL; slot->ops.hreset = npu2_hreset; slot->ops.freset = npu2_freset; - slot->ops.creset = NULL; + slot->ops.creset = npu2_creset; return slot; } |