Re: [RFC PATCH] x86: create drivers/x86/ from drivers/misc/

Sam Ravnborg
2008-11-28T22:35:33Z

On Fri, Nov 28, 2008 at 05:09:09PM -0500, Len Brown wrote:
> >From 9f57b53c82091c7af2f6082d83d6fc6542e36917 Mon Sep 17 00:00:00 2001
> From: Len Brown <len.brown@intel.com>
> Date: Fri, 21 Nov 2008 00:57:09 -0500
> Subject: [PATCH] x86: create drivers/x86/ from drivers/misc/
> Organization: Intel Open Source Technology Center
>
> Move x86 platform specific drivers from drivers/misc/
> to a new home under drivers/x86/.
>
> The community has been maintaining x86 platform specific drivers
> under /drivers/misc/ for a few years. The oldest ones started
> life under drivers/acpi, but got booted out because they are
> generally vendor-specific extensions to ACPI, or simply
> users of ACPI, rather than implementers of the ACPI spec.
>
> The thing that they have in common is that they are
> x86 vendor specific platform drivers. So when asked,
> Linus suggested we move them to drivers/x86.

We already have 81 one directory entries under drivers/
and with patch you open up for an additional
directory for each arch - not elegant.

As it is today (before this patch) the directories unider
drivers/ said what the drivers was used for - which is logical.

