Update the maintainer of 2.4 kernel in Documentations/SubmittingPatches. Signed-off-by: Li Yang <leo@zh-kernel.org> Signed-off-by: Adrian Bunk <bunk@kernel.org>
		
			
				
	
	
		
			162 lines
		
	
	
	
		
			6.2 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			162 lines
		
	
	
	
		
			6.2 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
Submitting Drivers For The Linux Kernel
 | 
						|
---------------------------------------
 | 
						|
 | 
						|
This document is intended to explain how to submit device drivers to the
 | 
						|
various kernel trees. Note that if you are interested in video card drivers
 | 
						|
you should probably talk to XFree86 (http://www.xfree86.org/) and/or X.Org
 | 
						|
(http://x.org/) instead.
 | 
						|
 | 
						|
Also read the Documentation/SubmittingPatches document.
 | 
						|
 | 
						|
 | 
						|
Allocating Device Numbers
 | 
						|
-------------------------
 | 
						|
 | 
						|
Major and minor numbers for block and character devices are allocated
 | 
						|
by the Linux assigned name and number authority (currently this is
 | 
						|
Torben Mathiasen). The site is http://www.lanana.org/. This
 | 
						|
also deals with allocating numbers for devices that are not going to
 | 
						|
be submitted to the mainstream kernel.
 | 
						|
See Documentation/devices.txt for more information on this.
 | 
						|
 | 
						|
If you don't use assigned numbers then when your device is submitted it will
 | 
						|
be given an assigned number even if that is different from values you may
 | 
						|
have shipped to customers before.
 | 
						|
 | 
						|
Who To Submit Drivers To
 | 
						|
------------------------
 | 
						|
 | 
						|
Linux 2.0:
 | 
						|
	No new drivers are accepted for this kernel tree.
 | 
						|
 | 
						|
Linux 2.2:
 | 
						|
	No new drivers are accepted for this kernel tree.
 | 
						|
 | 
						|
Linux 2.4:
 | 
						|
	If the code area has a general maintainer then please submit it to
 | 
						|
	the maintainer listed in MAINTAINERS in the kernel file. If the
 | 
						|
	maintainer does not respond or you cannot find the appropriate
 | 
						|
	maintainer then please contact Willy Tarreau <w@1wt.eu>.
 | 
						|
 | 
						|
Linux 2.6:
 | 
						|
	The same rules apply as 2.4 except that you should follow linux-kernel
 | 
						|
	to track changes in API's. The final contact point for Linux 2.6
 | 
						|
	submissions is Andrew Morton <akpm@osdl.org>.
 | 
						|
 | 
						|
What Criteria Determine Acceptance
 | 
						|
----------------------------------
 | 
						|
 | 
						|
Licensing:	The code must be released to us under the
 | 
						|
		GNU General Public License. We don't insist on any kind
 | 
						|
		of exclusive GPL licensing, and if you wish the driver
 | 
						|
		to be useful to other communities such as BSD you may well
 | 
						|
		wish to release under multiple licenses.
 | 
						|
		See accepted licenses at include/linux/module.h
 | 
						|
 | 
						|
Copyright:	The copyright owner must agree to use of GPL.
 | 
						|
		It's best if the submitter and copyright owner
 | 
						|
		are the same person/entity. If not, the name of
 | 
						|
		the person/entity authorizing use of GPL should be
 | 
						|
		listed in case it's necessary to verify the will of
 | 
						|
		the copyright owner.
 | 
						|
 | 
						|
Interfaces:	If your driver uses existing interfaces and behaves like
 | 
						|
		other drivers in the same class it will be much more likely
 | 
						|
		to be accepted than if it invents gratuitous new ones.
 | 
						|
		If you need to implement a common API over Linux and NT
 | 
						|
		drivers do it in userspace.
 | 
						|
 | 
						|
Code:		Please use the Linux style of code formatting as documented
 | 
						|
		in Documentation/CodingStyle. If you have sections of code
 | 
						|
		that need to be in other formats, for example because they
 | 
						|
		are shared with a windows driver kit and you want to
 | 
						|
		maintain them just once separate them out nicely and note
 | 
						|
		this fact.
 | 
						|
 | 
						|
Portability:	Pointers are not always 32bits, not all computers are little
 | 
						|
		endian, people do not all have floating point and you
 | 
						|
		shouldn't use inline x86 assembler in your driver without
 | 
						|
		careful thought. Pure x86 drivers generally are not popular.
 | 
						|
		If you only have x86 hardware it is hard to test portability
 | 
						|
		but it is easy to make sure the code can easily be made
 | 
						|
		portable.
 | 
						|
 | 
						|
Clarity:	It helps if anyone can see how to fix the driver. It helps
 | 
						|
		you because you get patches not bug reports. If you submit a
 | 
						|
		driver that intentionally obfuscates how the hardware works
 | 
						|
		it will go in the bitbucket.
 | 
						|
 | 
						|
PM support:	Since Linux is used on many portable and desktop systems, your
 | 
						|
		driver is likely to be used on such a system and therefore it
 | 
						|
		should support basic power management by implementing, if
 | 
						|
		necessary, the .suspend and .resume methods used during the
 | 
						|
		system-wide suspend and resume transitions.  You should verify
 | 
						|
		that your driver correctly handles the suspend and resume, but
 | 
						|
		if you are unable to ensure that, please at least define the
 | 
						|
		.suspend method returning the -ENOSYS ("Function not
 | 
						|
		implemented") error.  You should also try to make sure that your
 | 
						|
		driver uses as little power as possible when it's not doing
 | 
						|
		anything.  For the driver testing instructions see
 | 
						|
		Documentation/power/drivers-testing.txt and for a relatively
 | 
						|
		complete overview of the power management issues related to
 | 
						|
		drivers see Documentation/power/devices.txt .
 | 
						|
 | 
						|
Control:	In general if there is active maintainance of a driver by
 | 
						|
		the author then patches will be redirected to them unless
 | 
						|
		they are totally obvious and without need of checking.
 | 
						|
		If you want to be the contact and update point for the
 | 
						|
		driver it is a good idea to state this in the comments,
 | 
						|
		and include an entry in MAINTAINERS for your driver.
 | 
						|
 | 
						|
What Criteria Do Not Determine Acceptance
 | 
						|
-----------------------------------------
 | 
						|
 | 
						|
Vendor:		Being the hardware vendor and maintaining the driver is
 | 
						|
		often a good thing. If there is a stable working driver from
 | 
						|
		other people already in the tree don't expect 'we are the
 | 
						|
		vendor' to get your driver chosen. Ideally work with the
 | 
						|
		existing driver author to build a single perfect driver.
 | 
						|
 | 
						|
Author:		It doesn't matter if a large Linux company wrote the driver,
 | 
						|
		or you did. Nobody has any special access to the kernel
 | 
						|
		tree. Anyone who tells you otherwise isn't telling the
 | 
						|
		whole story.
 | 
						|
 | 
						|
 | 
						|
Resources
 | 
						|
---------
 | 
						|
 | 
						|
Linux kernel master tree:
 | 
						|
	ftp.??.kernel.org:/pub/linux/kernel/...
 | 
						|
	?? == your country code, such as "us", "uk", "fr", etc.
 | 
						|
 | 
						|
Linux kernel mailing list:
 | 
						|
	linux-kernel@vger.kernel.org
 | 
						|
	[mail majordomo@vger.kernel.org to subscribe]
 | 
						|
 | 
						|
Linux Device Drivers, Third Edition (covers 2.6.10):
 | 
						|
	http://lwn.net/Kernel/LDD3/  (free version)
 | 
						|
 | 
						|
LWN.net:
 | 
						|
	Weekly summary of kernel development activity - http://lwn.net/
 | 
						|
	2.6 API changes:
 | 
						|
		http://lwn.net/Articles/2.6-kernel-api/
 | 
						|
	Porting drivers from prior kernels to 2.6:
 | 
						|
		http://lwn.net/Articles/driver-porting/
 | 
						|
 | 
						|
KernelTrap:
 | 
						|
	Occasional Linux kernel articles and developer interviews
 | 
						|
	http://kerneltrap.org/
 | 
						|
 | 
						|
KernelNewbies:
 | 
						|
	Documentation and assistance for new kernel programmers
 | 
						|
	http://kernelnewbies.org/
 | 
						|
 | 
						|
Linux USB project:
 | 
						|
	http://www.linux-usb.org/
 | 
						|
 | 
						|
How to NOT write kernel driver by Arjan van de Ven:
 | 
						|
	http://www.fenrus.org/how-to-not-write-a-device-driver-paper.pdf
 | 
						|
 | 
						|
Kernel Janitor:
 | 
						|
	http://janitor.kernelnewbies.org/
 |