gpu: host1x: Refactor channel allocation code
This is largely a rewrite of the Host1x channel allocation code, bringing several changes: - The previous code could deadlock due to an interaction between the 'reflock' mutex and CDMA timeout handling. This gets rid of the mutex. - Support for more than 32 channels, required for Tegra186 - General refactoring, including better encapsulation of channel ownership handling into channel.c Signed-off-by: Mikko Perttunen <mperttunen@nvidia.com> Reviewed-by: Dmitry Osipenko <digetx@gmail.com> Tested-by: Dmitry Osipenko <digetx@gmail.com> Signed-off-by: Thierry Reding <treding@nvidia.com>
This commit is contained in:

committed by
Thierry Reding

parent
03f0de770e
commit
8474b02531
@@ -48,7 +48,7 @@ static int gr3d_init(struct host1x_client *client)
|
||||
|
||||
client->syncpts[0] = host1x_syncpt_request(client->dev, flags);
|
||||
if (!client->syncpts[0]) {
|
||||
host1x_channel_free(gr3d->channel);
|
||||
host1x_channel_put(gr3d->channel);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@ static int gr3d_exit(struct host1x_client *client)
|
||||
return err;
|
||||
|
||||
host1x_syncpt_free(client->syncpts[0]);
|
||||
host1x_channel_free(gr3d->channel);
|
||||
host1x_channel_put(gr3d->channel);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user