mirror of https://gitee.com/openkylin/linux.git
drm: omapdrm: Rename occurrences of paddr to dma_addr
The fields, variables and functions deal with DMA addresses, name them accordingly. The omap_gem_get_paddr() and omap_gem_put_paddr() will be addressed differently separately. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
This commit is contained in:
parent
aa0408bcb1
commit
16869083b9
|
@ -188,14 +188,14 @@ int omap_gem_roll(struct drm_gem_object *obj, uint32_t roll);
|
||||||
void omap_gem_cpu_sync(struct drm_gem_object *obj, int pgoff);
|
void omap_gem_cpu_sync(struct drm_gem_object *obj, int pgoff);
|
||||||
void omap_gem_dma_sync(struct drm_gem_object *obj,
|
void omap_gem_dma_sync(struct drm_gem_object *obj,
|
||||||
enum dma_data_direction dir);
|
enum dma_data_direction dir);
|
||||||
int omap_gem_get_paddr(struct drm_gem_object *obj, dma_addr_t *paddr);
|
int omap_gem_get_paddr(struct drm_gem_object *obj, dma_addr_t *dma_addr);
|
||||||
void omap_gem_put_paddr(struct drm_gem_object *obj);
|
void omap_gem_put_paddr(struct drm_gem_object *obj);
|
||||||
int omap_gem_get_pages(struct drm_gem_object *obj, struct page ***pages,
|
int omap_gem_get_pages(struct drm_gem_object *obj, struct page ***pages,
|
||||||
bool remap);
|
bool remap);
|
||||||
int omap_gem_put_pages(struct drm_gem_object *obj);
|
int omap_gem_put_pages(struct drm_gem_object *obj);
|
||||||
uint32_t omap_gem_flags(struct drm_gem_object *obj);
|
uint32_t omap_gem_flags(struct drm_gem_object *obj);
|
||||||
int omap_gem_rotated_paddr(struct drm_gem_object *obj, uint32_t orient,
|
int omap_gem_rotated_dma_addr(struct drm_gem_object *obj, uint32_t orient,
|
||||||
int x, int y, dma_addr_t *paddr);
|
int x, int y, dma_addr_t *dma_addr);
|
||||||
uint64_t omap_gem_mmap_offset(struct drm_gem_object *obj);
|
uint64_t omap_gem_mmap_offset(struct drm_gem_object *obj);
|
||||||
size_t omap_gem_mmap_size(struct drm_gem_object *obj);
|
size_t omap_gem_mmap_size(struct drm_gem_object *obj);
|
||||||
int omap_gem_tiled_stride(struct drm_gem_object *obj, uint32_t orient);
|
int omap_gem_tiled_stride(struct drm_gem_object *obj, uint32_t orient);
|
||||||
|
|
|
@ -74,7 +74,7 @@ struct plane {
|
||||||
struct drm_gem_object *bo;
|
struct drm_gem_object *bo;
|
||||||
uint32_t pitch;
|
uint32_t pitch;
|
||||||
uint32_t offset;
|
uint32_t offset;
|
||||||
dma_addr_t paddr;
|
dma_addr_t dma_addr;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define to_omap_framebuffer(x) container_of(x, struct omap_framebuffer, base)
|
#define to_omap_framebuffer(x) container_of(x, struct omap_framebuffer, base)
|
||||||
|
@ -85,7 +85,7 @@ struct omap_framebuffer {
|
||||||
const struct drm_format_info *format;
|
const struct drm_format_info *format;
|
||||||
enum omap_color_mode dss_format;
|
enum omap_color_mode dss_format;
|
||||||
struct plane planes[2];
|
struct plane planes[2];
|
||||||
/* lock for pinning (pin_count and planes.paddr) */
|
/* lock for pinning (pin_count and planes.dma_addr) */
|
||||||
struct mutex lock;
|
struct mutex lock;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -130,7 +130,7 @@ static uint32_t get_linear_addr(struct plane *plane,
|
||||||
+ (x * format->cpp[n] / (n == 0 ? 1 : format->hsub))
|
+ (x * format->cpp[n] / (n == 0 ? 1 : format->hsub))
|
||||||
+ (y * plane->pitch / (n == 0 ? 1 : format->vsub));
|
+ (y * plane->pitch / (n == 0 ? 1 : format->vsub));
|
||||||
|
|
||||||
return plane->paddr + offset;
|
return plane->dma_addr + offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool omap_framebuffer_supports_rotation(struct drm_framebuffer *fb)
|
bool omap_framebuffer_supports_rotation(struct drm_framebuffer *fb)
|
||||||
|
@ -201,7 +201,8 @@ void omap_framebuffer_update_scanout(struct drm_framebuffer *fb,
|
||||||
if (orient & MASK_X_INVERT)
|
if (orient & MASK_X_INVERT)
|
||||||
x += w - 1;
|
x += w - 1;
|
||||||
|
|
||||||
omap_gem_rotated_paddr(plane->bo, orient, x, y, &info->paddr);
|
omap_gem_rotated_dma_addr(plane->bo, orient, x, y,
|
||||||
|
&info->paddr);
|
||||||
info->rotation_type = OMAP_DSS_ROT_TILER;
|
info->rotation_type = OMAP_DSS_ROT_TILER;
|
||||||
info->screen_width = omap_gem_tiled_stride(plane->bo, orient);
|
info->screen_width = omap_gem_tiled_stride(plane->bo, orient);
|
||||||
} else {
|
} else {
|
||||||
|
@ -232,8 +233,8 @@ void omap_framebuffer_update_scanout(struct drm_framebuffer *fb,
|
||||||
|
|
||||||
if (info->rotation_type == OMAP_DSS_ROT_TILER) {
|
if (info->rotation_type == OMAP_DSS_ROT_TILER) {
|
||||||
WARN_ON(!(omap_gem_flags(plane->bo) & OMAP_BO_TILED));
|
WARN_ON(!(omap_gem_flags(plane->bo) & OMAP_BO_TILED));
|
||||||
omap_gem_rotated_paddr(plane->bo, orient,
|
omap_gem_rotated_dma_addr(plane->bo, orient, x/2, y/2,
|
||||||
x/2, y/2, &info->p_uv_addr);
|
&info->p_uv_addr);
|
||||||
} else {
|
} else {
|
||||||
info->p_uv_addr = get_linear_addr(plane, format, 1, x, y);
|
info->p_uv_addr = get_linear_addr(plane, format, 1, x, y);
|
||||||
}
|
}
|
||||||
|
@ -258,7 +259,7 @@ int omap_framebuffer_pin(struct drm_framebuffer *fb)
|
||||||
|
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
struct plane *plane = &omap_fb->planes[i];
|
struct plane *plane = &omap_fb->planes[i];
|
||||||
ret = omap_gem_get_paddr(plane->bo, &plane->paddr);
|
ret = omap_gem_get_paddr(plane->bo, &plane->dma_addr);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto fail;
|
goto fail;
|
||||||
omap_gem_dma_sync(plane->bo, DMA_TO_DEVICE);
|
omap_gem_dma_sync(plane->bo, DMA_TO_DEVICE);
|
||||||
|
@ -274,7 +275,7 @@ int omap_framebuffer_pin(struct drm_framebuffer *fb)
|
||||||
for (i--; i >= 0; i--) {
|
for (i--; i >= 0; i--) {
|
||||||
struct plane *plane = &omap_fb->planes[i];
|
struct plane *plane = &omap_fb->planes[i];
|
||||||
omap_gem_put_paddr(plane->bo);
|
omap_gem_put_paddr(plane->bo);
|
||||||
plane->paddr = 0;
|
plane->dma_addr = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
mutex_unlock(&omap_fb->lock);
|
mutex_unlock(&omap_fb->lock);
|
||||||
|
@ -300,7 +301,7 @@ void omap_framebuffer_unpin(struct drm_framebuffer *fb)
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
struct plane *plane = &omap_fb->planes[i];
|
struct plane *plane = &omap_fb->planes[i];
|
||||||
omap_gem_put_paddr(plane->bo);
|
omap_gem_put_paddr(plane->bo);
|
||||||
plane->paddr = 0;
|
plane->dma_addr = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
mutex_unlock(&omap_fb->lock);
|
mutex_unlock(&omap_fb->lock);
|
||||||
|
@ -458,7 +459,7 @@ struct drm_framebuffer *omap_framebuffer_init(struct drm_device *dev,
|
||||||
plane->bo = bos[i];
|
plane->bo = bos[i];
|
||||||
plane->offset = mode_cmd->offsets[i];
|
plane->offset = mode_cmd->offsets[i];
|
||||||
plane->pitch = pitch;
|
plane->pitch = pitch;
|
||||||
plane->paddr = 0;
|
plane->dma_addr = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
drm_helper_mode_fill_fb_struct(dev, fb, mode_cmd);
|
drm_helper_mode_fill_fb_struct(dev, fb, mode_cmd);
|
||||||
|
|
|
@ -106,7 +106,7 @@ static int omap_fbdev_create(struct drm_fb_helper *helper,
|
||||||
union omap_gem_size gsize;
|
union omap_gem_size gsize;
|
||||||
struct fb_info *fbi = NULL;
|
struct fb_info *fbi = NULL;
|
||||||
struct drm_mode_fb_cmd2 mode_cmd = {0};
|
struct drm_mode_fb_cmd2 mode_cmd = {0};
|
||||||
dma_addr_t paddr;
|
dma_addr_t dma_addr;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
sizes->surface_bpp = 32;
|
sizes->surface_bpp = 32;
|
||||||
|
@ -162,7 +162,7 @@ static int omap_fbdev_create(struct drm_fb_helper *helper,
|
||||||
* to it). Then we just need to be sure that we are able to re-
|
* to it). Then we just need to be sure that we are able to re-
|
||||||
* pin it in case of an opps.
|
* pin it in case of an opps.
|
||||||
*/
|
*/
|
||||||
ret = omap_gem_get_paddr(fbdev->bo, &paddr);
|
ret = omap_gem_get_paddr(fbdev->bo, &dma_addr);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(dev->dev,
|
dev_err(dev->dev,
|
||||||
"could not map (paddr)! Skipping framebuffer alloc\n");
|
"could not map (paddr)! Skipping framebuffer alloc\n");
|
||||||
|
@ -193,11 +193,11 @@ static int omap_fbdev_create(struct drm_fb_helper *helper,
|
||||||
drm_fb_helper_fill_fix(fbi, fb->pitches[0], fb->format->depth);
|
drm_fb_helper_fill_fix(fbi, fb->pitches[0], fb->format->depth);
|
||||||
drm_fb_helper_fill_var(fbi, helper, sizes->fb_width, sizes->fb_height);
|
drm_fb_helper_fill_var(fbi, helper, sizes->fb_width, sizes->fb_height);
|
||||||
|
|
||||||
dev->mode_config.fb_base = paddr;
|
dev->mode_config.fb_base = dma_addr;
|
||||||
|
|
||||||
fbi->screen_base = omap_gem_vaddr(fbdev->bo);
|
fbi->screen_base = omap_gem_vaddr(fbdev->bo);
|
||||||
fbi->screen_size = fbdev->bo->size;
|
fbi->screen_size = fbdev->bo->size;
|
||||||
fbi->fix.smem_start = paddr;
|
fbi->fix.smem_start = dma_addr;
|
||||||
fbi->fix.smem_len = fbdev->bo->size;
|
fbi->fix.smem_len = fbdev->bo->size;
|
||||||
|
|
||||||
/* if we have DMM, then we can use it for scrolling by just
|
/* if we have DMM, then we can use it for scrolling by just
|
||||||
|
|
|
@ -50,7 +50,7 @@ struct omap_gem_object {
|
||||||
uint32_t roll;
|
uint32_t roll;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* paddr contains the buffer DMA address. It is valid for
|
* dma_addr contains the buffer DMA address. It is valid for
|
||||||
*
|
*
|
||||||
* - buffers allocated through the DMA mapping API (with the
|
* - buffers allocated through the DMA mapping API (with the
|
||||||
* OMAP_BO_MEM_DMA_API flag set)
|
* OMAP_BO_MEM_DMA_API flag set)
|
||||||
|
@ -58,24 +58,24 @@ struct omap_gem_object {
|
||||||
* - buffers imported from dmabuf (with the OMAP_BO_MEM_DMABUF flag set)
|
* - buffers imported from dmabuf (with the OMAP_BO_MEM_DMABUF flag set)
|
||||||
* if they are physically contiguous (when sgt->orig_nents == 1)
|
* if they are physically contiguous (when sgt->orig_nents == 1)
|
||||||
*
|
*
|
||||||
* - buffers mapped through the TILER when paddr_cnt is not zero, in
|
* - buffers mapped through the TILER when dma_addr_cnt is not zero, in
|
||||||
* which case the DMA address points to the TILER aperture
|
* which case the DMA address points to the TILER aperture
|
||||||
*
|
*
|
||||||
* Physically contiguous buffers have their DMA address equal to the
|
* Physically contiguous buffers have their DMA address equal to the
|
||||||
* physical address as we don't remap those buffers through the TILER.
|
* physical address as we don't remap those buffers through the TILER.
|
||||||
*
|
*
|
||||||
* Buffers mapped to the TILER have their DMA address pointing to the
|
* Buffers mapped to the TILER have their DMA address pointing to the
|
||||||
* TILER aperture. As TILER mappings are refcounted (through paddr_cnt)
|
* TILER aperture. As TILER mappings are refcounted (through
|
||||||
* the DMA address must be accessed through omap_get_get_paddr() to
|
* dma_addr_cnt) the DMA address must be accessed through
|
||||||
* ensure that the mapping won't disappear unexpectedly. References must
|
* omap_get_get_paddr() to ensure that the mapping won't disappear
|
||||||
* be released with omap_gem_put_paddr().
|
* unexpectedly. References must be released with omap_gem_put_paddr().
|
||||||
*/
|
*/
|
||||||
dma_addr_t paddr;
|
dma_addr_t dma_addr;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* # of users of paddr
|
* # of users of dma_addr
|
||||||
*/
|
*/
|
||||||
uint32_t paddr_cnt;
|
uint32_t dma_addr_cnt;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If the buffer has been imported from a dmabuf the OMAP_DB_DMABUF flag
|
* If the buffer has been imported from a dmabuf the OMAP_DB_DMABUF flag
|
||||||
|
@ -119,7 +119,7 @@ struct omap_gem_object {
|
||||||
#define NUM_USERGART_ENTRIES 2
|
#define NUM_USERGART_ENTRIES 2
|
||||||
struct omap_drm_usergart_entry {
|
struct omap_drm_usergart_entry {
|
||||||
struct tiler_block *block; /* the reserved tiler block */
|
struct tiler_block *block; /* the reserved tiler block */
|
||||||
dma_addr_t paddr;
|
dma_addr_t dma_addr;
|
||||||
struct drm_gem_object *obj; /* the current pinned obj */
|
struct drm_gem_object *obj; /* the current pinned obj */
|
||||||
pgoff_t obj_pgoff; /* page offset of obj currently
|
pgoff_t obj_pgoff; /* page offset of obj currently
|
||||||
mapped in */
|
mapped in */
|
||||||
|
@ -392,7 +392,7 @@ static int fault_1d(struct drm_gem_object *obj,
|
||||||
pfn = page_to_pfn(omap_obj->pages[pgoff]);
|
pfn = page_to_pfn(omap_obj->pages[pgoff]);
|
||||||
} else {
|
} else {
|
||||||
BUG_ON(!is_contiguous(omap_obj));
|
BUG_ON(!is_contiguous(omap_obj));
|
||||||
pfn = (omap_obj->paddr >> PAGE_SHIFT) + pgoff;
|
pfn = (omap_obj->dma_addr >> PAGE_SHIFT) + pgoff;
|
||||||
}
|
}
|
||||||
|
|
||||||
VERB("Inserting %p pfn %lx, pa %lx", (void *)vmf->address,
|
VERB("Inserting %p pfn %lx, pa %lx", (void *)vmf->address,
|
||||||
|
@ -485,7 +485,7 @@ static int fault_2d(struct drm_gem_object *obj,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
pfn = entry->paddr >> PAGE_SHIFT;
|
pfn = entry->dma_addr >> PAGE_SHIFT;
|
||||||
|
|
||||||
VERB("Inserting %p pfn %lx, pa %lx", (void *)vmf->address,
|
VERB("Inserting %p pfn %lx, pa %lx", (void *)vmf->address,
|
||||||
pfn, pfn << PAGE_SHIFT);
|
pfn, pfn << PAGE_SHIFT);
|
||||||
|
@ -787,7 +787,7 @@ void omap_gem_dma_sync(struct drm_gem_object *obj,
|
||||||
/* Get physical address for DMA.. if the buffer is not already contiguous, remap
|
/* Get physical address for DMA.. if the buffer is not already contiguous, remap
|
||||||
* it to pin in physically contiguous memory.. (ie. map in TILER)
|
* it to pin in physically contiguous memory.. (ie. map in TILER)
|
||||||
*/
|
*/
|
||||||
int omap_gem_get_paddr(struct drm_gem_object *obj, dma_addr_t *paddr)
|
int omap_gem_get_paddr(struct drm_gem_object *obj, dma_addr_t *dma_addr)
|
||||||
{
|
{
|
||||||
struct omap_drm_private *priv = obj->dev->dev_private;
|
struct omap_drm_private *priv = obj->dev->dev_private;
|
||||||
struct omap_gem_object *omap_obj = to_omap_bo(obj);
|
struct omap_gem_object *omap_obj = to_omap_bo(obj);
|
||||||
|
@ -796,7 +796,7 @@ int omap_gem_get_paddr(struct drm_gem_object *obj, dma_addr_t *paddr)
|
||||||
mutex_lock(&obj->dev->struct_mutex);
|
mutex_lock(&obj->dev->struct_mutex);
|
||||||
|
|
||||||
if (!is_contiguous(omap_obj) && priv->has_dmm) {
|
if (!is_contiguous(omap_obj) && priv->has_dmm) {
|
||||||
if (omap_obj->paddr_cnt == 0) {
|
if (omap_obj->dma_addr_cnt == 0) {
|
||||||
struct page **pages;
|
struct page **pages;
|
||||||
uint32_t npages = obj->size >> PAGE_SHIFT;
|
uint32_t npages = obj->size >> PAGE_SHIFT;
|
||||||
enum tiler_fmt fmt = gem2fmt(omap_obj->flags);
|
enum tiler_fmt fmt = gem2fmt(omap_obj->flags);
|
||||||
|
@ -833,17 +833,17 @@ int omap_gem_get_paddr(struct drm_gem_object *obj, dma_addr_t *paddr)
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
omap_obj->paddr = tiler_ssptr(block);
|
omap_obj->dma_addr = tiler_ssptr(block);
|
||||||
omap_obj->block = block;
|
omap_obj->block = block;
|
||||||
|
|
||||||
DBG("got paddr: %pad", &omap_obj->paddr);
|
DBG("got dma address: %pad", &omap_obj->dma_addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
omap_obj->paddr_cnt++;
|
omap_obj->dma_addr_cnt++;
|
||||||
|
|
||||||
*paddr = omap_obj->paddr;
|
*dma_addr = omap_obj->dma_addr;
|
||||||
} else if (is_contiguous(omap_obj)) {
|
} else if (is_contiguous(omap_obj)) {
|
||||||
*paddr = omap_obj->paddr;
|
*dma_addr = omap_obj->dma_addr;
|
||||||
} else {
|
} else {
|
||||||
ret = -EINVAL;
|
ret = -EINVAL;
|
||||||
goto fail;
|
goto fail;
|
||||||
|
@ -864,9 +864,9 @@ void omap_gem_put_paddr(struct drm_gem_object *obj)
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
mutex_lock(&obj->dev->struct_mutex);
|
mutex_lock(&obj->dev->struct_mutex);
|
||||||
if (omap_obj->paddr_cnt > 0) {
|
if (omap_obj->dma_addr_cnt > 0) {
|
||||||
omap_obj->paddr_cnt--;
|
omap_obj->dma_addr_cnt--;
|
||||||
if (omap_obj->paddr_cnt == 0) {
|
if (omap_obj->dma_addr_cnt == 0) {
|
||||||
ret = tiler_unpin(omap_obj->block);
|
ret = tiler_unpin(omap_obj->block);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(obj->dev->dev,
|
dev_err(obj->dev->dev,
|
||||||
|
@ -877,7 +877,7 @@ void omap_gem_put_paddr(struct drm_gem_object *obj)
|
||||||
dev_err(obj->dev->dev,
|
dev_err(obj->dev->dev,
|
||||||
"could not release unmap: %d\n", ret);
|
"could not release unmap: %d\n", ret);
|
||||||
}
|
}
|
||||||
omap_obj->paddr = 0;
|
omap_obj->dma_addr = 0;
|
||||||
omap_obj->block = NULL;
|
omap_obj->block = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -889,16 +889,16 @@ void omap_gem_put_paddr(struct drm_gem_object *obj)
|
||||||
* specified orientation and x,y offset from top-left corner of buffer
|
* specified orientation and x,y offset from top-left corner of buffer
|
||||||
* (only valid for tiled 2d buffers)
|
* (only valid for tiled 2d buffers)
|
||||||
*/
|
*/
|
||||||
int omap_gem_rotated_paddr(struct drm_gem_object *obj, uint32_t orient,
|
int omap_gem_rotated_dma_addr(struct drm_gem_object *obj, uint32_t orient,
|
||||||
int x, int y, dma_addr_t *paddr)
|
int x, int y, dma_addr_t *dma_addr)
|
||||||
{
|
{
|
||||||
struct omap_gem_object *omap_obj = to_omap_bo(obj);
|
struct omap_gem_object *omap_obj = to_omap_bo(obj);
|
||||||
int ret = -EINVAL;
|
int ret = -EINVAL;
|
||||||
|
|
||||||
mutex_lock(&obj->dev->struct_mutex);
|
mutex_lock(&obj->dev->struct_mutex);
|
||||||
if ((omap_obj->paddr_cnt > 0) && omap_obj->block &&
|
if ((omap_obj->dma_addr_cnt > 0) && omap_obj->block &&
|
||||||
(omap_obj->flags & OMAP_BO_TILED)) {
|
(omap_obj->flags & OMAP_BO_TILED)) {
|
||||||
*paddr = tiler_tsptr(omap_obj->block, orient, x, y);
|
*dma_addr = tiler_tsptr(omap_obj->block, orient, x, y);
|
||||||
ret = 0;
|
ret = 0;
|
||||||
}
|
}
|
||||||
mutex_unlock(&obj->dev->struct_mutex);
|
mutex_unlock(&obj->dev->struct_mutex);
|
||||||
|
@ -1019,7 +1019,7 @@ void omap_gem_describe(struct drm_gem_object *obj, struct seq_file *m)
|
||||||
|
|
||||||
seq_printf(m, "%08x: %2d (%2d) %08llx %pad (%2d) %p %4d",
|
seq_printf(m, "%08x: %2d (%2d) %08llx %pad (%2d) %p %4d",
|
||||||
omap_obj->flags, obj->name, kref_read(&obj->refcount),
|
omap_obj->flags, obj->name, kref_read(&obj->refcount),
|
||||||
off, &omap_obj->paddr, omap_obj->paddr_cnt,
|
off, &omap_obj->dma_addr, omap_obj->dma_addr_cnt,
|
||||||
omap_obj->vaddr, omap_obj->roll);
|
omap_obj->vaddr, omap_obj->roll);
|
||||||
|
|
||||||
if (omap_obj->flags & OMAP_BO_TILED) {
|
if (omap_obj->flags & OMAP_BO_TILED) {
|
||||||
|
@ -1076,7 +1076,7 @@ void omap_gem_free_object(struct drm_gem_object *obj)
|
||||||
/* this means the object is still pinned.. which really should
|
/* this means the object is still pinned.. which really should
|
||||||
* not happen. I think..
|
* not happen. I think..
|
||||||
*/
|
*/
|
||||||
WARN_ON(omap_obj->paddr_cnt > 0);
|
WARN_ON(omap_obj->dma_addr_cnt > 0);
|
||||||
|
|
||||||
if (omap_obj->pages) {
|
if (omap_obj->pages) {
|
||||||
if (omap_obj->flags & OMAP_BO_MEM_DMABUF)
|
if (omap_obj->flags & OMAP_BO_MEM_DMABUF)
|
||||||
|
@ -1087,7 +1087,7 @@ void omap_gem_free_object(struct drm_gem_object *obj)
|
||||||
|
|
||||||
if (omap_obj->flags & OMAP_BO_MEM_DMA_API) {
|
if (omap_obj->flags & OMAP_BO_MEM_DMA_API) {
|
||||||
dma_free_wc(dev->dev, obj->size, omap_obj->vaddr,
|
dma_free_wc(dev->dev, obj->size, omap_obj->vaddr,
|
||||||
omap_obj->paddr);
|
omap_obj->dma_addr);
|
||||||
} else if (omap_obj->vaddr) {
|
} else if (omap_obj->vaddr) {
|
||||||
vunmap(omap_obj->vaddr);
|
vunmap(omap_obj->vaddr);
|
||||||
} else if (obj->import_attach) {
|
} else if (obj->import_attach) {
|
||||||
|
@ -1184,7 +1184,7 @@ struct drm_gem_object *omap_gem_new(struct drm_device *dev,
|
||||||
/* Allocate memory if needed. */
|
/* Allocate memory if needed. */
|
||||||
if (flags & OMAP_BO_MEM_DMA_API) {
|
if (flags & OMAP_BO_MEM_DMA_API) {
|
||||||
omap_obj->vaddr = dma_alloc_wc(dev->dev, size,
|
omap_obj->vaddr = dma_alloc_wc(dev->dev, size,
|
||||||
&omap_obj->paddr,
|
&omap_obj->dma_addr,
|
||||||
GFP_KERNEL);
|
GFP_KERNEL);
|
||||||
if (!omap_obj->vaddr)
|
if (!omap_obj->vaddr)
|
||||||
goto err_release;
|
goto err_release;
|
||||||
|
@ -1228,7 +1228,7 @@ struct drm_gem_object *omap_gem_new_dmabuf(struct drm_device *dev, size_t size,
|
||||||
omap_obj->sgt = sgt;
|
omap_obj->sgt = sgt;
|
||||||
|
|
||||||
if (sgt->orig_nents == 1) {
|
if (sgt->orig_nents == 1) {
|
||||||
omap_obj->paddr = sg_dma_address(sgt->sgl);
|
omap_obj->dma_addr = sg_dma_address(sgt->sgl);
|
||||||
} else {
|
} else {
|
||||||
/* Create pages list from sgt */
|
/* Create pages list from sgt */
|
||||||
struct sg_page_iter iter;
|
struct sg_page_iter iter;
|
||||||
|
@ -1335,11 +1335,11 @@ void omap_gem_init(struct drm_device *dev)
|
||||||
i, j, PTR_ERR(block));
|
i, j, PTR_ERR(block));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
entry->paddr = tiler_ssptr(block);
|
entry->dma_addr = tiler_ssptr(block);
|
||||||
entry->block = block;
|
entry->block = block;
|
||||||
|
|
||||||
DBG("%d:%d: %dx%d: paddr=%pad stride=%d", i, j, w, h,
|
DBG("%d:%d: %dx%d: dma_addr=%pad stride=%d", i, j, w, h,
|
||||||
&entry->paddr,
|
&entry->dma_addr,
|
||||||
usergart[i].stride_pfn << PAGE_SHIFT);
|
usergart[i].stride_pfn << PAGE_SHIFT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,7 @@ static struct sg_table *omap_gem_map_dma_buf(
|
||||||
{
|
{
|
||||||
struct drm_gem_object *obj = attachment->dmabuf->priv;
|
struct drm_gem_object *obj = attachment->dmabuf->priv;
|
||||||
struct sg_table *sg;
|
struct sg_table *sg;
|
||||||
dma_addr_t paddr;
|
dma_addr_t dma_addr;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
sg = kzalloc(sizeof(*sg), GFP_KERNEL);
|
sg = kzalloc(sizeof(*sg), GFP_KERNEL);
|
||||||
|
@ -41,7 +41,7 @@ static struct sg_table *omap_gem_map_dma_buf(
|
||||||
/* camera, etc, need physically contiguous.. but we need a
|
/* camera, etc, need physically contiguous.. but we need a
|
||||||
* better way to know this..
|
* better way to know this..
|
||||||
*/
|
*/
|
||||||
ret = omap_gem_get_paddr(obj, &paddr);
|
ret = omap_gem_get_paddr(obj, &dma_addr);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
@ -51,8 +51,8 @@ static struct sg_table *omap_gem_map_dma_buf(
|
||||||
|
|
||||||
sg_init_table(sg->sgl, 1);
|
sg_init_table(sg->sgl, 1);
|
||||||
sg_dma_len(sg->sgl) = obj->size;
|
sg_dma_len(sg->sgl) = obj->size;
|
||||||
sg_set_page(sg->sgl, pfn_to_page(PFN_DOWN(paddr)), obj->size, 0);
|
sg_set_page(sg->sgl, pfn_to_page(PFN_DOWN(dma_addr)), obj->size, 0);
|
||||||
sg_dma_address(sg->sgl) = paddr;
|
sg_dma_address(sg->sgl) = dma_addr;
|
||||||
|
|
||||||
/* this should be after _get_paddr() to ensure we have pages attached */
|
/* this should be after _get_paddr() to ensure we have pages attached */
|
||||||
omap_gem_dma_sync(obj, dir);
|
omap_gem_dma_sync(obj, dir);
|
||||||
|
|
Loading…
Reference in New Issue