But with this new arch specific directory it is no longer obvious
is a driver should be located under say drivers/net/* or
drivers/arm/* in case it is a arm specific driver.

What is wrong with the current location under misc/*?
If there is a good reason to keep them separated
follow the style of other directories under
drivers/* and introduce drivers/misc/x86.

>
> Signed-off-by: Len Brown <len.brown@intel.com>
> ---
> just the interesting part of the patch is included below, due to size.

git format-patch -M -B is your friend...

>
>
> arch/x86/Kconfig | 2 +
> arch/x86/Makefile | 3 +
> drivers/misc/Kconfig | 280 ----------------------------
> drivers/misc/Makefile | 11 --
> drivers/x86/Kconfig | 290 ++++++++++++++++++++++++++++++
> drivers/x86/Makefile | 17 ++
> drivers/{misc => x86}/acer-wmi.c | 0
> drivers/{misc => x86}/asus-laptop.c | 0
> drivers/{misc => x86}/compal-laptop.c | 0
> drivers/{misc => x86}/eeepc-laptop.c | 0
> drivers/{misc => x86}/fujitsu-laptop.c | 0
> drivers/{misc => x86}/hp-wmi.c | 0
> drivers/{misc => x86}/intel_menlow.c | 0
> drivers/{misc => x86}/msi-laptop.c | 0
> drivers/{misc => x86}/panasonic-laptop.c | 0
> drivers/{misc => x86}/sony-laptop.c | 0
> drivers/{misc => x86}/tc1100-wmi.c | 0
> drivers/{misc => x86}/thinkpad_acpi.c | 0
> 18 files changed, 312 insertions(+), 291 deletions(-)
>
> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> index 93224b5..b89db1e 100644
> --- a/arch/x86/Kconfig
> +++ b/arch/x86/Kconfig
> @@ -1904,6 +1904,8 @@ source "drivers/Kconfig"
>
> source "drivers/firmware/Kconfig"
>
> +source "drivers/x86/Kconfig"
> +
> source "fs/Kconfig"
>
> source "arch/x86/Kconfig.debug"
> diff --git a/arch/x86/Makefile b/arch/x86/Makefile
> index d1a47ad..a750519 100644
> --- a/arch/x86/Makefile
> +++ b/arch/x86/Makefile
> @@ -171,6 +171,9 @@ ifeq ($(CONFIG_X86_32),y)
> drivers-$(CONFIG_FB) += arch/x86/video/
> endif
>
> +# x86 platform-specific drivers
> +drivers-y += drivers/x86/
> +
> ####
> # boot loader support. Several targets are kept for legacy purposes
>
> diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
> index fee7304..8b775b8 100644
> --- a/drivers/misc/Kconfig
> +++ b/drivers/misc/Kconfig
> @@ -136,97 +136,6 @@ config TIFM_7XX1
> To compile this driver as a module, choose M here: the module will
> be called tifm_7xx1.
>
> -config ACER_WMI
> - tristate "Acer WMI Laptop Extras (EXPERIMENTAL)"
> - depends on X86
> - depends on EXPERIMENTAL
> - depends on ACPI
> - depends on LEDS_CLASS
> - depends on NEW_LEDS
> - depends on BACKLIGHT_CLASS_DEVICE
> - depends on SERIO_I8042
> - depends on RFKILL
> - select ACPI_WMI
> - ---help---
> - This is a driver for newer Acer (and Wistron) laptops. It adds
> - wireless radio and bluetooth control, and on some laptops,
> - exposes the mail LED and LCD backlight.
> -
> - For more information about this driver see
> - <file:Documentation/laptops/acer-wmi.txt>
> -
> - If you have an ACPI-WMI compatible Acer/ Wistron laptop, say Y or M
> - here.
> -
> -config ASUS_LAPTOP
> - tristate "Asus Laptop Extras (EXPERIMENTAL)"
> - depends on X86
> - depends on ACPI
> - depends on EXPERIMENTAL && !ACPI_ASUS
> - depends on LEDS_CLASS
> - depends on NEW_LEDS
> - depends on BACKLIGHT_CLASS_DEVICE
> - ---help---
> - This is the new Linux driver for Asus laptops. It may also support some
> - MEDION, JVC or VICTOR laptops. It makes all the extra buttons generate
> - standard ACPI events that go through /proc/acpi/events. It also adds
> - support for video output switching, LCD backlight control, Bluetooth and
> - Wlan control, and most importantly, allows you to blink those fancy LEDs.
> -
> - For more information and a userspace daemon for handling the extra
> - buttons see <http://acpi4asus.sf.net/>.
> -
> - If you have an ACPI-compatible ASUS laptop, say Y or M here.
> -
> -config FUJITSU_LAPTOP
> - tristate "Fujitsu Laptop Extras"
> - depends on X86
> - depends on ACPI
> - depends on INPUT
> - depends on BACKLIGHT_CLASS_DEVICE
> - ---help---
> - This is a driver for laptops built by Fujitsu:
> -
> - * P2xxx/P5xxx/S6xxx/S7xxx series Lifebooks
> - * Possibly other Fujitsu laptop models
> - * Tested with S6410 and S7020
> -
> - It adds support for LCD brightness control and some hotkeys.
> -
> - If you have a Fujitsu laptop, say Y or M here.
> -
> -config FUJITSU_LAPTOP_DEBUG
> - bool "Verbose debug mode for Fujitsu Laptop Extras"
> - depends on FUJITSU_LAPTOP
> - default n
> - ---help---
> - Enables extra debug output from the fujitsu extras driver, at the
> - expense of a slight increase in driver size.
> -
> - If you are not sure, say N here.
> -
> -config TC1100_WMI
> - tristate "HP Compaq TC1100 Tablet WMI Extras (EXPERIMENTAL)"
> - depends on X86 && !X86_64
> - depends on EXPERIMENTAL
> - depends on ACPI
> - select ACPI_WMI
> - ---help---
> - This is a driver for the WMI extensions (wireless and bluetooth power
> - control) of the HP Compaq TC1100 tablet.
> -
> -config HP_WMI
> - tristate "HP WMI extras"
> - depends on ACPI_WMI
> - depends on INPUT
> - depends on RFKILL
> - help
> - Say Y here if you want to support WMI-based hotkeys on HP laptops and
> - to read data from WMI such as docking or ambient light sensor state.
> -
> - To compile this driver as a module, choose M here: the module will
> - be called hp-wmi.
> -
> config ICS932S401
> tristate "Integrated Circuits ICS932S401"
> depends on I2C && EXPERIMENTAL
> @@ -237,170 +146,6 @@ config ICS932S401
> This driver can also be built as a module. If so, the module
> will be called ics932s401.
>
> -config MSI_LAPTOP
> - tristate "MSI Laptop Extras"
> - depends on X86
> - depends on ACPI
> - depends on BACKLIGHT_CLASS_DEVICE
> - ---help---
> - This is a driver for laptops built by MSI (MICRO-STAR
> - INTERNATIONAL):
> -
> - MSI MegaBook S270 (MS-1013)
> - Cytron/TCM/Medion/Tchibo MD96100/SAM2000
> -
> - It adds support for Bluetooth, WLAN and LCD brightness control.
> -
> - More information about this driver is available at
> - <http://0pointer.de/lennart/tchibo.html>.
> -
> - If you have an MSI S270 laptop, say Y or M here.
> -
> -config PANASONIC_LAPTOP
> - tristate "Panasonic Laptop Extras"
> - depends on X86 && INPUT && ACPI
> - depends on BACKLIGHT_CLASS_DEVICE
> - ---help---
> - This driver adds support for access to backlight control and hotkeys
> - on Panasonic Let's Note laptops.
> -
> - If you have a Panasonic Let's note laptop (such as the R1(N variant),
> - R2, R3, R5, T2, W2 and Y2 series), say Y.
> -
> -config COMPAL_LAPTOP
> - tristate "Compal Laptop Extras"
> - depends on X86
> - depends on ACPI
> - depends on BACKLIGHT_CLASS_DEVICE
> - ---help---
> - This is a driver for laptops built by Compal:
> -
> - Compal FL90/IFL90
> - Compal FL91/IFL91
> - Compal FL92/JFL92
> - Compal FT00/IFT00
> -
> - It adds support for Bluetooth, WLAN and LCD brightness control.
> -
> - If you have an Compal FL9x/IFL9x/FT00 laptop, say Y or M here.
> -
> -config SONY_LAPTOP
> - tristate "Sony Laptop Extras"
> - depends on X86 && ACPI
> - select BACKLIGHT_CLASS_DEVICE
> - depends on INPUT
> - ---help---
> - This mini-driver drives the SNC and SPIC devices present in the ACPI
> - BIOS of the Sony Vaio laptops.
> -
> - It gives access to some extra laptop functionalities like Bluetooth,
> - screen brightness control, Fn keys and allows powering on/off some
> - devices.
> -
> - Read <file:Documentation/laptops/sony-laptop.txt> for more information.
> -
> -config SONYPI_COMPAT
> - bool "Sonypi compatibility"
> - depends on SONY_LAPTOP
> - ---help---
> - Build the sonypi driver compatibility code into the sony-laptop driver.
> -
> -config THINKPAD_ACPI
> - tristate "ThinkPad ACPI Laptop Extras"
> - depends on X86 && ACPI
> - select BACKLIGHT_LCD_SUPPORT
> - select BACKLIGHT_CLASS_DEVICE
> - select HWMON
> - select NVRAM
> - select INPUT
> - select NEW_LEDS
> - select LEDS_CLASS
> - select NET
> - select RFKILL
> - ---help---
> - This is a driver for the IBM and Lenovo ThinkPad laptops. It adds
> - support for Fn-Fx key combinations, Bluetooth control, video
> - output switching, ThinkLight control, UltraBay eject and more.
> - For more information about this driver see
> - <file:Documentation/laptops/thinkpad-acpi.txt> and
> - <http://ibm-acpi.sf.net/> .
> -
> - This driver was formerly known as ibm-acpi.
> -
> - If you have an IBM or Lenovo ThinkPad laptop, say Y or M here.
> -
> -config THINKPAD_ACPI_DEBUG
> - bool "Verbose debug mode"
> - depends on THINKPAD_ACPI
> - default n
> - ---help---
> - Enables extra debugging information, at the expense of a slightly
> - increase in driver size.
> -
> - If you are not sure, say N here.
> -
> -config THINKPAD_ACPI_DOCK
> - bool "Legacy Docking Station Support"
> - depends on THINKPAD_ACPI
> - depends on ACPI_DOCK=n
> - default n
> - ---help---
> - Allows the thinkpad_acpi driver to handle docking station events.
> - This support was made obsolete by the generic ACPI docking station
> - support (CONFIG_ACPI_DOCK). It will allow locking and removing the
> - laptop from the docking station, but will not properly connect PCI
> - devices.
> -
> - If you are not sure, say N here.
> -
> -config THINKPAD_ACPI_BAY
> - bool "Legacy Removable Bay Support"
> - depends on THINKPAD_ACPI
> - default y
> - ---help---
> - Allows the thinkpad_acpi driver to handle removable bays. It will
> - electrically disable the device in the bay, and also generate
> - notifications when the bay lever is ejected or inserted.
> -
> - If you are not sure, say Y here.
> -
> -config THINKPAD_ACPI_VIDEO
> - bool "Video output control support"
> - depends on THINKPAD_ACPI
> - default y
> - ---help---
> - Allows the thinkpad_acpi driver to provide an interface to control
> - the various video output ports.
> -
> - This feature often won't work well, depending on ThinkPad model,
> - display state, video output devices in use, whether there is a X
> - server running, phase of the moon, and the current mood of
> - Schroedinger's cat. If you can use X.org's RandR to control
> - your ThinkPad's video output ports instead of this feature,
> - don't think twice: do it and say N here to save some memory.
> -
> - If you are not sure, say Y here.
> -
> -config THINKPAD_ACPI_HOTKEY_POLL
> - bool "Support NVRAM polling for hot keys"
> - depends on THINKPAD_ACPI
> - default y
> - ---help---
> - Some thinkpad models benefit from NVRAM polling to detect a few of
> - the hot key press events. If you know your ThinkPad model does not
> - need to do NVRAM polling to support any of the hot keys you use,
> - unselecting this option will save about 1kB of memory.
> -
> - ThinkPads T40 and newer, R52 and newer, and X31 and newer are
> - unlikely to need NVRAM polling in their latest BIOS versions.
> -
> - NVRAM polling can detect at most the following keys: ThinkPad/Access
> - IBM, Zoom, Switch Display (fn+F7), ThinkLight, Volume up/down/mute,
> - Brightness up/down, Display Expand (fn+F8), Hibernate (fn+F12).
> -
> - If you are not sure, say Y here. The driver enables polling only if
> - it is strictly necessary to do so.
> -
> config ATMEL_SSC
> tristate "Device driver for Atmel SSC peripheral"
> depends on AVR32 || ARCH_AT91
> @@ -413,31 +158,6 @@ config ATMEL_SSC
>
> If unsure, say N.
>
> -config INTEL_MENLOW
> - tristate "Thermal Management driver for Intel menlow platform"
> - depends on ACPI_THERMAL
> - select THERMAL
> - depends on X86
> - ---help---
> - ACPI thermal management enhancement driver on
> - Intel Menlow platform.
> -
> - If unsure, say N.
> -
> -config EEEPC_LAPTOP
> - tristate "Eee PC Hotkey Driver (EXPERIMENTAL)"
> - depends on X86
> - depends on ACPI
> - depends on BACKLIGHT_CLASS_DEVICE
> - depends on HWMON
> - depends on EXPERIMENTAL
> - depends on RFKILL
> - ---help---
> - This driver supports the Fn-Fx keys on Eee PC laptops.
> - It also adds the ability to switch camera/wlan on/off.
> -
> - If you have an Eee PC laptop, say Y or M here.
> -
> config ENCLOSURE_SERVICES
> tristate "Enclosure Services"
> default n
> diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
> index 817f7f5..4a62847 100644
> --- a/drivers/misc/Makefile
> +++ b/drivers/misc/Makefile
> @@ -5,15 +5,9 @@ obj- := misc.o # Dummy rule to force built-in.o to be made
>
> obj-$(CONFIG_IBM_ASM) += ibmasm/
> obj-$(CONFIG_HDPU_FEATURES) += hdpuftrs/
> -obj-$(CONFIG_ASUS_LAPTOP) += asus-laptop.o
> -obj-$(CONFIG_EEEPC_LAPTOP) += eeepc-laptop.o
> -obj-$(CONFIG_MSI_LAPTOP) += msi-laptop.o
> -obj-$(CONFIG_COMPAL_LAPTOP) += compal-laptop.o
> -obj-$(CONFIG_ACER_WMI) += acer-wmi.o
> obj-$(CONFIG_ATMEL_PWM) += atmel_pwm.o
> obj-$(CONFIG_ATMEL_SSC) += atmel-ssc.o
> obj-$(CONFIG_ATMEL_TCLIB) += atmel_tclib.o
> -obj-$(CONFIG_HP_WMI) += hp-wmi.o
> obj-$(CONFIG_ICS932S401) += ics932s401.o
> obj-$(CONFIG_TC1100_WMI) += tc1100-wmi.o
> obj-$(CONFIG_LKDTM) += lkdtm.o
> @@ -21,12 +15,7 @@ obj-$(CONFIG_TIFM_CORE) += tifm_core.o
> obj-$(CONFIG_TIFM_7XX1) += tifm_7xx1.o
> obj-$(CONFIG_PHANTOM) += phantom.o
> obj-$(CONFIG_SGI_IOC4) += ioc4.o
> -obj-$(CONFIG_SONY_LAPTOP) += sony-laptop.o
> -obj-$(CONFIG_THINKPAD_ACPI) += thinkpad_acpi.o
> -obj-$(CONFIG_FUJITSU_LAPTOP) += fujitsu-laptop.o
> -obj-$(CONFIG_PANASONIC_LAPTOP) += panasonic-laptop.o
> obj-$(CONFIG_EEPROM_93CX6) += eeprom_93cx6.o
> -obj-$(CONFIG_INTEL_MENLOW) += intel_menlow.o
> obj-$(CONFIG_ENCLOSURE_SERVICES) += enclosure.o
> obj-$(CONFIG_KGDB_TESTS) += kgdbts.o
> obj-$(CONFIG_SGI_XP) += sgi-xp/

You move 12 files but delete 11 lines.

Also - where are the new Makefile?

Sam