All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hans de Goede <hdegoede@redhat.com>
To: Darren Hart <dvhart@infradead.org>,
	"Rafael J. Wysocki" <rjw@rjwysocki.net>
Cc: "Ben Skeggs" <bskeggs@redhat.com>,
	"Azael Avalos" <coproscefalo@gmail.com>,
	"Corentin Chary" <corentin.chary@gmail.com>,
	"Lee Chun-Yi" <jlee@suse.com>,
	"Cezary Jackiewicz" <cezary.jackiewicz@gmail.com>,
	"Matthew Garrett" <mjg59@srcf.ucam.org>,
	"Pali Rohár" <pali.rohar@gmail.com>,
	"Ike Panhc" <ike.pan@canonical.com>,
	"Anisse Astier" <anisse@astier.eu>,
	"Mattia Dongili" <malattia@linux.it>,
	"Henrique de Moraes Holschuh" <ibm-acpi@hmh.eng.br>,
	platform-driver-x86@vger.kernel.org,
	ibm-acpi-devel@lists.sourceforge.net,
	acpi4asus-user@lists.sourceforge.net,
	dri-devel@lists.freedesktop.org, "Aaron Lu" <aaron.lu@intel.com>,
	linux-acpi@vger.kernel.org, "Hans de Goede" <hdegoede@redhat.com>
Subject: [PATCH v2 06/32] acpi-video-detect: video: Make video_detect code part of the video module
Date: Fri, 12 Jun 2015 13:23:25 +0200	[thread overview]
Message-ID: <1434108231-12323-7-git-send-email-hdegoede@redhat.com> (raw)
In-Reply-To: <1434108231-12323-1-git-send-email-hdegoede@redhat.com>

This is a preparation patch for the backlight interface selection logic
cleanup, there are 2 reasons to not always build the video_detect code
into the kernel:

1) In order for the video_detect.c to also deal with / select native
backlight interfaces on win8 systems, instead of doing this in video.c
where it does not belong, video_detect.c needs to call into the backlight
class code. Which cannot be done if it is builtin and the blacklight class
is not.

2) Currently all the platform/x86 drivers which have quirks to prefer
the vendor driver over acpi-video call acpi_video_unregister_backlight()
to remove the acpi-video backlight interface, this logic really belongs
in video_detect.c, which will cause video_detect.c to depend on symbols of
video.c and video.c already depends on video_detect.c symbols, so they
really need to be a single module.

Note that this commits make 2 changes so as to maintain 100% kernel
commandline compatibility:

1) The __setup call for the acpi_backlight= handling is moved to
   acpi/util.c as __setup may only be used by code which is alwasy builtin
2) video.c is renamed to acpi_video.c so that it can be combined with
   video_detect.c into video.ko

This commit also makes changes to drivers/platform/x86/Kconfig to ensure
that drivers which use acpi_video_backlight_support() from video_detect.c,
will not be built-in when acpi_video is not built in. This also changes
some "select" uses to "depends on" to avoid dependency loops.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
Changes in v2:
-mv __setup call to utils.c and rename video.c to acpi_video.c so to
 maintain 100% kernel commandline compatibility
---
 drivers/acpi/Makefile                  |  5 ++---
 drivers/acpi/{video.c => acpi_video.c} |  2 +-
 drivers/acpi/utils.c                   | 15 +++++++++++++++
 drivers/acpi/video_detect.c            | 35 ++++++++++++----------------------
 drivers/platform/x86/Kconfig           | 21 +++++++++++++++-----
 include/linux/acpi.h                   |  1 +
 6 files changed, 47 insertions(+), 32 deletions(-)
 rename drivers/acpi/{video.c => acpi_video.c} (99%)

diff --git a/drivers/acpi/Makefile b/drivers/acpi/Makefile
index 8a063e2..73d840b 100644
--- a/drivers/acpi/Makefile
+++ b/drivers/acpi/Makefile
@@ -52,9 +52,6 @@ acpi-$(CONFIG_X86)		+= acpi_cmos_rtc.o
 acpi-$(CONFIG_DEBUG_FS)		+= debugfs.o
 acpi-$(CONFIG_ACPI_NUMA)	+= numa.o
 acpi-$(CONFIG_ACPI_PROCFS_POWER) += cm_sbs.o
