static const char *num_syncpts_name = "num_pts";
static const char *num_mutexes_name = "num_mlocks";
static const char *gather_filter_enabled_name = "gather_filter_enabled";
+static const char *alloc_syncpts_per_apps_name = "alloc_syncpts_per_apps";
+static const char *alloc_chs_per_submits_name = "alloc_chs_per_submits";
struct nvhost_master *nvhost;
return 0;
}
+int alloc_syncpts_per_apps(struct nvhost_syncpt *sp)
+{
+ struct nvhost_master *host = syncpt_to_dev(sp);
+ return host->info.syncpt_policy == SYNCPT_PER_CHANNEL_INSTANCE;
+}
+
+int alloc_chs_per_submits(struct nvhost_syncpt *sp)
+{
+ struct nvhost_master *host = syncpt_to_dev(sp);
+ return host->info.channel_policy == MAP_CHANNEL_ON_SUBMIT;
+}
+
static ssize_t nvhost_syncpt_capability_show(struct kobject *kobj,
struct kobj_attribute *attr, char *buf)
{
}
host->caps_nodes = devm_kzalloc(&host->dev->dev,
- sizeof(struct nvhost_capability_node) * 3, GFP_KERNEL);
+ sizeof(struct nvhost_capability_node) * 5, GFP_KERNEL);
if (!host->caps_nodes) {
err = -ENOMEM;
goto fail;
goto fail;
}
+ if (nvhost_set_sysfs_capability_node(host,
+ alloc_chs_per_submits_name, host->caps_nodes + 3,
+ alloc_chs_per_submits, NULL)) {
+ err = -EIO;
+ goto fail;
+ }
+
+ if (nvhost_set_sysfs_capability_node(host,
+ alloc_syncpts_per_apps_name, host->caps_nodes + 4,
+ alloc_syncpts_per_apps, NULL)) {
+ err = -EIO;
+ goto fail;
+ }
+
return 0;
fail:
return err;