]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
gpu: host1x: Represent host1x bus devices in debugfs
authorThierry Reding <treding@nvidia.com>
Wed, 23 Jan 2019 11:34:05 +0000 (12:34 +0100)
committerThierry Reding <treding@nvidia.com>
Mon, 4 Feb 2019 07:35:54 +0000 (08:35 +0100)
This new debugfs file represents the state of host1x bus devices,
specifying the list of subdevices and marking which ones have
successfully registered.

Signed-off-by: Thierry Reding <treding@nvidia.com>
drivers/gpu/host1x/bus.c

index b4c385d4a6af2ec2568d1f5226aa587da1c220db..103fffc1904bbea71d0bf5535a7938bc41b0ec53 100644 (file)
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <linux/debugfs.h>
 #include <linux/host1x.h>
 #include <linux/of.h>
+#include <linux/seq_file.h>
 #include <linux/slab.h>
 #include <linux/of_device.h>
 
@@ -500,6 +502,36 @@ static void host1x_detach_driver(struct host1x *host1x,
        mutex_unlock(&host1x->devices_lock);
 }
 
+static int host1x_devices_show(struct seq_file *s, void *data)
+{
+       struct host1x *host1x = s->private;
+       struct host1x_device *device;
+
+       mutex_lock(&host1x->devices_lock);
+
+       list_for_each_entry(device, &host1x->devices, list) {
+               struct host1x_subdev *subdev;
+
+               seq_printf(s, "%s\n", dev_name(&device->dev));
+
+               mutex_lock(&device->subdevs_lock);
+
+               list_for_each_entry(subdev, &device->active, list)
+                       seq_printf(s, "  %pOFf: %s\n", subdev->np,
+                                  dev_name(subdev->client->dev));
+
+               list_for_each_entry(subdev, &device->subdevs, list)
+                       seq_printf(s, "  %pOFf:\n", subdev->np);
+
+               mutex_unlock(&device->subdevs_lock);
+       }
+
+       mutex_unlock(&host1x->devices_lock);
+
+       return 0;
+}
+DEFINE_SHOW_ATTRIBUTE(host1x_devices);
+
 /**
  * host1x_register() - register a host1x controller
  * @host1x: host1x controller
@@ -523,6 +555,9 @@ int host1x_register(struct host1x *host1x)
 
        mutex_unlock(&drivers_lock);
 
+       debugfs_create_file("devices", S_IRUGO, host1x->debugfs, host1x,
+                           &host1x_devices_fops);
+
        return 0;
 }