34 lines
1.1 KiB
Diff
34 lines
1.1 KiB
Diff
diff --git a/drivers/media/i2c/cvs/core.c b/drivers/media/i2c/cvs/core.c
|
|
--- a/drivers/media/i2c/cvs/core.c
|
|
+++ b/drivers/media/i2c/cvs/core.c
|
|
@@ -723,8 +723,6 @@ static int cvs_core_probe(struct device *dev, struct i2c_client *i2c)
|
|
}
|
|
|
|
if (ctx->res == ICVS_FULLCAP) {
|
|
- struct gpio_desc *wake;
|
|
-
|
|
ctx->rst = devm_gpiod_get(dev, "rst", GPIOD_OUT_HIGH);
|
|
if (IS_ERR(ctx->rst)) {
|
|
ret = dev_err_probe(dev, PTR_ERR(ctx->rst),
|
|
@@ -732,14 +730,12 @@ static int cvs_core_probe(struct device *dev, struct i2c_client *i2c)
|
|
goto err_put_ipu;
|
|
}
|
|
|
|
- wake = devm_gpiod_get(dev, "wake", GPIOD_IN);
|
|
- if (IS_ERR(wake)) {
|
|
- ret = dev_err_probe(dev, PTR_ERR(wake),
|
|
- "failed to get wake GPIO\n");
|
|
- goto err_put_ipu;
|
|
- }
|
|
-
|
|
- ctx->irq = gpiod_to_irq(wake);
|
|
+ /*
|
|
+ * Do not request the line: another device's _CRS may list
|
|
+ * the same pin, and its driver would then fail with -EBUSY.
|
|
+ */
|
|
+ ctx->irq = acpi_dev_gpio_irq_get_by(ACPI_COMPANION(dev),
|
|
+ "wake", 0);
|
|
if (ctx->irq < 0) {
|
|
ret = dev_err_probe(dev, ctx->irq,
|
|
"failed to get wake IRQ\n");
|