summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSooChan Lim <sc1.lim@samsung.com>2016-03-07 19:49:46 +0900
committerSooChan Lim <sc1.lim@samsung.com>2016-03-07 19:50:14 +0900
commit2af0591c13028a975a75d467e1c005eab0141830 (patch)
treebc0b5193b60531e586f596f8a1c255e867eb0340
parent07bea8c08e97b9149dac0958239630237aee52fb (diff)
downloadlibtdm-fbdev-2af0591c13028a975a75d467e1c005eab0141830.tar.gz
libtdm-fbdev-2af0591c13028a975a75d467e1c005eab0141830.tar.bz2
libtdm-fbdev-2af0591c13028a975a75d467e1c005eab0141830.zip
add initial codes
Change-Id: I9b4b5fc34fd77ea56f64d0ed3586ee07a2d4b1de
-rw-r--r--COPYING21
-rw-r--r--Makefile.am1
-rwxr-xr-xautogen.sh6
-rw-r--r--configure.ac55
-rw-r--r--packaging/libtdm-fbdev.manifest5
-rw-r--r--packaging/libtdm-fbdev.spec41
-rw-r--r--src/Makefile.am12
-rw-r--r--src/tdm_fbdev.c73
-rw-r--r--src/tdm_fbdev.h48
-rw-r--r--src/tdm_fbdev_display.c157
10 files changed, 419 insertions, 0 deletions
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..817cb95
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,21 @@
+Copyright 2013 Samsung Electronics co., Ltd. All Rights Reserved.
+
+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, sub license, 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 NON-INFRINGEMENT.
+IN NO EVENT SHALL PRECISION INSIGHT 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.
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 0000000..af437a6
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1 @@
+SUBDIRS = src
diff --git a/autogen.sh b/autogen.sh
new file mode 100755
index 0000000..30d679f
--- /dev/null
+++ b/autogen.sh
@@ -0,0 +1,6 @@
+#! /bin/sh
+
+test -n "$srcdir" || srcdir=`dirname "$0"`
+test -n "$srcdir" || srcdir=.
+autoreconf --force --install --verbose "$srcdir"
+test -n "$NOCONFIGURE" || "$srcdir/configure" "$@"
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..08d107e
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,55 @@
+AC_PREREQ([2.60])
+AC_INIT([libtdm-fbdev],
+ [1.0.0],
+ [https://www.tizen.org],
+ [libtdm-fbdev])
+
+AC_CONFIG_HEADERS([config.h])
+AC_CONFIG_SRCDIR([Makefile.am])
+AM_INIT_AUTOMAKE([1.10 foreign dist-bzip2])
+AM_MAINTAINER_MODE([enable])
+
+# Check for programs
+AC_PROG_CC
+
+AC_USE_SYSTEM_EXTENSIONS
+AC_SYS_LARGEFILE
+AC_FUNC_ALLOCA
+
+# Initialize libtool
+LT_PREREQ([2.2])
+LT_INIT([disable-static])
+
+# Enable quiet compiles on automake 1.11.
+m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+
+PKG_CHECK_MODULES(TDM_DRM, libtdm libtbm)
+PKG_CHECK_MODULES(UDEV, libudev, [udev=yes], [udev=no])
+if test x"$udev" = xyes; then
+ AC_DEFINE(HAVE_UDEV,1,[Enable udev-based monitor hotplug detection])
+ TDM_DRM_CFLAGS="$TDM_DRM_CFLAGS $UDEV_CFLAGS"
+ TDM_DRM_LIBS="$TDM_DRM_LIBS $UDEV_LIBS"
+fi
+
+AC_SUBST(TDM_DRM_CFLAGS)
+AC_SUBST(TDM_DRM_LIBS)
+
+# set the dir for the tbm module
+DEFAULT_TDM_MODULE_PATH="${libdir}/tdm"
+AC_ARG_WITH(tdm-module-path, AS_HELP_STRING([--with-tdm-module-path=PATH], [tdm module dir]),
+ [ TDM_MODULE_PATH="$withval" ],
+ [ TDM_MODULE_PATH="${DEFAULT_TDM_MODULE_PATH}" ])
+AC_SUBST(TDM_MODULE_PATH)
+
+# For enumerating devices in test case
+AC_OUTPUT([
+ Makefile
+ src/Makefile])
+
+echo ""
+echo "$PACKAGE_STRING will be compiled with:"
+echo ""
+echo "TDM_DRM_CFLAGS : $TDM_DRM_CFLAGS"
+echo "TDM_DRM_LIBS : $TDM_DRM_LIBS"
+echo "TDM_MODULE_DIR : $TDM_MODULE_PATH"
+echo ""
diff --git a/packaging/libtdm-fbdev.manifest b/packaging/libtdm-fbdev.manifest
new file mode 100644
index 0000000..75b0fa5
--- /dev/null
+++ b/packaging/libtdm-fbdev.manifest
@@ -0,0 +1,5 @@
+<manifest>
+ <request>
+ <domain name="_"/>
+ </request>
+</manifest>
diff --git a/packaging/libtdm-fbdev.spec b/packaging/libtdm-fbdev.spec
new file mode 100644
index 0000000..2f251ce
--- /dev/null
+++ b/packaging/libtdm-fbdev.spec
@@ -0,0 +1,41 @@
+Name: libtdm-fbdev
+Version: 1.0.1
+Release: 0
+Summary: Tizen Display Manager DRM Back-End Library
+Group: Development/Libraries
+License: MIT
+Source0: %{name}-%{version}.tar.gz
+Source1001: %{name}.manifest
+BuildRequires: pkgconfig(libdrm)
+BuildRequires: pkgconfig(libudev)
+BuildRequires: pkgconfig(libtdm)
+
+%description
+Back-End library of Tizen Display Manager FBDEV : libtdm-mgr FBDEV library
+
+%prep
+%setup -q
+cp %{SOURCE1001} .
+
+%build
+%reconfigure --prefix=%{_prefix} --libdir=%{_libdir} --disable-static \
+ CFLAGS="${CFLAGS} -Wall -Werror" \
+ LDFLAGS="${LDFLAGS} -Wl,--hash-style=both -Wl,--as-needed"
+make %{?_smp_mflags}
+
+%install
+%make_install
+
+%post
+if [ -f %{_libdir}/tdm/libtdm-default.so ]; then
+ rm -rf %{_libdir}/tdm/libtdm-default.so
+fi
+ln -s libtdm-fbdev.so %{_libdir}/tdm/libtdm-default.so
+
+%postun -p /sbin/ldconfig
+
+%files
+%manifest %{name}.manifest
+%license COPYING
+%defattr(-,root,root,-)
+%{_libdir}/tdm/libtdm-fbdev.so
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644
index 0000000..5bae847
--- /dev/null
+++ b/src/Makefile.am
@@ -0,0 +1,12 @@
+AM_CFLAGS = \
+ $(TDM_DRM_CFLAGS) \
+ -I$(top_srcdir)/src
+
+libtdm_fbdev_la_LTLIBRARIES = libtdm-fbdev.la
+libtdm_fbdev_ladir = $(TDM_MODULE_PATH)
+libtdm_fbdev_la_LDFLAGS = -module -avoid-version
+libtdm_fbdev_la_LIBADD = $(TDM_DRM_LIBS) -ldl
+
+libtdm_fbdev_la_SOURCES = \
+ tdm_fbdev_display.c \
+ tdm_fbdev.c
diff --git a/src/tdm_fbdev.c b/src/tdm_fbdev.c
new file mode 100644
index 0000000..54314d4
--- /dev/null
+++ b/src/tdm_fbdev.c
@@ -0,0 +1,73 @@
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#if HAVE_UDEV
+#include <libudev.h>
+#endif
+
+#include "tdm_fbdev.h"
+
+#include <tdm_helper.h>
+
+/*
+ * TODO: How should it be named?
+ */
+#define TDM_FBDEV_NAME "vigs"
+
+static tdm_func_display fbdev_func_display =
+{
+ fbdev_display_get_capabilitiy,
+ NULL, //display_get_pp_capability,
+ NULL, //display_get_capture_capability
+ fbdev_display_get_outputs,
+ fbdev_display_get_fd,
+ fbdev_display_handle_events,
+ NULL, //display_create_pp,
+ fbdev_output_get_capability,
+ fbdev_output_get_layers,
+ fbdev_output_set_property,
+ fbdev_output_get_property,
+ fbdev_output_wait_vblank,
+ fbdev_output_set_vblank_handler,
+ fbdev_output_commit,
+ fbdev_output_set_commit_handler,
+ fbdev_output_set_dpms,
+ fbdev_output_get_dpms,
+ fbdev_output_set_mode,
+ fbdev_output_get_mode,
+ NULL, //output_create_capture
+ fbdev_layer_get_capability,
+ fbdev_layer_set_property,
+ fbdev_layer_get_property,
+ fbdev_layer_set_info,
+ fbdev_layer_get_info,
+ fbdev_layer_set_buffer,
+ fbdev_layer_unset_buffer,
+ NULL, //layer_set_video_pos
+ NULL, //layer_create_capture
+};
+
+
+void
+tdm_fbdev_deinit(tdm_backend_data *bdata)
+{
+
+}
+
+tdm_backend_data*
+tdm_fbdev_init(tdm_display *dpy, tdm_error *error)
+{
+ (void) fbdev_func_display;
+
+ return NULL;
+}
+
+tdm_backend_module tdm_backend_module_data =
+{
+ "vigs",
+ "Samsung",
+ TDM_BACKEND_ABI_VERSION,
+ tdm_fbdev_init,
+ tdm_fbdev_deinit
+};
diff --git a/src/tdm_fbdev.h b/src/tdm_fbdev.h
new file mode 100644
index 0000000..a2c05fd
--- /dev/null
+++ b/src/tdm_fbdev.h
@@ -0,0 +1,48 @@
+#ifndef _TDM_fbdev_H_
+#define _TDM_fbdev_H_
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <pthread.h>
+#include <errno.h>
+#include <unistd.h>
+#include <limits.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/ioctl.h>
+#include <fcntl.h>
+
+#include <tbm_surface.h>
+#include <tbm_surface_internal.h>
+#include <tdm_backend.h>
+#include <tdm_log.h>
+#include <tdm_list.h>
+
+/* drm backend functions (display) */
+tdm_error fbdev_display_get_capabilitiy(tdm_backend_data *bdata, tdm_caps_display *caps);
+tdm_output** fbdev_display_get_outputs(tdm_backend_data *bdata, int *count, tdm_error *error);
+tdm_error fbdev_display_get_fd(tdm_backend_data *bdata, int *fd);
+tdm_error fbdev_display_handle_events(tdm_backend_data *bdata);
+tdm_pp* fbdev_display_create_pp(tdm_backend_data *bdata, tdm_error *error);
+tdm_error fbdev_output_get_capability(tdm_output *output, tdm_caps_output *caps);
+tdm_layer** fbdev_output_get_layers(tdm_output *output, int *count, tdm_error *error);
+tdm_error fbdev_output_set_property(tdm_output *output, unsigned int id, tdm_value value);
+tdm_error fbdev_output_get_property(tdm_output *output, unsigned int id, tdm_value *value);
+tdm_error fbdev_output_wait_vblank(tdm_output *output, int interval, int sync, void *user_data);
+tdm_error fbdev_output_set_vblank_handler(tdm_output *output, tdm_output_vblank_handler func);
+tdm_error fbdev_output_commit(tdm_output *output, int sync, void *user_data);
+tdm_error fbdev_output_set_commit_handler(tdm_output *output, tdm_output_commit_handler func);
+tdm_error fbdev_output_set_dpms(tdm_output *output, tdm_output_dpms dpms_value);
+tdm_error fbdev_output_get_dpms(tdm_output *output, tdm_output_dpms *dpms_value);
+tdm_error fbdev_output_set_mode(tdm_output *output, const tdm_output_mode *mode);
+tdm_error fbdev_output_get_mode(tdm_output *output, const tdm_output_mode **mode);
+tdm_error fbdev_layer_get_capability(tdm_layer *layer, tdm_caps_layer *caps);
+tdm_error fbdev_layer_set_property(tdm_layer *layer, unsigned int id, tdm_value value);
+tdm_error fbdev_layer_get_property(tdm_layer *layer, unsigned int id, tdm_value *value);
+tdm_error fbdev_layer_set_info(tdm_layer *layer, tdm_info_layer *info);
+tdm_error fbdev_layer_get_info(tdm_layer *layer, tdm_info_layer *info);
+tdm_error fbdev_layer_set_buffer(tdm_layer *layer, tbm_surface_h buffer);
+tdm_error fbdev_layer_unset_buffer(tdm_layer *layer);
+
+#endif /* _TDM_fbdev_H_ */
diff --git a/src/tdm_fbdev_display.c b/src/tdm_fbdev_display.c
new file mode 100644
index 0000000..acc9dd5
--- /dev/null
+++ b/src/tdm_fbdev_display.c
@@ -0,0 +1,157 @@
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <tdm_helper.h>
+#include "tdm_fbdev.h"
+
+tdm_error
+fbdev_display_get_capabilitiy(tdm_backend_data *bdata, tdm_caps_display *caps)
+{
+ return TDM_ERROR_NONE;
+}
+
+tdm_output**
+fbdev_display_get_outputs(tdm_backend_data *bdata, int *count, tdm_error *error)
+{
+ return NULL;
+}
+
+tdm_error
+fbdev_display_get_fd(tdm_backend_data *bdata, int *fd)
+{
+ return TDM_ERROR_NONE;
+}
+
+tdm_error
+fbdev_display_handle_events(tdm_backend_data *bdata)
+{
+ return TDM_ERROR_NONE;
+}
+
+tdm_error
+fbdev_output_get_capability(tdm_output *output, tdm_caps_output *caps)
+{
+ return TDM_ERROR_NONE;
+}
+
+tdm_layer**
+fbdev_output_get_layers(tdm_output *output, int *count, tdm_error *error)
+{
+ return NULL;
+}
+
+tdm_error
+fbdev_output_set_property(tdm_output *output, unsigned int id, tdm_value value)
+{
+ return TDM_ERROR_NONE;
+}
+
+tdm_error
+fbdev_output_get_property(tdm_output *output, unsigned int id, tdm_value *value)
+{
+ return TDM_ERROR_NONE;
+}
+
+tdm_error
+fbdev_output_wait_vblank(tdm_output *output, int interval, int sync, void *user_data)
+{
+ return TDM_ERROR_NONE;
+}
+
+tdm_error
+fbdev_output_set_vblank_handler(tdm_output *output, tdm_output_vblank_handler func)
+{
+ return TDM_ERROR_NONE;
+}
+
+
+tdm_error
+fbdev_output_commit(tdm_output *output, int sync, void *user_data)
+{
+ return TDM_ERROR_NONE;
+}
+
+
+tdm_error
+fbdev_output_set_commit_handler(tdm_output *output, tdm_output_commit_handler func)
+{
+ return TDM_ERROR_NONE;
+}
+
+
+tdm_error
+fbdev_output_set_dpms(tdm_output *output, tdm_output_dpms dpms_value)
+{
+ return TDM_ERROR_NONE;
+}
+
+
+tdm_error
+fbdev_output_get_dpms(tdm_output *output, tdm_output_dpms *dpms_value)
+{
+ return TDM_ERROR_NONE;
+}
+
+
+tdm_error
+fbdev_output_set_mode(tdm_output *output, const tdm_output_mode *mode)
+{
+ return TDM_ERROR_NONE;
+}
+
+
+tdm_error
+fbdev_output_get_mode(tdm_output *output, const tdm_output_mode **mode)
+{
+ return TDM_ERROR_NONE;
+}
+
+
+tdm_error
+fbdev_layer_get_capability(tdm_layer *layer, tdm_caps_layer *caps)
+{
+ return TDM_ERROR_NONE;
+}
+
+
+tdm_error
+fbdev_layer_set_property(tdm_layer *layer, unsigned int id, tdm_value value)
+{
+ return TDM_ERROR_NONE;
+}
+
+
+tdm_error
+fbdev_layer_get_property(tdm_layer *layer, unsigned int id, tdm_value *value)
+{
+ return TDM_ERROR_NONE;
+}
+
+
+tdm_error
+fbdev_layer_set_info(tdm_layer *layer, tdm_info_layer *info)
+{
+ return TDM_ERROR_NONE;
+}
+
+
+tdm_error
+fbdev_layer_get_info(tdm_layer *layer, tdm_info_layer *info)
+{
+ return TDM_ERROR_NONE;
+}
+
+
+tdm_error
+fbdev_layer_set_buffer(tdm_layer *layer, tbm_surface_h buffer)
+{
+ return TDM_ERROR_NONE;
+}
+
+
+tdm_error
+fbdev_layer_unset_buffer(tdm_layer *layer)
+{
+ return TDM_ERROR_NONE;
+}