-ifdef CONFIG_ACPI_VIDEO
-acpi-y				+= video_detect.o
-endif
 acpi-y				+= acpi_lpat.o
 acpi-$(CONFIG_ACPI_GENERIC_GSI) += gsi.o
 
@@ -95,3 +92,5 @@ obj-$(CONFIG_ACPI_EXTLOG)	+= acpi_extlog.o
 obj-$(CONFIG_PMIC_OPREGION)	+= pmic/intel_pmic.o
 obj-$(CONFIG_CRC_PMIC_OPREGION) += pmic/intel_pmic_crc.o
 obj-$(CONFIG_XPOWER_PMIC_OPREGION) += pmic/intel_pmic_xpower.o
+
+video-objs			+= acpi_video.o video_detect.o
diff --git a/drivers/acpi/video.c b/drivers/acpi/acpi_video.c
similarity index 99%
rename from drivers/acpi/video.c
rename to drivers/acpi/acpi_video.c
index 518f0e1..6249968 100644
--- a/drivers/acpi/video.c
+++ b/drivers/acpi/acpi_video.c
@@ -43,7 +43,7 @@
 #include <acpi/video.h>
 #include <asm/uaccess.h>
 
-#include "internal.h"
+#define PREFIX "ACPI: "
 
 #define ACPI_VIDEO_BUS_NAME		"Video Bus"
 #define ACPI_VIDEO_DEVICE_NAME		"Video Device"
diff --git a/drivers/acpi/utils.c b/drivers/acpi/utils.c
index cd49a39..67c548a 100644
--- a/drivers/acpi/utils.c
+++ b/drivers/acpi/utils.c
@@ -712,3 +712,18 @@ bool acpi_check_dsm(acpi_handle handle, const u8 *uuid, int rev, u64 funcs)
 	return false;
 }
 EXPORT_SYMBOL(acpi_check_dsm);
+
+/*
+ * acpi_backlight= handling, this is done here rather then in video_detect.c
+ * because __setup cannot be used in modules.
+ */
+char acpi_video_backlight_string[16];
+EXPORT_SYMBOL(acpi_video_backlight_string);
+
+static int __init acpi_backlight(char *str)
+{
+	strlcpy(acpi_video_backlight_string, str,
+		sizeof(acpi_video_backlight_string));
+	return 1;
+}
+__setup("acpi_backlight=", acpi_backlight);
diff --git a/drivers/acpi/video_detect.c b/drivers/acpi/video_detect.c
index 026376d..9af6768 100644
--- a/drivers/acpi/video_detect.c
+++ b/drivers/acpi/video_detect.c
@@ -32,16 +32,23 @@
 #include <linux/export.h>
 #include <linux/acpi.h>
 #include <linux/dmi.h>
+#include <linux/module.h>
 #include <linux/pci.h>
 
-#include "internal.h"
-
 ACPI_MODULE_NAME("video");
 #define _COMPONENT		ACPI_VIDEO_COMPONENT
 
 static long acpi_video_support;
 static bool acpi_video_caps_checked;
 
