mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 00:28:52 +02:00 
			
		
		
		
	 53dbee4926
			
		
	
	
		53dbee4926
		
	
	
	
	
		
			
			UAPI Changes: - Fix invalid IN_FORMATS blob when plane->format_mod_supported is NULL. Cross-subsystem Changes: - Assorted dt bindings updates. - Fix vga16fb vga checking on x86. - Fix extra semicolon in rwsem.h's _down_write_nest_lock. - Assorted small fixes to agp and fbdev drivers. - Fix oops in creating a udmabuf with 0 pages. - Hot-unplug firmware fb devices on forced removal - Reqquest memory region in simplefb and simpledrm, and don't make the ioresource as busy. Core Changes: - Mock a drm_plane in drm-plane-helper selftest. - Assorted bug fixes to device logging, dbi. - Use DP helper for sink count in mst. - Assorted documentation fixes. - Assorted small fixes. - Move DP headers to drm/dp, and add a drm dp helper module. - Move the buddy allocator from i915 to common drm. - Add simple pci and platform module init macros to remove a lot of boilerplate from some drivers. - Support microsoft extension for HMDs and specialized monitors. - Improve edid parser's deep color handling. - Add type 7 timing support to edid parser. - Add a weak backpointer to the ttm_bo from ttm_resource - Add 3 eDP panels. Driver Changes: - Add support for HDMI and JZ4780 to ingenic. - Add support for higher DP/eDP bitrates to nouveau. - Assorted driver fixes to tilcdc, vmwgfx, sn65dsi83, meson, stm, panfrost, v3d, gma500, vc4, virtio, mgag200, ast, radeon, amdgpu, nouveau, various bridge drivers. - Convert and revert exynos dsi support to bridge driver. - Add vcc supply regulator support for sn65dsi83. - More conversion of bridge/chipone-icn6211 to atomic. - Remove conflicting fb's from stm, and add support for new hw version. - Add device link in parade-ps8640 to fix suspend/resume. - Update Boe-tv110c9m init sequence. - Add wide screen support to AST2600. - Fix omapdrm implicit dma_buf fencing. - Add support for multiple overlay planes to vkms. - Convert bridge/anx7625 to atomic, add HDCP support, add eld support for audio, and fix HPD. - Add driver for ChromeOS privacy screen. - Handover display from firmware to vc4 more gracefully, and support nomodeset. - Add flexible and ycbcr pixel formats to stm/ltdc. - Convert exynos mipi dsi to atomic. - Add initial dual core group GPUs support to panfrost. - No longer add exclusive fence in amdgpu as shared fence. - Add CSC and full range supoprt to vc4. - Shutdown the display on system shutdown and unbind. - Add Multi-Inno Technology MI0700S4T-6 simple panel. -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEuXvWqAysSYEJGuVH/lWMcqZwE8MFAmHyiHMACgkQ/lWMcqZw E8OLfQ//Xd1njt93nRGoQofuQkz23n2AUTAnmbwzQKcvmat8ugXbRJ5JaVQJrFpu OQEYM46eZIyu2LekMiz4HgPK8CjS156QJ1WtltUFglOY1KLejb6HF5boBYxLkIC7 wLhkaRiwed4t7WOTrftgzpH5FNj/7Vi+Hav9l8rYRC74sWanEZNGBJL2OD9GRdlU 3tlmY8oXVAN8YDD/43Cv+foOTzLS/COI7JCFgFRhfzoFss3EVR061u55uOq18STB UI29NusqX7/K6hQAWCKl0EQBEZWMR02/dgu3ZpOEHHAa96RgHxIuRYsIO9kvGgiF VyW0EW6AyD/KsOSBYnsfUqkFfNchx9Xb8ZDjIhHUYxPsxe4iUJneCrdIKEmLWgSd 1bVNrltLJKBQARW4Whpy/gaiKV8RD8YVJobA/+/COeCUXCnNAT43O9aJmix/7253 Q7ORXTss5WRpuYswMWmObebf8p3IhFjTvlzzenXynl7mkaohGzHPf6SUSUZbJ8Df PZCh17McwIEQ1BtYeegeAGM6s8lrv5+yZaY4bnkQsJNOHeab0cPqmQ8/s+hUeRtp 3VDRVhkgzz2XuTaiKia0gWcAQbdZ2KornkP4QMyDH7w0+6bsuJnNXe4L1XY9lt4J 5v411FaD61FbGDhu5PFtYI7+ZlgM0h5sqlhVkUEzbckzTF3SC9c= =IMtm -----END PGP SIGNATURE----- Merge tag 'drm-misc-next-2022-01-27' of git://anongit.freedesktop.org/drm/drm-misc into drm-next [airlied: add two missing Kconfig] drm-misc-next for v5.18: UAPI Changes: - Fix invalid IN_FORMATS blob when plane->format_mod_supported is NULL. Cross-subsystem Changes: - Assorted dt bindings updates. - Fix vga16fb vga checking on x86. - Fix extra semicolon in rwsem.h's _down_write_nest_lock. - Assorted small fixes to agp and fbdev drivers. - Fix oops in creating a udmabuf with 0 pages. - Hot-unplug firmware fb devices on forced removal - Reqquest memory region in simplefb and simpledrm, and don't make the ioresource as busy. Core Changes: - Mock a drm_plane in drm-plane-helper selftest. - Assorted bug fixes to device logging, dbi. - Use DP helper for sink count in mst. - Assorted documentation fixes. - Assorted small fixes. - Move DP headers to drm/dp, and add a drm dp helper module. - Move the buddy allocator from i915 to common drm. - Add simple pci and platform module init macros to remove a lot of boilerplate from some drivers. - Support microsoft extension for HMDs and specialized monitors. - Improve edid parser's deep color handling. - Add type 7 timing support to edid parser. - Add a weak backpointer to the ttm_bo from ttm_resource - Add 3 eDP panels. Driver Changes: - Add support for HDMI and JZ4780 to ingenic. - Add support for higher DP/eDP bitrates to nouveau. - Assorted driver fixes to tilcdc, vmwgfx, sn65dsi83, meson, stm, panfrost, v3d, gma500, vc4, virtio, mgag200, ast, radeon, amdgpu, nouveau, various bridge drivers. - Convert and revert exynos dsi support to bridge driver. - Add vcc supply regulator support for sn65dsi83. - More conversion of bridge/chipone-icn6211 to atomic. - Remove conflicting fb's from stm, and add support for new hw version. - Add device link in parade-ps8640 to fix suspend/resume. - Update Boe-tv110c9m init sequence. - Add wide screen support to AST2600. - Fix omapdrm implicit dma_buf fencing. - Add support for multiple overlay planes to vkms. - Convert bridge/anx7625 to atomic, add HDCP support, add eld support for audio, and fix HPD. - Add driver for ChromeOS privacy screen. - Handover display from firmware to vc4 more gracefully, and support nomodeset. - Add flexible and ycbcr pixel formats to stm/ltdc. - Convert exynos mipi dsi to atomic. - Add initial dual core group GPUs support to panfrost. - No longer add exclusive fence in amdgpu as shared fence. - Add CSC and full range supoprt to vc4. - Shutdown the display on system shutdown and unbind. - Add Multi-Inno Technology MI0700S4T-6 simple panel. Signed-off-by: Dave Airlie <airlied@redhat.com> From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/456a23c6-7324-7543-0c45-751f30ef83f7@linux.intel.com
		
			
				
	
	
		
			106 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| // SPDX-License-Identifier: MIT
 | |
