Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
afbd65f5
Commit
afbd65f5
authored
Dec 06, 2019
by
Dmitry Torokhov
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'next' into for-linus
Prepare second round of updates for 5.5 merge window.
parents
976e3645
a284e11c
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
51 additions
and
17 deletions
+51
-17
drivers/input/keyboard/Kconfig
drivers/input/keyboard/Kconfig
+1
-1
drivers/input/keyboard/snvs_pwrkey.c
drivers/input/keyboard/snvs_pwrkey.c
+35
-13
drivers/input/misc/uinput.c
drivers/input/misc/uinput.c
+1
-1
drivers/input/rmi4/rmi_f34v7.c
drivers/input/rmi4/rmi_f34v7.c
+3
-0
drivers/input/rmi4/rmi_smbus.c
drivers/input/rmi4/rmi_smbus.c
+0
-2
drivers/input/touchscreen/goodix.c
drivers/input/touchscreen/goodix.c
+9
-0
include/uapi/linux/input-event-codes.h
include/uapi/linux/input-event-codes.h
+2
-0
No files found.
drivers/input/keyboard/Kconfig
View file @
afbd65f5
...
...
@@ -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.
...
...
drivers/input/keyboard/snvs_pwrkey.c
View file @
afbd65f5
...
...
@@ -19,15 +19,16 @@
#include <linux/mfd/syscon.h>
#include <linux/regmap.h>
#define SNVS_LPSR_REG 0x4C
/* LP Status Register */
#define SNVS_LPCR_REG 0x38
/* LP Control Register */
#define SNVS_HPSR_REG 0x14
#define SNVS_HPSR_BTN BIT(6)
#define SNVS_LPSR_SPO BIT(18)
#define SNVS_LPCR_DEP_EN BIT(5)
#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
#define SNVS_HPSR_BTN BIT(6)
#define SNVS_LPSR_SPO BIT(18)
#define SNVS_LPCR_DEP_EN BIT(5)
#define DEBOUNCE_TIME
30
#define REPEAT_INTERVAL
60
#define DEBOUNCE_TIME
30
#define REPEAT_INTERVAL
60
struct
pwrkey_drv_data
{
struct
regmap
*
snvs
;
...
...
@@ -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
)
...
...
@@ -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
);
...
...
@@ -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
;
...
...
@@ -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 */
...
...
drivers/input/misc/uinput.c
View file @
afbd65f5
...
...
@@ -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
)
...
...
drivers/input/rmi4/rmi_f34v7.c
View file @
afbd65f5
...
...
@@ -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
;
...
...
drivers/input/rmi4/rmi_smbus.c
View file @
afbd65f5
...
...
@@ -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
);
...
...
@@ -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
;
...
...
drivers/input/touchscreen/goodix.c
View file @
afbd65f5
...
...
@@ -128,6 +128,15 @@ static const unsigned long goodix_irq_flags[] = {
*/
static
const
struct
dmi_system_id
rotated_screen
[]
=
{
#if defined(CONFIG_DMI) && defined(CONFIG_X86)
{
.
ident
=
"Teclast X89"
,
.
matches
=
{
/* tPAD is too generic, also match on bios date */
DMI_MATCH
(
DMI_BOARD_VENDOR
,
"TECLAST"
),
DMI_MATCH
(
DMI_BOARD_NAME
,
"tPAD"
),
DMI_MATCH
(
DMI_BIOS_DATE
,
"12/19/2014"
),
},
},
{
.
ident
=
"WinBook TW100"
,
.
matches
=
{
...
...
include/uapi/linux/input-event-codes.h
View file @
afbd65f5
...
...
@@ -649,6 +649,8 @@
*/
#define KEY_DATA 0x277
#define KEY_ONSCREEN_KEYBOARD 0x278
/* Electronic privacy screen control */
#define KEY_PRIVACY_SCREEN_TOGGLE 0x279
#define BTN_TRIGGER_HAPPY 0x2c0
#define BTN_TRIGGER_HAPPY1 0x2c0
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment