Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bee5799e authored by Rafael J. Wysocki's avatar Rafael J. Wysocki
Browse files

Merge branches 'acpi-pmic', 'acpi-misc' and 'acpi-tables'

* acpi-pmic:
  ACPI / PMIC: xpower: Add support for the GPI1 regulator to the OpRegion handler

* acpi-misc:
  ACPI: fix whitespace in pr_fmt() to align log entries

* acpi-tables:
  ACPI: configfs: Unload SSDT on configfs entry removal
Loading
Loading
Loading
Loading
+19 −1
Original line number Diff line number Diff line
@@ -15,11 +15,15 @@
#include <linux/configfs.h>
#include <linux/acpi.h>

#include "acpica/accommon.h"
#include "acpica/actables.h"

static struct config_group *acpi_table_group;

struct acpi_table {
	struct config_item cfg;
	struct acpi_table_header *header;
	u32 index;
};

static ssize_t acpi_table_aml_write(struct config_item *cfg,
@@ -52,7 +56,11 @@ static ssize_t acpi_table_aml_write(struct config_item *cfg,
	if (!table->header)
		return -ENOMEM;

	ret = acpi_load_table(table->header);
	ACPI_INFO(("Host-directed Dynamic ACPI Table Load:"));
	ret = acpi_tb_install_and_load_table(
			ACPI_PTR_TO_PHYSADDR(table->header),
			ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL, FALSE,
			&table->index);
	if (ret) {
		kfree(table->header);
		table->header = NULL;
@@ -215,8 +223,18 @@ static struct config_item *acpi_table_make_item(struct config_group *group,
	return &table->cfg;
}

static void acpi_table_drop_item(struct config_group *group,
				 struct config_item *cfg)
{
	struct acpi_table *table = container_of(cfg, struct acpi_table, cfg);

	ACPI_INFO(("Host-directed Dynamic ACPI Table Unload"));
	acpi_tb_unload_table(table->index);
}

struct configfs_group_operations acpi_table_group_ops = {
	.make_item = acpi_table_make_item,
	.drop_item = acpi_table_drop_item,
};

static struct config_item_type acpi_tables_type = {
+4 −0
Original line number Diff line number Diff line
@@ -867,6 +867,8 @@ acpi_tb_install_and_load_table(acpi_physical_address address,
	return_ACPI_STATUS(status);
}

ACPI_EXPORT_SYMBOL(acpi_tb_install_and_load_table)

/*******************************************************************************
 *
 * FUNCTION:    acpi_tb_unload_table
@@ -914,3 +916,5 @@ acpi_status acpi_tb_unload_table(u32 table_index)
	acpi_tb_set_table_loaded_flag(table_index, FALSE);
	return_ACPI_STATUS(status);
}

ACPI_EXPORT_SYMBOL(acpi_tb_unload_table)
+20 −1
Original line number Diff line number Diff line
@@ -21,6 +21,11 @@
#include "intel_pmic.h"

#define XPOWER_GPADC_LOW	0x5b
#define XPOWER_GPI1_CTRL	0x92

#define GPI1_LDO_MASK		GENMASK(2, 0)
#define GPI1_LDO_ON		(3 << 0)
#define GPI1_LDO_OFF		(4 << 0)

static struct pmic_table power_table[] = {
	{
@@ -118,6 +123,10 @@ static struct pmic_table power_table[] = {
		.reg = 0x10,
		.bit = 0x00
	}, /* BUC6 */
	{
		.address = 0x4c,
		.reg = 0x92,
	}, /* GPI1 */
};

/* TMP0 - TMP5 are the same, all from GPADC */
@@ -156,7 +165,12 @@ static int intel_xpower_pmic_get_power(struct regmap *regmap, int reg,
	if (regmap_read(regmap, reg, &data))
		return -EIO;

	/* GPIO1 LDO regulator needs special handling */
	if (reg == XPOWER_GPI1_CTRL)
		*value = ((data & GPI1_LDO_MASK) == GPI1_LDO_ON);
	else
		*value = (data & BIT(bit)) ? 1 : 0;

	return 0;
}

@@ -165,6 +179,11 @@ static int intel_xpower_pmic_update_power(struct regmap *regmap, int reg,
{
	int data;

	/* GPIO1 LDO regulator needs special handling */
	if (reg == XPOWER_GPI1_CTRL)
		return regmap_update_bits(regmap, reg, GPI1_LDO_MASK,
					  on ? GPI1_LDO_ON : GPI1_LDO_OFF);

	if (regmap_read(regmap, reg, &data))
		return -EIO;

+1 −1

File changed.

Contains only whitespace changes.

+1 −1

File changed.

Contains only whitespace changes.

+1 −1

File changed.

Contains only whitespace changes.

+1 −1

File changed.

Contains only whitespace changes.

Loading