mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-28 06:34:12 +08:00
serdev: Fix detection of UART devices on Apple machines.
On Apple devices the _CRS method returns an empty resource template, and the resource settings are instead provided by the _DSM method. But commit33364d63c7
(serdev: Add ACPI devices by ResourceSource field) changed the search for serdev devices to require valid, non-empty resource template, thereby breaking Apple devices and causing bluetooth devices to not be found. This expands the check so that if we don't find a valid template, and we're on an Apple machine, then just check for the device being an immediate child of the controller and having a "baud" property. Cc: <stable@vger.kernel.org> # 5.5 Fixes:33364d63c7
("serdev: Add ACPI devices by ResourceSource field") Signed-off-by: Ronald Tschalär <ronald@innovation.ch> Link: https://lore.kernel.org/r/20200211194723.486217-1-ronald@innovation.ch Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
b85c821083
commit
35d4670aae
@ -18,6 +18,7 @@
|
||||
#include <linux/sched.h>
|
||||
#include <linux/serdev.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/platform_data/x86/apple.h>
|
||||
|
||||
static bool is_registered;
|
||||
static DEFINE_IDA(ctrl_ida);
|
||||
@ -631,6 +632,15 @@ static int acpi_serdev_check_resources(struct serdev_controller *ctrl,
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
/*
|
||||
* Apple machines provide an empty resource template, so on those
|
||||
* machines just look for immediate children with a "baud" property
|
||||
* (from the _DSM method) instead.
|
||||
*/
|
||||
if (!lookup.controller_handle && x86_apple_machine &&
|
||||
!acpi_dev_get_property(adev, "baud", ACPI_TYPE_BUFFER, NULL))
|
||||
acpi_get_parent(adev->handle, &lookup.controller_handle);
|
||||
|
||||
/* Make sure controller and ResourceSource handle match */
|
||||
if (ACPI_HANDLE(ctrl->dev.parent) != lookup.controller_handle)
|
||||
return -ENODEV;
|
||||
|
Loading…
Reference in New Issue
Block a user