Message ID | 20190220210343.28157-7-eric@anholt.net (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [1/7] drm: Add a helper function for printing a debugfs_regset32. | expand |
Hi, Le mercredi 20 février 2019 à 13:03 -0800, Eric Anholt a écrit : > Otherwise, you sometimes decode the ident fields based on 0xdeadbeef > register reads. Reviewed-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com> Cheers, Paul > Signed-off-by: Eric Anholt <eric@anholt.net> > --- > drivers/gpu/drm/vc4/vc4_v3d.c | 29 +++++++++++++++++------------ > 1 file changed, 17 insertions(+), 12 deletions(-) > > diff --git a/drivers/gpu/drm/vc4/vc4_v3d.c b/drivers/gpu/drm/vc4/vc4_v3d.c > index 7820b8eaaa98..36e6c7086ecf 100644 > --- a/drivers/gpu/drm/vc4/vc4_v3d.c > +++ b/drivers/gpu/drm/vc4/vc4_v3d.c > @@ -108,18 +108,23 @@ static int vc4_v3d_debugfs_ident(struct seq_file *m, void *unused) > struct drm_info_node *node = (struct drm_info_node *)m->private; > struct drm_device *dev = node->minor->dev; > struct vc4_dev *vc4 = to_vc4_dev(dev); > - uint32_t ident1 = V3D_READ(V3D_IDENT1); > - uint32_t nslc = VC4_GET_FIELD(ident1, V3D_IDENT1_NSLC); > - uint32_t tups = VC4_GET_FIELD(ident1, V3D_IDENT1_TUPS); > - uint32_t qups = VC4_GET_FIELD(ident1, V3D_IDENT1_QUPS); > - > - seq_printf(m, "Revision: %d\n", > - VC4_GET_FIELD(ident1, V3D_IDENT1_REV)); > - seq_printf(m, "Slices: %d\n", nslc); > - seq_printf(m, "TMUs: %d\n", nslc * tups); > - seq_printf(m, "QPUs: %d\n", nslc * qups); > - seq_printf(m, "Semaphores: %d\n", > - VC4_GET_FIELD(ident1, V3D_IDENT1_NSEM)); > + int ret = vc4_v3d_pm_get(vc4); > + > + if (ret == 0) { > + uint32_t ident1 = V3D_READ(V3D_IDENT1); > + uint32_t nslc = VC4_GET_FIELD(ident1, V3D_IDENT1_NSLC); > + uint32_t tups = VC4_GET_FIELD(ident1, V3D_IDENT1_TUPS); > + uint32_t qups = VC4_GET_FIELD(ident1, V3D_IDENT1_QUPS); > + > + seq_printf(m, "Revision: %d\n", > + VC4_GET_FIELD(ident1, V3D_IDENT1_REV)); > + seq_printf(m, "Slices: %d\n", nslc); > + seq_printf(m, "TMUs: %d\n", nslc * tups); > + seq_printf(m, "QPUs: %d\n", nslc * qups); > + seq_printf(m, "Semaphores: %d\n", > + VC4_GET_FIELD(ident1, V3D_IDENT1_NSEM)); > + vc4_v3d_pm_put(vc4); > + } > > return 0; > }
diff --git a/drivers/gpu/drm/vc4/vc4_v3d.c b/drivers/gpu/drm/vc4/vc4_v3d.c index 7820b8eaaa98..36e6c7086ecf 100644 --- a/drivers/gpu/drm/vc4/vc4_v3d.c +++ b/drivers/gpu/drm/vc4/vc4_v3d.c @@ -108,18 +108,23 @@ static int vc4_v3d_debugfs_ident(struct seq_file *m, void *unused) struct drm_info_node *node = (struct drm_info_node *)m->private; struct drm_device *dev = node->minor->dev; struct vc4_dev *vc4 = to_vc4_dev(dev); - uint32_t ident1 = V3D_READ(V3D_IDENT1); - uint32_t nslc = VC4_GET_FIELD(ident1, V3D_IDENT1_NSLC); - uint32_t tups = VC4_GET_FIELD(ident1, V3D_IDENT1_TUPS); - uint32_t qups = VC4_GET_FIELD(ident1, V3D_IDENT1_QUPS); - - seq_printf(m, "Revision: %d\n", - VC4_GET_FIELD(ident1, V3D_IDENT1_REV)); - seq_printf(m, "Slices: %d\n", nslc); - seq_printf(m, "TMUs: %d\n", nslc * tups); - seq_printf(m, "QPUs: %d\n", nslc * qups); - seq_printf(m, "Semaphores: %d\n", - VC4_GET_FIELD(ident1, V3D_IDENT1_NSEM)); + int ret = vc4_v3d_pm_get(vc4); + + if (ret == 0) { + uint32_t ident1 = V3D_READ(V3D_IDENT1); + uint32_t nslc = VC4_GET_FIELD(ident1, V3D_IDENT1_NSLC); + uint32_t tups = VC4_GET_FIELD(ident1, V3D_IDENT1_TUPS); + uint32_t qups = VC4_GET_FIELD(ident1, V3D_IDENT1_QUPS); + + seq_printf(m, "Revision: %d\n", + VC4_GET_FIELD(ident1, V3D_IDENT1_REV)); + seq_printf(m, "Slices: %d\n", nslc); + seq_printf(m, "TMUs: %d\n", nslc * tups); + seq_printf(m, "QPUs: %d\n", nslc * qups); + seq_printf(m, "Semaphores: %d\n", + VC4_GET_FIELD(ident1, V3D_IDENT1_NSEM)); + vc4_v3d_pm_put(vc4); + } return 0; }
Otherwise, you sometimes decode the ident fields based on 0xdeadbeef register reads. Signed-off-by: Eric Anholt <eric@anholt.net> --- drivers/gpu/drm/vc4/vc4_v3d.c | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-)