|
@@ -34,6 +34,7 @@
|
|
|
struct gpio_extcon_data {
|
|
|
struct extcon_dev edev;
|
|
|
unsigned gpio;
|
|
|
+ bool gpio_active_low;
|
|
|
const char *state_on;
|
|
|
const char *state_off;
|
|
|
int irq;
|
|
@@ -49,6 +50,8 @@ static void gpio_extcon_work(struct work_struct *work)
|
|
|
work);
|
|
|
|
|
|
state = gpio_get_value(data->gpio);
|
|
|
+ if (data->gpio_active_low)
|
|
|
+ state = !state;
|
|
|
extcon_set_state(&data->edev, state);
|
|
|
}
|
|
|
|
|
@@ -96,6 +99,7 @@ static int gpio_extcon_probe(struct platform_device *pdev)
|
|
|
|
|
|
extcon_data->edev.name = pdata->name;
|
|
|
extcon_data->gpio = pdata->gpio;
|
|
|
+ extcon_data->gpio_active_low = pdata->gpio_active_low;
|
|
|
extcon_data->state_on = pdata->state_on;
|
|
|
extcon_data->state_off = pdata->state_off;
|
|
|
if (pdata->state_on && pdata->state_off)
|