diff options
author | SooChan Lim <sc1.lim@samsung.com> | 2016-03-07 19:49:46 +0900 |
---|---|---|
committer | SooChan Lim <sc1.lim@samsung.com> | 2016-03-07 19:50:14 +0900 |
commit | 2af0591c13028a975a75d467e1c005eab0141830 (patch) | |
tree | bc0b5193b60531e586f596f8a1c255e867eb0340 | |
parent | 07bea8c08e97b9149dac0958239630237aee52fb (diff) | |
download | libtdm-fbdev-2af0591c13028a975a75d467e1c005eab0141830.tar.gz libtdm-fbdev-2af0591c13028a975a75d467e1c005eab0141830.tar.bz2 libtdm-fbdev-2af0591c13028a975a75d467e1c005eab0141830.zip |
add initial codes
Change-Id: I9b4b5fc34fd77ea56f64d0ed3586ee07a2d4b1de
-rw-r--r-- | COPYING | 21 | ||||
-rw-r--r-- | Makefile.am | 1 | ||||
-rwxr-xr-x | autogen.sh | 6 | ||||
-rw-r--r-- | configure.ac | 55 | ||||
-rw-r--r-- | packaging/libtdm-fbdev.manifest | 5 | ||||
-rw-r--r-- | packaging/libtdm-fbdev.spec | 41 | ||||
-rw-r--r-- | src/Makefile.am | 12 | ||||
-rw-r--r-- | src/tdm_fbdev.c | 73 | ||||
-rw-r--r-- | src/tdm_fbdev.h | 48 | ||||
-rw-r--r-- | src/tdm_fbdev_display.c | 157 |
10 files changed, 419 insertions, 0 deletions
@@ -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; +} |