static int capella_cm3602_enable(struct capella_cm3602_data *data) { int rc; int irq = data->pdata->irq; IPS("%s\n", __func__); if (data->enabled) { DPS("%s: already enabled\n", __func__); return 0; } /* dummy report */ input_report_abs(data->input_dev, ABS_DISTANCE, -1); input_sync(data->input_dev); data->pdata->power(PS_PWR_ON, 1); rc = gpio_direction_output(data->pdata->p_en, 0); msleep(220); data->enabled = !rc; if (!rc) capella_cm3602_report(data); enable_irq(irq); rc = irq_set_irq_wake(irq, 1); if (rc < 0) EPS("%s: failed to set irq %d as a wake interrupt\n", __func__, irq); return rc; }
static int capella_cm3602_enable(struct capella_cm3602_data *data) { int rc; D("%s\n", __func__); //time_enable = true; if (data->enabled) { D("%s: already enabled\n", __func__); return 0; } /* gpio_direction_output(pdata->pwd_out_pin, SPI_GPIO_OUT); gpio_set_value(pdata->pwd_out_pin, SPI_GPIO_LOW); //CM3605_PWD output gpio_direction_output(pdata->ps_shutdown_pin, SPI_GPIO_OUT); gpio_set_value(pdata->ps_shutdown_pin, SPI_GPIO_LOW); //CM3605_PS_SHUTDOWN */ data->pdata->power(1); data->enabled = !rc; if (!rc) capella_cm3602_report(data); return rc; }
static irqreturn_t capella_cm3602_irq_handler(int irq, void *data) { struct capella_cm3602_data *ip = data; capella_cm3602_report(ip); return IRQ_HANDLED; }