hi,
The patches in the series are work in progress and as discussed with Al Stone
and Hanjun include changes in the GTDT acpi table to add missing elements for ARM
platforms. Elements added are Timer frequency, interrupt count(currently 8 supported),
timer ID(This will be used to invoke the correct controller).
Still more TODO's are identified.
* To add timer clock names.
* if this __init invoking mechanism is finalised then other similar devices can
use this like clock, GIC etc.
* GTDT can ultimately be made CTDT(Common timer descriptor table) to other classes of
timers like external exynos MCT.
Changes in V2:
* Added new fields in GTDT acpi table.
* Infrastructure to invoke the correct timer controller.
Thanks in advance.
Amit
Amit Daniel Kachhap (6):
irqdomain: Add a new API irq_create_default_mapping
ACPI: ARM: Update acpi_register_gsi to register with the core IRQ
subsystem
irqchip: gic: Fix to make dt node check optional in case of ACPI
acpi: gtdt: Update GTDT tables to add more fields
clocksource:acpi: Add macro CLOCKSOURCE_ACPI_DECLARE
clocksource: arch_timer: acpi: Use GTDT table to gather data
drivers/acpi/plat/arm/boot.c | 27 +++++++-
drivers/clocksource/arm_arch_timer.c | 111 +++++++++++++++++++++++++++++-----
drivers/clocksource/clksrc-of.c | 32 ++++++++++
drivers/irqchip/irq-gic.c | 2 +
include/acpi/actbl3.h | 22 +++++++
include/asm-generic/vmlinux.lds.h | 6 ++
include/linux/clocksource.h | 13 ++++
include/linux/irqdomain.h | 2 +
kernel/irq/irqdomain.c | 35 +++++++++++
9 files changed, 232 insertions(+), 18 deletions(-)
'dev_id' in the comments of clk_register_clkdev should
be 'dev_fmt' here.
Signed-off-by: Hanjun Guo <hanjun.guo(a)linaro.org>
---
drivers/clk/clkdev.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/clk/clkdev.c b/drivers/clk/clkdev.c
index 442a313..825b52b 100644
--- a/drivers/clk/clkdev.c
+++ b/drivers/clk/clkdev.c
@@ -270,9 +270,9 @@ EXPORT_SYMBOL(clkdev_drop);
* clk_register_clkdev - register one clock lookup for a struct clk
* @clk: struct clk to associate with all clk_lookups
* @con_id: connection ID string on device
- * @dev_id: format string describing device name
+ * @dev_fmt: format string describing device name
*
- * con_id or dev_id may be NULL as a wildcard, just as in the rest of
+ * con_id or dev_fmt may be NULL as a wildcard, just as in the rest of
* clkdev.
*
* To make things easier for mass registration, we detect error clks
--
1.7.9.5
From: Naresh Bhat <naresh.bhat(a)linaro.org>
The patch set will add the DBG2 table, compilation support. I have just added only one sample SER0 device.
If DBG2 table fields, values looks ok. Then I will add 3 more devices (SER1 to SER3),
Since there are 4 UART devices in foundation-v8 model.
Signed-off-by: Naresh Bhat <naresh.bhat(a)linaro.org>
Naresh Bhat (2):
dbg2: Add dbg2 table
Add support to compile dbg2 table
platforms/foundation-v8.acpi/dbg2.asl | 47 ++++++++++++++++++++
.../foundation-v8.acpi/foundation-v8.manifest | 1 +
platforms/foundation-v8.acpi/xsdt.asl | 1 +
tools/common/build_aml.c | 1 +
tools/common/check_aml.c | 1 +
tools/common/include/check_aml.h | 1 +
6 files changed, 52 insertions(+)
create mode 100644 platforms/foundation-v8.acpi/dbg2.asl
--
1.7.9.5
EINJ table is fully implemented in kernel and no changes were needed
to bring it up on armv7/8 arch.
Along with work on EINJ coulpe of steps were done like:
1. Expand bfapei tool so it can create blob which pretend h/w registers
for EINJ driver.
2. Filling address in EINJ table according to those in blob.
3. Trigger error using existing injection kernel mechanism.
See commit for more details.
Changes for v2:
- add more descriptive commit log
Changes for v3:
- replace constant values with defines
Tomasz Nowicki (4):
bfapei: Move common functionality to separate function.
bfapei: Expand bfapei tool to EINJ table testing.
acpi, apei, einj: Fill in EINJ table according to address in EINJ
blobs.
acpi, apei, einj: Relace constant value with defines.
platforms/exynos5250-arndale.acpi/einj.asl | 20 +++---
platforms/foundation-v8.acpi/einj.asl | 20 +++---
platforms/rtsm_ve-aemv8a.acpi/einj.asl | 20 +++---
tools/bfapei/bfapei.c | 104 +++++++++++++++++++++++-----
tools/bfapei/bfapei.h | 30 ++++++--
tools/common/include/acpi.h | 77 ++++++++++++++++++++
6 files changed, 215 insertions(+), 56 deletions(-)
--
1.7.9.5
EINJ table is fully implemented in kernel and no changes were needed
to bring it up on armv7/8 arch.
Along with work on EINJ coulpe of steps were done like:
1. Expand bfapei tool so it can create blob which pretend h/w registers
for EINJ driver.
2. Filling address in EINJ table according to those in blob.
3. Trigger error using existing injection kernel mechanism.
See commit for more details.
Changes for v2:
- add more descriptive commit log
Tomasz Nowicki (3):
bfapei: Move common functionality to separate function.
bfapei: Expand bfapei tool to EINJ table testing.
acpi, apei, einj: Fill in EINJ table according to address in EINJ
blobs.
platforms/exynos5250-arndale.acpi/einj.asl | 20 +++---
platforms/foundation-v8.acpi/einj.asl | 20 +++---
platforms/rtsm_ve-aemv8a.acpi/einj.asl | 20 +++---
tools/bfapei/bfapei.c | 101 ++++++++++++++++++++++------
tools/bfapei/bfapei.h | 30 +++++++--
tools/common/include/acpi.h | 57 ++++++++++++++++
6 files changed, 192 insertions(+), 56 deletions(-)
--
1.7.9.5
-- Treść oryginalnej wiadomości --
Temat: Re: [Linaro-acpi] [PATCH 0/3] Hacks for APEI tables test.
Data: Thu, 10 Oct 2013 09:45:54 +0200
Nadawca: Tomasz Nowicki <tomasz.nowicki(a)linaro.org>
Adresat: Al Stone <al.stone(a)linaro.org>
W dniu 09.10.2013 22:33, Al Stone pisze:
> On 09/06/2013 08:07 AM, Tomasz Nowicki wrote:
>> These commits were created to make APEI tables testable. All should be
>> pushed
>> to some test brunch so anybody could test it on his own, reused etc.
>>
>> Tomasz Nowicki (3):
>> acpi, apei, erst: Reserve no cachable region for persistent storage.
>> acpi, apei, einj: Hack EINJ driver to enable injection GHES and
>> kernel panic from userspace.
>> apci, apei, arm64: Make some space for APEI blob.
>>
>> arch/arm64/boot/dts/foundation-v8-acpi.dts | 2 +-
>> drivers/acpi/apei/einj.c | 27
>> +++++++++++++++++++++++++++
>> drivers/acpi/apei/erst.c | 2 +-
>> 3 files changed, 29 insertions(+), 2 deletions(-)
>>
>
> So I think these patches are okay as they are. Are you
> working on this for UEFI, also? I'd like to see a separate
> patch enabling this to work for the UEFI case also as soon
> as we can.
1. Since we can trigger APEI errors using simulated SCI we do not need
second patch and only fist and third patch are on special branch right now.
2. This patch set should work for UEFI but I need to check how to load
APEI blob from UEFI. So yes this require additional invesitation or
eventual development. Thanks for input on this. I will add another card
for this.
Tomasz
From: Al Stone <ahs3(a)redhat.com>
The current version requires one to know the size of the package
a priori; this is almost impossible if the package is composed of
strings of variable length. This change allows the utility to
allocate a buffer of the proper size if asked.
Signed-off-by: Al Stone <al.stone(a)linaro.org>
---
drivers/acpi/utils.c | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/drivers/acpi/utils.c b/drivers/acpi/utils.c
index 552248b..fc2cd32 100644
--- a/drivers/acpi/utils.c
+++ b/drivers/acpi/utils.c
@@ -169,11 +169,20 @@ acpi_extract_package(union acpi_object *package,
/*
* Validate output buffer.
*/
- if (buffer->length < size_required) {
+ if (buffer->length == ACPI_ALLOCATE_BUFFER) {
+ buffer->pointer = ACPI_ALLOCATE(size_required);
+ if (!buffer->pointer)
+ return AE_NO_MEMORY;
buffer->length = size_required;
- return AE_BUFFER_OVERFLOW;
- } else if (buffer->length != size_required || !buffer->pointer) {
- return AE_BAD_PARAMETER;
+ memset(buffer->pointer, 0, size_required);
+ } else {
+ if (buffer->length < size_required) {
+ buffer->length = size_required;
+ return AE_BUFFER_OVERFLOW;
+ } else if (buffer->length != size_required ||
+ !buffer->pointer) {
+ return AE_BAD_PARAMETER;
+ }
}
head = buffer->pointer;
--
1.8.3.1
These commits were created to make APEI tables testable. All should be pushed
to some test brunch so anybody could test it on his own, reused etc.
Tomasz Nowicki (3):
acpi, apei, erst: Reserve no cachable region for persistent storage.
acpi, apei, einj: Hack EINJ driver to enable injection GHES and
kernel panic from userspace.
apci, apei, arm64: Make some space for APEI blob.
arch/arm64/boot/dts/foundation-v8-acpi.dts | 2 +-
drivers/acpi/apei/einj.c | 27 +++++++++++++++++++++++++++
drivers/acpi/apei/erst.c | 2 +-
3 files changed, 29 insertions(+), 2 deletions(-)
--
1.7.9.5
The patch below adds in an early_ioremap for aarch64 allowing
the ACPI code to function. It's still under discussion upstream
and will likely change but it will allow work to continue on
aarch64 in the short-term.
Please test and let us know if it works or if it uncovers any
other interesting issues.
--
ciao,
al
-----------------------------------
Al Stone
Software Engineer
Linaro Enterprise Group
al.stone(a)linaro.org
-----------------------------------
This is re-use existing patch submitted by Huang Ying <ying.huang(a)intel.com>
with one small modification (see commits). The first idea was to use just
printk to inform about any errors that were not consumed by OS.
Errors listed in HEST table should point to the same "Error status block" ESB
structures as BERT does. OS handling errors should clear errors status bit
in ESB for given error at the end of error recovery procedure. Case where error
appeared to be too serious OS can reset machine immediately without clearing
bit in ESB. During boot, kernel examine each error status bit from ESB list
(pointed from BERT) and see if there are any unhandled errors.
BERT table was tested along with HEST and EINJ driver, in the following way:
1. Fill in ESB using EINJ hacked driver and do not clear erros status in ESB,
this way unhandler error is simulated and BERT table could be used later:
root@localhost:~# echo 1 > /sys/kernel/debug/apei/einj/error_inject
2. Reboot machin and check whether BERT driver notice injected error:
...
[ 2.518179] [Hardware Error]: Error record from previous boot:
[ 2.523342] [Hardware Error]: APEI generic hardware error status
[ 2.548457] [Hardware Error]: severity: 1, fatal
[ 2.574705] [Hardware Error]: section: 0, severity: 0, recoverable
[ 2.584010] [Hardware Error]: flags: 0x00
[ 2.587937] [Hardware Error]: section_type: memory error
...
3. Kernel clear status bit so next boot would not print it again.
This is a cleaned up version of patches posted earlier by Al Stone.
I have split them into patches with attempt to make only one change
per patch.
Graeme
From: Al Stone <ahs3(a)redhat.com>
This patch adds a stub function for arch_fix_phys_package_id() for
those kernel configurations that need it.
Found while trying to build a VExpress configuration.
Signed-off-by: Al Stone <al.stone(a)linaro.org>
---
arch/arm/include/asm/topology.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm/include/asm/topology.h b/arch/arm/include/asm/topology.h
index a6ff5cc..70d9c47 100644
--- a/arch/arm/include/asm/topology.h
+++ b/arch/arm/include/asm/topology.h
@@ -66,6 +66,7 @@ static inline void init_cpu_topology(void) { }
static inline void store_cpu_topology(unsigned int cpuid) { }
static inline int cluster_to_logical_mask(unsigned int socket_id,
cpumask_t *cluster_mask) { return -EINVAL; }
+static inline void arch_fix_phys_package_id(int num, u32 slot) { };
#endif
--
1.8.3.1
Lots of device drivers especially for platform/I2C/SPI bus devices,
they want to be initialized earlier than other devices, so the driver
use initcall such as subsys_initcall for the device initialization.
But for those drivers, lots of them just do nothing special in
xxx_initcall/module_exit, and produce lots of boilerplate.
This patch set introduces a helper macro initcall_driver() to
eliminate lots of boilerplate just like module_driver() did, and use
it for platform/I2C/SPI bus devices.
I use following command under the lastest kernel source code:
$grep -r -E "*_initcall" drivers/ | cut -d":" -f1 |xargs grep -E
"return platform_driver_register|return i2c_add_driver|return spi_register_driver"
| cut -d":" -f1 | xargs grep "module_exit" | wc -l
and get 205 hits, so if we use helper macro initcall_driver(),
we can reduce thousands lines of code.
Hanjun Guo (4):
driver core: introduce helper macro initcall_driver()
platform device: introduce helper macro initcall_platform_driver()
i2c: introduce helper macro initcall_i2c_driver()
spi: introduce helper macro initcall_spi_driver()
include/linux/device.h | 27 +++++++++++++++++++++++++++
include/linux/i2c.h | 11 +++++++++++
include/linux/platform_device.h | 11 +++++++++++
include/linux/spi/spi.h | 11 +++++++++++
4 files changed, 60 insertions(+)
--
1.7.9.5
hi,
The patches in the series are just in work in progress and intended to clear
some doubts as pointed below. Any comment/direction is helpful from the linaro
acpi group.
1) Basic controllers like GIC and timer need to be initialised before platform drivers
are ready so question is how to invoke the __init of these devices. Is there any function
to raw parse the ACPI tables similar to existing DT API's?
2) Some important elements like clock frequency is missing from the GTDT table.
how to get them?
Thanks in advance.
Amit Daniel Kachhap (3):
irqdomain: Add a new API irq_create_default_mapping
ACPI: ARM: Update acpi_register_gsi to register with the core IRQ
subsystem
ACPI: clocksource: arch_timer: Use GTDT table to gather data
drivers/acpi/plat/arm/boot.c | 27 ++++++++++++++--
drivers/clocksource/arm_arch_timer.c | 58 ++++++++++++++++++++++++++++++++++
include/linux/irqdomain.h | 2 +
kernel/irq/irqdomain.c | 35 ++++++++++++++++++++
4 files changed, 119 insertions(+), 3 deletions(-)
This patch set just did one simple thing: convert to module_platform_driver()
in video driver to simplify the code.
Hanjun Guo (10):
Video / hecubafb: Use module_platform_driver() to simplify code
Video / bfin-t350mcqb-fb: Use module_platform_driver() to simplify
code
Video / metronomefb: Use module_platform_driver() to simplify code
Video / jz4740_fb: Use module_platform_driver() to simplify code
Video / da8xx-fb: Use module_platform_driver() to simplify code
Video / cobalt_lcdfb: Use module_platform_driver() to simplify code
Video / broadsheetfb: Use module_platform_driver() to simplify code
Video / bf54x-lq043fb: Use module_platform_driver() to simplify code
Video / au1200fb: Use module_platform_driver() to simplify code
Video / au1100fb: Use module_platform_driver() to simplify code
drivers/video/au1100fb.c | 14 +-------------
drivers/video/au1200fb.c | 16 +---------------
drivers/video/bf54x-lq043fb.c | 14 +-------------
drivers/video/bfin-t350mcqb-fb.c | 14 +-------------
drivers/video/broadsheetfb.c | 14 +-------------
drivers/video/cobalt_lcdfb.c | 14 +-------------
drivers/video/da8xx-fb.c | 14 +-------------
drivers/video/hecubafb.c | 14 +-------------
drivers/video/jz4740_fb.c | 13 +------------
drivers/video/metronomefb.c | 14 +-------------
10 files changed, 10 insertions(+), 131 deletions(-)
--
1.7.9.5
In acpi_bus_register_driver(), there is an if (acpi_disabled) check,
so the if(acpi_disabled) before it is reduplicate, remove it.
Signed-off-by: Hanjun Guo <hanjun.guo(a)linaro.org>
---
drivers/staging/quickstart/quickstart.c | 4 ----
1 file changed, 4 deletions(-)
diff --git a/drivers/staging/quickstart/quickstart.c b/drivers/staging/quickstart/quickstart.c
index 4247d60..9f6ebdb 100644
--- a/drivers/staging/quickstart/quickstart.c
+++ b/drivers/staging/quickstart/quickstart.c
@@ -390,10 +390,6 @@ static int __init quickstart_init(void)
{
int ret;
- /* ACPI Check */
- if (acpi_disabled)
- return -ENODEV;
-
/* ACPI driver register */
ret = acpi_bus_register_driver(&quickstart_acpi_driver);
if (ret)
--
1.7.9.5
"APIC" should be "ACPI" here.
Signed-off-by: Hanjun Guo <hanjun.guo(a)linaro.org>
---
drivers/acpi/scan.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
index fbdb82e..611ce90 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -1121,7 +1121,7 @@ int acpi_bus_register_driver(struct acpi_driver *driver)
EXPORT_SYMBOL(acpi_bus_register_driver);
/**
- * acpi_bus_unregister_driver - unregisters a driver with the APIC bus
+ * acpi_bus_unregister_driver - unregisters a driver with the ACPI bus
* @driver: driver to unregister
*
* Unregisters a driver with the ACPI bus. Searches the namespace for all
--
1.7.9.5
From: Al Stone <ahs3(a)redhat.com>
This series of patches first sets up the efi_map_regions()
function, which is in turn used by setup_arch() to initialize
ACPI tables loaded from RAM. For this to work properly, there
were bugs to be fixed in both the EFI and ACPI code; these
fixes get the two to agree on where the ACPI data is in RAM,
and how it is to be addressed at early boot.
Al Stone (4):
ARM: EFI: make efi_remap_regions() visible for use in setup_arch()
ARM: ACPI: insert WARN_ON to make error condition more obvious
ARM: clean up the io.h header file
ACPI: ARM: use the correct ioremap sequence when loading and using
ACPI data
arch/arm/include/asm/efi.h | 1 +
arch/arm/include/asm/io.h | 9 ++-------
arch/arm/kernel/efi.c | 31 +++++++++++++++++++++++--------
arch/arm/kernel/setup.c | 9 ++++++---
drivers/acpi/acpica/tbxface.c | 1 +
drivers/acpi/osl.c | 12 ++++++------
drivers/acpi/plat/arm/boot.c | 19 +++++++------------
include/linux/acpi.h | 2 +-
include/linux/acpi_io.h | 4 ++++
9 files changed, 51 insertions(+), 37 deletions(-)
--
1.8.3.1
This patch set convert PMU driver to ACPI for ARMv8 arch. Despite driver is
initialized in early boot stage, no ACPI related actions are taken then. All PMU
resources coming from ACPI tables are use by others units once bus is enumerated.
Changes for v2:
- remove MODULE_DEVICE_TABLE macro since perf_event is not kernel module
Tomasz Nowicki (3):
ACPI, ARMv8: Whitelist armv8-pmu driver for ACPI.
armv8, dts: Move device resources to DSTD ACPI table.
armv8, pmu: Add the match table and pointers for ACPI probing to the
driver.
arch/arm64/boot/dts/foundation-v8-acpi.dts | 4 ++++
arch/arm64/boot/dts/rtsm_ve-aemv8a-acpi.dts | 4 ++++
arch/arm64/kernel/perf_event.c | 13 +++++++++++++
drivers/acpi/acpi_platform.c | 1 +
4 files changed, 22 insertions(+)
--
1.7.9.5
On hardware reduced platforms, there is no support for the following:
- PM Event and Control registers
- SCI interrupt (and handler)
- Fixed Events
- General Purpose Events (GPEs)
- Global Lock
- ACPI PM timer
- FACS table (Waking vectors and Global Lock)
acpi_gbl_reduced_hardware is a global flag and can be used to prevent
misbehavior on hardware reduced platforms, and this flag is initialized at
the very beginning of the system boot when FADT is parsed, this flag is set
to 1 when the FACP Hardware Reduced flag is set, so we can use it to prevent
accessing registers which do not exist on reduced hardware platform.
but when FACP Hardware Reduced flag is set, ACPI drivers will still access
some registers directly which do not exist on reduced hardware platform
and cause boot failure:
[ 9.024370] Unable to handle kernel paging request at virtual address ffffffbffbe00001
[ 9.024423] pgd = ffffffc00007d000
[ 9.024468] [ffffffbffbe00001] *pgd=000000008007f003, *pmd=0000000000000000
[ 9.024538] Internal error: Oops: 96000006 [#1] SMP
[ 9.024577] Modules linked in:
[ 9.024627] CPU: 0 Not tainted (3.9.0+ #3)
[ 9.024691] PC is at acpi_os_read_port+0x58/0xc8
[ 9.024753] LR is at acpi_hw_read_port+0x4c/0xc4
[ 9.024810] pc : [<ffffffc0002810cc>] lr : [<ffffffc0002a4fc4>] pstate: 600003c5
....
[ 9.031956] Call trace:
[ 9.032021] [<ffffffc0002810cc>] acpi_os_read_port+0x58/0xc8
[ 9.032094] [<ffffffc0002a4fc4>] acpi_hw_read_port+0x4c/0xc4
[ 9.032165] [<ffffffc0002a4198>] acpi_hw_read+0x6c/0x100
[ 9.032237] [<ffffffc0002a4250>] acpi_hw_read_multiple+0x24/0x70
[ 9.032312] [<ffffffc0002a457c>] acpi_hw_register_read+0xa8/0x164
[ 9.032386] [<ffffffc0002a52dc>] acpi_write_bit_register+0x9c/0x194
[ 9.032472] [<ffffffc0002bffb4>] acpi_processor_get_power_info+0x6c4/0x748
[ 9.032550] [<ffffffc000565220>] acpi_processor_power_init+0xac/0x138
[ 9.032630] [<ffffffc0003f3c00>] acpi_processor_start+0x48/0x138
[ 9.032704] [<ffffffc000565118>] acpi_processor_add+0x43c/0x498
[ 9.032784] [<ffffffc000283a74>] acpi_device_probe+0x3c/0x198
[ 9.032862] [<ffffffc0002ef0fc>] driver_probe_device+0x90/0x348
[ 9.032940] [<ffffffc0002ef450>] __driver_attach+0x9c/0xa0
[ 9.033015] [<ffffffc0002ed40c>] bus_for_each_dev+0x4c/0x8c
[ 9.033090] [<ffffffc0002eeb98>] driver_attach+0x20/0x28
[ 9.033166] [<ffffffc0002ee6e0>] bus_add_driver+0xfc/0x254
[ 9.033244] [<ffffffc0002ef8b0>] driver_register+0x6c/0x184
[ 9.033325] [<ffffffc000284894>] acpi_bus_register_driver+0x34/0x44
[ 9.033400] [<ffffffc000559c60>] acpi_processor_init+0x28/0x40
[ 9.033469] [<ffffffc000081438>] do_one_initcall+0x100/0x138
[ 9.033544] [<ffffffc0005448c8>] kernel_init_freeable+0x128/0x1cc
[ 9.033620] [<ffffffc0003f2f90>] kernel_init+0x10/0xcc
[ 9.033700] Code: d2bf7c02 f2dff7e2 f2ffffe2 8b020000 (79400000)
[ 9.033843] ---[ end trace 64376967e6bc20a9 ]---
[ 9.033995] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
So acpi_gbl_reduced_hardware should be used to check if reduced hardware or
not, if it is reduced hardware, just return with some error and do not access
the no-existent registers.
Signed-off-by: Hanjun Guo <hanjun.guo(a)linaro.org>
---
drivers/acpi/acpica/hwregs.c | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/drivers/acpi/acpica/hwregs.c b/drivers/acpi/acpica/hwregs.c
index 8d2e866..4c270c3 100644
--- a/drivers/acpi/acpica/hwregs.c
+++ b/drivers/acpi/acpica/hwregs.c
@@ -265,6 +265,11 @@ acpi_status acpi_hw_clear_acpi_status(void)
ACPI_FUNCTION_TRACE(hw_clear_acpi_status);
+ /* If Hardware Reduced flag is set, there are no GPEs */
+ if (acpi_gbl_reduced_hardware) {
+ return_ACPI_STATUS(AE_NOT_IMPLEMENTED);
+ }
+
ACPI_DEBUG_PRINT((ACPI_DB_IO, "About to write %04X to %8.8X%8.8X\n",
ACPI_BITMASK_ALL_FIXED_STATUS,
ACPI_FORMAT_UINT64(acpi_gbl_xpm1a_status.address)));
@@ -305,6 +310,10 @@ struct acpi_bit_register_info *acpi_hw_get_bit_register_info(u32 register_id)
{
ACPI_FUNCTION_ENTRY();
+ if (acpi_gbl_reduced_hardware) {
+ return (NULL);
+ }
+
if (register_id > ACPI_BITREG_MAX) {
ACPI_ERROR((AE_INFO, "Invalid BitRegister ID: 0x%X",
register_id));
@@ -337,6 +346,11 @@ acpi_status acpi_hw_write_pm1_control(u32 pm1a_control, u32 pm1b_control)
ACPI_FUNCTION_TRACE(hw_write_pm1_control);
+ /* If Hardware Reduced flag is set, there are no PM Control registers */
+ if (acpi_gbl_reduced_hardware) {
+ return_ACPI_STATUS(AE_NOT_IMPLEMENTED);
+ }
+
status =
acpi_hw_write(pm1a_control, &acpi_gbl_FADT.xpm1a_control_block);
if (ACPI_FAILURE(status)) {
@@ -370,6 +384,11 @@ acpi_status acpi_hw_register_read(u32 register_id, u32 *return_value)
ACPI_FUNCTION_TRACE(hw_register_read);
+ /* If Hardware Reduced flag is set, there are no PM Control registers */
+ if (acpi_gbl_reduced_hardware) {
+ return_ACPI_STATUS(AE_NOT_IMPLEMENTED);
+ }
+
switch (register_id) {
case ACPI_REGISTER_PM1_STATUS: /* PM1 A/B: 16-bit access each */
@@ -465,6 +484,11 @@ acpi_status acpi_hw_register_write(u32 register_id, u32 value)
ACPI_FUNCTION_TRACE(hw_register_write);
+ /* If Hardware Reduced flag is set, there are no PM Control registers */
+ if (acpi_gbl_reduced_hardware) {
+ return_ACPI_STATUS(AE_NOT_IMPLEMENTED);
+ }
+
switch (register_id) {
case ACPI_REGISTER_PM1_STATUS: /* PM1 A/B: 16-bit access each */
/*
--
1.7.9.5
From: Al Stone <ahs3(a)redhat.com>
The first two versions of this patch set were in different submissions.
The primary difference with this version is that I've combined and
simplified the multiple sets into one comprehensive set, cleaned up
the ordering of the patches, and made corrections based on feedback
on v2.
The intent of this patch set is to enable the Arndale pinctrl devices
under ACPI instead of FDT. The ACPI ASL has been submitted as a
separate patch set. This patch set includes three of the four devices
defined for Arndale. The final device defines GPIO interrupts which
will be the subject of a later patch set (interrupts require a diversion
into enabling GICs first).
NB: the first two patches are generic and can apply to all ACPI
branches. The remainder are specific to Arndale and the acpi-ltfixes
branch.
Al Stone (8):
ACPI: make an error message a little cleaner
ACPI: improve acpi_extract_package() utility
ACPI: ARM: arndale: enable ACPI in the Samsung pinctrl driver
ACPI: ARM: arndale: add CONFIG_ACPI ifdefs to pinctrl driver
ACPI: ARM: arndale: move pin controller 4 of 4 from FDT to ACPI
ACPI: ARM: arndale: move pin controller 3 of 4 from FDT to ACPI
ACPI: ARM: arndale: move pin controller 2 of 4 from FDT to ACPI
ACPI: ARM: arndale: whitelist the samsung-pinctrl driver for ACPI
arch/arm/boot/dts/exynos5250-arndale.dts | 26 ++
arch/arm/boot/dts/exynos5250-pinctrl.dtsi | 2 +
arch/arm/boot/dts/exynos5250.dtsi | 6 +-
drivers/acpi/acpi_platform.c | 3 +
drivers/acpi/osl.c | 2 +-
drivers/acpi/utils.c | 17 +-
drivers/pinctrl/pinctrl-samsung.c | 513 +++++++++++++++++++++++++++++-
drivers/pinctrl/pinctrl-samsung.h | 3 +
8 files changed, 559 insertions(+), 13 deletions(-)
--
1.8.3.1