Base files for new TTY driver.

This commit is contained in:
Florian Pose
2009-11-30 18:02:29 +01:00
parent 6fa6d3ccc8
commit 40943a197d
6 changed files with 241 additions and 1 deletions

View File

@@ -25,8 +25,14 @@
# EtherCAT technology and brand is only permitted in compliance with the
# industrial property and similar rights of Beckhoff Automation GmbH.
#
# vi: syntax=make
#
#------------------------------------------------------------------------------
obj-m := examples/ master/ devices/
ifeq (@ENABLE_TTY@,1)
obj-m += tty/
endif
#------------------------------------------------------------------------------

View File

@@ -43,6 +43,10 @@ if ENABLE_USERLIB
SUBDIRS += lib
endif
if ENABLE_TTY
SUBDIRS += tty
endif
# userspace example depends on lib/
SUBDIRS += examples
@@ -54,7 +58,8 @@ DIST_SUBDIRS = \
m4 \
master \
script \
tool
tool \
tty
noinst_HEADERS = \
globals.h

View File

@@ -518,6 +518,29 @@ AC_ARG_ENABLE([userlib],
AM_CONDITIONAL(ENABLE_USERLIB, test "x$userlib" = "x1")
#------------------------------------------------------------------------------
# TTY driver
#------------------------------------------------------------------------------
AC_ARG_ENABLE([tty],
AS_HELP_STRING([--enable-tty],
[Generation of the ec_tty module (default: no)]),
[
case "${enableval}" in
yes) tty=1
;;
no) tty=0
;;
*) AC_MSG_ERROR([Invalid value for --enable-tty])
;;
esac
],
[tty=0]
)
AM_CONDITIONAL(ENABLE_TTY, test "x$tty" = "x1")
AC_SUBST(ENABLE_TTY,[$tty])
#------------------------------------------------------------------------------
AC_CONFIG_FILES([
@@ -548,6 +571,8 @@ AC_CONFIG_FILES([
script/init.d/ethercat
script/sysconfig/Makefile
tool/Makefile
tty/Makefile
tty/Kbuild
])
AC_OUTPUT

47
tty/Kbuild.in Normal file
View File

@@ -0,0 +1,47 @@
#------------------------------------------------------------------------------
#
# $Id$
#
# Copyright (C) 2006-2008 Florian Pose, Ingenieurgemeinschaft IgH
#
# This file is part of the IgH EtherCAT Master.
#
# The IgH EtherCAT Master is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 2, as
# published by the Free Software Foundation.
#
# The IgH EtherCAT Master is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with the IgH EtherCAT Master; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
# ---
#
# The license mentioned above concerns the source code only. Using the EtherCAT
# technology and brand is only permitted in compliance with the industrial
# property and similar rights of Beckhoff Automation GmbH.
#
# ---
#
# vi: syntax=make
#
#------------------------------------------------------------------------------
obj-m := ec_tty.o
ec_tty-objs := \
module.o
REV := $(shell if test -s $(src)/../revision; then \
cat $(src)/../revision; \
else \
hg id -i $(src)/.. 2>/dev/null || echo "unknown"; \
fi)
CFLAGS_module.o := -DREV=$(REV)
#------------------------------------------------------------------------------

59
tty/Makefile.am Normal file
View File

@@ -0,0 +1,59 @@
#------------------------------------------------------------------------------
#
# $Id$
#
# Copyright (C) 2006-2008 Florian Pose, Ingenieurgemeinschaft IgH
#
# This file is part of the IgH EtherCAT Master.
#
# The IgH EtherCAT Master is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 2, as
# published by the Free Software Foundation.
#
# The IgH EtherCAT Master is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with the IgH EtherCAT Master; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
# ---
#
# The license mentioned above concerns the source code only. Using the
# EtherCAT technology and brand is only permitted in compliance with the
# industrial property and similar rights of Beckhoff Automation GmbH.
#
#------------------------------------------------------------------------------
# using HEADERS to enable tags target
noinst_HEADERS = \
module.c
EXTRA_DIST = \
Kbuild.in
BUILT_SOURCES = \
Kbuild
modules:
$(MAKE) -C "$(LINUX_SOURCE_DIR)" M="@abs_srcdir@" modules
modules_install:
mkdir -p $(DESTDIR)$(LINUX_MOD_PATH)
cp $(srcdir)/ec_tty.ko $(DESTDIR)$(LINUX_MOD_PATH)
clean-local:
$(MAKE) -C "$(LINUX_SOURCE_DIR)" M="@abs_srcdir@" clean
modulesdir=@prefix@/modules
SYMVERS=`echo $(top_builddir)/Module*.symvers`
install-data-local:
@test -n "$(SYMVERS)" && \
mkdir -p $(DESTDIR)$(modulesdir) && \
cp -vf $(SYMVERS) \
$(DESTDIR)$(modulesdir)/ec_tty.symvers
#------------------------------------------------------------------------------

98
tty/module.c Normal file
View File

@@ -0,0 +1,98 @@
/******************************************************************************
*
* $Id$
*
* Copyright (C) 2006-2008 Florian Pose, Ingenieurgemeinschaft IgH
*
* This file is part of the IgH EtherCAT Master.
*
* The IgH EtherCAT Master is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2, as
* published by the Free Software Foundation.
*
* The IgH EtherCAT Master is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with the IgH EtherCAT Master; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
* ---
*
* The license mentioned above concerns the source code only. Using the
* EtherCAT technology and brand is only permitted in compliance with the
* industrial property and similar rights of Beckhoff Automation GmbH.
*
*****************************************************************************/
/** \file
* EtherCAT tty driver module.
*/
/*****************************************************************************/
#include <linux/module.h>
#include <linux/err.h>
#include "../master/globals.h"
/*****************************************************************************/
int __init ec_tty_init_module(void);
void __exit ec_tty_cleanup_module(void);
unsigned int debug_level = 0;
char *ec_master_version_str = EC_MASTER_VERSION; /**< Version string. */
/*****************************************************************************/
/** \cond */
MODULE_AUTHOR("Florian Pose <fp@igh-essen.com>");
MODULE_DESCRIPTION("EtherCAT TTY driver module");
MODULE_LICENSE("GPL");
MODULE_VERSION(EC_MASTER_VERSION);
module_param_named(debug_level, debug_level, uint, S_IRUGO);
MODULE_PARM_DESC(debug_level, "Debug level");
/** \endcond */
/*****************************************************************************/
/** Module initialization.
*
* \return 0 on success, else < 0
*/
int __init ec_tty_init_module(void)
{
int ret = 0;
EC_INFO("TTY driver %s\n", EC_MASTER_VERSION);
return ret;
}
/*****************************************************************************/
/** Module cleanup.
*
* Clears all master instances.
*/
void __exit ec_tty_cleanup_module(void)
{
EC_INFO("TTY module cleaned up.\n");
}
/*****************************************************************************/
/** \cond */
module_init(ec_tty_init_module);
module_exit(ec_tty_cleanup_module);
/** \endcond */
/*****************************************************************************/