-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branches 'acpi-soc', 'acpi-video' and 'acpi-apei'
Merge ACPI SoC drivers changes, ACPI backlight driver changes and APEI changes for 5.18-rc1: - Make the ACPI driver for Intel SoCs (LPSS) let the SPI driver know the exact type of the controller (Andy Shevchenko). - Force native backlight mode on Clevo NL5xRU and NL5xNU (Werner Sembach). - Fix return value of __setup handlers in the APEI code (Randy Dunlap). - Add Arm Generic Diagnostic Dump and Reset device driver (Ilkka Koskinen). - Limit printable size of BERT table data (Darren Hart). - Fix up HEST and GHES initialization (Shuai Xue). * acpi-soc: ACPI: LPSS: Provide an SSP type to the driver ACPI: LPSS: Constify properties member in struct lpss_device_desc ACPI: platform: Constify properties parameter in acpi_create_platform_device() * acpi-video: ACPI: video: Force backlight native for Clevo NL5xRU and NL5xNU * acpi-apei: ACPI: AGDI: Add driver for Arm Generic Diagnostic Dump and Reset device ACPI/APEI: Limit printable size of BERT table data ACPI: APEI: fix return value of __setup handlers ACPI: APEI: rename ghes_init() with an "acpi_" prefix ACPI: APEI: explicit init of HEST and GHES in apci_init()
- Loading branch information
Showing
18 changed files
with
273 additions
and
41 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,5 @@ | ||
# SPDX-License-Identifier: GPL-2.0-only | ||
obj-$(CONFIG_ACPI_AGDI) += agdi.o | ||
obj-$(CONFIG_ACPI_IORT) += iort.o | ||
obj-$(CONFIG_ACPI_GTDT) += gtdt.o | ||
obj-y += dma.o |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,116 @@ | ||
// SPDX-License-Identifier: GPL-2.0-only | ||
/* | ||
* This file implements handling of | ||
* Arm Generic Diagnostic Dump and Reset Interface table (AGDI) | ||
* | ||
* Copyright (c) 2022, Ampere Computing LLC | ||
*/ | ||
|
||
#define pr_fmt(fmt) "ACPI: AGDI: " fmt | ||
|
||
#include <linux/acpi.h> | ||
#include <linux/arm_sdei.h> | ||
#include <linux/io.h> | ||
#include <linux/kernel.h> | ||
#include <linux/platform_device.h> | ||
|
||
struct agdi_data { | ||
int sdei_event; | ||
}; | ||
|
||
static int agdi_sdei_handler(u32 sdei_event, struct pt_regs *regs, void *arg) | ||
{ | ||
nmi_panic(regs, "Arm Generic Diagnostic Dump and Reset SDEI event issued"); | ||
return 0; | ||
} | ||
|
||
static int agdi_sdei_probe(struct platform_device *pdev, | ||
struct agdi_data *adata) | ||
{ | ||
int err; | ||
|
||
err = sdei_event_register(adata->sdei_event, agdi_sdei_handler, pdev); | ||
if (err) { | ||
dev_err(&pdev->dev, "Failed to register for SDEI event %d", | ||
adata->sdei_event); | ||
return err; | ||
} | ||
|
||
err = sdei_event_enable(adata->sdei_event); | ||
if (err) { | ||
sdei_event_unregister(adata->sdei_event); | ||
dev_err(&pdev->dev, "Failed to enable event %d\n", | ||
adata->sdei_event); | ||
return err; | ||
} | ||
|
||
return 0; | ||
} | ||
|
||
static int agdi_probe(struct platform_device *pdev) | ||
{ | ||
struct agdi_data *adata = dev_get_platdata(&pdev->dev); | ||
|
||
if (!adata) | ||
return -EINVAL; | ||
|
||
return agdi_sdei_probe(pdev, adata); | ||
} | ||
|
||
static int agdi_remove(struct platform_device *pdev) | ||
{ | ||
struct agdi_data *adata = dev_get_platdata(&pdev->dev); | ||
int err, i; | ||
|
||
err = sdei_event_disable(adata->sdei_event); | ||
if (err) | ||
return err; | ||
|
||
for (i = 0; i < 3; i++) { | ||
err = sdei_event_unregister(adata->sdei_event); | ||
if (err != -EINPROGRESS) | ||
break; | ||
|
||
schedule(); | ||
} | ||
|
||
return err; | ||
} | ||
|
||
static struct platform_driver agdi_driver = { | ||
.driver = { | ||
.name = "agdi", | ||
}, | ||
.probe = agdi_probe, | ||
.remove = agdi_remove, | ||
}; | ||
|
||
void __init acpi_agdi_init(void) | ||
{ | ||
struct acpi_table_agdi *agdi_table; | ||
struct agdi_data pdata; | ||
struct platform_device *pdev; | ||
acpi_status status; | ||
|
||
status = acpi_get_table(ACPI_SIG_AGDI, 0, | ||
(struct acpi_table_header **) &agdi_table); | ||
if (ACPI_FAILURE(status)) | ||
return; | ||
|
||
if (agdi_table->flags & ACPI_AGDI_SIGNALING_MODE) { | ||
pr_warn("Interrupt signaling is not supported"); | ||
goto err_put_table; | ||
} | ||
|
||
pdata.sdei_event = agdi_table->sdei_event; | ||
|
||
pdev = platform_device_register_data(NULL, "agdi", 0, &pdata, sizeof(pdata)); | ||
if (IS_ERR(pdev)) | ||
goto err_put_table; | ||
|
||
if (platform_driver_register(&agdi_driver)) | ||
platform_device_unregister(pdev); | ||
|
||
err_put_table: | ||
acpi_put_table((struct acpi_table_header *)agdi_table); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.