-
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.
yaml --- r: 269727 b: refs/heads/master c: 1c248b7 h: refs/heads/master i: 269725: 384a12b 269723: c818db6 269719: 5e4cb83 269711: f861bef 269695: 663be59 v: v3
- Loading branch information
Inki Dae
authored and
Dave Airlie
committed
Oct 5, 2011
1 parent
0832c09
commit 85f4f58
Showing
24 changed files
with
4,183 additions
and
1 deletion.
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 |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: 5383053627afab973ffe582a4db9646317bec726 | ||
refs/heads/master: 1c248b7d2960faec3e1b8f3f9c5d9d0df28e0a3c |
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
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
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 |
---|---|---|
@@ -0,0 +1,20 @@ | ||
config DRM_EXYNOS | ||
tristate "DRM Support for Samsung SoC EXYNOS Series" | ||
depends on DRM && PLAT_SAMSUNG | ||
default n | ||
select DRM_KMS_HELPER | ||
select FB_CFB_FILLRECT | ||
select FB_CFB_COPYAREA | ||
select FB_CFB_IMAGEBLIT | ||
select VT_HW_CONSOLE_BINDING if FRAMEBUFFER_CONSOLE | ||
help | ||
Choose this option if you have a Samsung SoC EXYNOS chipset. | ||
If M is selected the module will be called exynosdrm. | ||
|
||
config DRM_EXYNOS_FIMD | ||
tristate "Exynos DRM FIMD" | ||
depends on DRM_EXYNOS | ||
default n | ||
help | ||
Choose this option if you want to use Exynos FIMD for DRM. | ||
If M is selected, the module will be called exynos_drm_fimd |
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 |
---|---|---|
@@ -0,0 +1,11 @@ | ||
# | ||
# Makefile for the drm device driver. This driver provides support for the | ||
# Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher. | ||
|
||
ccflags-y := -Iinclude/drm -Idrivers/gpu/drm/exynos | ||
exynosdrm-y := exynos_drm_drv.o exynos_drm_encoder.o exynos_drm_connector.o \ | ||
exynos_drm_crtc.o exynos_drm_fbdev.o exynos_drm_fb.o \ | ||
exynos_drm_buf.o exynos_drm_gem.o exynos_drm_core.o | ||
|
||
obj-$(CONFIG_DRM_EXYNOS) += exynosdrm.o | ||
obj-$(CONFIG_DRM_EXYNOS_FIMD) += exynos_drm_fimd.o |
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 |
---|---|---|
@@ -0,0 +1,110 @@ | ||
/* exynos_drm_buf.c | ||
* | ||
* Copyright (c) 2011 Samsung Electronics Co., Ltd. | ||
* Author: Inki Dae <inki.dae@samsung.com> | ||
* | ||
* 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. | ||
*/ | ||
|
||
#include "drmP.h" | ||
#include "drm.h" | ||
|
||
#include "exynos_drm_drv.h" | ||
#include "exynos_drm_buf.h" | ||
|
||
static DEFINE_MUTEX(exynos_drm_buf_lock); | ||
|
||
static int lowlevel_buffer_allocate(struct drm_device *dev, | ||
struct exynos_drm_buf_entry *entry) | ||
{ | ||
DRM_DEBUG_KMS("%s\n", __FILE__); | ||
|
||
entry->vaddr = dma_alloc_writecombine(dev->dev, entry->size, | ||
(dma_addr_t *)&entry->paddr, GFP_KERNEL); | ||
if (!entry->paddr) { | ||
DRM_ERROR("failed to allocate buffer.\n"); | ||
return -ENOMEM; | ||
} | ||
|
||
DRM_DEBUG_KMS("allocated : vaddr(0x%x), paddr(0x%x), size(0x%x)\n", | ||
(unsigned int)entry->vaddr, entry->paddr, entry->size); | ||
|
||
return 0; | ||
} | ||
|
||
static void lowlevel_buffer_deallocate(struct drm_device *dev, | ||
struct exynos_drm_buf_entry *entry) | ||
{ | ||
DRM_DEBUG_KMS("%s.\n", __FILE__); | ||
|
||
if (entry->paddr && entry->vaddr && entry->size) | ||
dma_free_writecombine(dev->dev, entry->size, entry->vaddr, | ||
entry->paddr); | ||
else | ||
DRM_DEBUG_KMS("entry data is null.\n"); | ||
} | ||
|
||
struct exynos_drm_buf_entry *exynos_drm_buf_create(struct drm_device *dev, | ||
unsigned int size) | ||
{ | ||
struct exynos_drm_buf_entry *entry; | ||
|
||
DRM_DEBUG_KMS("%s.\n", __FILE__); | ||
|
||
entry = kzalloc(sizeof(*entry), GFP_KERNEL); | ||
if (!entry) { | ||
DRM_ERROR("failed to allocate exynos_drm_buf_entry.\n"); | ||
return ERR_PTR(-ENOMEM); | ||
} | ||
|
||
entry->size = size; | ||
|
||
/* | ||
* allocate memory region with size and set the memory information | ||
* to vaddr and paddr of a entry object. | ||
*/ | ||
if (lowlevel_buffer_allocate(dev, entry) < 0) { | ||
kfree(entry); | ||
entry = NULL; | ||
return ERR_PTR(-ENOMEM); | ||
} | ||
|
||
return entry; | ||
} | ||
|
||
void exynos_drm_buf_destroy(struct drm_device *dev, | ||
struct exynos_drm_buf_entry *entry) | ||
{ | ||
DRM_DEBUG_KMS("%s.\n", __FILE__); | ||
|
||
if (!entry) { | ||
DRM_DEBUG_KMS("entry is null.\n"); | ||
return; | ||
} | ||
|
||
lowlevel_buffer_deallocate(dev, entry); | ||
|
||
kfree(entry); | ||
entry = NULL; | ||
} | ||
|
||
MODULE_AUTHOR("Inki Dae <inki.dae@samsung.com>"); | ||
MODULE_DESCRIPTION("Samsung SoC DRM Buffer Management Module"); | ||
MODULE_LICENSE("GPL"); |
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 |
---|---|---|
@@ -0,0 +1,50 @@ | ||
/* exynos_drm_buf.h | ||
* | ||
* Copyright (c) 2011 Samsung Electronics Co., Ltd. | ||
* Author: Inki Dae <inki.dae@samsung.com> | ||
* | ||
* 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. | ||
*/ | ||
|
||
#ifndef _EXYNOS_DRM_BUF_H_ | ||
#define _EXYNOS_DRM_BUF_H_ | ||
|
||
/* | ||
* exynos drm buffer entry structure. | ||
* | ||
* @paddr: physical address of allocated memory. | ||
* @vaddr: kernel virtual address of allocated memory. | ||
* @size: size of allocated memory. | ||
*/ | ||
struct exynos_drm_buf_entry { | ||
dma_addr_t paddr; | ||
void __iomem *vaddr; | ||
unsigned int size; | ||
}; | ||
|
||
/* allocate physical memory. */ | ||
struct exynos_drm_buf_entry *exynos_drm_buf_create(struct drm_device *dev, | ||
unsigned int size); | ||
|
||
/* remove allocated physical memory. */ | ||
void exynos_drm_buf_destroy(struct drm_device *dev, | ||
struct exynos_drm_buf_entry *entry); | ||
|
||
#endif |
Oops, something went wrong.