Skip to content

Commit af5043c

Browse files
committed
Merge tag 'acpi-5.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
Pull ACPI fixes from Rafael Wysocki: "These are mostly docmentation fixes and janitorial changes plus some new device IDs and a new quirk. Specifics: - Fix documentation regarding GPIO properties (Andy Shevchenko) - Fix spelling mistakes in ACPI documentation (Flavio Suligoi) - Fix white space inconsistencies in ACPI code (Maximilian Luz) - Fix string formatting in the ACPI Generic Event Device (GED) driver (Nick Desaulniers) - Add Intel Alder Lake device IDs to the ACPI drivers used by the Dynamic Platform and Thermal Framework (Srinivas Pandruvada) - Add lid-related DMI quirk for Medion Akoya E2228T to the ACPI button driver (Hans de Goede)" * tag 'acpi-5.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: ACPI: DPTF: Support Alder Lake Documentation: ACPI: fix spelling mistakes ACPI: button: Add DMI quirk for Medion Akoya E2228T ACPI: GED: fix -Wformat ACPI: Fix whitespace inconsistencies ACPI: scan: Fix acpi_dma_configure_id() kerneldoc name Documentation: firmware-guide: gpio-properties: Clarify initial output state Documentation: firmware-guide: gpio-properties: active_low only for GpioIo() Documentation: firmware-guide: gpio-properties: Fix factual mistakes
2 parents fcfb679 + 7222a8a commit af5043c

25 files changed

Lines changed: 110 additions & 62 deletions

Documentation/firmware-guide/acpi/acpi-lid.rst

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ report the "current" state of the lid as either "opened" or "closed".
1919

2020
For most platforms, both the _LID method and the lid notifications are
2121
reliable. However, there are exceptions. In order to work with these
22-
exceptional buggy platforms, special restrictions and expections should be
22+
exceptional buggy platforms, special restrictions and exceptions should be
2323
taken into account. This document describes the restrictions and the
24-
expections of the Linux ACPI lid device driver.
24+
exceptions of the Linux ACPI lid device driver.
2525

2626

2727
Restrictions of the returning value of the _LID control method
@@ -46,7 +46,7 @@ state is changed to "closed". The "closed" notification is normally used to
4646
trigger some system power saving operations on Windows. Since it is fully
4747
tested, it is reliable from all AML tables.
4848

49-
Expections for the userspace users of the ACPI lid device driver
49+
Exceptions for the userspace users of the ACPI lid device driver
5050
================================================================
5151

5252
The ACPI button driver exports the lid state to the userspace via the
@@ -100,7 +100,7 @@ use the following kernel parameter:
100100
C. button.lid_init_state=ignore:
101101
When this option is specified, the ACPI button driver never reports the
102102
initial lid state and there is a compensation mechanism implemented to
103-
ensure that the reliable "closed" notifications can always be delievered
103+
ensure that the reliable "closed" notifications can always be delivered
104104
to the userspace by always pairing "closed" input events with complement
105105
"opened" input events. But there is still no guarantee that the "opened"
106106
notifications can be delivered to the userspace when the lid is actually

Documentation/firmware-guide/acpi/gpio-properties.rst

Lines changed: 41 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ index, like the ASL example below shows::
2020

