How to configure the Linux kernel/drivers/firmware
For a description of the syntax of this configuration file, see Documentation/kbuild/kconfig-language.txt.
Firmware Drivers [ ]
- Option: EDD
- Kernel Versions: 2.6.15.6 .
- (on/off/module) BIOS Enhanced Disk Drive calls determine boot disk (EXPERIMENTAL)
- depends on EXPERIMENTAL
- depends on !IA64 Say Y or M here if you want to enable BIOS Enhanced Disk Drive Services real mode BIOS calls to determine which disk BIOS tries boot from. This information is then exported via sysfs. This option is experimental and is known to fail to boot on some obscure configurations. Most disk controller BIOS vendors do not yet implement this feature.
- Option: EFI_VARS
- Kernel Versions: 2.6.15.6 .
- (on/off/module) EFI Variable Support via sysfs
- depends on EFI
- default n If you say Y here, you are able to get EFI (Extensible Firmware Interface) variable information via sysfs. You may read, write, create, and destroy EFI variables through this interface. Note that using this driver in concert with efibootmgr requires at least test release version 0.5.0-test3 or later, which is available from Matt Domsch’s website located at: Subsequent efibootmgr releases may be found at:
- Option: EFI_PCDP
- Kernel Versions: 2.6.15.6 .
- (on/off) Console device selection via EFI PCDP or HCDP table
- depends on ACPI && EFI && IA64
- default y if IA64 If your firmware supplies the PCDP table, and you want to automatically use the primary console device it describes as the Linux console, say Y here. If your firmware supplies the HCDP table, and you want to use the first serial port it describes as the Linux console, say Y here. If your EFI ConOut path contains only a UART device, it will become the console automatically. Otherwise, you must specify the «console=hcdp» kernel boot argument. Neither the PCDP nor the HCDP affects naming of serial devices, so a serial console may be /dev/ttyS0, /dev/ttyS1, etc., depending on how the driver discovers devices. You must also enable the appropriate drivers (serial, VGA, etc.) See
- Option: DELL_RBU
- Kernel Versions: 2.6.15.6 .
- (on/off/module) BIOS update support for DELL systems via sysfs
- depends on X86
- select FW_LOADER Say m if you want to have the option of updating the BIOS for yourDELL system. Note you need a Dell OpenManage or Dell Update package (DUP)supporting application to communicate with the BIOS regarding the newimage for the image update to take effect.See for more details on the driver.
- Option: DCDBAS
- Kernel Versions: 2.6.15.6 .
- (on/off/module) Dell Systems Management Base Driver
- depends on X86 The Dell Systems Management Base Driver provides a sysfs interface for systems management software to perform System Management Interrupts (SMIs) and Host Control Actions (system power cycle or power off after OS shutdown) on certain Dell systems. See for more details on the driver and the Dell systems on which Dell systems management software makes use of this driver. Say Y or M here to enable the driver for use by Dell systems management software such as Dell OpenManage.
Linux Kernel Configuration
How to configure the Linux kernel/drivers/firmware
For a description of the syntax of this configuration file, see Documentation/kbuild/kconfig-language.txt.
Firmware Drivers [ ]
- Option: EDD
- Kernel Versions: 2.6.15.6 .
- (on/off/module) BIOS Enhanced Disk Drive calls determine boot disk (EXPERIMENTAL)
- depends on EXPERIMENTAL
- depends on !IA64 Say Y or M here if you want to enable BIOS Enhanced Disk Drive Services real mode BIOS calls to determine which disk BIOS tries boot from. This information is then exported via sysfs. This option is experimental and is known to fail to boot on some obscure configurations. Most disk controller BIOS vendors do not yet implement this feature.
- Option: EFI_VARS
- Kernel Versions: 2.6.15.6 .
- (on/off/module) EFI Variable Support via sysfs
- depends on EFI
- default n If you say Y here, you are able to get EFI (Extensible Firmware Interface) variable information via sysfs. You may read, write, create, and destroy EFI variables through this interface. Note that using this driver in concert with efibootmgr requires at least test release version 0.5.0-test3 or later, which is available from Matt Domsch’s website located at: Subsequent efibootmgr releases may be found at:
- Option: EFI_PCDP
- Kernel Versions: 2.6.15.6 .
- (on/off) Console device selection via EFI PCDP or HCDP table
- depends on ACPI && EFI && IA64
- default y if IA64 If your firmware supplies the PCDP table, and you want to automatically use the primary console device it describes as the Linux console, say Y here. If your firmware supplies the HCDP table, and you want to use the first serial port it describes as the Linux console, say Y here. If your EFI ConOut path contains only a UART device, it will become the console automatically. Otherwise, you must specify the «console=hcdp» kernel boot argument. Neither the PCDP nor the HCDP affects naming of serial devices, so a serial console may be /dev/ttyS0, /dev/ttyS1, etc., depending on how the driver discovers devices. You must also enable the appropriate drivers (serial, VGA, etc.) See
- Option: DELL_RBU
- Kernel Versions: 2.6.15.6 .
- (on/off/module) BIOS update support for DELL systems via sysfs
- depends on X86
- select FW_LOADER Say m if you want to have the option of updating the BIOS for yourDELL system. Note you need a Dell OpenManage or Dell Update package (DUP)supporting application to communicate with the BIOS regarding the newimage for the image update to take effect.See for more details on the driver.
- Option: DCDBAS
- Kernel Versions: 2.6.15.6 .
- (on/off/module) Dell Systems Management Base Driver
- depends on X86 The Dell Systems Management Base Driver provides a sysfs interface for systems management software to perform System Management Interrupts (SMIs) and Host Control Actions (system power cycle or power off after OS shutdown) on certain Dell systems. See for more details on the driver and the Dell systems on which Dell systems management software makes use of this driver. Say Y or M here to enable the driver for use by Dell systems management software such as Dell OpenManage.
Linux Kernel Configuration
Driver Basics¶
module_init() will either be called during do_initcalls() (if builtin) or at module insertion time (if a module). There can only be one per module.
x function to be run when driver is removed
Description
module_exit() will wrap the driver clean-up code with cleanup_module() when used with rmmod when the driver is a module. If the driver is statically compiled into the kernel, module_exit() has no effect. There can only be one per module.
Driver device table¶
identifies USB devices for probing and hotplugging
match_flags Bit mask controlling which of the other fields are used to match against new devices. Any field except for driver_info may be used, although some only make sense in conjunction with other fields. This is usually set by a USB_DEVICE_*() macro, which sets all other fields in this structure except for driver_info. idVendor USB vendor ID for a device; numbers are assigned by the USB forum to its members. idProduct Vendor-assigned product ID. bcdDevice_lo Low end of range of vendor-assigned product version numbers. This is also used to identify individual product versions, for a range consisting of a single device. bcdDevice_hi High end of version number range. The range of product versions is inclusive. bDeviceClass Class of device; numbers are assigned by the USB forum. Products may choose to implement classes, or be vendor-specific. Device classes specify behavior of all the interfaces on a device. bDeviceSubClass Subclass of device; associated with bDeviceClass. bDeviceProtocol Protocol of device; associated with bDeviceClass. bInterfaceClass Class of interface; numbers are assigned by the USB forum. Products may choose to implement classes, or be vendor-specific. Interface classes specify behavior only of a given interface; other interfaces may support other classes. bInterfaceSubClass Subclass of interface; associated with bInterfaceClass. bInterfaceProtocol Protocol of interface; associated with bInterfaceClass. bInterfaceNumber Number of interface; composite devices may use fixed interface numbers to differentiate between vendor-specific interfaces. driver_info Holds information used by the driver. Usually it holds a pointer to a descriptor understood by the driver, or perhaps device flags.
Description
In most cases, drivers will create a table of device IDs by using USB_DEVICE() , or similar macros designed for that purpose. They will then export it to userspace using MODULE_DEVICE_TABLE() , and provide it to the USB core through their usb_driver structure.
See the usb_match_id() function for information about how matches are performed. Briefly, you will normally use one of several macros to help construct these entries. Each entry you provide will either identify one or more specific products, or will identify a class of products which have agreed to behave the same. You should put the more specific matches towards the beginning of your table, so that driver_info can record quirks of specific products.
identifies PHY devices on an MDIO/MII bus
identifies a device on an AMBA bus