From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org, Lan Tianyu <tianyu.lan@intel.com>,
"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
Subject: [ 32/72] ACPI: Add CMOS RTC Operation Region handler support
Date: Thu, 18 Jul 2013 22:25:49 -0700 [thread overview]
Message-ID: <20130719052602.066455677@linuxfoundation.org> (raw)
In-Reply-To: <20130719052559.852627424@linuxfoundation.org>
3.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Lan Tianyu <tianyu.lan@intel.com>
commit 2fa97feb4406c546b52e35b6b6c50cb8f63425d2 upstream.
On HP Folio 13-2000, the BIOS defines a CMOS RTC Operation Region and
the EC's _REG methord accesses that region. Thus an appropriate
address space handler must be registered for that region before the
EC driver is loaded.
Introduce a mechanism for adding CMOS RTC address space handlers.
Register an ACPI scan handler for CMOS RTC devices such that, when
a device of that kind is detected during an ACPI namespace scan, a
common CMOS RTC operation region address space handler will be
installed for it.
References: https://bugzilla.kernel.org/show_bug.cgi?id=54621
Reported-and-tested-by: Stefan Nagy <public@stefan-nagy.at>
Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/acpi/Makefile | 1
drivers/acpi/acpi_cmos_rtc.c | 92 +++++++++++++++++++++++++++++++++++++++++++
drivers/acpi/internal.h | 5 ++
drivers/acpi/scan.c | 1
4 files changed, 99 insertions(+)
--- a/drivers/acpi/Makefile
+++ b/drivers/acpi/Makefile
@@ -43,6 +43,7 @@ acpi-y += acpi_platform.o
acpi-y += power.o
acpi-y += event.o
acpi-y += sysfs.o
+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
--- /dev/null
+++ b/drivers/acpi/acpi_cmos_rtc.c
@@ -0,0 +1,92 @@
+/*
+ * ACPI support for CMOS RTC Address Space access
+ *
+ * Copyright (C) 2013, Intel Corporation
+ * Authors: Lan Tianyu <tianyu.lan@intel.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/acpi.h>
+#include <linux/device.h>
+#include <linux/err.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <asm-generic/rtc.h>
+
+#include "internal.h"
+
+#define PREFIX "ACPI: "
+
+ACPI_MODULE_NAME("cmos rtc");
+
+static const struct acpi_device_id acpi_cmos_rtc_ids[] = {
+ { "PNP0B00" },
+ { "PNP0B01" },
+ { "PNP0B02" },
+ {}
+};
+
+static acpi_status
+acpi_cmos_rtc_space_handler(u32 function, acpi_physical_address address,
+ u32 bits, u64 *value64,
+ void *handler_context, void *region_context)
+{
+ int i;
+ u8 *value = (u8 *)&value64;
+
+ if (address > 0xff || !value64)
+ return AE_BAD_PARAMETER;
+
+ if (function != ACPI_WRITE && function != ACPI_READ)
+ return AE_BAD_PARAMETER;
+
+ spin_lock_irq(&rtc_lock);
+
+ for (i = 0; i < DIV_ROUND_UP(bits, 8); ++i, ++address, ++value)
+ if (function == ACPI_READ)
+ *value = CMOS_READ(address);
+ else
+ CMOS_WRITE(*value, address);
+
+ spin_unlock_irq(&rtc_lock);
+
+ return AE_OK;
+}
+
+static int acpi_install_cmos_rtc_space_handler(struct acpi_device *adev,
+ const struct acpi_device_id *id)
+{
+ acpi_status status;
+
+ status = acpi_install_address_space_handler(adev->handle,
+ ACPI_ADR_SPACE_CMOS,
+ &acpi_cmos_rtc_space_handler,
+ NULL, NULL);
+ if (ACPI_FAILURE(status)) {
+ pr_err(PREFIX "Error installing CMOS-RTC region handler\n");
+ return -ENODEV;
+ }
+
+ return 0;
+}
+
+static void acpi_remove_cmos_rtc_space_handler(struct acpi_device *adev)
+{
+ if (ACPI_FAILURE(acpi_remove_address_space_handler(adev->handle,
+ ACPI_ADR_SPACE_CMOS, &acpi_cmos_rtc_space_handler)))
+ pr_err(PREFIX "Error removing CMOS-RTC region handler\n");
+}
+
+static struct acpi_scan_handler cmos_rtc_handler = {
+ .ids = acpi_cmos_rtc_ids,
+ .attach = acpi_install_cmos_rtc_space_handler,
+ .detach = acpi_remove_cmos_rtc_space_handler,
+};
+
+void __init acpi_cmos_rtc_init(void)
+{
+ acpi_scan_add_handler(&cmos_rtc_handler);
+}
--- a/drivers/acpi/internal.h
+++ b/drivers/acpi/internal.h
@@ -50,6 +50,11 @@ void acpi_memory_hotplug_init(void);
#else
static inline void acpi_memory_hotplug_init(void) {}
#endif
+#ifdef CONFIG_X86
+void acpi_cmos_rtc_init(void);
+#else
+static inline void acpi_cmos_rtc_init(void) {}
+#endif
void acpi_sysfs_add_hotplug_profile(struct acpi_hotplug_profile *hotplug,
const char *name);
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -2040,6 +2040,7 @@ int __init acpi_scan_init(void)
acpi_pci_link_init();
acpi_platform_init();
acpi_lpss_init();
+ acpi_cmos_rtc_init();
acpi_container_init();
acpi_memory_hotplug_init();
acpi_dock_init();
next prev parent reply other threads:[~2013-07-19 5:25 UTC|newest]
Thread overview: 87+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-19 5:25 [ 00/72] 3.10.2-stable review Greg Kroah-Hartman
2013-07-19 5:25 ` [ 01/72] CIFS use sensible file nlink values if unprovided Greg Kroah-Hartman
2013-07-19 5:25 ` [ 02/72] CIFS: Fix a deadlock when a file is reopened Greg Kroah-Hartman
2013-07-19 5:25 ` [ 03/72] rtlwifi: rtl8192cu: Add new USB ID for TP-Link TL-WN8200ND Greg Kroah-Hartman
2013-07-19 5:25 ` [ 04/72] rtlwifi: rtl8723ae: Fix typo in firmware names Greg Kroah-Hartman
2013-07-19 5:25 ` [ 05/72] rtlwifi: rtl8192cu: Fix duplicate if test Greg Kroah-Hartman
2013-07-19 5:25 ` [ 06/72] jbd2: move superblock checksum calculation to jbd2_write_superblock() Greg Kroah-Hartman
2013-07-19 5:25 ` [ 07/72] jbd2: fix theoretical race in jbd2__journal_restart Greg Kroah-Hartman
2013-07-19 5:25 ` [ 08/72] ext4: fix corruption when online resizing a fs with 1K block size Greg Kroah-Hartman
2013-07-19 5:25 ` [ 09/72] ext3,ext4: dont mess with dir_file->f_pos in htree_dirblock_to_tree() Greg Kroah-Hartman
2013-07-19 5:25 ` [ 10/72] ext4: check error return from ext4_write_inline_data_end() Greg Kroah-Hartman
2013-07-19 5:25 ` [ 11/72] pch_uart: Add uart_clk selection for the MinnowBoard Greg Kroah-Hartman
2013-07-19 5:25 ` [ 12/72] USB: option,qcserial: move Novatel Gobi1K IDs to qcserial Greg Kroah-Hartman
2013-07-19 5:25 ` [ 13/72] usb: gadget: f_mass_storage: add missing memory barrier for thread_wakeup_needed Greg Kroah-Hartman
2013-07-19 5:25 ` [ 14/72] USB: ehci-omap: Tweak PHY initialization sequence Greg Kroah-Hartman
2013-07-19 5:25 ` [ 15/72] xhci: check for failed dma pool allocation Greg Kroah-Hartman
2013-07-19 5:25 ` [ 16/72] usb: host: xhci-plat: release mem region while removing module Greg Kroah-Hartman
2013-07-19 5:25 ` [ 17/72] drivers: hv: switch to use mb() instead of smp_mb() Greg Kroah-Hartman
2013-07-19 5:25 ` [ 18/72] pcmcia: at91_cf: fix gpio_get_value in at91_cf_get_status Greg Kroah-Hartman
2013-07-19 5:25 ` [ 19/72] cgroup: fix umount vs cgroup_event_remove() race Greg Kroah-Hartman
2013-07-19 5:25 ` [ 20/72] cgroup: fix RCU accesses to task->cgroups Greg Kroah-Hartman
2013-07-19 5:25 ` [ 21/72] parisc: document the shadow registers Greg Kroah-Hartman
2013-07-19 5:25 ` [ 22/72] parisc: Fix gcc miscompilation in pa_memcpy() Greg Kroah-Hartman
2013-07-19 5:25 ` [ 23/72] slab: fix init_lock_keys Greg Kroah-Hartman
2013-07-19 5:25 ` [ 24/72] parisc: Ensure volatile space register %sr1 is not clobbered Greg Kroah-Hartman
2013-07-19 5:25 ` [ 25/72] parisc: fix LMMIO mismatch between PAT length and MASK register Greg Kroah-Hartman
2013-07-19 5:25 ` [ 26/72] parisc: optimize mtsp(0,sr) inline assembly Greg Kroah-Hartman
2013-07-19 5:25 ` [ 27/72] x86, efi: retry ExitBootServices() on failure Greg Kroah-Hartman
2013-07-19 5:25 ` [ 28/72] xen/time: remove blocked time accounting from xen "clockchip" Greg Kroah-Hartman
2013-07-19 5:25 ` [ 29/72] xen/pcifront: Deal with toolstack missing XenbusStateClosing state Greg Kroah-Hartman
2013-07-19 5:25 ` [ 30/72] genirq: Fix can_request_irq() for IRQs without an action Greg Kroah-Hartman
2013-07-19 5:25 ` [ 31/72] drivers/rtc/rtc-rv3029c2.c: fix disabling AIE irq Greg Kroah-Hartman
2013-07-19 5:25 ` Greg Kroah-Hartman [this message]
2013-07-19 5:25 ` [ 33/72] ACPI / EC: Add HP Folio 13 to ec_dmi_table in order to skip DSDT scan Greg Kroah-Hartman
2013-07-19 5:25 ` [ 34/72] ACPICA: Do not use extended sleep registers unless HW-reduced bit is set Greg Kroah-Hartman
2013-07-19 5:25 ` [ 35/72] ACPI / PM: Fix corner case in acpi_bus_update_power() Greg Kroah-Hartman
2013-07-19 5:25 ` [ 36/72] HID: apple: Add support for the 2013 Macbook Air Greg Kroah-Hartman
2013-07-19 5:25 ` [ 37/72] Input: bcm5974 - add support for the 2013 MacBook Air Greg Kroah-Hartman
2013-07-19 5:40 ` Dmitry Torokhov
2013-07-19 5:44 ` Greg Kroah-Hartman
2013-07-22 1:42 ` Greg Kroah-Hartman
2013-07-22 2:21 ` Dmitry Torokhov
2013-07-22 10:07 ` rydberg
2013-07-19 5:25 ` [ 38/72] arch: c6x: mm: include "asm/uaccess.h" to pass compiling Greg Kroah-Hartman
2013-07-19 5:25 ` [ 39/72] ocfs2: xattr: fix inlined xattr reflink Greg Kroah-Hartman
2013-07-19 5:25 ` [ 40/72] nbd: correct disconnect behavior Greg Kroah-Hartman
2013-07-19 5:25 ` [ 41/72] PCI: Finish SR-IOV VF setup before adding the device Greg Kroah-Hartman
2013-07-19 5:25 ` [ 42/72] PCI: Fix refcount issue in pci_create_root_bus() error recovery path Greg Kroah-Hartman
2013-07-19 5:26 ` [ 43/72] iwlwifi: pcie: fix race in queue unmapping Greg Kroah-Hartman
2013-07-19 5:26 ` [ 44/72] iwlwifi: pcie: wake the queue if stopped when being unmapped Greg Kroah-Hartman
2013-07-19 5:26 ` [ 45/72] ahci: Add AMD CZ SATA device ID Greg Kroah-Hartman
2013-07-19 5:26 ` [ 46/72] ahci: AHCI-mode SATA patch for Intel Coleto Creek DeviceIDs Greg Kroah-Hartman
2013-07-19 5:26 ` [ 47/72] ahci: remove pmp link online check in FBS EH Greg Kroah-Hartman
2013-07-19 5:26 ` [ 48/72] timer: Fix jiffies wrap behavior of round_jiffies_common() Greg Kroah-Hartman
2013-07-19 5:26 ` [ 49/72] Btrfs: fix estale with btrfs send Greg Kroah-Hartman
2013-07-19 5:26 ` [ 50/72] Btrfs: hold the tree mod lock in __tree_mod_log_rewind Greg Kroah-Hartman
2013-07-19 5:26 ` [ 51/72] Btrfs: only do the tree_mod_log_free_eb if this is our last ref Greg Kroah-Hartman
2013-07-19 5:26 ` [ 52/72] ext4: fix data offset overflow on 32-bit archs in ext4_inline_data_fiemap() Greg Kroah-Hartman
2013-07-19 5:26 ` [ 53/72] ext4: fix overflows in SEEK_HOLE, SEEK_DATA implementations Greg Kroah-Hartman
2013-07-19 5:26 ` [ 54/72] ext4: fix data offset overflow in ext4_xattr_fiemap() on 32-bit archs Greg Kroah-Hartman
2013-07-19 5:26 ` [ 55/72] ext4: fix overflow when counting used blocks on 32-bit architectures Greg Kroah-Hartman
2013-07-19 5:26 ` [ 56/72] ext4: fix ext4_get_group_number() Greg Kroah-Hartman
2013-07-19 5:26 ` [ 57/72] ext4: dont show usrquota/grpquota twice in /proc/mounts Greg Kroah-Hartman
2013-07-19 5:26 ` [ 58/72] ext4: dont allow ext4_free_blocks() to fail due to ENOMEM Greg Kroah-Hartman
2013-07-19 5:26 ` [ 59/72] ARM: 7765/1: perf: Record the user-mode PC in the call chain Greg Kroah-Hartman
2013-07-19 5:26 ` [ 60/72] ARM: 7767/1: let the ASID allocator handle suspended animation Greg Kroah-Hartman
2013-07-19 5:26 ` [ 61/72] ARM: 7768/1: prevent risks of out-of-bound access in ASID allocator Greg Kroah-Hartman
2013-07-19 5:26 ` [ 62/72] ARM: 7769/1: Cortex-A15: fix erratum 798181 implementation Greg Kroah-Hartman
2013-07-19 5:26 ` [ 63/72] ARM: 7778/1: smp_twd: twd_update_frequency need be run on all online CPUs Greg Kroah-Hartman
2013-07-19 5:26 ` [ 64/72] ARM: dts: imx: cpus/cpu nodes dts updates Greg Kroah-Hartman
2013-07-19 5:26 ` [ 65/72] ARM: shmobile: r8a73a4: Fix resources for SCIFB0 Greg Kroah-Hartman
2013-07-19 5:26 ` [ 66/72] ARM: shmobile: emev2 GIO3 resource fix Greg Kroah-Hartman
2013-07-19 5:26 ` [ 67/72] ARM: mm: fix boot on SA1110 Assabet Greg Kroah-Hartman
2013-07-19 5:26 ` [ 68/72] drivers/dma/pl330.c: fix locking in pl330_free_chan_resources() Greg Kroah-Hartman
2013-07-19 5:26 ` [ 69/72] memcg, kmem: fix reference count handling on the error path Greg Kroah-Hartman
2013-07-19 5:26 ` [ 70/72] mm/memory-hotplug: fix lowmem count overflow when offline pages Greg Kroah-Hartman
2013-07-19 5:26 ` [ 71/72] Handle big endianness in NTLM (ntlmv2) authentication Greg Kroah-Hartman
2013-07-19 5:26 ` [ 72/72] UBIFS: correct mount message Greg Kroah-Hartman
2013-07-19 7:27 ` [ 00/72] 3.10.2-stable review Sven Joachim
2013-07-19 15:40 ` Greg Kroah-Hartman
2013-07-21 2:23 ` Satoru Takeuchi
2013-07-19 23:16 ` Shuah Khan
2013-07-19 23:44 ` Greg Kroah-Hartman
2013-07-20 0:17 ` Stefan Lippers-Hollmann
2013-07-20 0:25 ` [please disregard] " Stefan Lippers-Hollmann
2013-07-21 7:56 ` Willy Tarreau
2013-07-21 15:50 ` Greg Kroah-Hartman
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=20130719052602.066455677@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rafael.j.wysocki@intel.com \
--cc=stable@vger.kernel.org \
--cc=tianyu.lan@intel.com \
/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).