diff options
author | Thierry Reding <treding@nvidia.com> | 2019-01-23 14:34:05 +0300 |
---|---|---|
committer | Thierry Reding <treding@nvidia.com> | 2019-02-04 10:35:54 +0300 |
commit | f67524caf49949b8d1a219f1fd8ea263854a6683 (patch) | |
tree | d50ad57dc340eafe046830c616ee5e7f12e05744 /drivers/gpu/host1x/bus.c | |
parent | 0747a672a32829809675028ba396f394b104ee31 (diff) | |
download | linux-f67524caf49949b8d1a219f1fd8ea263854a6683.tar.xz |
gpu: host1x: Represent host1x bus devices in debugfs
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>
Diffstat (limited to 'drivers/gpu/host1x/bus.c')
-rw-r--r-- | drivers/gpu/host1x/bus.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/drivers/gpu/host1x/bus.c b/drivers/gpu/host1x/bus.c index b4c385d4a6af..103fffc1904b 100644 --- a/drivers/gpu/host1x/bus.c +++ b/drivers/gpu/host1x/bus.c @@ -15,8 +15,10 @@ * 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; } |