[Skiboot] [PATCH] hw/npu2: support creset of npu2 devices
Balbir Singh
bsingharora at gmail.com
Fri Dec 15 13:59:42 AEDT 2017
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 at gmail.com>
---
hw/npu2-hw-procedures.c | 2 +-
hw/npu2.c | 21 ++++++++++++++++++++-
include/npu2.h | 1 +
3 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/hw/npu2-hw-procedures.c b/hw/npu2-hw-procedures.c
index 1318e867..dfff4a2a 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;
diff --git a/hw/npu2.c b/hw/npu2.c
index 7ffb0941..ee75b6fd 100644
--- a/hw/npu2.c
+++ b/hw/npu2.c
@@ -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;
}
diff --git a/include/npu2.h b/include/npu2.h
index dae152a6..c1f39616 100644
--- a/include/npu2.h
+++ b/include/npu2.h
@@ -162,5 +162,6 @@ int64_t npu2_dev_procedure(void *dev, struct pci_cfg_reg_filter *pcrf,
void npu2_dev_procedure_reset(struct npu2_dev *dev);
void npu2_set_link_flag(struct npu2_dev *ndev, uint8_t flag);
void npu2_clear_link_flag(struct npu2_dev *ndev, uint8_t flag);
+uint32_t reset_ntl(struct npu2_dev *ndev);
extern int nv_zcal_nominal;
#endif /* __NPU2_H */
--
2.13.6
More information about the Skiboot
mailing list