V4L/DVB (11174): pvrusb2: Implement reporting of connected sub-devices

The pvrusb2 driver has a function that reports internal state.  It can
be accessed from either the debug interface or as the result of a v4l
log status request.  This change adds information listing sub-devices
to the report.

Signed-off-by: Mike Isely <isely@pobox.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.c b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
index 2f9667e..bd4e374 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
@@ -4779,6 +4779,29 @@
 			stats.buffers_processed,
 			stats.buffers_failed);
 	}
+	case 6: {
+		struct v4l2_subdev *sd;
+		unsigned int tcnt = 0;
+		unsigned int ccnt;
+		const char *p;
+		unsigned int id;
+		ccnt = scnprintf(buf,
+				 acnt,
+				 "Associted v4l2_subdev drivers:");
+		tcnt += ccnt;
+		v4l2_device_for_each_subdev(sd, &hdw->v4l2_dev) {
+			id = sd->grp_id;
+			p = NULL;
+			if (id < ARRAY_SIZE(module_names)) {
+				p = module_names[id];
+			}
+			if (!p) p = "(unknown)";
+			ccnt = scnprintf(buf + tcnt,
+					 acnt - tcnt,
+					 " %s (%u)", p, id);
+		}
+		return tcnt;
+	}
 	default: break;
 	}
 	return 0;