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

Commit fdb8c58a authored by Len Brown's avatar Len Brown
Browse files

Merge branches 'apei', 'battery-mwh-fix', 'bugzilla-10807', 'bugzilla-14736',...

Merge branches 'apei', 'battery-mwh-fix', 'bugzilla-10807', 'bugzilla-14736', 'bugzilla-14679', 'bugzilla-16396', 'launchpad-613381' and 'misc' into release
Loading
+1 −1
Original line number Diff line number Diff line
@@ -61,7 +61,7 @@ struct cstate_entry {
		unsigned int ecx;
	} states[ACPI_PROCESSOR_MAX_POWER];
};
static struct cstate_entry *cpu_cstate_entry;	/* per CPU ptr */
static struct cstate_entry __percpu *cpu_cstate_entry;	/* per CPU ptr */

static short mwait_supported[ACPI_PROCESSOR_MAX_POWER];

+1 −1
Original line number Diff line number Diff line
@@ -105,7 +105,7 @@ config ACPI_EC_DEBUGFS

	  Be aware that using this interface can confuse your Embedded
	  Controller in a way that a normal reboot is not enough. You then
	  have to power of your system, and remove the laptop battery for
	  have to power off your system, and remove the laptop battery for
	  some seconds.
	  An Embedded Controller typically is available on laptops and reads
	  sensor values like battery state and temperature.
+18 −16
Original line number Diff line number Diff line
@@ -382,31 +382,32 @@ static void acpi_pad_remove_sysfs(struct acpi_device *device)
	device_remove_file(&device->dev, &dev_attr_rrtime);
}

/* Query firmware how many CPUs should be idle */
static int acpi_pad_pur(acpi_handle handle, int *num_cpus)
/*
 * Query firmware how many CPUs should be idle
 * return -1 on failure
 */
static int acpi_pad_pur(acpi_handle handle)
{
	struct acpi_buffer buffer = {ACPI_ALLOCATE_BUFFER, NULL};
	union acpi_object *package;
	int rev, num, ret = -EINVAL;
	int num = -1;

	if (ACPI_FAILURE(acpi_evaluate_object(handle, "_PUR", NULL, &buffer)))
		return -EINVAL;
		return num;

	if (!buffer.length || !buffer.pointer)
		return -EINVAL;
		return num;

	package = buffer.pointer;
	if (package->type != ACPI_TYPE_PACKAGE || package->package.count != 2)
		goto out;
	rev = package->package.elements[0].integer.value;

	if (package->type == ACPI_TYPE_PACKAGE &&
		package->package.count == 2 &&
		package->package.elements[0].integer.value == 1) /* rev 1 */

		num = package->package.elements[1].integer.value;
	if (rev != 1 || num < 0)
		goto out;
	*num_cpus = num;
	ret = 0;
out:

	kfree(buffer.pointer);
	return ret;
	return num;
}

/* Notify firmware how many CPUs are idle */
@@ -433,7 +434,8 @@ static void acpi_pad_handle_notify(acpi_handle handle)
	uint32_t idle_cpus;

	mutex_lock(&isolated_cpus_lock);
	if (acpi_pad_pur(handle, &num_cpus)) {
	num_cpus = acpi_pad_pur(handle);
	if (num_cpus < 0) {
		mutex_unlock(&isolated_cpus_lock);
		return;
	}
+1 −0
Original line number Diff line number Diff line
@@ -854,6 +854,7 @@ struct acpi_bit_register_info {
	ACPI_BITMASK_POWER_BUTTON_STATUS   | \
	ACPI_BITMASK_SLEEP_BUTTON_STATUS   | \
	ACPI_BITMASK_RT_CLOCK_STATUS       | \
	ACPI_BITMASK_PCIEXP_WAKE_DISABLE   | \
	ACPI_BITMASK_WAKE_STATUS)

#define ACPI_BITMASK_TIMER_ENABLE               0x0001
+1 −1
Original line number Diff line number Diff line
@@ -109,7 +109,7 @@ void acpi_ex_enter_interpreter(void)
 *
 * DESCRIPTION: Reacquire the interpreter execution region from within the
 *              interpreter code. Failure to enter the interpreter region is a
 *              fatal system error. Used in  conjuction with
 *              fatal system error. Used in  conjunction with
 *              relinquish_interpreter
 *
 ******************************************************************************/
Loading