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

Commit 6b410160 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6: (39 commits)
  ACPI: EC: Workaround for optimized controllers (version 3)
  ACPI: EC: use printk_ratelimit(), add some DEBUG mode messages
  Revert "ACPI: EC: Workaround for optimized controllers"
  ACPI: fix two IRQ8 issues in IOAPIC mode
  ACPI: Add missing spaces to printk format
  cpuidle: fix HP nx6125 regression
  cpuidle: add sched_clock_idle_[sleep|wakeup]_event() hooks
  cpuidle: fix C3 for no bus-master control case
  ACPI: thinkpad-acpi: fix oops when a module parameter has no value
  Revert "Fix very high interrupt rate for IRQ8 (rtc) unless pnpacpi=off"
  ACPI: EC: Don't init EC early if it has no _INI
  Revert "acpi: make ACPI_PROCFS default to y"
  Revert "ACPI: add documentation for deprecated /proc/acpi/battery in ACPI_PROCFS"
  ACPI: Split out control for /proc/acpi entries from battery, ac, and sbs.
  ACPI: Video: Increase buffer size for writes to brightness proc file.
  ACPI: EC: Workaround for optimized controllers
  ACPI: SBS: Fix retval warning
  ACPI: Enable MSR (FixedHW) support for T-States
  ACPI: Get throttling info from BIOS only after evaluating _PDC
  ACPI: Use _TSS for throttling control, when present. Add error checks.
  ...
parents 9ccc2362 a3f095ad
Loading
Loading
Loading
Loading
+45 −28
Original line number Original line Diff line number Diff line
		     ThinkPad ACPI Extras Driver
		     ThinkPad ACPI Extras Driver


                            Version 0.16
                            Version 0.17
                          August 2nd, 2007
                         October 04th, 2007


               Borislav Deianov <borislav@users.sf.net>
               Borislav Deianov <borislav@users.sf.net>
             Henrique de Moraes Holschuh <hmh@hmh.eng.br>
             Henrique de Moraes Holschuh <hmh@hmh.eng.br>
@@ -923,19 +923,34 @@ sysfs backlight device "thinkpad_screen"
This feature allows software control of the LCD brightness on ThinkPad
This feature allows software control of the LCD brightness on ThinkPad
models which don't have a hardware brightness slider.
models which don't have a hardware brightness slider.


It has some limitations: the LCD backlight cannot be actually turned on or off
It has some limitations: the LCD backlight cannot be actually turned on or
by this interface, and in many ThinkPad models, the "dim while on battery"
off by this interface, and in many ThinkPad models, the "dim while on
functionality will be enabled by the BIOS when this interface is used, and
battery" functionality will be enabled by the BIOS when this interface is
cannot be controlled.
used, and cannot be controlled.


The backlight control has eight levels, ranging from 0 to 7.  Some of the
On IBM (and some of the earlier Lenovo) ThinkPads, the backlight control
levels may not be distinct.
has eight brightness levels, ranging from 0 to 7.  Some of the levels

may not be distinct.  Later Lenovo models that implement the ACPI
There are two interfaces to the firmware for brightness control, EC and CMOS.
display backlight brightness control methods have 16 levels, ranging
To select which one should be used, use the brightness_mode module parameter:
from 0 to 15.
brightness_mode=1 selects EC mode, brightness_mode=2 selects CMOS mode,

brightness_mode=3 selects both EC and CMOS.  The driver tries to autodetect
There are two interfaces to the firmware for direct brightness control,
which interface to use.
EC and CMOS.  To select which one should be used, use the
brightness_mode module parameter: brightness_mode=1 selects EC mode,
brightness_mode=2 selects CMOS mode, brightness_mode=3 selects both EC
and CMOS.  The driver tries to autodetect which interface to use.

When display backlight brightness controls are available through the
standard ACPI interface, it is best to use it instead of this direct
ThinkPad-specific interface.  The driver will disable its native
backlight brightness control interface if it detects that the standard
ACPI interface is available in the ThinkPad.

The brightness_enable module parameter can be used to control whether
the LCD brightness control feature will be enabled when available.
brightness_enable=0 forces it to be disabled.  brightness_enable=1
forces it to be enabled when available, even if the standard ACPI
interface is also available.


Procfs notes:
Procfs notes:


@@ -947,11 +962,11 @@ Procfs notes:


Sysfs notes:
Sysfs notes:


The interface is implemented through the backlight sysfs class, which is poorly
The interface is implemented through the backlight sysfs class, which is
documented at this time.
poorly documented at this time.


Locate the thinkpad_screen device under /sys/class/backlight, and inside it
Locate the thinkpad_screen device under /sys/class/backlight, and inside
there will be the following attributes:
it there will be the following attributes:


	max_brightness:
	max_brightness:
		Reads the maximum brightness the hardware can be set to.
		Reads the maximum brightness the hardware can be set to.