+static void acpi_video_parse_cmdline(void)
+{
+	if (!strcmp("vendor", acpi_video_backlight_string))
+		acpi_video_support |= ACPI_VIDEO_BACKLIGHT_FORCE_VENDOR;
+	if (!strcmp("video", acpi_video_backlight_string))
+		acpi_video_support |= ACPI_VIDEO_BACKLIGHT_FORCE_VIDEO;
+}
+
 static acpi_status
 find_video(acpi_handle handle, u32 lvl, void *context, void **rv)
 {
@@ -174,8 +181,10 @@ static void acpi_video_caps_check(void)
 	 * We must check whether the ACPI graphics device is physically plugged
 	 * in. Therefore this must be called after binding PCI and ACPI devices
 	 */
-	if (!acpi_video_caps_checked)
+	if (!acpi_video_caps_checked) {
+		acpi_video_parse_cmdline();
 		acpi_video_get_capabilities(NULL);
+	}
 }
 
 /* Promote the vendor interface instead of the generic video module.
@@ -212,23 +221,3 @@ int acpi_video_backlight_support(void)
 	return acpi_video_support & ACPI_VIDEO_BACKLIGHT;
 }
 EXPORT_SYMBOL(acpi_video_backlight_support);
-
-/*
- * Use acpi_backlight=vendor/video to force that backlight switching
- * is processed by vendor specific acpi drivers or video.ko driver.
- */
-static int __init acpi_backlight(char *str)
-{
-	if (str == NULL || *str == '\0')
-		return 1;
-	else {
-		if (!strcmp("vendor", str))
-			acpi_video_support |=
-				ACPI_VIDEO_BACKLIGHT_FORCE_VENDOR;
-		if (!strcmp("video", str))
-			acpi_video_support |=
-				ACPI_VIDEO_BACKLIGHT_FORCE_VIDEO;
-	}
-	return 1;
-}
-__setup("acpi_backlight=", acpi_backlight);
diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig
index f9f205c..909133c 100644
--- a/drivers/platform/x86/Kconfig
+++ b/drivers/platform/x86/Kconfig
@@ -71,9 +71,10 @@ config ASUS_LAPTOP
 	depends on ACPI
 	select LEDS_CLASS
 	select NEW_LEDS
-	select BACKLIGHT_CLASS_DEVICE
+	depends on BACKLIGHT_CLASS_DEVICE
 	depends on INPUT
 	depends on RFKILL || RFKILL = n
+	depends on ACPI_VIDEO || ACPI_VIDEO = n
 	select INPUT_SPARSEKMAP
 	select INPUT_POLLDEV
 	---help---
@@ -95,6 +96,7 @@ config DELL_LAPTOP
 	depends on X86
 	depends on DCDBAS
 	depends on BACKLIGHT_CLASS_DEVICE
+	depends on ACPI_VIDEO || ACPI_VIDEO = n
 	depends on RFKILL || RFKILL = n
 	depends on SERIO_I8042
 	select POWER_SUPPLY
@@ -109,6 +111,7 @@ config DELL_WMI
 	tristate "Dell WMI extras"
 	depends on ACPI_WMI
 	depends on INPUT
+	depends on ACPI_VIDEO || ACPI_VIDEO = n
 	select INPUT_SPARSEKMAP
 	---help---
 	  Say Y here if you want to support WMI-based hotkeys on Dell laptops.
@@ -144,6 +147,7 @@ config FUJITSU_LAPTOP
 	depends on ACPI
 	depends on INPUT
 	depends on BACKLIGHT_CLASS_DEVICE
+	depends on ACPI_VIDEO || ACPI_VIDEO = n
 	depends on LEDS_CLASS || LEDS_CLASS=n
 	---help---
 	  This is a driver for laptops built by Fujitsu:
@@ -247,6 +251,7 @@ config MSI_LAPTOP
 	tristate "MSI Laptop Extras"
 	depends on ACPI
 	depends on BACKLIGHT_CLASS_DEVICE
+	depends on ACPI_VIDEO || ACPI_VIDEO = n
 	depends on RFKILL
 	depends on INPUT && SERIO_I8042
 	select INPUT_SPARSEKMAP
@@ -280,6 +285,7 @@ config COMPAL_LAPTOP
 	tristate "Compal (and others) Laptop Extras"
 	depends on ACPI
 	depends on BACKLIGHT_CLASS_DEVICE
+	depends on ACPI_VIDEO || ACPI_VIDEO = n
 	depends on RFKILL
 	depends on HWMON
 	depends on POWER_SUPPLY
@@ -296,7 +302,8 @@ config COMPAL_LAPTOP
 config SONY_LAPTOP
 	tristate "Sony Laptop Extras"
 	depends on ACPI
-	select BACKLIGHT_CLASS_DEVICE
+	depends on ACPI_VIDEO || ACPI_VIDEO = n
+	depends on BACKLIGHT_CLASS_DEVICE
 	depends on INPUT
 	depends on RFKILL
 	  ---help---
