Loading drivers/input/keyboard/Kconfig +1 −1 Original line number Diff line number Diff line Loading @@ -450,7 +450,7 @@ config KEYBOARD_SNVS_PWRKEY depends on OF help This is the snvs powerkey driver for the Freescale i.MX application processors that are newer than i.MX6 SX. processors. To compile this driver as a module, choose M here; the module will be called snvs_pwrkey. Loading drivers/input/keyboard/snvs_pwrkey.c +35 −13 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <linux/mfd/syscon.h> #include <linux/regmap.h> #define SNVS_HPVIDR1_REG 0xF8 #define SNVS_LPSR_REG 0x4C /* LP Status Register */ #define SNVS_LPCR_REG 0x38 /* LP Control Register */ #define SNVS_HPSR_REG 0x14 Loading @@ -37,6 +38,7 @@ struct pwrkey_drv_data { int wakeup; struct timer_list check_timer; struct input_dev *input; u8 minor_rev; }; static void imx_imx_snvs_check_for_events(struct timer_list *t) Loading Loading @@ -67,13 +69,29 @@ static irqreturn_t imx_snvs_pwrkey_interrupt(int irq, void *dev_id) { struct platform_device *pdev = dev_id; struct pwrkey_drv_data *pdata = platform_get_drvdata(pdev); struct input_dev *input = pdata->input; u32 lp_status; pm_wakeup_event(pdata->input->dev.parent, 0); pm_wakeup_event(input->dev.parent, 0); regmap_read(pdata->snvs, SNVS_LPSR_REG, &lp_status); if (lp_status & SNVS_LPSR_SPO) mod_timer(&pdata->check_timer, jiffies + msecs_to_jiffies(DEBOUNCE_TIME)); if (lp_status & SNVS_LPSR_SPO) { if (pdata->minor_rev == 0) { /* * The first generation i.MX6 SoCs only sends an * interrupt on button release. To mimic power-key * usage, we'll prepend a press event. */ input_report_key(input, pdata->keycode, 1); input_sync(input); input_report_key(input, pdata->keycode, 0); input_sync(input); pm_relax(input->dev.parent); } else { mod_timer(&pdata->check_timer, jiffies + msecs_to_jiffies(DEBOUNCE_TIME)); } } /* clear SPO status */ regmap_write(pdata->snvs, SNVS_LPSR_REG, SNVS_LPSR_SPO); Loading @@ -90,10 +108,11 @@ static void imx_snvs_pwrkey_act(void *pdata) static int imx_snvs_pwrkey_probe(struct platform_device *pdev) { struct pwrkey_drv_data *pdata = NULL; struct input_dev *input = NULL; struct pwrkey_drv_data *pdata; struct input_dev *input; struct device_node *np; int error; u32 vid; /* Get SNVS register Page */ np = pdev->dev.of_node; Loading Loading @@ -121,6 +140,9 @@ static int imx_snvs_pwrkey_probe(struct platform_device *pdev) if (pdata->irq < 0) return -EINVAL; regmap_read(pdata->snvs, SNVS_HPVIDR1_REG, &vid); pdata->minor_rev = vid & 0xff; regmap_update_bits(pdata->snvs, SNVS_LPCR_REG, SNVS_LPCR_DEP_EN, SNVS_LPCR_DEP_EN); /* clear the unexpected interrupt before driver ready */ Loading drivers/input/misc/uinput.c +1 −1 Original line number Diff line number Diff line Loading @@ -695,7 +695,7 @@ static __poll_t uinput_poll(struct file *file, poll_table *wait) if (udev->head != udev->tail) return EPOLLIN | EPOLLRDNORM; return 0; return EPOLLOUT | EPOLLWRNORM; } static int uinput_release(struct inode *inode, struct file *file) Loading drivers/input/rmi4/rmi_f34v7.c +3 −0 Original line number Diff line number Diff line Loading @@ -1189,6 +1189,9 @@ int rmi_f34v7_do_reflash(struct f34_data *f34, const struct firmware *fw) { int ret; f34->fn->rmi_dev->driver->set_irq_bits(f34->fn->rmi_dev, f34->fn->irq_mask); rmi_f34v7_read_queries_bl_version(f34); f34->v7.image = fw->data; Loading drivers/input/rmi4/rmi_smbus.c +0 −2 Original line number Diff line number Diff line Loading @@ -163,7 +163,6 @@ static int rmi_smb_write_block(struct rmi_transport_dev *xport, u16 rmiaddr, /* prepare to write next block of bytes */ cur_len -= SMB_MAX_COUNT; databuff += SMB_MAX_COUNT; rmiaddr += SMB_MAX_COUNT; } exit: mutex_unlock(&rmi_smb->page_mutex); Loading Loading @@ -215,7 +214,6 @@ static int rmi_smb_read_block(struct rmi_transport_dev *xport, u16 rmiaddr, /* prepare to read next block of bytes */ cur_len -= SMB_MAX_COUNT; databuff += SMB_MAX_COUNT; rmiaddr += SMB_MAX_COUNT; } retval = 0; Loading Loading
drivers/input/keyboard/Kconfig +1 −1 Original line number Diff line number Diff line Loading @@ -450,7 +450,7 @@ config KEYBOARD_SNVS_PWRKEY depends on OF help This is the snvs powerkey driver for the Freescale i.MX application processors that are newer than i.MX6 SX. processors. To compile this driver as a module, choose M here; the module will be called snvs_pwrkey. Loading
drivers/input/keyboard/snvs_pwrkey.c +35 −13 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <linux/mfd/syscon.h> #include <linux/regmap.h> #define SNVS_HPVIDR1_REG 0xF8 #define SNVS_LPSR_REG 0x4C /* LP Status Register */ #define SNVS_LPCR_REG 0x38 /* LP Control Register */ #define SNVS_HPSR_REG 0x14 Loading @@ -37,6 +38,7 @@ struct pwrkey_drv_data { int wakeup; struct timer_list check_timer; struct input_dev *input; u8 minor_rev; }; static void imx_imx_snvs_check_for_events(struct timer_list *t) Loading Loading @@ -67,13 +69,29 @@ static irqreturn_t imx_snvs_pwrkey_interrupt(int irq, void *dev_id) { struct platform_device *pdev = dev_id; struct pwrkey_drv_data *pdata = platform_get_drvdata(pdev); struct input_dev *input = pdata->input; u32 lp_status; pm_wakeup_event(pdata->input->dev.parent, 0); pm_wakeup_event(input->dev.parent, 0); regmap_read(pdata->snvs, SNVS_LPSR_REG, &lp_status); if (lp_status & SNVS_LPSR_SPO) mod_timer(&pdata->check_timer, jiffies + msecs_to_jiffies(DEBOUNCE_TIME)); if (lp_status & SNVS_LPSR_SPO) { if (pdata->minor_rev == 0) { /* * The first generation i.MX6 SoCs only sends an * interrupt on button release. To mimic power-key * usage, we'll prepend a press event. */ input_report_key(input, pdata->keycode, 1); input_sync(input); input_report_key(input, pdata->keycode, 0); input_sync(input); pm_relax(input->dev.parent); } else { mod_timer(&pdata->check_timer, jiffies + msecs_to_jiffies(DEBOUNCE_TIME)); } } /* clear SPO status */ regmap_write(pdata->snvs, SNVS_LPSR_REG, SNVS_LPSR_SPO); Loading @@ -90,10 +108,11 @@ static void imx_snvs_pwrkey_act(void *pdata) static int imx_snvs_pwrkey_probe(struct platform_device *pdev) { struct pwrkey_drv_data *pdata = NULL; struct input_dev *input = NULL; struct pwrkey_drv_data *pdata; struct input_dev *input; struct device_node *np; int error; u32 vid; /* Get SNVS register Page */ np = pdev->dev.of_node; Loading Loading @@ -121,6 +140,9 @@ static int imx_snvs_pwrkey_probe(struct platform_device *pdev) if (pdata->irq < 0) return -EINVAL; regmap_read(pdata->snvs, SNVS_HPVIDR1_REG, &vid); pdata->minor_rev = vid & 0xff; regmap_update_bits(pdata->snvs, SNVS_LPCR_REG, SNVS_LPCR_DEP_EN, SNVS_LPCR_DEP_EN); /* clear the unexpected interrupt before driver ready */ Loading
drivers/input/misc/uinput.c +1 −1 Original line number Diff line number Diff line Loading @@ -695,7 +695,7 @@ static __poll_t uinput_poll(struct file *file, poll_table *wait) if (udev->head != udev->tail) return EPOLLIN | EPOLLRDNORM; return 0; return EPOLLOUT | EPOLLWRNORM; } static int uinput_release(struct inode *inode, struct file *file) Loading
drivers/input/rmi4/rmi_f34v7.c +3 −0 Original line number Diff line number Diff line Loading @@ -1189,6 +1189,9 @@ int rmi_f34v7_do_reflash(struct f34_data *f34, const struct firmware *fw) { int ret; f34->fn->rmi_dev->driver->set_irq_bits(f34->fn->rmi_dev, f34->fn->irq_mask); rmi_f34v7_read_queries_bl_version(f34); f34->v7.image = fw->data; Loading
drivers/input/rmi4/rmi_smbus.c +0 −2 Original line number Diff line number Diff line Loading @@ -163,7 +163,6 @@ static int rmi_smb_write_block(struct rmi_transport_dev *xport, u16 rmiaddr, /* prepare to write next block of bytes */ cur_len -= SMB_MAX_COUNT; databuff += SMB_MAX_COUNT; rmiaddr += SMB_MAX_COUNT; } exit: mutex_unlock(&rmi_smb->page_mutex); Loading Loading @@ -215,7 +214,6 @@ static int rmi_smb_read_block(struct rmi_transport_dev *xport, u16 rmiaddr, /* prepare to read next block of bytes */ cur_len -= SMB_MAX_COUNT; databuff += SMB_MAX_COUNT; rmiaddr += SMB_MAX_COUNT; } retval = 0; Loading