summaryrefslogtreecommitdiffstats
path: root/drivers/extcon/extcon-intel-int3496.c
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2021-12-28 18:01:40 +0100
committerChanwoo Choi <cw00.choi@samsung.com>2022-05-13 10:03:40 +0200
commitc26aef6d396b015d89a10a3b433dc9d7f759bb9f (patch)
tree3b568c6a5bcc0836155b7b62c944c2dc7f9c9d77 /drivers/extcon/extcon-intel-int3496.c
parentextcon: int3496: Request non-exclusive access to the ID GPIO (diff)
downloadlinux-c26aef6d396b015d89a10a3b433dc9d7f759bb9f.tar.xz
linux-c26aef6d396b015d89a10a3b433dc9d7f759bb9f.zip
extcon: int3496: Add support for binding to plain platform devices
On some X86 Android tablets the DSTD lack the INT3496 ACPI device, while also not handling micro USB port ID pin events inside the DSDT (instead the forked factory image kernel has things hardcoded). The new drivers/platform/x86/x86-android-tablets.c module manually instantiates an intel-int3496 device for these tablets. Add support to the extcon-intel-int3496 driver to bind to devices without an ACPI companion and export a normal platform_device modalias for automatic module loading. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Diffstat (limited to 'drivers/extcon/extcon-intel-int3496.c')
-rw-r--r--drivers/extcon/extcon-intel-int3496.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/drivers/extcon/extcon-intel-int3496.c b/drivers/extcon/extcon-intel-int3496.c
index 20605574020c..0830076d8c05 100644
--- a/drivers/extcon/extcon-intel-int3496.c
+++ b/drivers/extcon/extcon-intel-int3496.c
@@ -91,10 +91,12 @@ static int int3496_probe(struct platform_device *pdev)
struct int3496_data *data;
int ret;
- ret = devm_acpi_dev_add_driver_gpios(dev, acpi_int3496_default_gpios);
- if (ret) {
- dev_err(dev, "can't add GPIO ACPI mapping\n");
- return ret;
+ if (has_acpi_companion(dev)) {
+ ret = devm_acpi_dev_add_driver_gpios(dev, acpi_int3496_default_gpios);
+ if (ret) {
+ dev_err(dev, "can't add GPIO ACPI mapping\n");
+ return ret;
+ }
}
data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL);
@@ -165,12 +167,19 @@ static const struct acpi_device_id int3496_acpi_match[] = {
};
MODULE_DEVICE_TABLE(acpi, int3496_acpi_match);
+static const struct platform_device_id int3496_ids[] = {
+ { .name = "intel-int3496" },
+ {},
+};
+MODULE_DEVICE_TABLE(platform, int3496_ids);
+
static struct platform_driver int3496_driver = {
.driver = {
.name = "intel-int3496",
.acpi_match_table = int3496_acpi_match,
},
.probe = int3496_probe,
+ .id_table = int3496_ids,
};
module_platform_driver(int3496_driver);