@@ -321,6 +328,7 @@ config IDEAPAD_LAPTOP
 	depends on RFKILL && INPUT
 	depends on SERIO_I8042
 	depends on BACKLIGHT_CLASS_DEVICE
+	depends on ACPI_VIDEO || ACPI_VIDEO = n
 	select INPUT_SPARSEKMAP
 	help
 	  This is a driver for Lenovo IdeaPad netbooks contains drivers for
@@ -331,8 +339,8 @@ config THINKPAD_ACPI
 	depends on ACPI
 	depends on INPUT
 	depends on RFKILL || RFKILL = n
-	select BACKLIGHT_LCD_SUPPORT
-	select BACKLIGHT_CLASS_DEVICE
+	depends on ACPI_VIDEO || ACPI_VIDEO = n
+	depends on BACKLIGHT_CLASS_DEVICE
 	select HWMON
 	select NVRAM
 	select NEW_LEDS
@@ -500,8 +508,9 @@ config EEEPC_LAPTOP
 	depends on ACPI
 	depends on INPUT
 	depends on RFKILL || RFKILL = n
+	depends on ACPI_VIDEO || ACPI_VIDEO = n
 	depends on HOTPLUG_PCI
-	select BACKLIGHT_CLASS_DEVICE
+	depends on BACKLIGHT_CLASS_DEVICE
 	select HWMON
 	select LEDS_CLASS
 	select NEW_LEDS
@@ -587,6 +596,7 @@ config MSI_WMI
 	depends on ACPI_WMI
 	depends on INPUT
 	depends on BACKLIGHT_CLASS_DEVICE
+	depends on ACPI_VIDEO || ACPI_VIDEO = n
 	select INPUT_SPARSEKMAP
 	help
 	 Say Y here if you want to support WMI-based hotkeys on MSI laptops.
@@ -824,6 +834,7 @@ config MXM_WMI
 config INTEL_OAKTRAIL
 	tristate "Intel Oaktrail Platform Extras"
 	depends on ACPI
+	depends on ACPI_VIDEO || ACPI_VIDEO = n
 	depends on RFKILL && BACKLIGHT_CLASS_DEVICE && ACPI
 	---help---
 	  Intel Oaktrail platform need this driver to provide interfaces to
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index 913a1c1..f097c0a 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -243,6 +243,7 @@ extern bool wmi_has_guid(const char *guid);
 #define ACPI_VIDEO_OUTPUT_SWITCHING_DMI_VENDOR		0x0400
 #define ACPI_VIDEO_OUTPUT_SWITCHING_DMI_VIDEO		0x0800
 
+extern char acpi_video_backlight_string[];
 extern long acpi_is_video_device(acpi_handle handle);
 
 #if defined(CONFIG_ACPI_VIDEO) || defined(CONFIG_ACPI_VIDEO_MODULE)