| /*
 | |
|  * Copyright (C) 2020 Red Hat, Inc.
 | |
|  *
 | |
|  * Authors:
 | |
|  * Hans de Goede <hdegoede@redhat.com>
 | |
|  */
 | |
| 
 | |
| #include <linux/acpi.h>
 | |
| #include <drm/drm_privacy_screen_machine.h>
 | |
| 
 | |
| #ifdef CONFIG_X86
 | |
| static struct drm_privacy_screen_lookup arch_lookup;
 | |
| 
 | |
| struct arch_init_data {
 | |
| 	struct drm_privacy_screen_lookup lookup;
 | |
| 	bool (*detect)(void);
 | |
| };
 | |
| 
 | |
| #if IS_ENABLED(CONFIG_THINKPAD_ACPI)
 | |
| static acpi_status __init acpi_set_handle(acpi_handle handle, u32 level,
 | |
| 					  void *context, void **return_value)
 | |
| {
 | |
| 	*(acpi_handle *)return_value = handle;
 | |
| 	return AE_CTRL_TERMINATE;
 | |
| }
 | |
| 
 | |
| static bool __init detect_thinkpad_privacy_screen(void)
 | |
| {
 | |
| 	union acpi_object obj = { .type = ACPI_TYPE_INTEGER };
 | |
| 	struct acpi_object_list args = { .count = 1, .pointer = &obj, };
 | |
| 	acpi_handle ec_handle = NULL;
 | |
| 	unsigned long long output;
 | |
| 	acpi_status status;
 | |
| 
 | |
| 	if (acpi_disabled)
 | |
| 		return false;
 | |
| 
 | |
| 	/* Get embedded-controller handle */
 | |
| 	status = acpi_get_devices("PNP0C09", acpi_set_handle, NULL, &ec_handle);
 | |
| 	if (ACPI_FAILURE(status) || !ec_handle)
 | |
| 		return false;
 | |
| 
 | |
| 	/* And call the privacy-screen get-status method */
 | |
| 	status = acpi_evaluate_integer(ec_handle, "HKEY.GSSS", &args, &output);
 | |
| 	if (ACPI_FAILURE(status))
 | |
| 		return false;
 | |
| 
 | |
| 	return (output & 0x10000) ? true : false;
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #if IS_ENABLED(CONFIG_CHROMEOS_PRIVACY_SCREEN)
 | |
| static bool __init detect_chromeos_privacy_screen(void)
 | |
| {
 | |
| 	return acpi_dev_present("GOOG0010", NULL, -1);
 | |
| }
 | |
| #endif
 | |
| 
 | |
| static const struct arch_init_data arch_init_data[] __initconst = {
 | |
| #if IS_ENABLED(CONFIG_THINKPAD_ACPI)
 | |
| 	{
 | |
| 		.lookup = {
 | |
| 			.dev_id = NULL,
 | |
| 			.con_id = NULL,
 | |
| 			.provider = "privacy_screen-thinkpad_acpi",
 | |
| 		},
 | |
| 		.detect = detect_thinkpad_privacy_screen,
 | |
| 	},
 | |
| #endif
 | |
| #if IS_ENABLED(CONFIG_CHROMEOS_PRIVACY_SCREEN)
 | |
| 	{
 | |
| 		.lookup = {
 | |
| 			.dev_id = NULL,
 | |
| 			.con_id = NULL,
 | |
| 			.provider = "privacy_screen-GOOG0010:00",
 | |
| 		},
 | |
| 		.detect = detect_chromeos_privacy_screen,
 | |
| 	},
 | |
| #endif
 | |
| };
 | |
| 
 | |
| void __init drm_privacy_screen_lookup_init(void)
 | |
| {
 | |
| 	int i;
 | |
| 
 | |
| 	for (i = 0; i < ARRAY_SIZE(arch_init_data); i++) {
 | |
| 		if (!arch_init_data[i].detect())
 | |
| 			continue;
 | |
| 
 | |
| 		pr_info("Found '%s' privacy-screen provider\n",
 | |
| 			arch_init_data[i].lookup.provider);
 | |
| 
 | |
| 		/* Make a copy because arch_init_data is __initconst */
 | |
| 		arch_lookup = arch_init_data[i].lookup;
 | |
| 		drm_privacy_screen_lookup_add(&arch_lookup);
 | |
| 		break;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| void drm_privacy_screen_lookup_exit(void)
 | |
| {
 | |
| 	if (arch_lookup.provider)
 | |
| 		drm_privacy_screen_lookup_remove(&arch_lookup);
 | |
| }
 | |
| #endif /* ifdef CONFIG_X86 */
 |