forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux
Pull drm update from Dave Airlie: "Exynos and Radeon mostly, with a dma-buf and ttm fix thrown in. It's a bit big but its mostly exynos license fix ups and I'd rather not hold those up since its legally stuff. Radeon has a couple of fixes from dma engine work, TTM is just a locking fix, and dma-buf fix has been hanging around and I finally got a chance to review it." * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux: (30 commits) drm/ttm: fix fence locking in ttm_buffer_object_transfer drm/prime: drop reference on imported dma-buf come from gem drm/radeon: add quirk for d3 delay during switcheroo poweron for apple macbooks drm/exynos: move finish page flip to a common place drm/exynos: fimd: modify condition in fimd resume drm/radeon: fix DMA CS parser for r6xx linear copy packet drm/radeon: split r6xx and r7xx copy_dma functions drm/exynos: Use devm_clk_get in exynos_drm_gsc.c drm/exynos: Remove redundant NULL check in exynos_drm_gsc.c drm/exynos: Remove explicit freeing using devm_* APIs in exynos_drm_gsc.c drm/exynos: Use devm_clk_get in exynos_drm_rotator.c drm/exynos: Remove redundant NULL check in exynos_drm_rotator.c drm/exynos: Remove unnecessary devm_* freeing APIs in exynos_drm_rotator.c drm/exynos: Use devm_clk_get in exynos_drm_fimc.c drm/exynos: Remove redundant NULL check drm/exynos: Remove explicit freeing using devm_* APIs in exynos_drm_fimc.c drm/exynos: Use devm_kzalloc in exynos_drm_ipp.c drm/exynos: fix gem buffer allocation type checking drm/exynos: remove needless parenthesis. drm/exynos: fix incorrect interrupt induced by m2m operation. ...
- Loading branch information
Showing
48 changed files
with
447 additions
and
828 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,24 +3,10 @@ | |
* Copyright (c) 2011 Samsung Electronics Co., Ltd. | ||
* Author: Inki Dae <[email protected]> | ||
* | ||
* Permission is hereby granted, free of charge, to any person obtaining a | ||
* copy of this software and associated documentation files (the "Software"), | ||
* to deal in the Software without restriction, including without limitation | ||
* the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
* and/or sell copies of the Software, and to permit persons to whom the | ||
* Software is furnished to do so, subject to the following conditions: | ||
* | ||
* The above copyright notice and this permission notice (including the next | ||
* paragraph) shall be included in all copies or substantial portions of the | ||
* Software. | ||
* | ||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | ||
* VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR | ||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, | ||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
* OTHER DEALINGS IN THE SOFTWARE. | ||
* This program is free software; you can redistribute it and/or modify it | ||
* under the terms of the GNU General Public License as published by the | ||
* Free Software Foundation; either version 2 of the License, or (at your | ||
* option) any later version. | ||
*/ | ||
|
||
#include <drm/drmP.h> | ||
|
@@ -29,6 +15,7 @@ | |
#include "exynos_drm_drv.h" | ||
#include "exynos_drm_gem.h" | ||
#include "exynos_drm_buf.h" | ||
#include "exynos_drm_iommu.h" | ||
|
||
static int lowlevel_buffer_allocate(struct drm_device *dev, | ||
unsigned int flags, struct exynos_drm_gem_buf *buf) | ||
|
@@ -51,7 +38,7 @@ static int lowlevel_buffer_allocate(struct drm_device *dev, | |
* region will be allocated else physically contiguous | ||
* as possible. | ||
*/ | ||
if (flags & EXYNOS_BO_CONTIG) | ||
if (!(flags & EXYNOS_BO_NONCONTIG)) | ||
dma_set_attr(DMA_ATTR_FORCE_CONTIGUOUS, &buf->dma_attrs); | ||
|
||
/* | ||
|
@@ -66,14 +53,45 @@ static int lowlevel_buffer_allocate(struct drm_device *dev, | |
dma_set_attr(attr, &buf->dma_attrs); | ||
dma_set_attr(DMA_ATTR_NO_KERNEL_MAPPING, &buf->dma_attrs); | ||
|
||
buf->pages = dma_alloc_attrs(dev->dev, buf->size, | ||
&buf->dma_addr, GFP_KERNEL, &buf->dma_attrs); | ||
if (!buf->pages) { | ||
DRM_ERROR("failed to allocate buffer.\n"); | ||
return -ENOMEM; | ||
nr_pages = buf->size >> PAGE_SHIFT; | ||
|
||
if (!is_drm_iommu_supported(dev)) { | ||
dma_addr_t start_addr; | ||
unsigned int i = 0; | ||
|
||
buf->pages = kzalloc(sizeof(struct page) * nr_pages, | ||
GFP_KERNEL); | ||
if (!buf->pages) { | ||
DRM_ERROR("failed to allocate pages.\n"); | ||
return -ENOMEM; | ||
} | ||
|
||
buf->kvaddr = dma_alloc_attrs(dev->dev, buf->size, | ||
&buf->dma_addr, GFP_KERNEL, | ||
&buf->dma_attrs); | ||
if (!buf->kvaddr) { | ||
DRM_ERROR("failed to allocate buffer.\n"); | ||
kfree(buf->pages); | ||
return -ENOMEM; | ||
} | ||
|
||
start_addr = buf->dma_addr; | ||
while (i < nr_pages) { | ||
buf->pages[i] = phys_to_page(start_addr); | ||
start_addr += PAGE_SIZE; | ||
i++; | ||
} | ||
} else { | ||
|
||
buf->pages = dma_alloc_attrs(dev->dev, buf->size, | ||
&buf->dma_addr, GFP_KERNEL, | ||
&buf->dma_attrs); | ||
if (!buf->pages) { | ||
DRM_ERROR("failed to allocate buffer.\n"); | ||
return -ENOMEM; | ||
} | ||
} | ||
|
||
nr_pages = buf->size >> PAGE_SHIFT; | ||
buf->sgt = drm_prime_pages_to_sg(buf->pages, nr_pages); | ||
if (!buf->sgt) { | ||
DRM_ERROR("failed to get sg table.\n"); | ||
|
@@ -92,6 +110,9 @@ static int lowlevel_buffer_allocate(struct drm_device *dev, | |
(dma_addr_t)buf->dma_addr, &buf->dma_attrs); | ||
buf->dma_addr = (dma_addr_t)NULL; | ||
|
||
if (!is_drm_iommu_supported(dev)) | ||
kfree(buf->pages); | ||
|
||
return ret; | ||
} | ||
|
||
|
@@ -114,8 +135,14 @@ static void lowlevel_buffer_deallocate(struct drm_device *dev, | |
kfree(buf->sgt); | ||
buf->sgt = NULL; | ||
|
||
dma_free_attrs(dev->dev, buf->size, buf->pages, | ||
if (!is_drm_iommu_supported(dev)) { | ||
dma_free_attrs(dev->dev, buf->size, buf->kvaddr, | ||
(dma_addr_t)buf->dma_addr, &buf->dma_attrs); | ||
kfree(buf->pages); | ||
} else | ||
dma_free_attrs(dev->dev, buf->size, buf->pages, | ||
(dma_addr_t)buf->dma_addr, &buf->dma_attrs); | ||
|
||
buf->dma_addr = (dma_addr_t)NULL; | ||
} | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,24 +3,10 @@ | |
* Copyright (c) 2011 Samsung Electronics Co., Ltd. | ||
* Author: Inki Dae <[email protected]> | ||
* | ||
* Permission is hereby granted, free of charge, to any person obtaining a | ||
* copy of this software and associated documentation files (the "Software"), | ||
* to deal in the Software without restriction, including without limitation | ||
* the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
* and/or sell copies of the Software, and to permit persons to whom the | ||
* Software is furnished to do so, subject to the following conditions: | ||
* | ||
* The above copyright notice and this permission notice (including the next | ||
* paragraph) shall be included in all copies or substantial portions of the | ||
* Software. | ||
* | ||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | ||
* VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR | ||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, | ||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
* OTHER DEALINGS IN THE SOFTWARE. | ||
* This program is free software; you can redistribute it and/or modify it | ||
* under the terms of the GNU General Public License as published by the | ||
* Free Software Foundation; either version 2 of the License, or (at your | ||
* option) any later version. | ||
*/ | ||
|
||
#ifndef _EXYNOS_DRM_BUF_H_ | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,24 +5,10 @@ | |
* Joonyoung Shim <[email protected]> | ||
* Seung-Woo Kim <[email protected]> | ||
* | ||
* Permission is hereby granted, free of charge, to any person obtaining a | ||
* copy of this software and associated documentation files (the "Software"), | ||
* to deal in the Software without restriction, including without limitation | ||
* the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
* and/or sell copies of the Software, and to permit persons to whom the | ||
* Software is furnished to do so, subject to the following conditions: | ||
* | ||
* The above copyright notice and this permission notice (including the next | ||
* paragraph) shall be included in all copies or substantial portions of the | ||
* Software. | ||
* | ||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | ||
* VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR | ||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, | ||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
* OTHER DEALINGS IN THE SOFTWARE. | ||
* This program is free software; you can redistribute it and/or modify it | ||
* under the terms of the GNU General Public License as published by the | ||
* Free Software Foundation; either version 2 of the License, or (at your | ||
* option) any later version. | ||
*/ | ||
|
||
#include <drm/drmP.h> | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,24 +5,10 @@ | |
* Joonyoung Shim <[email protected]> | ||
* Seung-Woo Kim <[email protected]> | ||
* | ||
* Permission is hereby granted, free of charge, to any person obtaining a | ||
* copy of this software and associated documentation files (the "Software"), | ||
* to deal in the Software without restriction, including without limitation | ||
* the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
* and/or sell copies of the Software, and to permit persons to whom the | ||
* Software is furnished to do so, subject to the following conditions: | ||
* | ||
* The above copyright notice and this permission notice (including the next | ||
* paragraph) shall be included in all copies or substantial portions of the | ||
* Software. | ||
* | ||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | ||
* VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR | ||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, | ||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
* OTHER DEALINGS IN THE SOFTWARE. | ||
* This program is free software; you can redistribute it and/or modify it | ||
* under the terms of the GNU General Public License as published by the | ||
* Free Software Foundation; either version 2 of the License, or (at your | ||
* option) any later version. | ||
*/ | ||
|
||
#ifndef _EXYNOS_DRM_CONNECTOR_H_ | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -6,24 +6,10 @@ | |
* Joonyoung Shim <[email protected]> | ||
* Seung-Woo Kim <[email protected]> | ||
* | ||
* Permission is hereby granted, free of charge, to any person obtaining a | ||
* copy of this software and associated documentation files (the "Software"), | ||
* to deal in the Software without restriction, including without limitation | ||
* the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
* and/or sell copies of the Software, and to permit persons to whom the | ||
* Software is furnished to do so, subject to the following conditions: | ||
* | ||
* The above copyright notice and this permission notice (including the next | ||
* paragraph) shall be included in all copies or substantial portions of the | ||
* Software. | ||
* | ||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | ||
* VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR | ||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, | ||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
* OTHER DEALINGS IN THE SOFTWARE. | ||
* This program is free software; you can redistribute it and/or modify it | ||
* under the terms of the GNU General Public License as published by the | ||
* Free Software Foundation; either version 2 of the License, or (at your | ||
* option) any later version. | ||
*/ | ||
|
||
#include <drm/drmP.h> | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -6,24 +6,10 @@ | |
* Joonyoung Shim <[email protected]> | ||
* Seung-Woo Kim <[email protected]> | ||
* | ||
* Permission is hereby granted, free of charge, to any person obtaining a | ||
* copy of this software and associated documentation files (the "Software"), | ||
* to deal in the Software without restriction, including without limitation | ||
* the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
* and/or sell copies of the Software, and to permit persons to whom the | ||
* Software is furnished to do so, subject to the following conditions: | ||
* | ||
* The above copyright notice and this permission notice (including the next | ||
* paragraph) shall be included in all copies or substantial portions of the | ||
* Software. | ||
* | ||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | ||
* VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR | ||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, | ||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
* OTHER DEALINGS IN THE SOFTWARE. | ||
* This program is free software; you can redistribute it and/or modify it | ||
* under the terms of the GNU General Public License as published by the | ||
* Free Software Foundation; either version 2 of the License, or (at your | ||
* option) any later version. | ||
*/ | ||
|
||
#include <drm/drmP.h> | ||
|
@@ -407,3 +393,33 @@ void exynos_drm_crtc_disable_vblank(struct drm_device *dev, int crtc) | |
exynos_drm_fn_encoder(private->crtc[crtc], &crtc, | ||
exynos_drm_disable_vblank); | ||
} | ||
|
||
void exynos_drm_crtc_finish_pageflip(struct drm_device *dev, int crtc) | ||
{ | ||
struct exynos_drm_private *dev_priv = dev->dev_private; | ||
struct drm_pending_vblank_event *e, *t; | ||
struct timeval now; | ||
unsigned long flags; | ||
|
||
DRM_DEBUG_KMS("%s\n", __FILE__); | ||
|
||
spin_lock_irqsave(&dev->event_lock, flags); | ||
|
||
list_for_each_entry_safe(e, t, &dev_priv->pageflip_event_list, | ||
base.link) { | ||
/* if event's pipe isn't same as crtc then ignore it. */ | ||
if (crtc != e->pipe) | ||
continue; | ||
|
||
do_gettimeofday(&now); | ||
e->event.sequence = 0; | ||
e->event.tv_sec = now.tv_sec; | ||
e->event.tv_usec = now.tv_usec; | ||
|
||
list_move_tail(&e->base.link, &e->base.file_priv->event_list); | ||
wake_up_interruptible(&e->base.file_priv->event_wait); | ||
drm_vblank_put(dev, crtc); | ||
} | ||
|
||
spin_unlock_irqrestore(&dev->event_lock, flags); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -6,24 +6,10 @@ | |
* Joonyoung Shim <[email protected]> | ||
* Seung-Woo Kim <[email protected]> | ||
* | ||
* Permission is hereby granted, free of charge, to any person obtaining a | ||
* copy of this software and associated documentation files (the "Software"), | ||
* to deal in the Software without restriction, including without limitation | ||
* the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
* and/or sell copies of the Software, and to permit persons to whom the | ||
* Software is furnished to do so, subject to the following conditions: | ||
* | ||
* The above copyright notice and this permission notice (including the next | ||
* paragraph) shall be included in all copies or substantial portions of the | ||
* Software. | ||
* | ||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | ||
* VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR | ||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, | ||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
* OTHER DEALINGS IN THE SOFTWARE. | ||
* This program is free software; you can redistribute it and/or modify it | ||
* under the terms of the GNU General Public License as published by the | ||
* Free Software Foundation; either version 2 of the License, or (at your | ||
* option) any later version. | ||
*/ | ||
|
||
#ifndef _EXYNOS_DRM_CRTC_H_ | ||
|
@@ -32,5 +18,6 @@ | |
int exynos_drm_crtc_create(struct drm_device *dev, unsigned int nr); | ||
int exynos_drm_crtc_enable_vblank(struct drm_device *dev, int crtc); | ||
void exynos_drm_crtc_disable_vblank(struct drm_device *dev, int crtc); | ||
void exynos_drm_crtc_finish_pageflip(struct drm_device *dev, int crtc); | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,24 +3,10 @@ | |
* Copyright (c) 2012 Samsung Electronics Co., Ltd. | ||
* Author: Inki Dae <[email protected]> | ||
* | ||
* Permission is hereby granted, free of charge, to any person obtaining a | ||
* copy of this software and associated documentation files (the "Software"), | ||
* to deal in the Software without restriction, including without limitation | ||
* the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
* and/or sell copies of the Software, and to permit persons to whom the | ||
* Software is furnished to do so, subject to the following conditions: | ||
* | ||
* The above copyright notice and this permission notice (including the next | ||
* paragraph) shall be included in all copies or substantial portions of the | ||
* Software. | ||
* | ||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | ||
* VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR | ||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, | ||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
* OTHER DEALINGS IN THE SOFTWARE. | ||
* This program is free software; you can redistribute it and/or modify it | ||
* under the terms of the GNU General Public License as published by the | ||
* Free Software Foundation; either version 2 of the License, or (at your | ||
* option) any later version. | ||
*/ | ||
|
||
#include <drm/drmP.h> | ||
|
@@ -222,7 +208,7 @@ struct dma_buf *exynos_dmabuf_prime_export(struct drm_device *drm_dev, | |
struct exynos_drm_gem_obj *exynos_gem_obj = to_exynos_gem_obj(obj); | ||
|
||
return dma_buf_export(exynos_gem_obj, &exynos_dmabuf_ops, | ||
exynos_gem_obj->base.size, 0600); | ||
exynos_gem_obj->base.size, flags); | ||
} | ||
|
||
struct drm_gem_object *exynos_dmabuf_prime_import(struct drm_device *drm_dev, | ||
|
@@ -246,7 +232,12 @@ struct drm_gem_object *exynos_dmabuf_prime_import(struct drm_device *drm_dev, | |
|
||
/* is it from our device? */ | ||
if (obj->dev == drm_dev) { | ||
/* | ||
* Importing dmabuf exported from out own gem increases | ||
* refcount on gem itself instead of f_count of dmabuf. | ||
*/ | ||
drm_gem_object_reference(obj); | ||
dma_buf_put(dma_buf); | ||
return obj; | ||
} | ||
} | ||
|
Oops, something went wrong.