RE: [PATCH 2/2] misc: add real function open/read/write/ioctl/close for moxa_serial_io driver

From: Jimmy Chen (???)
Date: Sun Apr 24 2011 - 22:36:16 EST


From: Jimmy Chen <jimmy.chen@xxxxxxxx>

Add real function and GPL license.

Signed-off-by: Jimmy Chen <jimmy.chen@xxxxxxxx>
---
diff --git a/drivers/misc/moxa_serial_io.c b/drivers/misc/moxa_serial_io.c
index df454c8..e69de29 100644
--- a/drivers/misc/moxa_serial_io.c
+++ b/drivers/misc/moxa_serial_io.c
@@ -1,609 +0,0 @@
-/*
- * GNU GENERAL PUBLIC LICENSE
- * Version 2, June 1991
- *
- * Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- * Everyone is permitted to copy and distribute verbatim copies
- * of this license document, but changing it is not allowed.
- *
- * Preamble
- *
- * The licenses for most software are designed to take away your
- * freedom to share and change it. By contrast, the GNU General Public
- * License is intended to guarantee your freedom to share and change free
- * software--to make sure the software is free for all its users. This
- * General Public License applies to most of the Free Software
- * Foundation's software and to any other program whose authors commit to
- * using it. (Some other Free Software Foundation software is covered by
- * the GNU Library General Public License instead.) You can apply it to
- * your programs, too.
- *
- * When we speak of free software, we are referring to freedom, not
- * price. Our General Public Licenses are designed to make sure that you
- * have the freedom to distribute copies of free software (and charge for
- * this service if you wish), that you receive source code or can get it
- * if you want it, that you can change the software or use pieces of it
- * in new free programs; and that you know you can do these things.
- *
- * To protect your rights, we need to make restrictions that forbid
- * anyone to deny you these rights or to ask you to surrender the rights.
- * These restrictions translate to certain responsibilities for you if you
- * distribute copies of the software, or if you modify it.
- *
- * For example, if you distribute copies of such a program, whether
- * gratis or for a fee, you must give the recipients all the rights that
- * you have. You must make sure that they, too, receive or can get the
- * source code. And you must show them these terms so they know their
- * rights.
- *
- * We protect your rights with two steps: (1) copyright the software, and
- * (2) offer you this license which gives you legal permission to copy,
- * distribute and/or modify the software.
- *
- * Also, for each author's protection and ours, we want to make certain
- * that everyone understands that there is no warranty for this free
- * software. If the software is modified by someone else and passed on, we
- * want its recipients to know that what they have is not the original, so
- * that any problems introduced by others will not reflect on the original
- * authors' reputations.
- *
- * Finally, any free program is threatened constantly by software
- * patents. We wish to avoid the danger that redistributors of a free
- * program will individually obtain patent licenses, in effect making the
- * program proprietary. To prevent this, we have made it clear that any
- * patent must be licensed for everyone's free use or not licensed at all.
- *
- * The precise terms and conditions for copying, distribution and
- * modification follow.
- *

- * GNU GENERAL PUBLIC LICENSE
- * TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
- *
- * 0. This License applies to any program or other work which contains
- * a notice placed by the copyright holder saying it may be distributed
- * under the terms of this General Public License. The "Program", below,
- * refers to any such program or work, and a "work based on the Program"
- * means either the Program or any derivative work under copyright law:
- * that is to say, a work containing the Program or a portion of it,
- * either verbatim or with modifications and/or translated into another
- * language. (Hereinafter, translation is included without limitation in
- * the term "modification".) Each licensee is addressed as "you".
- *
- * Activities other than copying, distribution and modification are not
- * covered by this License; they are outside its scope. The act of
- * running the Program is not restricted, and the output from the Program
- * is covered only if its contents constitute a work based on the
- * Program (independent of having been made by running the Program).
- * Whether that is true depends on what the Program does.
- *
- * 1. You may copy and distribute verbatim copies of the Program's
- * source code as you receive it, in any medium, provided that you
- * conspicuously and appropriately publish on each copy an appropriate
- * copyright notice and disclaimer of warranty; keep intact all the
- * notices that refer to this License and to the absence of any warranty;
- * and give any other recipients of the Program a copy of this License
- * along with the Program.
- *
- * You may charge a fee for the physical act of transferring a copy, and
- * you may at your option offer warranty protection in exchange for a fee.
- *
- * 2. You may modify your copy or copies of the Program or any portion
- * of it, thus forming a work based on the Program, and copy and
- * distribute such modifications or work under the terms of Section 1
- * above, provided that you also meet all of these conditions:
- *
- * a) You must cause the modified files to carry prominent notices
- * stating that you changed the files and the date of any change.
- *
- * b) You must cause any work that you distribute or publish, that in
- * whole or in part contains or is derived from the Program or any
- * part thereof, to be licensed as a whole at no charge to all third
- * parties under the terms of this License.
- *
- * c) If the modified program normally reads commands interactively
- * when run, you must cause it, when started running for such
- * interactive use in the most ordinary way, to print or display an
- * announcement including an appropriate copyright notice and a
- * notice that there is no warranty (or else, saying that you provide
- * a warranty) and that users may redistribute the program under
- * these conditions, and telling the user how to view a copy of this
- * License. (Exception: if the Program itself is interactive but
- * does not normally print such an announcement, your work based on
- * the Program is not required to print an announcement.)
- *

- * These requirements apply to the modified work as a whole. If
- * identifiable sections of that work are not derived from the Program,
- * and can be reasonably considered independent and separate works in
- * themselves, then this License, and its terms, do not apply to those
- * sections when you distribute them as separate works. But when you
- * distribute the same sections as part of a whole which is a work based
- * on the Program, the distribution of the whole must be on the terms of
- * this License, whose permissions for other licensees extend to the
- * entire whole, and thus to each and every part regardless of who wrote it.
- *
- * Thus, it is not the intent of this section to claim rights or contest
- * your rights to work written entirely by you; rather, the intent is to
- * exercise the right to control the distribution of derivative or
- * collective works based on the Program.
- *
- * In addition, mere aggregation of another work not based on the Program
- * with the Program (or with a work based on the Program) on a volume of
- * a storage or distribution medium does not bring the other work under
- * the scope of this License.
- *
- * 3. You may copy and distribute the Program (or a work based on it,
- * under Section 2) in object code or executable form under the terms of
- * Sections 1 and 2 above provided that you also do one of the following:
- *
- * a) Accompany it with the complete corresponding machine-readable
- * source code, which must be distributed under the terms of Sections
- * 1 and 2 above on a medium customarily used for software interchange; or,
- *
- * b) Accompany it with a written offer, valid for at least three
- * years, to give any third party, for a charge no more than your
- * cost of physically performing source distribution, a complete
- * machine-readable copy of the corresponding source code, to be
- * distributed under the terms of Sections 1 and 2 above on a medium
- * customarily used for software interchange; or,
- *
- * c) Accompany it with the information you received as to the offer
- * to distribute corresponding source code. (This alternative is
- * allowed only for noncommercial distribution and only if you
- * received the program in object code or executable form with such
- * an offer, in accord with Subsection b above.)
- *
- * The source code for a work means the preferred form of the work for
- * making modifications to it. For an executable work, complete source
- * code means all the source code for all modules it contains, plus any
- * associated interface definition files, plus the scripts used to
- * control compilation and installation of the executable. However, as a
- * special exception, the source code distributed need not include
- * anything that is normally distributed (in either source or binary
- * form) with the major components (compiler, kernel, and so on) of the
- * operating system on which the executable runs, unless that component
- * itself accompanies the executable.
- *
- * If distribution of executable or object code is made by offering
- * access to copy from a designated place, then offering equivalent
- * access to copy the source code from the same place counts as
- * distribution of the source code, even though third parties are not
- * compelled to copy the source along with the object code.
- *

- * 4. You may not copy, modify, sublicense, or distribute the Program
- * except as expressly provided under this License. Any attempt
- * otherwise to copy, modify, sublicense or distribute the Program is
- * void, and will automatically terminate your rights under this License.
- * However, parties who have received copies, or rights, from you under
- * this License will not have their licenses terminated so long as such
- * parties remain in full compliance.
- *
- * 5. You are not required to accept this License, since you have not
- * signed it. However, nothing else grants you permission to modify or
- * distribute the Program or its derivative works. These actions are
- * prohibited by law if you do not accept this License. Therefore, by
- * modifying or distributing the Program (or any work based on the
- * Program), you indicate your acceptance of this License to do so, and
- * all its terms and conditions for copying, distributing or modifying
- * the Program or works based on it.
- *
- * 6. Each time you redistribute the Program (or any work based on the
- * Program), the recipient automatically receives a license from the
- * original licensor to copy, distribute or modify the Program subject to
- * these terms and conditions. You may not impose any further
- * restrictions on the recipients' exercise of the rights granted herein.
- * You are not responsible for enforcing compliance by third parties to
- * this License.
- *
- * 7. If, as a consequence of a court judgment or allegation of patent
- * infringement or for any other reason (not limited to patent issues),
- * conditions are imposed on you (whether by court order, agreement or
- * otherwise) that contradict the conditions of this License, they do not
- * excuse you from the conditions of this License. If you cannot
- * distribute so as to satisfy simultaneously your obligations under this
- * License and any other pertinent obligations, then as a consequence you
- * may not distribute the Program at all. For example, if a patent
- * license would not permit royalty-free redistribution of the Program by
- * all those who receive copies directly or indirectly through you, then
- * the only way you could satisfy both it and this License would be to
- * refrain entirely from distribution of the Program.
- *
- * If any portion of this section is held invalid or unenforceable under
- * any particular circumstance, the balance of the section is intended to
- * apply and the section as a whole is intended to apply in other
- * circumstances.
- *
- * It is not the purpose of this section to induce you to infringe any
- * patents or other property right claims or to contest validity of any
- * such claims; this section has the sole purpose of protecting the
- * integrity of the free software distribution system, which is
- * implemented by public license practices. Many people have made
- * generous contributions to the wide range of software distributed
- * through that system in reliance on consistent application of that
- * system; it is up to the author/donor to decide if he or she is willing
- * to distribute software through any other system and a licensee cannot
- * impose that choice.
- *
- * This section is intended to make thoroughly clear what is believed to
- * be a consequence of the rest of this License.
- *

- * 8. If the distribution and/or use of the Program is restricted in
- * certain countries either by patents or by copyrighted interfaces, the
- * original copyright holder who places the Program under this License
- * may add an explicit geographical distribution limitation excluding
- * those countries, so that distribution is permitted only in or among
- * countries not thus excluded. In such case, this License incorporates
- * the limitation as if written in the body of this License.
- *
- * 9. The Free Software Foundation may publish revised and/or new versions
- * of the General Public License from time to time. Such new versions will
- * be similar in spirit to the present version, but may differ in detail to
- * address new problems or concerns.
- *
- * Each version is given a distinguishing version number. If the Program
- * specifies a version number of this License which applies to it and "any
- * later version", you have the option of following the terms and conditions
- * either of that version or of any later version published by the Free
- * Software Foundation. If the Program does not specify a version number of
- * this License, you may choose any version ever published by the Free Software
- * Foundation.
- *
- * 10. If you wish to incorporate parts of the Program into other free
- * programs whose distribution conditions are different, write to the author
- * to ask for permission. For software which is copyrighted by the Free
- * Software Foundation, write to the Free Software Foundation; we sometimes
- * make exceptions for this. Our decision will be guided by the two goals
- * of preserving the free status of all derivatives of our free software and
- * of promoting the sharing and reuse of software generally.
- *
- * NO WARRANTY
- *
- * 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
- * FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
- * OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
- * PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
- * OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
- * TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
- * PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
- * REPAIR OR CORRECTION.
- *
- * 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
- * WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
- * REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
- * INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
- * OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
- * TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
- * YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
- * PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGES.
- *
- * END OF TERMS AND CONDITIONS
- *

- * How to Apply These Terms to Your New Programs
- *
- * If you develop a new program, and you want it to be of the greatest
- * possible use to the public, the best way to achieve this is to make it
- * free software which everyone can redistribute and change under these terms.
- *
- * To do so, attach the following notices to the program. It is safest
- * to attach them to the start of each source file to most effectively
- * convey the exclusion of warranty; and each file should have at least
- * the "copyright" line and a pointer to where the full notice is found.
- *
- * <one line to give the program's name and a brief idea of what it does.>
- * Copyright (C) 19yy <name of author>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program 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 this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- *
- * Also add information on how to contact you by electronic and paper mail.
- *
- * If the program is interactive, make it output a short notice like this
- * when it starts in an interactive mode:
- *
- * Gnomovision version 69, Copyright (C) 19yy name of author
- * Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- * This is free software, and you are welcome to redistribute it
- * under certain conditions; type `show c' for details.
- *
- * The hypothetical commands `show w' and `show c' should show the appropriate
- * parts of the General Public License. Of course, the commands you use may
- * be called something other than `show w' and `show c'; they could even be
- * mouse-clicks or menu items--whatever suits your program.
- *
- * You should also get your employer (if you work as a programmer) or your
- * school, if any, to sign a "copyright disclaimer" for the program, if
- * necessary. Here is a sample; alter the names:
- *
- * Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- * `Gnomovision' (which makes passes at compilers) written by James Hacker.
- *
- * <signature of Ty Coon>, 1 April 1989
- * Ty Coon, President of Vice
- *
- * This General Public License does not permit incorporating your program into
- * proprietary programs. If your program is a subroutine library, you may
- * consider it more useful to permit linking proprietary applications with the
- * library. If this is what you want to do, use the GNU Library General
- * Public License instead of this License.
- */
-
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/errno.h>
-#include <linux/fs.h>
-#include <linux/mm.h>
-#include <linux/miscdevice.h>
-#include <linux/interrupt.h>
-#include <linux/sched.h>
-#include <asm/uaccess.h>
-#include <asm/io.h>
-#include "moxa_serial_io.h"
-
-#define MOXA_IO_MINOR 255
-#define BASEPORT 0x800
-#define MOXA_SERIAL_IO_VERSION "v0.1.0"
-/*
- * DIO file operaiton function call
-*/
-#define MAX_DIO 3
-
-#define DIO_INPUT 1
-#define DIO_OUTPUT 0
-#define DIO_HIGH 1
-#define DIO_LOW 0
-#define IOCTL_DIO_GET_MODE 1
-#define IOCTL_DIO_SET_MODE 2
-#define IOCTL_DIO_GET_DATA 3
-#define IOCTL_DIO_SET_DATA 4
-#define IOCTL_SET_DOUT 15
-#define IOCTL_GET_DOUT 16
-#define IOCTL_GET_DIN 17
-
-#define MOXA 0x400
-#define MOXA_SET_OP_MODE (MOXA + 66)
-#define MOXA_GET_OP_MODE (MOXA + 67)
-
-#define RS232_MODE 0
-#define RS485_2WIRE_MODE 1
-#define RS422_MODE 2
-#define RS485_4WIRE_MODE 3
-
-
-struct dio_set_struct {
- int io_number;
- int mode_data; // 1 for input, 0 for output, 1 for high, 0 for low
-};
-
-static unsigned char do_state_keep=0xff;
-static unsigned int counter = 0;
-static char string [128];
-unsigned char keep_opmode=0x00;
-
-/* open function - called when the "file" /dev/mxsio is opened in userspace */
-static int io_open (struct inode *inode, struct file *file) {
- return 0;
-}
-
-/* close function - called when the "file" /dev/mxsio is closed in userspace */
-static int io_release (struct inode *inode, struct file *file) {
- return 0;
-}
-
-/* read function called when from /dev/mxsio is read */
-static ssize_t io_read (struct file *file, char *buf,
- size_t count, loff_t *ppos) {
- int len, err;
-
- if( counter <= 0 )
- return 0;
- err = copy_to_user(buf,string,counter);
- if (err != 0)
- return -EFAULT;
- len = counter;
- counter = 0;
- return len;
-}
-
-/* write function called when to /dev/mxsio is written */
-static ssize_t io_write (struct file *file, const char *buf,
- size_t count, loff_t *ppos) {
- int err;
- err = copy_from_user(string,buf,count);
-
- if(count < 3)
- return -EINVAL;
- if (err != 0)
- return -EFAULT;
-
- outb((unsigned char)string[2], (((unsigned short)string[0])<<8)|((unsigned short)string[1]));
-
- counter += count;
- return count;
-}
-
-/* ioctl - I/O control */
-static int io_ioctl(struct inode *inode, struct file *file,unsigned int cmd, unsigned long arg) {
- struct dio_set_struct set;
- unsigned char di_state;
- unsigned char port,opmode,val;
-
- switch ( cmd ) {
- case IOCTL_SET_DOUT :
- if ( copy_from_user(&set, (struct dio_set_struct *)arg, sizeof(struct dio_set_struct)) )
- return -EFAULT;
- if ( set.io_number < 0 || set.io_number >= MAX_DIO )
- return -EINVAL;
- if ( set.mode_data == DIO_HIGH )
- do_state_keep |= (1<<set.io_number);
- else if ( set.mode_data == DIO_LOW )
- do_state_keep &= ~(1<<set.io_number);
- else
- return -EINVAL;
- outb(do_state_keep,BASEPORT+5);
- //printk("%s,%d :BASEPORT+5:%x\n", __FUNCTION__, __LINE__,(unsigned long)inb(BASEPORT+5));
- break;
- case IOCTL_GET_DOUT :
- case IOCTL_GET_DIN :
- if ( copy_from_user(&set, (struct dio_set_struct *)arg, sizeof(struct dio_set_struct)) )
- return -EFAULT;
- if ( set.io_number == -1 ) { // to get all port
- if ( cmd == IOCTL_GET_DOUT )
- set.mode_data = do_state_keep & 0xf;
- else
- set.mode_data = (inb(BASEPORT+5)>>4) & 0xf;
- goto ioctl_get_label;
- }
- if ( set.io_number < 0 || set.io_number >= MAX_DIO )
- return -EINVAL;
- if ( cmd == IOCTL_GET_DOUT ) {
- if ( do_state_keep & (1<<set.io_number) )
- set.mode_data = 1;
- else
- set.mode_data = 0;
- } else {
- di_state = inb(BASEPORT+5)>>4;
- if ( di_state & (1<<set.io_number) )
- set.mode_data = 1;
- else
- set.mode_data = 0;
- }
-ioctl_get_label:
- if ( copy_to_user((struct dio_set_struct *)arg, &set, sizeof(struct dio_set_struct)) )
- return -EFAULT;
- break;
- case MOXA_SET_OP_MODE:
- copy_from_user(&opmode,(unsigned char *)arg,sizeof(unsigned char));
- port = opmode >> 4 ;
- opmode = opmode & 0xf;
-
- if ( opmode != RS232_MODE && opmode != RS485_2WIRE_MODE && opmode != RS422_MODE && opmode != RS485_4WIRE_MODE && port > 1)
- return -EFAULT;
-
- val=inb(BASEPORT+4)&(~(((unsigned char)0xe)<<(4*port)));
-
- switch(opmode){
- case RS232_MODE:
- val|=(((unsigned char)0x8)<<(4*port));
- break;
- case RS485_2WIRE_MODE:
- val|=(((unsigned char)0x2)<<(4*port));
- break;
- case RS422_MODE:
- case RS485_4WIRE_MODE:
- val|=(((unsigned char)0x4)<<(4*port));
- break;
- }
-
- outb(val,BASEPORT+4);
-
- keep_opmode &= ~(((unsigned char)0xf)<<(port*4));
- keep_opmode |= opmode<<(port*4);
-
- superio_enter_config();
- superio_set_logic_device((u8)(port+1));
- if(opmode == RS232_MODE){
- val=superio_get_reg(0xf0)& 0x7f;
- }else{
- val=superio_get_reg(0xf0)| 0x80;
- }
- superio_set_reg(val , 0xf0);
-
- break;
-
- case MOXA_GET_OP_MODE:
- copy_from_user(&port,(unsigned char *)arg,sizeof(unsigned char));
- if(port>1)return -EINVAL;
- opmode=(keep_opmode>>(port*4))& 0xf;
- copy_to_user((unsigned char*)arg, &opmode, sizeof(unsigned char));
-
- break;
- default:
- return -EINVAL;
- }
- return 0;
-}
-
-
-/* define which file operations are supported */
-struct file_operations io_fops = {
- .owner = THIS_MODULE,
- .llseek = NULL,
- .read = io_read,
- .write = io_write,
- .readdir = NULL,
- .poll = NULL,
- .ioctl = io_ioctl,
- .mmap = NULL,
- .open = io_open,
- .flush = NULL,
- .release = io_release,
- .fsync = NULL,
- .fasync = NULL,
- .lock = NULL,
-};
-
-/* register as misc driver */
-static struct miscdevice dio_miscdev = {
- .minor = MOXA_IO_MINOR,
- .name = "mxsio",
- .fops = &io_fops,
-};
-
-
-/* initialize module (and interrupt) */
-static int __init io_init_module (void) {
- unsigned char val;
- printk("initializing MOXA SERIAL IO module\n");
-
- if ( misc_register(&dio_miscdev)!=0 ) {
- printk("Moxa serial io driver: Register misc fail !\n");
- return -ENOMEM;
- }
-
- outb(do_state_keep, BASEPORT+5);
- outb(0x00, BASEPORT);
-
- /* set default serial mode to RS232 */
- outb(0x88, BASEPORT+4);
-
- superio_enter_config();
- superio_set_logic_device(1);
- val=superio_get_reg(0xf0)&0x7f;
- superio_set_reg(val,0xf0);
-
- superio_enter_config();
- superio_set_logic_device(2);
- val=superio_get_reg(0xf0)&0x7f;
- superio_set_reg(val,0xf0);
-
- printk(KERN_INFO "Moxa V2100 serial io driver, version " MOXA_SERIAL_IO_VERSION ", "
- "init OK\n");
- return 0;
-}
-
-// close and cleanup module
-static void __exit io_cleanup_module (void) {
- printk("cleaning up module\n");
- misc_deregister(&dio_miscdev);
-}
-
-module_init(io_init_module);
-module_exit(io_cleanup_module);
-MODULE_AUTHOR("Jimmy.Chen@xxxxxxxx");
-MODULE_LICENSE("GPL");
-MODULE_DESCRIPTION("MOXA SERIAL IO module");
diff --git a/drivers/misc/moxa_serial_io.h b/drivers/misc/moxa_serial_io.h
index 5d14193..e69de29 100644
--- a/drivers/misc/moxa_serial_io.h
+++ b/drivers/misc/moxa_serial_io.h
@@ -1,389 +0,0 @@
-/*
- * GNU GENERAL PUBLIC LICENSE
- * Version 2, June 1991
- *
- * Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- * Everyone is permitted to copy and distribute verbatim copies
- * of this license document, but changing it is not allowed.
- *
- * Preamble
- *
- * The licenses for most software are designed to take away your
- * freedom to share and change it. By contrast, the GNU General Public
- * License is intended to guarantee your freedom to share and change free
- * software--to make sure the software is free for all its users. This
- * General Public License applies to most of the Free Software
- * Foundation's software and to any other program whose authors commit to
- * using it. (Some other Free Software Foundation software is covered by
- * the GNU Library General Public License instead.) You can apply it to
- * your programs, too.
- *
- * When we speak of free software, we are referring to freedom, not
- * price. Our General Public Licenses are designed to make sure that you
- * have the freedom to distribute copies of free software (and charge for
- * this service if you wish), that you receive source code or can get it
- * if you want it, that you can change the software or use pieces of it
- * in new free programs; and that you know you can do these things.
- *
- * To protect your rights, we need to make restrictions that forbid
- * anyone to deny you these rights or to ask you to surrender the rights.
- * These restrictions translate to certain responsibilities for you if you
- * distribute copies of the software, or if you modify it.
- *
- * For example, if you distribute copies of such a program, whether
- * gratis or for a fee, you must give the recipients all the rights that
- * you have. You must make sure that they, too, receive or can get the
- * source code. And you must show them these terms so they know their
- * rights.
- *
- * We protect your rights with two steps: (1) copyright the software, and
- * (2) offer you this license which gives you legal permission to copy,
- * distribute and/or modify the software.
- *
- * Also, for each author's protection and ours, we want to make certain
- * that everyone understands that there is no warranty for this free
- * software. If the software is modified by someone else and passed on, we
- * want its recipients to know that what they have is not the original, so
- * that any problems introduced by others will not reflect on the original
- * authors' reputations.
- *
- * Finally, any free program is threatened constantly by software
- * patents. We wish to avoid the danger that redistributors of a free
- * program will individually obtain patent licenses, in effect making the
- * program proprietary. To prevent this, we have made it clear that any
- * patent must be licensed for everyone's free use or not licensed at all.
- *
- * The precise terms and conditions for copying, distribution and
- * modification follow.
- *

- * GNU GENERAL PUBLIC LICENSE
- * TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
- *
- * 0. This License applies to any program or other work which contains
- * a notice placed by the copyright holder saying it may be distributed
- * under the terms of this General Public License. The "Program", below,
- * refers to any such program or work, and a "work based on the Program"
- * means either the Program or any derivative work under copyright law:
- * that is to say, a work containing the Program or a portion of it,
- * either verbatim or with modifications and/or translated into another
- * language. (Hereinafter, translation is included without limitation in
- * the term "modification".) Each licensee is addressed as "you".
- *
- * Activities other than copying, distribution and modification are not
- * covered by this License; they are outside its scope. The act of
- * running the Program is not restricted, and the output from the Program
- * is covered only if its contents constitute a work based on the
- * Program (independent of having been made by running the Program).
- * Whether that is true depends on what the Program does.
- *
- * 1. You may copy and distribute verbatim copies of the Program's
- * source code as you receive it, in any medium, provided that you
- * conspicuously and appropriately publish on each copy an appropriate
- * copyright notice and disclaimer of warranty; keep intact all the
- * notices that refer to this License and to the absence of any warranty;
- * and give any other recipients of the Program a copy of this License
- * along with the Program.
- *
- * You may charge a fee for the physical act of transferring a copy, and
- * you may at your option offer warranty protection in exchange for a fee.
- *
- * 2. You may modify your copy or copies of the Program or any portion
- * of it, thus forming a work based on the Program, and copy and
- * distribute such modifications or work under the terms of Section 1
- * above, provided that you also meet all of these conditions:
- *
- * a) You must cause the modified files to carry prominent notices
- * stating that you changed the files and the date of any change.
- *
- * b) You must cause any work that you distribute or publish, that in
- * whole or in part contains or is derived from the Program or any
- * part thereof, to be licensed as a whole at no charge to all third
- * parties under the terms of this License.
- *
- * c) If the modified program normally reads commands interactively
- * when run, you must cause it, when started running for such
- * interactive use in the most ordinary way, to print or display an
- * announcement including an appropriate copyright notice and a
- * notice that there is no warranty (or else, saying that you provide
- * a warranty) and that users may redistribute the program under
- * these conditions, and telling the user how to view a copy of this
- * License. (Exception: if the Program itself is interactive but
- * does not normally print such an announcement, your work based on
- * the Program is not required to print an announcement.)
- *

- * These requirements apply to the modified work as a whole. If
- * identifiable sections of that work are not derived from the Program,
- * and can be reasonably considered independent and separate works in
- * themselves, then this License, and its terms, do not apply to those
- * sections when you distribute them as separate works. But when you
- * distribute the same sections as part of a whole which is a work based
- * on the Program, the distribution of the whole must be on the terms of
- * this License, whose permissions for other licensees extend to the
- * entire whole, and thus to each and every part regardless of who wrote it.
- *
- * Thus, it is not the intent of this section to claim rights or contest
- * your rights to work written entirely by you; rather, the intent is to
- * exercise the right to control the distribution of derivative or
- * collective works based on the Program.
- *
- * In addition, mere aggregation of another work not based on the Program
- * with the Program (or with a work based on the Program) on a volume of
- * a storage or distribution medium does not bring the other work under
- * the scope of this License.
- *
- * 3. You may copy and distribute the Program (or a work based on it,
- * under Section 2) in object code or executable form under the terms of
- * Sections 1 and 2 above provided that you also do one of the following:
- *
- * a) Accompany it with the complete corresponding machine-readable
- * source code, which must be distributed under the terms of Sections
- * 1 and 2 above on a medium customarily used for software interchange; or,
- *
- * b) Accompany it with a written offer, valid for at least three
- * years, to give any third party, for a charge no more than your
- * cost of physically performing source distribution, a complete
- * machine-readable copy of the corresponding source code, to be
- * distributed under the terms of Sections 1 and 2 above on a medium
- * customarily used for software interchange; or,
- *
- * c) Accompany it with the information you received as to the offer
- * to distribute corresponding source code. (This alternative is
- * allowed only for noncommercial distribution and only if you
- * received the program in object code or executable form with such
- * an offer, in accord with Subsection b above.)
- *
- * The source code for a work means the preferred form of the work for
- * making modifications to it. For an executable work, complete source
- * code means all the source code for all modules it contains, plus any
- * associated interface definition files, plus the scripts used to
- * control compilation and installation of the executable. However, as a
- * special exception, the source code distributed need not include
- * anything that is normally distributed (in either source or binary
- * form) with the major components (compiler, kernel, and so on) of the
- * operating system on which the executable runs, unless that component
- * itself accompanies the executable.
- *
- * If distribution of executable or object code is made by offering
- * access to copy from a designated place, then offering equivalent
- * access to copy the source code from the same place counts as
- * distribution of the source code, even though third parties are not
- * compelled to copy the source along with the object code.
- *

- * 4. You may not copy, modify, sublicense, or distribute the Program
- * except as expressly provided under this License. Any attempt
- * otherwise to copy, modify, sublicense or distribute the Program is
- * void, and will automatically terminate your rights under this License.
- * However, parties who have received copies, or rights, from you under
- * this License will not have their licenses terminated so long as such
- * parties remain in full compliance.
- *
- * 5. You are not required to accept this License, since you have not
- * signed it. However, nothing else grants you permission to modify or
- * distribute the Program or its derivative works. These actions are
- * prohibited by law if you do not accept this License. Therefore, by
- * modifying or distributing the Program (or any work based on the
- * Program), you indicate your acceptance of this License to do so, and
- * all its terms and conditions for copying, distributing or modifying
- * the Program or works based on it.
- *
- * 6. Each time you redistribute the Program (or any work based on the
- * Program), the recipient automatically receives a license from the
- * original licensor to copy, distribute or modify the Program subject to
- * these terms and conditions. You may not impose any further
- * restrictions on the recipients' exercise of the rights granted herein.
- * You are not responsible for enforcing compliance by third parties to
- * this License.
- *
- * 7. If, as a consequence of a court judgment or allegation of patent
- * infringement or for any other reason (not limited to patent issues),
- * conditions are imposed on you (whether by court order, agreement or
- * otherwise) that contradict the conditions of this License, they do not
- * excuse you from the conditions of this License. If you cannot
- * distribute so as to satisfy simultaneously your obligations under this
- * License and any other pertinent obligations, then as a consequence you
- * may not distribute the Program at all. For example, if a patent
- * license would not permit royalty-free redistribution of the Program by
- * all those who receive copies directly or indirectly through you, then
- * the only way you could satisfy both it and this License would be to
- * refrain entirely from distribution of the Program.
- *
- * If any portion of this section is held invalid or unenforceable under
- * any particular circumstance, the balance of the section is intended to
- * apply and the section as a whole is intended to apply in other
- * circumstances.
- *
- * It is not the purpose of this section to induce you to infringe any
- * patents or other property right claims or to contest validity of any
- * such claims; this section has the sole purpose of protecting the
- * integrity of the free software distribution system, which is
- * implemented by public license practices. Many people have made
- * generous contributions to the wide range of software distributed
- * through that system in reliance on consistent application of that
- * system; it is up to the author/donor to decide if he or she is willing
- * to distribute software through any other system and a licensee cannot
- * impose that choice.
- *
- * This section is intended to make thoroughly clear what is believed to
- * be a consequence of the rest of this License.
- *

- * 8. If the distribution and/or use of the Program is restricted in
- * certain countries either by patents or by copyrighted interfaces, the
- * original copyright holder who places the Program under this License
- * may add an explicit geographical distribution limitation excluding
- * those countries, so that distribution is permitted only in or among
- * countries not thus excluded. In such case, this License incorporates
- * the limitation as if written in the body of this License.
- *
- * 9. The Free Software Foundation may publish revised and/or new versions
- * of the General Public License from time to time. Such new versions will
- * be similar in spirit to the present version, but may differ in detail to
- * address new problems or concerns.
- *
- * Each version is given a distinguishing version number. If the Program
- * specifies a version number of this License which applies to it and "any
- * later version", you have the option of following the terms and conditions
- * either of that version or of any later version published by the Free
- * Software Foundation. If the Program does not specify a version number of
- * this License, you may choose any version ever published by the Free Software
- * Foundation.
- *
- * 10. If you wish to incorporate parts of the Program into other free
- * programs whose distribution conditions are different, write to the author
- * to ask for permission. For software which is copyrighted by the Free
- * Software Foundation, write to the Free Software Foundation; we sometimes
- * make exceptions for this. Our decision will be guided by the two goals
- * of preserving the free status of all derivatives of our free software and
- * of promoting the sharing and reuse of software generally.
- *
- * NO WARRANTY
- *
- * 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
- * FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
- * OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
- * PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
- * OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
- * TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
- * PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
- * REPAIR OR CORRECTION.
- *
- * 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
- * WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
- * REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
- * INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
- * OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
- * TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
- * YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
- * PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGES.
- *
- * END OF TERMS AND CONDITIONS
- *

- * How to Apply These Terms to Your New Programs
- *
- * If you develop a new program, and you want it to be of the greatest
- * possible use to the public, the best way to achieve this is to make it
- * free software which everyone can redistribute and change under these terms.
- *
- * To do so, attach the following notices to the program. It is safest
- * to attach them to the start of each source file to most effectively
- * convey the exclusion of warranty; and each file should have at least
- * the "copyright" line and a pointer to where the full notice is found.
- *
- * <one line to give the program's name and a brief idea of what it does.>
- * Copyright (C) 19yy <name of author>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program 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 this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- *
- * Also add information on how to contact you by electronic and paper mail.
- *
- * If the program is interactive, make it output a short notice like this
- * when it starts in an interactive mode:
- *
- * Gnomovision version 69, Copyright (C) 19yy name of author
- * Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- * This is free software, and you are welcome to redistribute it
- * under certain conditions; type `show c' for details.
- *
- * The hypothetical commands `show w' and `show c' should show the appropriate
- * parts of the General Public License. Of course, the commands you use may
- * be called something other than `show w' and `show c'; they could even be
- * mouse-clicks or menu items--whatever suits your program.
- *
- * You should also get your employer (if you work as a programmer) or your
- * school, if any, to sign a "copyright disclaimer" for the program, if
- * necessary. Here is a sample; alter the names:
- *
- * Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- * `Gnomovision' (which makes passes at compilers) written by James Hacker.
- *
- * <signature of Ty Coon>, 1 April 1989
- * Ty Coon, President of Vice
- *
- * This General Public License does not permit incorporating your program into
- * proprietary programs. If your program is a subroutine library, you may
- * consider it more useful to permit linking proprietary applications with the
- * library. If this is what you want to do, use the GNU Library General
- * Public License instead of this License.
- */
-
-#ifndef __X86__SUPERIO__
-#define __X86__SUPERIO__
-
-#define SUPERIO_CONFIG_PORT 0x2e
-
-unsigned char superio_get_reg(u8 val) {
- outb (val, SUPERIO_CONFIG_PORT);
- outb( 0x80,0xeb); // a Small delay
- val = inb (SUPERIO_CONFIG_PORT+1);
- outb( 0x80,0xeb); // a Small delay
- return val;
-}
-
-void superio_set_reg(u8 val,u8 index) {
- outb (index, SUPERIO_CONFIG_PORT);
- outb( 0x80, 0xeb); // a Small delay
- outb (val, (SUPERIO_CONFIG_PORT+1));
- outb(0x80, 0xeb); // a Small delay
-}
-
-void superio_set_logic_device(u8 val) {
- superio_set_reg(val, 0x07);
- outb( 0x80, 0xeb); // a Small delay
-}
-
-void superio_enter_config(void) {
-#if defined(DA681)
- outb (0x87, SUPERIO_CONFIG_PORT);
- outb(0x80, 0xeb); // a Small delay
- outb (0x87, SUPERIO_CONFIG_PORT);
- outb(0x80, 0xeb); // a Small delay
-#elif defined(V21XX)
- outb (0x87, SUPERIO_CONFIG_PORT);
- outb (0x01, SUPERIO_CONFIG_PORT);
- outb (0x55, SUPERIO_CONFIG_PORT);
- outb (0x55, SUPERIO_CONFIG_PORT);
-#endif
-}
-
-void superio_exit_config(void) {
- outb(0x02, SUPERIO_CONFIG_PORT);
- outb( 0x80, 0xeb); // a Small delay
- outb(0x02, SUPERIO_CONFIG_PORT+1);
-}
-
-#endif //__X86__SUPERIO__
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/