11.01.2021 16:00, Mikko Perttunen пишет:
+int tegra_drm_ioctl_channel_open(struct drm_device *drm, void *data,
struct drm_file *file)
+{
- struct tegra_drm_file *fpriv = file->driver_priv;
- struct tegra_drm *tegra = drm->dev_private;
- struct drm_tegra_channel_open *args = data;
- struct tegra_drm_client *client = NULL;
- struct tegra_drm_channel_ctx *ctx;
- int err;
- if (args->flags)
return -EINVAL;
- ctx = kzalloc(sizeof(*ctx), GFP_KERNEL);
- if (!ctx)
return -ENOMEM;
- err = -ENODEV;
- list_for_each_entry(client, &tegra->clients, list) {
if (client->base.class == args->host1x_class) {
err = 0;
break;
}
- }
- if (err)
goto free_ctx;
- if (client->shared_channel) {
ctx->channel = host1x_channel_get(client->shared_channel);
Let's omit the shared_channel until it will be really needed and used.