Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758066Ab1DYCgL (ORCPT ); Sun, 24 Apr 2011 22:36:11 -0400 Received: from mhqmail.moxa.com ([218.210.60.130]:15930 "EHLO mhqmail01.moxa.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1758017Ab1DYCgI convert rfc822-to-8bit (ORCPT ); Sun, 24 Apr 2011 22:36:08 -0400 X-Greylist: delayed 479 seconds by postgrey-1.27 at vger.kernel.org; Sun, 24 Apr 2011 22:36:07 EDT Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="big5" Content-Transfer-Encoding: 8BIT Subject: RE: [PATCH 2/2] misc: add real function open/read/write/ioctl/close for moxa_serial_io driver X-MimeOLE: Produced By Microsoft Exchange V6.5 Date: Mon, 25 Apr 2011 10:35:52 +0800 Message-ID: In-Reply-To: X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH 2/2] misc: add real function open/read/write/ioctl/close for moxa_serial_io driver Thread-Index: AcwA0y++eDmjYMfeS5uFGN/WQ83uQQAAETrgAAA4trAAABnAcACGpmwQAAB3CSA= From: =?big5?B?SmltbXkgQ2hlbiAos6+lw7lGKQ==?= To: =?big5?B?SmltbXkgQ2hlbiAos6+lw7lGKQ==?= , Cc: X-OriginalArrivalTime: 25 Apr 2011 02:35:53.0336 (UTC) FILETIME=[7F520F80:01CC02F1] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 48206 Lines: 1034 From: Jimmy Chen Add real function and GPL license. Signed-off-by: Jimmy Chen --- 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. - * - * - * Copyright (C) 19yy - * - * 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. - * - * , 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#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<>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<>4; - if ( di_state & (1<> 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@moxa.com"); -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. - * - * - * Copyright (C) 19yy - * - * 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. - * - * , 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@vger.kernel.org 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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/