2121
Name (_CRS, ResourceTemplate ()
2222
{
23-
GpioIo (Exclusive, PullUp, 0, 0, IoRestrictionInputOnly,
23+
GpioIo (Exclusive, PullUp, 0, 0, IoRestrictionOutputOnly,
2424
"\\_SB.GPO0", 0, ResourceConsumer) {15}
25-
GpioIo (Exclusive, PullUp, 0, 0, IoRestrictionInputOnly,
25+
GpioIo (Exclusive, PullUp, 0, 0, IoRestrictionOutputOnly,
2626
"\\_SB.GPO0", 0, ResourceConsumer) {27, 31}
2727
})
2828

@@ -49,15 +49,41 @@ index
4949
pin
5050
Pin in the GpioIo()/GpioInt() resource. Typically this is zero.
5151
active_low
52-
If 1 the GPIO is marked as active_low.
52+
If 1, the GPIO is marked as active_low.
5353

5454
Since ACPI GpioIo() resource does not have a field saying whether it is
5555
active low or high, the "active_low" argument can be used here. Setting
5656
it to 1 marks the GPIO as active low.
5757

58+
Note, active_low in _DSD does not make sense for GpioInt() resource and
59+
must be 0. GpioInt() resource has its own means of defining it.
60+
5861
In our Bluetooth example the "reset-gpios" refers to the second GpioIo()
5962
resource, second pin in that resource with the GPIO number of 31.
6063

64+
The GpioIo() resource unfortunately doesn't explicitly provide an initial
65+
state of the output pin which driver should use during its initialization.
66+
67+
Linux tries to use common sense here and derives the state from the bias
68+
and polarity settings. The table below shows the expectations:
69+
70+
========= ============= ==============
71+
Pull Bias Polarity Requested...
72+
========= ============= ==============
73+
Implicit x AS IS (assumed firmware configured for us)
74+
Explicit x (no _DSD) as Pull Bias (Up == High, Down == Low),
75+
assuming non-active (Polarity = !Pull Bias)
76+
Down Low as low, assuming active
77+
Down High as low, assuming non-active
78+
Up Low as high, assuming non-active
79+
Up High as high, assuming active
80+
========= ============= ==============
81+
82+
That said, for our above example the both GPIOs, since the bias setting
83+
is explicit and _DSD is present, will be treated as active with a high
84+
polarity and Linux will configure the pins in this state until a driver
85+
reprograms them differently.
86+
6187
It is possible to leave holes in the array of GPIOs. This is useful in
6288
cases like with SPI host controllers where some chip selects may be
6389
implemented as GPIOs and some as native signals. For example a SPI host
@@ -112,8 +138,8 @@ Example::
112138
Package () {
113139
"gpio-line-names",
114140
Package () {
115-
"SPI0_CS_N", "EXP2_INT", "MUX6_IO", "UART0_RXD", "MUX7_IO",
116-
"LVL_C_A1", "MUX0_IO", "SPI1_MISO"
141+
"SPI0_CS_N", "EXP2_INT", "MUX6_IO", "UART0_RXD",
142+
"MUX7_IO", "LVL_C_A1", "MUX0_IO", "SPI1_MISO",
117143
}
118144
}
119145

@@ -137,7 +163,7 @@ to the GPIO lines it is going to use and provide the GPIO subsystem with a
137163
mapping between those names and the ACPI GPIO resources corresponding to them.
138164

139165
To do that, the driver needs to define a mapping table as a NULL-terminated
140-
array of struct acpi_gpio_mapping objects that each contain a name, a pointer
166+
array of struct acpi_gpio_mapping objects that each contains a name, a pointer
141167
to an array of line data (struct acpi_gpio_params) objects and the size of that
142168
array. Each struct acpi_gpio_params object consists of three fields,
143169
crs_entry_index, line_index, active_low, representing the index of the target
@@ -154,13 +180,14 @@ question would look like this::
154180
static const struct acpi_gpio_mapping bluetooth_acpi_gpios[] = {
155181
{ "reset-gpios", &reset_gpio, 1 },
156182
{ "shutdown-gpios", &shutdown_gpio, 1 },
157-
{ },
183+
{ }
158184
};
159185

160186
Next, the mapping table needs to be passed as the second argument to
161-
acpi_dev_add_driver_gpios() that will register it with the ACPI device object
162-
pointed to by its first argument. That should be done in the driver's .probe()
163-
routine. On removal, the driver should unregister its GPIO mapping table by
187+
acpi_dev_add_driver_gpios() or its managed analogue that will
188+
register it with the ACPI device object pointed to by its first
189+
argument. That should be done in the driver's .probe() routine.
190+
On removal, the driver should unregister its GPIO mapping table by
164191
calling acpi_dev_remove_driver_gpios() on the ACPI device object where that
165192
table was previously registered.
166193

@@ -191,12 +218,12 @@ The driver might expect to get the right GPIO when it does::
191218
but since there is no way to know the mapping between "reset" and
192219
the GpioIo() in _CRS desc will hold ERR_PTR(-ENOENT).
193220

194-
The driver author can solve this by passing the mapping explictly
195-
(the recommended way and documented in the above chapter).
221+
The driver author can solve this by passing the mapping explicitly
222+
(this is the recommended way and it's documented in the above chapter).
196223

197224
The ACPI GPIO mapping tables should not contaminate drivers that are not
198225
knowing about which exact device they are servicing on. It implies that
199-
the ACPI GPIO mapping tables are hardly linked to ACPI ID and certain
226+
the ACPI GPIO mapping tables are hardly linked to an ACPI ID and certain
200227
objects, as listed in the above chapter, of the device in question.
201228

202229
Getting GPIO descriptor
@@ -229,5 +256,5 @@ Case 2 explicitly tells GPIO core to look for resources in _CRS.
229256
Be aware that gpiod_get_index() in cases 1 and 2, assuming that there
230257
are two versions of ACPI device description provided and no mapping is
231258
present in the driver, will return different resources. That's why a
232-
certain driver has to handle them carefully as explained in previous
259+
certain driver has to handle them carefully as explained in the previous
233260
chapter.

Documentation/firmware-guide/acpi/method-tracing.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ subject to change::
9898
[ 0.188903] exdebug-0398 ex_trace_point : Method End [0xf58394d8:\_SB.PCI0.LPCB.ECOK] execution.
9999

100100
Developers can utilize these special log entries to track the AML
101-
interpretion, thus can aid issue debugging and performance tuning. Note
101+
interpretation, thus can aid issue debugging and performance tuning. Note
102102
that, as the "AML tracer" logs are implemented via ACPI_DEBUG_PRINT()
103103
macro, CONFIG_ACPI_DEBUG is also required to be enabled for enabling
104104
"AML tracer" logs.

drivers/acpi/acpi_video.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -578,7 +578,7 @@ acpi_video_bqc_value_to_level(struct acpi_video_device *device,
578578
ACPI_VIDEO_FIRST_LEVEL - 1 - bqc_value;
579579

580580
level = device->brightness->levels[bqc_value +
581-
ACPI_VIDEO_FIRST_LEVEL];
581+
ACPI_VIDEO_FIRST_LEVEL];
582582
} else {
583583
level = bqc_value;
584584
}
@@ -990,8 +990,8 @@ acpi_video_init_brightness(struct acpi_video_device *device)
990990
goto out_free_levels;
991991

992992
ACPI_DEBUG_PRINT((ACPI_DB_INFO,
993-
"found %d brightness levels\n",
994-
br->count - ACPI_VIDEO_FIRST_LEVEL));
993+
"found %d brightness levels\n",
994+
br->count - ACPI_VIDEO_FIRST_LEVEL));
995995
return 0;
996996

