#include <linux/iio/buffer.h>
#include <linux/iio/kfifo_buf.h>
#include <linux/slab.h>
+#include <linux/amlogic/pm.h>
#define MESON_SAR_ADC_REG0 0x00
#define MESON_SAR_ADC_REG0_PANEL_DETECT BIT(31)
struct iio_dev *indio_dev = dev_get_drvdata(dev);
int ret;
+ if (is_pm_freeze_mode())
+ return 0;
+
if (iio_buffer_enabled(indio_dev)) {
ret = meson_sar_adc_buffer_predisable(indio_dev);
if (ret)
struct iio_dev *indio_dev = dev_get_drvdata(dev);
int ret;
+ if (is_pm_freeze_mode())
+ return 0;
+
ret = meson_sar_adc_hw_enable(indio_dev);
if (ret)
return ret;
static int meson_adc_kp_suspend(struct platform_device *pdev,
pm_message_t state)
{
+ if (is_pm_freeze_mode())
+ return 0;
return 0;
}
struct adc_key *key;
struct meson_adc_kp *kp = platform_get_drvdata(pdev);
+ if (is_pm_freeze_mode())
+ return 0;
+
if (get_resume_method() == POWER_KEY_WAKEUP) {
list_for_each_entry(key, &kp->adckey_head, list) {
if (key->code == KEY_POWER) {
{
struct gpio_keypad *pdata;
+ if (is_pm_freeze_mode())
+ return 0;
+
pdata = (struct gpio_keypad *)platform_get_drvdata(dev);
if (!pdata->use_irq)
del_timer(&(pdata->polling_timer));
int i;
struct gpio_keypad *pdata;
+ if (is_pm_freeze_mode())
+ return 0;
+
pdata = (struct gpio_keypad *)platform_get_drvdata(dev);
if (!pdata->use_irq)
mod_timer(&(pdata->polling_timer),
if (delay >= HZ)
delay = round_jiffies_relative(delay);
- queue_delayed_work(system_freezable_wq, &dev->work, delay);
+ queue_delayed_work(system_wq, &dev->work, delay);
}
static void input_polled_device_work(struct work_struct *work)