@@ -961,17 +976,19 @@ there will be the following attributes:
		Reads what brightness the screen is set to at this instant.
		Reads what brightness the screen is set to at this instant.


	brightness:
	brightness:
		Writes request the driver to change brightness to the given
		Writes request the driver to change brightness to the
		value.  Reads will tell you what brightness the driver is trying
		given value.  Reads will tell you what brightness the
		to set the display to when "power" is set to zero and the display
		driver is trying to set the display to when "power" is set
		has not been dimmed by a kernel power management event.
		to zero and the display has not been dimmed by a kernel
		power management event.


	power:
	power:
		power management mode, where 0 is "display on", and 1 to 3 will
		power management mode, where 0 is "display on", and 1 to 3
		dim the display backlight to brightness level 0 because
		will dim the display backlight to brightness level 0
		thinkpad-acpi cannot really turn the backlight off.  Kernel
		because thinkpad-acpi cannot really turn the backlight
		power management events can temporarily increase the current
		off.  Kernel power management events can temporarily
		power management level, i.e. they can dim the display.
		increase the current power management level, i.e. they can
		dim the display.




Volume control -- /proc/acpi/ibm/volume
Volume control -- /proc/acpi/ibm/volume
+3 −0
Original line number Original line Diff line number Diff line
@@ -49,6 +49,9 @@ static void init_intel_pdc(struct acpi_processor *pr, struct cpuinfo_x86 *c)
	if (cpu_has(c, X86_FEATURE_EST))
	if (cpu_has(c, X86_FEATURE_EST))
		buf[2] |= ACPI_PDC_EST_CAPABILITY_SWSMP;
		buf[2] |= ACPI_PDC_EST_CAPABILITY_SWSMP;


	if (cpu_has(c, X86_FEATURE_ACPI))
		buf[2] |= ACPI_PDC_T_FFH;

	obj->type = ACPI_TYPE_BUFFER;
	obj->type = ACPI_TYPE_BUFFER;
	obj->buffer.length = 12;
	obj->buffer.length = 12;
	obj->buffer.pointer = (u8 *) buf;
	obj->buffer.pointer = (u8 *) buf;
+0 −3
Original line number Original line Diff line number Diff line
@@ -115,6 +115,3 @@ static int __init acpi_sleep_setup(char *str)


__setup("acpi_sleep=", acpi_sleep_setup);
__setup("acpi_sleep=", acpi_sleep_setup);
void acpi_pci_link_exit(void)
{
}
+20 −1
Original line number Original line Diff line number Diff line
@@ -962,7 +962,7 @@ static int EISA_ELCR(unsigned int irq)
#define default_MCA_trigger(idx)	(1)
#define default_MCA_trigger(idx)	(1)
#define default_MCA_polarity(idx)	(0)
#define default_MCA_polarity(idx)	(0)


static int __init MPBIOS_polarity(int idx)
static int MPBIOS_polarity(int idx)
{
{
	int bus = mp_irqs[idx].mpc_srcbus;
	int bus = mp_irqs[idx].mpc_srcbus;
	int polarity;
	int polarity;
@@ -2830,6 +2830,25 @@ int io_apic_set_pci_routing (int ioapic, int pin, int irq, int edge_level, int a
	return 0;
	return 0;
}
}


int acpi_get_override_irq(int bus_irq, int *trigger, int *polarity)
{
	int i;

	if (skip_ioapic_setup)
		return -1;

	for (i = 0; i < mp_irq_entries; i++)
		if (mp_irqs[i].mpc_irqtype == mp_INT &&
		    mp_irqs[i].mpc_srcbusirq == bus_irq)
			break;
	if (i >= mp_irq_entries)
		return -1;

	*trigger = irq_trigger(i);
	*polarity = irq_polarity(i);
	return 0;
}

#endif /* CONFIG_ACPI */
#endif /* CONFIG_ACPI */


static int __init parse_disable_timer_pin_1(char *arg)
static int __init parse_disable_timer_pin_1(char *arg)
+22 −2
Original line number Original line Diff line number Diff line
@@ -546,7 +546,7 @@ int IO_APIC_get_PCI_irq_vector(int bus, int slot, int pin)
#define default_PCI_trigger(idx)	(1)
#define default_PCI_trigger(idx)	(1)
#define default_PCI_polarity(idx)	(1)
#define default_PCI_polarity(idx)	(1)


static int __init MPBIOS_polarity(int idx)
static int MPBIOS_polarity(int idx)
{
{
	int bus = mp_irqs[idx].mpc_srcbus;
	int bus = mp_irqs[idx].mpc_srcbus;
	int polarity;
	int polarity;
@@ -2222,8 +2222,27 @@ int io_apic_set_pci_routing (int ioapic, int pin, int irq, int triggering, int p
	return 0;
	return 0;
}
}


#endif /* CONFIG_ACPI */


int acpi_get_override_irq(int bus_irq, int *trigger, int *polarity)
{
	int i;

	if (skip_ioapic_setup)
		return -1;

	for (i = 0; i < mp_irq_entries; i++)
		if (mp_irqs[i].mpc_irqtype == mp_INT &&
		    mp_irqs[i].mpc_srcbusirq == bus_irq)
			break;
	if (i >= mp_irq_entries)
		return -1;

	*trigger = irq_trigger(i);
	*polarity = irq_polarity(i);
	return 0;
}

#endif /* CONFIG_ACPI */


/*
/*
 * This function currently is only a helper for the i386 smp boot process where
 * This function currently is only a helper for the i386 smp boot process where
@@ -2260,3 +2279,4 @@ void __init setup_ioapic_dest(void)
	}
	}
}
}
#endif
#endif
Loading