tegra: Implement drm_tegra_bo_{get,set}_tiling()
These two functions are simple wrappers around the corresponding IOCTLs and operate on drm_tegra_bo objects. Signed-off-by: Thierry Reding <treding@nvidia.com>main
parent
d3ad65db42
commit
f99522e678
|
@ -292,3 +292,54 @@ int drm_tegra_bo_set_flags(struct drm_tegra_bo *bo, uint32_t flags)
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
drm_public
|
||||||
|
int drm_tegra_bo_get_tiling(struct drm_tegra_bo *bo,
|
||||||
|
struct drm_tegra_bo_tiling *tiling)
|
||||||
|
{
|
||||||
|
struct drm_tegra_gem_get_tiling args;
|
||||||
|
struct drm_tegra *drm = bo->drm;
|
||||||
|
int err;
|
||||||
|
|
||||||
|
if (!bo)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
memset(&args, 0, sizeof(args));
|
||||||
|
args.handle = bo->handle;
|
||||||
|
|
||||||
|
err = drmCommandWriteRead(drm->fd, DRM_TEGRA_GEM_GET_TILING, &args,
|
||||||
|
sizeof(args));
|
||||||
|
if (err < 0)
|
||||||
|
return -errno;
|
||||||
|
|
||||||
|
if (tiling) {
|
||||||
|
tiling->mode = args.mode;
|
||||||
|
tiling->value = args.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
drm_public
|
||||||
|
int drm_tegra_bo_set_tiling(struct drm_tegra_bo *bo,
|
||||||
|
const struct drm_tegra_bo_tiling *tiling)
|
||||||
|
{
|
||||||
|
struct drm_tegra_gem_set_tiling args;
|
||||||
|
struct drm_tegra *drm = bo->drm;
|
||||||
|
int err;
|
||||||
|
|
||||||
|
if (!bo)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
memset(&args, 0, sizeof(args));
|
||||||
|
args.handle = bo->handle;
|
||||||
|
args.mode = tiling->mode;
|
||||||
|
args.value = tiling->value;
|
||||||
|
|
||||||
|
err = drmCommandWriteRead(drm->fd, DRM_TEGRA_GEM_SET_TILING, &args,
|
||||||
|
sizeof(args));
|
||||||
|
if (err < 0)
|
||||||
|
return -errno;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
|
@ -47,4 +47,14 @@ int drm_tegra_bo_unmap(struct drm_tegra_bo *bo);
|
||||||
int drm_tegra_bo_get_flags(struct drm_tegra_bo *bo, uint32_t *flags);
|
int drm_tegra_bo_get_flags(struct drm_tegra_bo *bo, uint32_t *flags);
|
||||||
int drm_tegra_bo_set_flags(struct drm_tegra_bo *bo, uint32_t flags);
|
int drm_tegra_bo_set_flags(struct drm_tegra_bo *bo, uint32_t flags);
|
||||||
|
|
||||||
|
struct drm_tegra_bo_tiling {
|
||||||
|
uint32_t mode;
|
||||||
|
uint32_t value;
|
||||||
|
};
|
||||||
|
|
||||||
|
int drm_tegra_bo_get_tiling(struct drm_tegra_bo *bo,
|
||||||
|
struct drm_tegra_bo_tiling *tiling);
|
||||||
|
int drm_tegra_bo_set_tiling(struct drm_tegra_bo *bo,
|
||||||
|
const struct drm_tegra_bo_tiling *tiling);
|
||||||
|
|
||||||
#endif /* __DRM_TEGRA_H__ */
|
#endif /* __DRM_TEGRA_H__ */
|
||||||
|
|
Loading…
Reference in New Issue