-- 
2.4.2

  parent reply	other threads:[~2015-06-12 11:23 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-12 11:23 [PATCH v2 00/32] acpi-video: Rewrite backlight interface selection logic Hans de Goede
2015-06-12 11:23 ` [PATCH v2 01/32] apple-gmux: Stop using acpi_video_dmi_demote_vendor() Hans de Goede
2015-06-12 11:23 ` [PATCH v2 02/32] acpi-video-detect: Remove the unused acpi_video_dmi_demote_vendor() function Hans de Goede
2015-06-12 11:23 ` [PATCH v2 03/32] acpi-video-detect: Make acpi_video_get_capabilities a private function Hans de Goede
2015-06-12 11:23 ` [PATCH v2 04/32] acpi-video-detect: Move acpi_is_video_device() to acpi/scan.c Hans de Goede
2015-06-12 11:23 ` [PATCH v2 05/32] acpi-video-detect: Move acpi_osi_is_win8 to osl.c Hans de Goede
2015-06-12 11:23 ` Hans de Goede [this message]
2015-06-12 11:23 ` [PATCH v2 07/32] acpi-video-detect: Rewrite backlight interface selection logic Hans de Goede
2015-06-12 11:23 ` [PATCH v2 08/32] acpi-video-detect: Unregister acpi_video backlight when dmi quirks are added Hans de Goede
2015-06-12 11:23 ` [PATCH v2 09/32] drm: i915: Port to new backlight interface selection API Hans de Goede
2015-06-12 11:23 ` [PATCH v2 10/32] acpi-video: " Hans de Goede
2015-06-12 11:23 ` [PATCH v2 11/32] acpi-video: Move backlight notifier to video_detect.c Hans de Goede
2015-06-12 11:23 ` [PATCH v2 12/32] acpi-video: Move dmi_check_system from module_init to acpi_video_register Hans de Goede
2015-06-12 11:23 ` [PATCH v2 13/32] acpi-video: Fix acpi_video _register vs _unregister_backlight race Hans de Goede
2015-06-12 11:23 ` [PATCH v2 14/32] acer-wmi: Port to new backlight interface selection API Hans de Goede
2015-06-12 11:23 ` [PATCH v2 15/32] apple-gmux: " Hans de Goede
2015-06-12 11:23 ` [PATCH v2 16/32] asus-laptop: " Hans de Goede
2015-06-12 11:23 ` [PATCH v2 17/32] asus-wmi: " Hans de Goede
2015-06-12 11:23 ` [PATCH v2 18/32] compal-laptop: " Hans de Goede
2015-06-12 11:23 ` [PATCH v2 19/32] dell-laptop: " Hans de Goede
2015-06-12 11:23 ` [PATCH v2 20/32] dell-wmi: " Hans de Goede
2015-06-12 11:23 ` [PATCH v2 21/32] eeepc-laptop: " Hans de Goede
2015-06-12 11:23 ` [PATCH v2 22/32] fujitsu-laptop: " Hans de Goede
2015-06-12 11:23 ` [PATCH v2 23/32] ideapad-laptop: " Hans de Goede
2015-06-12 11:23 ` [PATCH v2 24/32] intel-oaktrail: " Hans de Goede
2015-06-12 11:23 ` [PATCH v2 25/32] msi-laptop: " Hans de Goede
2015-06-12 11:23 ` [PATCH v2 26/32] msi-wmi: " Hans de Goede
2015-06-12 11:23 ` [PATCH v2 27/32] samsung-laptop: " Hans de Goede
2015-06-12 11:23 ` [PATCH v2 28/32] sony-laptop: " Hans de Goede
2015-06-12 11:23 ` [PATCH v2 29/32] thinkpad-acpi: " Hans de Goede
2015-06-12 11:23 ` [PATCH v2 30/32] toshiba-acpi: " Hans de Goede
2015-06-14  3:15   ` Azael Avalos
2015-06-16 12:53     ` Hans de Goede
2015-06-12 11:23 ` [PATCH v2 31/32] acpi-video-detect: Remove old API Hans de Goede
2015-06-12 11:23 ` [PATCH v2 32/32] acpi-video: Make acpi_video_unregister_backlight() private Hans de Goede
2015-06-15 23:22 ` [PATCH v2 00/32] acpi-video: Rewrite backlight interface selection logic Rafael J. Wysocki
2015-06-17  3:39   ` Darren Hart
2015-06-17  9:36     ` Rafael J. Wysocki
2015-06-18 21:05       ` Darren Hart

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1434108231-12323-7-git-send-email-hdegoede@redhat.com \
    --to=hdegoede@redhat.com \
    --cc=aaron.lu@intel.com \
    --cc=acpi4asus-user@lists.sourceforge.net \
    --cc=anisse@astier.eu \
    --cc=bskeggs@redhat.com \
    --cc=cezary.jackiewicz@gmail.com \
    --cc=coproscefalo@gmail.com \
    --cc=corentin.chary@gmail.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=dvhart@infradead.org \
    --cc=ibm-acpi-devel@lists.sourceforge.net \
    --cc=ibm-acpi@hmh.eng.br \
    --cc=ike.pan@canonical.com \
    --cc=jlee@suse.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=malattia@linux.it \
    --cc=mjg59@srcf.ucam.org \
    --cc=pali.rohar@gmail.com \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=rjw@rjwysocki.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.