On 08/08/2012 04:44 PM, Laurent Pinchart wrote:
Hi Sascha,
On Wednesday 27 June 2012 15:30:18 Sascha Hauer wrote:
Many embedded drm devices do not have a IOMMU and no dedicated memory for graphics. These devices use CMA (Contiguous Memory Allocator) backed graphics memory. This patch provides helper functions to be able to share the code. The code technically does not depend on CMA as the backend allocator, the name has been chosen because cma makes for a nice, short but still descriptive function prefix.
Signed-off-by: Sascha Hauer s.hauer@pengutronix.de
changes since v3:
- *really* use DIV_ROUND_UP(args->width * args->bpp, 8) to calculate the
pitch changes since v2:
- make drm_gem_cma_create_with_handle static
- use DIV_ROUND_UP(args->width * args->bpp, 8) to calculate the pitch
- make drm_gem_cma_vm_ops const
- add missing #include <linux/export.h>
changes since v1:
- map whole buffer at mmap time, not page by page at fault time
- several cleanups as suggested by Lars-Peter Clausen and Laurent Pinchart
drivers/gpu/drm/Kconfig | 6 + drivers/gpu/drm/Makefile | 1 + drivers/gpu/drm/drm_gem_cma_helper.c | 251 +++++++++++++++++++++++++++++++ include/drm/drm_gem_cma_helper.h | 44 ++++++ 4 files changed, 302 insertions(+) create mode 100644 drivers/gpu/drm/drm_gem_cma_helper.c create mode 100644 include/drm/drm_gem_cma_helper.h
diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig index dc5df12..8f362ec 100644 --- a/drivers/gpu/drm/Kconfig +++ b/drivers/gpu/drm/Kconfig @@ -53,6 +53,12 @@ config DRM_TTM GPU memory types. Will be enabled automatically if a device driver uses it.
+config DRM_GEM_CMA_HELPER
- tristate
- depends on DRM
- help
Choose this if you need the GEM CMA helper functions
config DRM_TDFX tristate "3dfx Banshee/Voodoo3+" depends on DRM && PCI diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile index 0487ff6..8759cda 100644 --- a/drivers/gpu/drm/Makefile +++ b/drivers/gpu/drm/Makefile @@ -15,6 +15,7 @@ drm-y := drm_auth.o drm_buffer.o drm_bufs.o drm_cache.o \ drm_trace_points.o drm_global.o drm_prime.o
drm-$(CONFIG_COMPAT) += drm_ioc32.o +drm-$(CONFIG_DRM_GEM_CMA_HELPER) += drm_gem_cma_helper.o
This results in a built failure for me with
CONFIG_DRM=y CONFIG_DRM_KMS_HELPER=m # CONFIG_DRM_LOAD_EDID_FIRMWARE is not set CONFIG_DRM_GEM_CMA_HELPER=m CONFIG_DRM_KMS_CMA_HELPER=m
drm_gem_cma_helper.o isn't compiled at all. Can you reproduce the problem ?
The Kconfig entry needs to be bool instead of tristate.
- Lars