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

From: Sam Ravnborg <[email-masked]>
Date: Fri, 28 Nov 2008 23:35:33 +0100

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 <[email-masked]>
> 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 <[email-masked]>
> ---
> 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