drm/tegra: Fixes for v5.13-rc5
The most important change here fixes a race condition that causes either HDA or (more frequently) display to malfunction because they race for enabling the SOR power domain at probe time. Other than that, there's a couple of build warnings for issues introduced in v5.13 as well as some minor fixes, such as reference leak plugs. -----BEGIN PGP SIGNATURE----- iQJHBAABCAAxFiEEiOrDCAFJzPfAjcif3SOs138+s6EFAmC46msTHHRyZWRpbmdA bnZpZGlhLmNvbQAKCRDdI6zXfz6zocHxEACTS0lR63rULGmYV/+spAC9yOBeLkBQ ElHHt2L9QL3yMLVAsozoPZLQDBszuAepeMYXNtP7H+XjBjxloHi1kn1yS8TNfhRD HZhyTdyUWAuSGvcm/wyk9QWimoQ75/Q+JTooxedtOjFZBTjx18sRjCV9DQwrr6sN iq/RbAVWcrJ5fL80Yh/wY1DegEA+aRrb+Owm3lmXQ1oPJJFL7VpALWrXcb5yGMIL 2utnKFGML3llRYlUAESWd03By64ZvsGxFDQiHHpjEKlG0SpZbosGqYmMjBXKloE3 zXzeJ4dnhkbFdEGLip5qdoLRf4p0Dbm70njBfXXEUu9629FgChGCAbz7rOogLxts OADDtq/n3xaLnhAoSdtQvDgPtPob21+vgKGp8JbdAjdoqvCA+5u+TDfUxPU54/oe FCOPoayHCE3qSY5UMzPrzdkuBpXi+a5VF9HRwsYn09wE0TOncPo4fwyJJqKmUn9r lTwFKrAfrIEk6EXgZUgxPGfROnUrYDrfYZNlyODIj3I/G3LT0wTe4ynNmEi6aQp9 YxEqOkoVrljzBKuQCDjjSg3BEWZmmkP2Zn1IcKreuaK37qcQFgoXAd6PzcQBPsus f8Y1gOXRC6TL+3ZFyoInb7kkceU2VRdQpXpsd+OfcCDUIo2yN+VceVE2pNqiNCzD wWt0TjIPnrw9sA== =K0PC -----END PGP SIGNATURE----- Merge tag 'drm/tegra/for-5.13-rc5' of ssh://git.freedesktop.org/git/tegra/linux into drm-fixes drm/tegra: Fixes for v5.13-rc5 The most important change here fixes a race condition that causes either HDA or (more frequently) display to malfunction because they race for enabling the SOR power domain at probe time. Other than that, there's a couple of build warnings for issues introduced in v5.13 as well as some minor fixes, such as reference leak plugs. Signed-off-by: Dave Airlie <airlied@redhat.com> From: Thierry Reding <thierry.reding@gmail.com> Link: https://patchwork.freedesktop.org/patch/msgid/20210603144624.788861-1-thierry.reding@gmail.com
This commit is contained in:
commit
37e2f2e800
5 changed files with 92 additions and 42 deletions
|
|
@ -332,12 +332,30 @@ static inline struct host1x_device *to_host1x_device(struct device *dev)
|
|||
int host1x_device_init(struct host1x_device *device);
|
||||
int host1x_device_exit(struct host1x_device *device);
|
||||
|
||||
int __host1x_client_register(struct host1x_client *client,
|
||||
struct lock_class_key *key);
|
||||
#define host1x_client_register(class) \
|
||||
({ \
|
||||
static struct lock_class_key __key; \
|
||||
__host1x_client_register(class, &__key); \
|
||||
void __host1x_client_init(struct host1x_client *client, struct lock_class_key *key);
|
||||
void host1x_client_exit(struct host1x_client *client);
|
||||
|
||||
#define host1x_client_init(client) \
|
||||
({ \
|
||||
static struct lock_class_key __key; \
|
||||
__host1x_client_init(client, &__key); \
|
||||
})
|
||||
|
||||
int __host1x_client_register(struct host1x_client *client);
|
||||
|
||||
/*
|
||||
* Note that this wrapper calls __host1x_client_init() for compatibility
|
||||
* with existing callers. Callers that want to separately initialize and
|
||||
* register a host1x client must first initialize using either of the
|
||||
* __host1x_client_init() or host1x_client_init() functions and then use
|
||||
* the low-level __host1x_client_register() function to avoid the client
|
||||
* getting reinitialized.
|
||||
*/
|
||||
#define host1x_client_register(client) \
|
||||
({ \
|
||||
static struct lock_class_key __key; \
|
||||
__host1x_client_init(client, &__key); \
|
||||
__host1x_client_register(client); \
|
||||
})
|
||||
|
||||
int host1x_client_unregister(struct host1x_client *client);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue