xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Owen Smith <owen.smith@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Owen Smith <owen.smith@citrix.com>
Subject: [PATCH] Add optional ACPI device for Windows Continuum
Date: Wed, 13 Jul 2016 10:16:56 +0100	[thread overview]
Message-ID: <1468401416-3116-1-git-send-email-owen.smith@citrix.com> (raw)

Windows 10 supports a specific ACPI device for handling the
switch between tablet mode and desktop mode. The meer existance
of this device is the mimimum to allow tablet/desktop mode to
be switched.
Tablet mode referes to the "undocked" state where all applications
are forced full screen and additional touch screen elements are
added, such as touch keyboard, larger icons and menus, and touch
gestures for ease of use.

Signed-off-by: Owen Smith <owen.smith@citrix.com>
---
 tools/firmware/hvmloader/acpi/Makefile      |  4 ++--
 tools/firmware/hvmloader/acpi/build.c       | 11 ++++++++++
 tools/firmware/hvmloader/acpi/ssdt_conv.asl | 31 +++++++++++++++++++++++++++++
 tools/libxl/libxl_types.idl                 |  1 +
 tools/libxl/xl_cmdimpl.c                    |  1 +
 5 files changed, 46 insertions(+), 2 deletions(-)
 create mode 100644 tools/firmware/hvmloader/acpi/ssdt_conv.asl

diff --git a/tools/firmware/hvmloader/acpi/Makefile b/tools/firmware/hvmloader/acpi/Makefile
index d3e882a..d75c7af 100644
--- a/tools/firmware/hvmloader/acpi/Makefile
+++ b/tools/firmware/hvmloader/acpi/Makefile
@@ -25,7 +25,7 @@ CFLAGS += $(CFLAGS_xeninclude)
 vpath iasl $(PATH)
 all: acpi.a
 
-ssdt_s3.h ssdt_s4.h ssdt_pm.h ssdt_tpm.h: %.h: %.asl iasl
+ssdt_s3.h ssdt_s4.h ssdt_conv.h ssdt_pm.h ssdt_tpm.h: %.h: %.asl iasl
 	iasl -vs -p $* -tc $<
 	sed -e 's/AmlCode/$*/g' $*.hex >$@
 	rm -f $*.hex $*.aml
@@ -56,7 +56,7 @@ iasl:
 	@echo 
 	@exit 1
 
-build.o: ssdt_s3.h ssdt_s4.h ssdt_pm.h ssdt_tpm.h
+build.o: ssdt_s3.h ssdt_s4.h ssdt_conv.h ssdt_pm.h ssdt_tpm.h
 
 acpi.a: $(OBJS)
 	$(AR) rc $@ $(OBJS)
diff --git a/tools/firmware/hvmloader/acpi/build.c b/tools/firmware/hvmloader/acpi/build.c
index 1f7103e..6485ac8 100644
--- a/tools/firmware/hvmloader/acpi/build.c
+++ b/tools/firmware/hvmloader/acpi/build.c
@@ -18,6 +18,7 @@
 #include "acpi2_0.h"
 #include "ssdt_s3.h"
 #include "ssdt_s4.h"
+#include "ssdt_conv.h"
 #include "ssdt_tpm.h"
 #include "ssdt_pm.h"
 #include "../config.h"
@@ -398,6 +399,16 @@ static int construct_secondary_tables(unsigned long *table_ptrs,
         printf("S4 disabled\n");
     }
 
+    if ( !strncmp(xenstore_read("platform/acpi_conv", "1"), "1", 1) )
+    {
+        ssdt = mem_alloc(sizeof(ssdt_conv), 16);
+        if (!ssdt) return -1;
+        memcpy(ssdt, ssdt_conv, sizeof(ssdt_conv));
+        table_ptrs[nr_tables++] = (unsigned long)ssdt;
+    } else {
+        printf("Conv disabled\n");
+    }
+
     /* TPM TCPA and SSDT. */
     tis_hdr = (uint16_t *)0xFED40F00;
     if ( (tis_hdr[0] == tis_signature[0]) &&
diff --git a/tools/firmware/hvmloader/acpi/ssdt_conv.asl b/tools/firmware/hvmloader/acpi/ssdt_conv.asl
new file mode 100644
index 0000000..6e20340
--- /dev/null
+++ b/tools/firmware/hvmloader/acpi/ssdt_conv.asl
@@ -0,0 +1,31 @@
+/*
+ * ssdt_conv.asl
+ *
+ * Copyright (c) 2015  Citrix Systems, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; If not, see <http://www.gnu.org/licenses/>.
+ */
+
+DefinitionBlock ("SSDT_CONV.aml", "SSDT", 2, "Xen", "HVM", 0)
+{
+    Device(CONV)
+    {
+        Method(_HID, 0x0, NotSerialized)
+        {
+            Return("ID9001")
+        }
+        Name(_CID, "PNP0C60")
+    }
+}
+
diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
index ef614be..01c7c61 100644
--- a/tools/libxl/libxl_types.idl
+++ b/tools/libxl/libxl_types.idl
@@ -502,6 +502,7 @@ libxl_domain_build_info = Struct("domain_build_info",[
                                        ("acpi",             libxl_defbool),
                                        ("acpi_s3",          libxl_defbool),
                                        ("acpi_s4",          libxl_defbool),
+                                       ("acpi_conv",        libxl_defbool),
                                        ("nx",               libxl_defbool),
                                        ("viridian",         libxl_defbool),
                                        ("viridian_enable",  libxl_bitmap),
diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
index d1fcfa4..2db76bf 100644
--- a/tools/libxl/xl_cmdimpl.c
+++ b/tools/libxl/xl_cmdimpl.c
@@ -1574,6 +1574,7 @@ static void parse_config_data(const char *config_source,
         xlu_cfg_get_defbool(config, "acpi", &b_info->u.hvm.acpi, 0);
         xlu_cfg_get_defbool(config, "acpi_s3", &b_info->u.hvm.acpi_s3, 0);
         xlu_cfg_get_defbool(config, "acpi_s4", &b_info->u.hvm.acpi_s4, 0);
+        xlu_cfg_get_defbool(config, "acpi_conv", &b_info->u.hvm.acpi_conv, 0);
         xlu_cfg_get_defbool(config, "nx", &b_info->u.hvm.nx, 0);
         xlu_cfg_get_defbool(config, "hpet", &b_info->u.hvm.hpet, 0);
         xlu_cfg_get_defbool(config, "vpt_align", &b_info->u.hvm.vpt_align, 0);
-- 
2.1.4


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

             reply	other threads:[~2016-07-13  9:17 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-13  9:16 Owen Smith [this message]
2016-07-14 13:21 ` [PATCH] Add optional ACPI device for Windows Continuum Andrew Cooper
2016-07-14 14:26   ` Owen Smith

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=1468401416-3116-1-git-send-email-owen.smith@citrix.com \
    --to=owen.smith@citrix.com \
    --cc=xen-devel@lists.xenproject.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).