From 22fa14d769cd73507fc81ff8feeeec3f7f96e835 Mon Sep 17 00:00:00 2001 From: Florian Pose <fp@igh-essen.com> Date: Mon, 30 Nov 2009 18:02:29 +0100 Subject: [PATCH] Base files for new TTY driver. --- Kbuild.in | 6 +++ Makefile.am | 7 +++- configure.ac | 25 +++++++++++++ tty/Kbuild.in | 47 ++++++++++++++++++++++++ tty/Makefile.am | 59 +++++++++++++++++++++++++++++ tty/module.c | 98 +++++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 241 insertions(+), 1 deletion(-) create mode 100644 tty/Kbuild.in create mode 100644 tty/Makefile.am create mode 100644 tty/module.c diff --git a/Kbuild.in b/Kbuild.in index 98361f29..3a053e84 100644 --- a/Kbuild.in +++ b/Kbuild.in @@ -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 + #------------------------------------------------------------------------------ diff --git a/Makefile.am b/Makefile.am index 34e54f54..b1f6bae8 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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 diff --git a/configure.ac b/configure.ac index a1c1779f..a08a244e 100644 --- a/configure.ac +++ b/configure.ac @@ -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 diff --git a/tty/Kbuild.in b/tty/Kbuild.in new file mode 100644 index 00000000..44718b1f --- /dev/null +++ b/tty/Kbuild.in @@ -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) + +#------------------------------------------------------------------------------ diff --git a/tty/Makefile.am b/tty/Makefile.am new file mode 100644 index 00000000..5fd6ebbc --- /dev/null +++ b/tty/Makefile.am @@ -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 + +#------------------------------------------------------------------------------ diff --git a/tty/module.c b/tty/module.c new file mode 100644 index 00000000..d1602dd7 --- /dev/null +++ b/tty/module.c @@ -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 */ + +/*****************************************************************************/ -- GitLab