997997
out_free_levels:

drivers/acpi/battery.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -987,7 +987,7 @@ static int acpi_battery_update(struct acpi_battery *battery, bool resume)
987987
*/
988988
if ((battery->state & ACPI_BATTERY_STATE_CRITICAL) ||
989989
(test_bit(ACPI_BATTERY_ALARM_PRESENT, &battery->flags) &&
990-
(battery->capacity_now <= battery->alarm)))
990+
(battery->capacity_now <= battery->alarm)))
991991
acpi_pm_wakeup_event(&battery->device->dev);
992992

993993
return result;

drivers/acpi/button.c

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,18 @@ static const struct dmi_system_id dmi_lid_quirks[] = {
8989
*/
9090
.matches = {
9191
DMI_MATCH(DMI_SYS_VENDOR, "MEDION"),
92-
DMI_MATCH(DMI_PRODUCT_NAME, "E2215T MD60198"),
92+
DMI_MATCH(DMI_PRODUCT_NAME, "E2215T"),
93+
},
94+
.driver_data = (void *)(long)ACPI_BUTTON_LID_INIT_OPEN,
95+
},
96+
{
97+
/*
98+
* Medion Akoya E2228T, notification of the LID device only
99+
* happens on close, not on open and _LID always returns closed.
100+
*/
101+
.matches = {
102+
DMI_MATCH(DMI_SYS_VENDOR, "MEDION"),
103+
DMI_MATCH(DMI_PRODUCT_NAME, "E2228T"),
93104
},
94105
.driver_data = (void *)(long)ACPI_BUTTON_LID_INIT_OPEN,
95106
},

drivers/acpi/dptf/dptf_pch_fivr.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ static int pch_fivr_remove(struct platform_device *pdev)
106106

107107
static const struct acpi_device_id pch_fivr_device_ids[] = {
108108
{"INTC1045", 0},
109+
{"INTC1049", 0},
109110
{"", 0},
110111
};
111112
MODULE_DEVICE_TABLE(acpi, pch_fivr_device_ids);

drivers/acpi/dptf/dptf_power.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,8 @@ static const struct acpi_device_id int3407_device_ids[] = {
229229
{"INT3532", 0},
230230
{"INTC1047", 0},
231231
{"INTC1050", 0},
232+
{"INTC1060", 0},
233+
{"INTC1061", 0},
232234
{"", 0},
233235
};
234236
MODULE_DEVICE_TABLE(acpi, int3407_device_ids);

drivers/acpi/dptf/int340x_thermal.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,16 @@ static const struct acpi_device_id int340x_thermal_device_ids[] = {
2525
{"INT340A"},
2626
{"INT340B"},
2727
{"INTC1040"},
28+
{"INTC1041"},
2829
{"INTC1043"},
2930
{"INTC1044"},
3031
{"INTC1045"},
32+
{"INTC1046"},
3133
{"INTC1047"},
34+
{"INTC1048"},
35+
{"INTC1049"},
36+
{"INTC1060"},
37+
{"INTC1061"},
3238
{""},
3339
};
3440

drivers/acpi/event.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ int acpi_notifier_call_chain(struct acpi_device *dev, u32 type, u32 data)
3131
event.type = type;
3232
event.data = data;
3333
return (blocking_notifier_call_chain(&acpi_chain_head, 0, (void *)&event)
34-
== NOTIFY_BAD) ? -EINVAL : 0;
34+
== NOTIFY_BAD) ? -EINVAL : 0;
3535
}
3636
EXPORT_SYMBOL(acpi_notifier_call_chain);
3737

0 commit comments

Comments
 (0)