979 lines
37 KiB
Diff
979 lines
37 KiB
Diff
3rdparty/rfswitch/FILES | 6
|
|
3rdparty/rfswitch/ISSUES | 28 +++
|
|
3rdparty/rfswitch/Kconfig | 22 ++
|
|
3rdparty/rfswitch/LICENSE | 339 +++++++++++++++++++++++++++++++++++++++++++++
|
|
3rdparty/rfswitch/Makefile | 119 +++++++++++++++
|
|
3rdparty/rfswitch/README | 44 +++++
|
|
3rdparty/rfswitch/av5100.c | 174 +++++++++++++++++++++++
|
|
3rdparty/rfswitch/pbe5.c | 205 +++++++++++++++++++++++++++
|
|
8 files changed, 937 insertions(+)
|
|
diff -Nurp linux-2.6.37/3rdparty/rfswitch/av5100.c linux-2.6.37.3rdparty/3rdparty/rfswitch/av5100.c
|
|
--- linux-2.6.37/3rdparty/rfswitch/av5100.c 1970-01-01 02:00:00.000000000 +0200
|
|
+++ linux-2.6.37.3rdparty/3rdparty/rfswitch/av5100.c 2008-03-28 05:25:28.000000000 +0200
|
|
@@ -0,0 +1,174 @@
|
|
+/*******************************************************************************
|
|
+
|
|
+ Copyright(c) 2003 - 2004 Intel Corporation. All rights reserved.
|
|
+
|
|
+ This program is free software; you can redistribute it and/or modify it
|
|
+ under the terms of version 2 of the GNU General Public License as
|
|
+ published by the Free Software Foundation.
|
|
+
|
|
+ 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.
|
|
+
|
|
+ The full GNU General Public License is included in this distribution in the
|
|
+ file called LICENSE.
|
|
+
|
|
+ Contact Information:
|
|
+ James P. Ketrenos <ipw2100-admin@linux.intel.com>
|
|
+ Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
|
|
+
|
|
+*******************************************************************************/
|
|
+#include <linux/compiler.h>
|
|
+#include <linux/errno.h>
|
|
+#include <linux/kernel.h>
|
|
+#include <linux/module.h>
|
|
+#include <linux/types.h>
|
|
+#include <linux/netdevice.h>
|
|
+#include <linux/version.h>
|
|
+#include <linux/proc_fs.h>
|
|
+#include <linux/ioport.h>
|
|
+#include <asm/uaccess.h>
|
|
+#include <asm/io.h>
|
|
+
|
|
+
|
|
+#define DRV_NAME "av5100"
|
|
+#define DRV_VERSION "1.3"
|
|
+#define DRV_DESCRIPTION "SW RF kill switch for Averatec 5100P"
|
|
+#define DRV_COPYRIGHT "Copyright(c) 2003-2004 Intel Corporation"
|
|
+
|
|
+static int radio = 1;
|
|
+
|
|
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
|
|
+
|
|
+MODULE_PARM(radio, "i");
|
|
+
|
|
+#else /* LINUX_VERSION_CODE < 2.6.0 */
|
|
+
|
|
+#include <linux/moduleparam.h>
|
|
+module_param(radio, int, 1);
|
|
+
|
|
+#endif /* LINUX_VERSION_CODE < 2.6.0 */
|
|
+
|
|
+MODULE_PARM_DESC(radio, "controls state of radio (1=on, 0=off)");
|
|
+
|
|
+MODULE_DESCRIPTION(DRV_DESCRIPTION);
|
|
+MODULE_AUTHOR(DRV_COPYRIGHT);
|
|
+MODULE_LICENSE("GPL");
|
|
+
|
|
+#define AV5100_RADIO_ON (0xe0)
|
|
+#define AV5100_RADIO_OFF (0xe1)
|
|
+
|
|
+static int av5100_radio = AV5100_RADIO_OFF;
|
|
+
|
|
+static void av5100_set_radio(int state)
|
|
+{
|
|
+ printk(KERN_INFO DRV_NAME ": Radio being turned %s\n",
|
|
+ (state == AV5100_RADIO_ON) ? "ON" : "OFF");
|
|
+ outl(0x80020800, 0xcf8);
|
|
+ outb(0x6f, 0x0072);
|
|
+ outl(0x1800ffff, 0x1184);
|
|
+ outb(state, 0x00b2);
|
|
+ av5100_radio = state;
|
|
+}
|
|
+
|
|
+
|
|
+/*
|
|
+ * proc stuff
|
|
+ */
|
|
+static struct proc_dir_entry *dir_base = NULL;
|
|
+
|
|
+static int proc_set_radio(struct file *file, const char *buffer,
|
|
+ unsigned long count, void *data)
|
|
+{
|
|
+ av5100_set_radio(buffer[0] == '0' ? AV5100_RADIO_OFF : AV5100_RADIO_ON);
|
|
+
|
|
+ return count;
|
|
+}
|
|
+
|
|
+static int proc_get_radio(char *page, char **start, off_t offset,
|
|
+ int count, int *eof, void *data)
|
|
+{
|
|
+ int len = 0;
|
|
+
|
|
+ len += snprintf(page, count, DRV_NAME ": %d\n",
|
|
+ av5100_radio == AV5100_RADIO_OFF ? 0 : 1);
|
|
+
|
|
+ *eof = 1;
|
|
+ return len;
|
|
+}
|
|
+
|
|
+
|
|
+static void av5100_proc_cleanup(void)
|
|
+{
|
|
+ if (dir_base) {
|
|
+ remove_proc_entry("radio", dir_base);
|
|
+ remove_proc_entry(DRV_NAME, &proc_root);
|
|
+ dir_base = NULL;
|
|
+ }
|
|
+}
|
|
+
|
|
+
|
|
+static int av5100_proc_init(void)
|
|
+{
|
|
+ struct proc_dir_entry *ent;
|
|
+ int err = 0;
|
|
+
|
|
+ dir_base = create_proc_entry(DRV_NAME, S_IFDIR, &proc_root);
|
|
+ if (dir_base == NULL) {
|
|
+ printk(KERN_ERR DRV_NAME ": Unable to initialise /proc/"
|
|
+ DRV_NAME "\n");
|
|
+ err = -ENOMEM;
|
|
+ goto fail;
|
|
+ }
|
|
+
|
|
+
|
|
+ ent = create_proc_entry("radio", S_IFREG | S_IRUGO | S_IWUSR,
|
|
+ dir_base);
|
|
+ if (ent) {
|
|
+ ent->read_proc = proc_get_radio;
|
|
+ ent->write_proc = proc_set_radio;
|
|
+ } else {
|
|
+ printk(KERN_ERR
|
|
+ "Unable to initialize /proc/" DRV_NAME "/radio\n");
|
|
+ err = -ENOMEM;
|
|
+ goto fail;
|
|
+ }
|
|
+
|
|
+ return 0;
|
|
+
|
|
+ fail:
|
|
+ av5100_proc_cleanup();
|
|
+ return err;
|
|
+}
|
|
+
|
|
+/*
|
|
+ * module stuff
|
|
+ */
|
|
+static int __init av5100_init(void)
|
|
+{
|
|
+ av5100_proc_init();
|
|
+
|
|
+ av5100_set_radio((radio == 1) ? AV5100_RADIO_ON : AV5100_RADIO_OFF);
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+static void __exit av5100_exit(void)
|
|
+{
|
|
+ av5100_set_radio(AV5100_RADIO_OFF);
|
|
+
|
|
+ av5100_proc_cleanup();
|
|
+}
|
|
+
|
|
+module_init(av5100_init);
|
|
+module_exit(av5100_exit);
|
|
+
|
|
+/*
|
|
+ 1 2 3 4 5 6 7
|
|
+12345678901234567890123456789012345678901234567890123456789012345678901234567890
|
|
+*/
|
|
diff -Nurp linux-2.6.37/3rdparty/rfswitch/FILES linux-2.6.37.3rdparty/3rdparty/rfswitch/FILES
|
|
--- linux-2.6.37/3rdparty/rfswitch/FILES 1970-01-01 02:00:00.000000000 +0200
|
|
+++ linux-2.6.37.3rdparty/3rdparty/rfswitch/FILES 2004-07-09 07:44:19.000000000 +0300
|
|
@@ -0,0 +1,6 @@
|
|
+Makefile Used for building on 2.4, 2.6, internally and exteranlly
|
|
+
|
|
+FILES This file
|
|
+
|
|
+av5100.c Averatec 5100P SW Switch Module
|
|
+pbe5.c Packard Bell Easynote SW Switch Module
|
|
diff -Nurp linux-2.6.37/3rdparty/rfswitch/ISSUES linux-2.6.37.3rdparty/3rdparty/rfswitch/ISSUES
|
|
--- linux-2.6.37/3rdparty/rfswitch/ISSUES 1970-01-01 02:00:00.000000000 +0200
|
|
+++ linux-2.6.37.3rdparty/3rdparty/rfswitch/ISSUES 2004-07-09 07:43:22.000000000 +0300
|
|
@@ -0,0 +1,28 @@
|
|
+
|
|
+ISSUES
|
|
+------------ ----- ----- ---- --- -- -
|
|
+
|
|
+No packets! - RF kill switch
|
|
+
|
|
+If the module loads, but no packets are transferred you may have a SW based
|
|
+radio kill switch. All laptops have some capability to disable the radio
|
|
+via a button or switch. On some laptops that switch is physically tied to the
|
|
+IPW2100; simply toggling the switch should enable the radio.
|
|
+
|
|
+On other laptops, the switch is a button that when pressed requires some
|
|
+software driver to send some hardware command to some other piece of hardware
|
|
+on the laptop, that then controls the radio. The driver currently has support
|
|
+for the Averatec 5100P laptop's SW switch. Support will be added for other
|
|
+laptop vendors as we become aware of them and figure out how to enable the
|
|
+radio.
|
|
+
|
|
+To know if the radio is being disabled via the RF switch, perform the following:
|
|
+
|
|
+% cat /proc/net/ipw2100/eth1/state
|
|
+Radio is disabled by RF switch
|
|
+
|
|
+If it says that, then your RF switch is currently disabling the radio. The
|
|
+driver doesn't currently support switching back to the on state if you have a
|
|
+physical RF switch (the radio may turn on and packets will work, but the proc
|
|
+entry won't be updated)
|
|
+
|
|
diff -Nurp linux-2.6.37/3rdparty/rfswitch/Kconfig linux-2.6.37.3rdparty/3rdparty/rfswitch/Kconfig
|
|
--- linux-2.6.37/3rdparty/rfswitch/Kconfig 1970-01-01 02:00:00.000000000 +0200
|
|
+++ linux-2.6.37.3rdparty/3rdparty/rfswitch/Kconfig 2008-05-27 23:39:10.000000000 +0300
|
|
@@ -0,0 +1,22 @@
|
|
+menu "RF Switch"
|
|
+ depends on EXPERIMENTAL
|
|
+
|
|
+config RFSWITCH
|
|
+ tristate "RF Switch"
|
|
+ depends on EXPERIMENTAL
|
|
+
|
|
+config AVERATEC_5100P
|
|
+ tristate "averatec 5100P driver"
|
|
+ depends on RFSWITCH
|
|
+ ---help---
|
|
+ This is an experimental driver for the wireless switch
|
|
+ of some laptops (usefull with some ipw2x00 cards)
|
|
+
|
|
+config PACKARDBELL_E5
|
|
+ tristate "pbe5 driver"
|
|
+ depends on RFSWITCH
|
|
+ ---help---
|
|
+ This is an experimental driver for the wireless switch
|
|
+ of some laptops (usefull with some ipw2x00 cards)
|
|
+
|
|
+endmenu
|
|
diff -Nurp linux-2.6.37/3rdparty/rfswitch/LICENSE linux-2.6.37.3rdparty/3rdparty/rfswitch/LICENSE
|
|
--- linux-2.6.37/3rdparty/rfswitch/LICENSE 1970-01-01 02:00:00.000000000 +0200
|
|
+++ linux-2.6.37.3rdparty/3rdparty/rfswitch/LICENSE 2004-07-09 07:43:22.000000000 +0300
|
|
@@ -0,0 +1,339 @@
|
|
+
|
|
+"This software program is licensed subject to the GNU General Public License
|
|
+(GPL). Version 2, June 1991, available at
|
|
+<http://www.fsf.org/copyleft/gpl.html>"
|
|
+
|
|
+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.
|
|
+
|
|
+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 an idea of what it does.
|
|
+Copyright (C) yyyy 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) year 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.
|
|
diff -Nurp linux-2.6.37/3rdparty/rfswitch/Makefile linux-2.6.37.3rdparty/3rdparty/rfswitch/Makefile
|
|
--- linux-2.6.37/3rdparty/rfswitch/Makefile 1970-01-01 02:00:00.000000000 +0200
|
|
+++ linux-2.6.37.3rdparty/3rdparty/rfswitch/Makefile 2008-03-28 05:17:16.000000000 +0200
|
|
@@ -0,0 +1,119 @@
|
|
+#
|
|
+# Makefile for the SW RF Switch kernel modules
|
|
+#
|
|
+# NOTE: This make file can serve as both an external Makefile (launched
|
|
+# directly by the user), or as the sub-dir Makefile used by the kernel
|
|
+# build system.
|
|
+
|
|
+
|
|
+CONFIG_AVERATEC_5100P=m
|
|
+CONFIG_PACKARDBELL_E5=m
|
|
+
|
|
+
|
|
+
|
|
+list-m :=
|
|
+list-$(CONFIG_AVERATEC_5100P) += av5100
|
|
+list-$(CONFIG_PACKARDBELL_E5) += pbe5
|
|
+
|
|
+
|
|
+obj-$(CONFIG_AVERATEC_5100P) += av5100.o
|
|
+obj-$(CONFIG_PACKARDBELL_E5) += pbe5.o
|
|
+
|
|
+#
|
|
+# Begin dual Makefile mode here. First we provide support for when we
|
|
+# are being invoked by the kernel build system
|
|
+#
|
|
+ifneq ($(KERNELRELEASE),)
|
|
+
|
|
+ifneq ($(PATCHLEVEL),6) # If we are not on a 2.6, then do 2.4 specific things
|
|
+
|
|
+O_TARGET := rfswitch.o
|
|
+
|
|
+include $(TOPDIR)/Rules.make
|
|
+
|
|
+endif # End if 2.4 specific settings
|
|
+
|
|
+else
|
|
+# Here we begin the portion that is executed if the user invoked this Makefile
|
|
+# directly.
|
|
+
|
|
+# KSRC should be set to the path to your sources
|
|
+# modules are installed into KMISC
|
|
+KVER := $(shell uname -r)
|
|
+KSRC := /lib/modules/$(KVER)/build
|
|
+KMISC := /lib/modules/$(KVER)/kernel/drivers/net/wireless/
|
|
+
|
|
+# KSRC_OUTPUT should be overridden if you are using a 2.6 kernel that
|
|
+# has it's output sent elsewhere via KBUILD_OUTPUT= or O=
|
|
+KSRC_OUTPUT := $(KSRC)
|
|
+
|
|
+# If we find Rules.make, we can assume we're using the old 2.4 style building
|
|
+OLDMAKE=$(wildcard $(KSRC)/Rules.make)
|
|
+PWD=$(shell pwd)
|
|
+
|
|
+VERFILE := $(KSRC_OUTPUT)/include/linux/version.h
|
|
+KERNELRELEASE := $(shell \
|
|
+ if [ -r $(VERFILE) ]; then \
|
|
+ (cat $(VERFILE); echo UTS_RELEASE) | \
|
|
+ $(CC) -I$(KSRC_OUTPUT) $(CFLAGS) -E - | \
|
|
+ tail -n 1 | \
|
|
+ xargs echo; \
|
|
+ else \
|
|
+ uname -r; \
|
|
+ fi)
|
|
+
|
|
+MODPATH := $(DESTDIR)/lib/modules/$(KERNELRELEASE)
|
|
+
|
|
+all: modules
|
|
+
|
|
+clean:
|
|
+ rm -f *.mod.c *.mod *.o *.ko .*.cmd .*.flags Modules.symvers
|
|
+ rm -rf $(PWD)/tmp
|
|
+
|
|
+
|
|
+ifeq ($(OLDMAKE),)
|
|
+
|
|
+TMP=$(PWD)/tmp
|
|
+MODVERDIR=$(TMP)/.tmp_versions
|
|
+
|
|
+modules:
|
|
+ifdef ($(KSRC_OUTPUT)/.tmp_versions)
|
|
+ mkdir -p $(MODVERDIR)
|
|
+ -cp $(KSRC_OUTPUT)/.tmp_versions/*.mod $(MODVERDIR)
|
|
+endif
|
|
+ifeq ($(KSRC),$(KSRC_OUTPUT)) # We're not outputting elsewhere
|
|
+ifdef ($(KSRC)/.tmp_versions)
|
|
+ -cp $(KSRC)/.tmp_versions/*.mod $(MODVERDIR)
|
|
+endif
|
|
+ $(MAKE) -C $(KSRC) SUBDIRS=$(PWD) MODVERDIR=$(MODVERDIR) modules
|
|
+else # We've got a kernel with seperate output, copy the config, and use O=
|
|
+ mkdir -p $(TMP)
|
|
+ cp $(KSRC_OUTPUT)/.config $(TMP)
|
|
+ $(MAKE) -C $(KSRC) SUBDIRS=$(PWD) MODVERDIR=$(MODVERDIR) O=$(PWD)/tmp modules
|
|
+endif
|
|
+
|
|
+install: modules
|
|
+ install -d $(KMISC)
|
|
+ install -m 644 -c $(addsuffix .ko,$(list-m)) $(KMISC)
|
|
+ /sbin/depmod -a
|
|
+
|
|
+
|
|
+else # We're on 2.4, and things are slightly different
|
|
+
|
|
+modules:
|
|
+ $(MAKE) -C $(KSRC) SUBDIRS=$(PWD) BUILD_DIR=$(PWD) modules
|
|
+
|
|
+install: modules
|
|
+ install -d $(KMISC)
|
|
+ install -m 644 -c $(addsuffix .o,$(list-m)) $(KMISC)
|
|
+ /sbin/depmod -a
|
|
+
|
|
+endif
|
|
+
|
|
+uninstall:
|
|
+ cd $(KMISC)
|
|
+ rm -rf $(addsuffix .ko,$(list-m))
|
|
+ cd -
|
|
+ /sbin/depmod -a
|
|
+
|
|
+endif
|
|
diff -Nurp linux-2.6.37/3rdparty/rfswitch/pbe5.c linux-2.6.37.3rdparty/3rdparty/rfswitch/pbe5.c
|
|
--- linux-2.6.37/3rdparty/rfswitch/pbe5.c 1970-01-01 02:00:00.000000000 +0200
|
|
+++ linux-2.6.37.3rdparty/3rdparty/rfswitch/pbe5.c 2008-03-28 05:25:16.000000000 +0200
|
|
@@ -0,0 +1,205 @@
|
|
+/*******************************************************************************
|
|
+
|
|
+ This program is free software; you can redistribute it and/or modify it
|
|
+ under the terms of version 2 of the GNU General Public License as
|
|
+ published by the Free Software Foundation.
|
|
+
|
|
+ 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.
|
|
+
|
|
+ The full GNU General Public License is included in this distribution in the
|
|
+ file called LICENSE.
|
|
+
|
|
+ Author:
|
|
+ Pedro Ramalhais <pmr09313@students.fct.unl.pt>
|
|
+
|
|
+ Based on:
|
|
+ av5100.c from http://ipw2100.sourceforge.net/
|
|
+
|
|
+*******************************************************************************/
|
|
+
|
|
+#include <linux/compiler.h>
|
|
+#include <linux/errno.h>
|
|
+#include <linux/kernel.h>
|
|
+#include <linux/module.h>
|
|
+#include <linux/types.h>
|
|
+#include <linux/netdevice.h>
|
|
+#include <linux/version.h>
|
|
+#include <linux/proc_fs.h>
|
|
+#include <linux/ioport.h>
|
|
+#include <asm/uaccess.h>
|
|
+#include <asm/io.h>
|
|
+
|
|
+#define DRV_NAME "pbe5"
|
|
+#define DRV_VERSION "1.3"
|
|
+#define DRV_DESCRIPTION "SW RF kill switch for Packard Bell EasyNote E5"
|
|
+#define DRV_AUTHOR "Pedro Ramalhais"
|
|
+#define DRV_LICENSE "GPL"
|
|
+
|
|
+static int radio = 1;
|
|
+
|
|
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
|
|
+
|
|
+MODULE_PARM(radio, "i");
|
|
+
|
|
+#else /* LINUX_VERSION_CODE < 2.6.0 */
|
|
+
|
|
+#include <linux/moduleparam.h>
|
|
+module_param(radio, int, 1);
|
|
+
|
|
+#endif /* LINUX_VERSION_CODE < 2.6.0 */
|
|
+
|
|
+MODULE_PARM_DESC(radio, "controls state of radio (1=on, 0=off)");
|
|
+
|
|
+MODULE_DESCRIPTION(DRV_DESCRIPTION);
|
|
+MODULE_AUTHOR(DRV_AUTHOR);
|
|
+MODULE_LICENSE(DRV_LICENSE);
|
|
+
|
|
+/*
|
|
+ * NOTE: These values were obtained from disassembling the Icon.exe program
|
|
+ * installed in the Packard Bell EasyNote E5 laptop. The names were guessed,
|
|
+ * so don't rely on them.
|
|
+ */
|
|
+#define PBE5_PORT_TOGGLE 0x0b3
|
|
+#define PBE5_VALUE_TOGGLE_ON 0x01
|
|
+#define PBE5_VALUE_TOGGLE_OFF 0x00
|
|
+#define PBE5_PORT_APPLY 0x0b2
|
|
+#define PBE5_VALUE_APPLY 0xef
|
|
+
|
|
+// Some "booleans" =;-)
|
|
+#define PBE5_RADIO_OFF 0
|
|
+#define PBE5_RADIO_ON 1
|
|
+
|
|
+static int pbe5_radio_status = PBE5_RADIO_ON;
|
|
+
|
|
+unsigned char pbe5_get_radio(void)
|
|
+{
|
|
+ unsigned char val = 0x00;
|
|
+
|
|
+ val = inb(PBE5_PORT_TOGGLE);
|
|
+
|
|
+ return val;
|
|
+}
|
|
+
|
|
+static void pbe5_set_radio(int state_set)
|
|
+{
|
|
+ pbe5_radio_status = pbe5_get_radio();
|
|
+
|
|
+ if (pbe5_radio_status != state_set) {
|
|
+ // Set the radio toggle register
|
|
+ outb(PBE5_VALUE_TOGGLE_ON, PBE5_PORT_TOGGLE);
|
|
+ // Commit the radio toggle register value
|
|
+ outb(PBE5_VALUE_APPLY, PBE5_PORT_APPLY);
|
|
+ // Update the radio status
|
|
+ pbe5_radio_status = pbe5_get_radio();
|
|
+
|
|
+ printk(KERN_INFO DRV_NAME ": Radio turned %s\n",
|
|
+ (state_set == PBE5_RADIO_ON) ? "ON" : "OFF");
|
|
+ } else {
|
|
+ printk(KERN_INFO DRV_NAME ": Radio already %s\n",
|
|
+ (state_set == PBE5_RADIO_ON) ? "ON" : "OFF");
|
|
+ }
|
|
+}
|
|
+
|
|
+
|
|
+/*
|
|
+ * proc stuff
|
|
+ */
|
|
+static struct proc_dir_entry *dir_base = NULL;
|
|
+
|
|
+static int proc_set_radio(struct file *file, const char *buffer,
|
|
+ unsigned long count, void *data)
|
|
+{
|
|
+ pbe5_set_radio(buffer[0] == '0' ? PBE5_RADIO_OFF : PBE5_RADIO_ON);
|
|
+
|
|
+ return count;
|
|
+}
|
|
+
|
|
+static int proc_get_radio(char *page, char **start, off_t offset,
|
|
+ int count, int *eof, void *data)
|
|
+{
|
|
+ int len = 0;
|
|
+
|
|
+ len += snprintf(page, count, DRV_NAME ": %d\n",
|
|
+ pbe5_radio_status == PBE5_RADIO_OFF ? 0 : 1);
|
|
+
|
|
+ *eof = 1;
|
|
+ return len;
|
|
+}
|
|
+
|
|
+
|
|
+static void pbe5_proc_cleanup(void)
|
|
+{
|
|
+ if (dir_base) {
|
|
+ remove_proc_entry("radio", dir_base);
|
|
+ remove_proc_entry(DRV_NAME, &proc_root);
|
|
+ dir_base = NULL;
|
|
+ }
|
|
+}
|
|
+
|
|
+
|
|
+static int pbe5_proc_init(void)
|
|
+{
|
|
+ struct proc_dir_entry *ent;
|
|
+ int err = 0;
|
|
+
|
|
+ dir_base = create_proc_entry(DRV_NAME, S_IFDIR, &proc_root);
|
|
+ if (dir_base == NULL) {
|
|
+ printk(KERN_ERR DRV_NAME ": Unable to initialise /proc/"
|
|
+ DRV_NAME "\n");
|
|
+ err = -ENOMEM;
|
|
+ goto fail;
|
|
+ }
|
|
+
|
|
+
|
|
+ ent = create_proc_entry("radio", S_IFREG | S_IRUGO | S_IWUSR,
|
|
+ dir_base);
|
|
+ if (ent) {
|
|
+ ent->read_proc = proc_get_radio;
|
|
+ ent->write_proc = proc_set_radio;
|
|
+ } else {
|
|
+ printk(KERN_ERR
|
|
+ "Unable to initialize /proc/" DRV_NAME "/radio\n");
|
|
+ err = -ENOMEM;
|
|
+ goto fail;
|
|
+ }
|
|
+
|
|
+ return 0;
|
|
+
|
|
+ fail:
|
|
+ pbe5_proc_cleanup();
|
|
+ return err;
|
|
+}
|
|
+
|
|
+/*
|
|
+ * module stuff
|
|
+ */
|
|
+static int __init pbe5_init(void)
|
|
+{
|
|
+ pbe5_proc_init();
|
|
+
|
|
+ pbe5_set_radio((radio == 1) ? PBE5_RADIO_ON : PBE5_RADIO_OFF);
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+static void __exit pbe5_exit(void)
|
|
+{
|
|
+ pbe5_set_radio(PBE5_RADIO_OFF);
|
|
+
|
|
+ pbe5_proc_cleanup();
|
|
+}
|
|
+
|
|
+module_init(pbe5_init);
|
|
+module_exit(pbe5_exit);
|
|
+
|
|
+/*
|
|
+ 1 2 3 4 5 6 7
|
|
+12345678901234567890123456789012345678901234567890123456789012345678901234567890
|
|
+*/
|
|
diff -Nurp linux-2.6.37/3rdparty/rfswitch/README linux-2.6.37.3rdparty/3rdparty/rfswitch/README
|
|
--- linux-2.6.37/3rdparty/rfswitch/README 1970-01-01 02:00:00.000000000 +0200
|
|
+++ linux-2.6.37.3rdparty/3rdparty/rfswitch/README 2004-07-09 17:26:20.000000000 +0300
|
|
@@ -0,0 +1,44 @@
|
|
+Radio Kill Switch
|
|
+------------ ----- ----- ---- --- -- -
|
|
+Most laptops provide the ability for the user to physically disable the radio.
|
|
+Some vendors have implemented this as a physical switch that requires no
|
|
+software to turn the radio off and on. On other laptops, however, the switch
|
|
+is controlled through a button being pressed and a software driver then making
|
|
+calls to turn the radio off and on. This is referred to as a "software based
|
|
+RF kill switch"
|
|
+
|
|
+Currently this project provides modules for controlling the software RF kill
|
|
+switch on the Averatec 5100P and Packard Bell EasyNote E5. The code may work
|
|
+on other laptops, but these are the only models on which it has been tested.
|
|
+
|
|
+To determine if you have a system that might be compatible with one of the
|
|
+provided SW RF Kill switch modules, you can run:
|
|
+
|
|
+
|
|
+ To check for the Packard Bell (to use module pbe) --
|
|
+
|
|
+ % dd if=/dev/mem bs=1 skip=983040 count=65535 2>/dev/null | strings | egrep "NEW-PC|Insyde Software MobilePRO BIOS"
|
|
+
|
|
+ To check for the Averatec (to use module av5100) --
|
|
+
|
|
+ % dd if=/dev/mem bs=1 skip=983040 count=65535 2>/dev/null | strings | egrep "AVERATEC"
|
|
+
|
|
+If you have one of those laptop models you can imply loading the av5100/pbe5
|
|
+module and the radio will be toggled on and off. In addition, you can turn
|
|
+the driver on and off by writing either a 1 or 0 to /proc/av5100/radio or
|
|
+/proc/pbe5/radio. If you automatically load the av5100/pbe5 module when your
|
|
+system boots, you may wish to use the radio module parameter to control the
|
|
+state of the radio upon loading:
|
|
+
|
|
+ modprobe av5100 radio=0
|
|
+ modprobe pbe5 radio=0
|
|
+
|
|
+results in the module loading with the radio turned off. You can then turn the
|
|
+radio on by:
|
|
+
|
|
+ echo 1 > /proc/av5100/radio
|
|
+ echo 1 > /proc/pbe5/radio
|
|
+
|
|
+If you have a SW RF kill switch and can not use one of the above modules,
|
|
+please join us on IRC (irc.freenode.net) on channel #ipw2100 and someone may
|
|
+be able to help.
|