Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Kirill Smelkov
linux
Commits
08088828
Commit
08088828
authored
8 years ago
by
Dmitry Torokhov
Browse files
Options
Download
Plain Diff
Merge branch 'next' into for-linus
Prepare first round of input updates for 4.8 merge window.
parents
e9003c9c
0097ff3d
Changes
42
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
566 additions
and
33 deletions
+566
-33
Documentation/devicetree/bindings/input/atmel,captouch.txt
Documentation/devicetree/bindings/input/atmel,captouch.txt
+36
-0
Documentation/devicetree/bindings/input/raydium_i2c_ts.txt
Documentation/devicetree/bindings/input/raydium_i2c_ts.txt
+20
-0
Documentation/devicetree/bindings/input/rmi4/rmi_i2c.txt
Documentation/devicetree/bindings/input/rmi4/rmi_i2c.txt
+9
-0
Documentation/devicetree/bindings/vendor-prefixes.txt
Documentation/devicetree/bindings/vendor-prefixes.txt
+1
-0
drivers/input/input-mt.c
drivers/input/input-mt.c
+16
-1
drivers/input/input.c
drivers/input/input.c
+3
-4
drivers/input/keyboard/tc3589x-keypad.c
drivers/input/keyboard/tc3589x-keypad.c
+1
-1
drivers/input/keyboard/tegra-kbc.c
drivers/input/keyboard/tegra-kbc.c
+1
-1
drivers/input/misc/Kconfig
drivers/input/misc/Kconfig
+23
-0
drivers/input/misc/Makefile
drivers/input/misc/Makefile
+2
-0
drivers/input/misc/apanel.c
drivers/input/misc/apanel.c
+1
-1
drivers/input/misc/atmel_captouch.c
drivers/input/misc/atmel_captouch.c
+290
-0
drivers/input/misc/hisi_powerkey.c
drivers/input/misc/hisi_powerkey.c
+142
-0
drivers/input/misc/regulator-haptic.c
drivers/input/misc/regulator-haptic.c
+1
-1
drivers/input/misc/xen-kbdfront.c
drivers/input/misc/xen-kbdfront.c
+4
-4
drivers/input/mouse/elantech.c
drivers/input/mouse/elantech.c
+1
-1
drivers/input/mouse/lifebook.c
drivers/input/mouse/lifebook.c
+1
-1
drivers/input/rmi4/rmi_f01.c
drivers/input/rmi4/rmi_f01.c
+11
-11
drivers/input/rmi4/rmi_f11.c
drivers/input/rmi4/rmi_f11.c
+3
-6
drivers/input/rmi4/rmi_f12.c
drivers/input/rmi4/rmi_f12.c
+0
-1
No files found.
Documentation/devicetree/bindings/input/atmel,captouch.txt
0 → 100644
View file @
08088828
Device tree bindings for Atmel capacitive touch device, typically
an Atmel touch sensor connected to AtmegaXX MCU running firmware
based on Qtouch library.
The node for this device must be a child of a I2C controller node, as the
device communicates via I2C.
Required properties:
compatible: Must be "atmel,captouch".
reg: The I2C slave address of the device.
interrupts: Property describing the interrupt line the device
is connected to. The device only has one interrupt
source.
linux,keycodes: Specifies an array of numeric keycode values to
be used for reporting button presses. The array can
contain up to 8 entries.
Optional properties:
autorepeat: Enables the Linux input system's autorepeat
feature on the input device.
Example:
atmel-captouch@51 {
compatible = "atmel,captouch";
reg = <0x51>;
interrupt-parent = <&tlmm>;
interrupts = <67 IRQ_TYPE_EDGE_FALLING>;
linux,keycodes = <BTN_0>, <BTN_1>,
<BTN_2>, <BTN_3>,
<BTN_4>, <BTN_5>,
<BTN_6>, <BTN_7>;
autorepeat;
};
This diff is collapsed.
Click to expand it.
Documentation/devicetree/bindings/input/raydium_i2c_ts.txt
0 → 100644
View file @
08088828
Raydium I2C touchscreen
Required properties:
- compatible: must be "raydium,rm32380"
- reg: The I2C address of the device
- interrupt-parent: the phandle for the interrupt controller
- interrupts: interrupt to which the chip is connected
See ../interrupt-controller/interrupts.txt
Optional properties:
- avdd-supply: analog power supply needed to power device
- vccio-supply: IO Power source
- reset-gpios: reset gpio the chip is connected to.
Example:
touchscreen@39 {
compatible = "raydium,rm32380";
reg = <0x39>;
interrupt-parent = <&gpio>;
interrupts = <0x0 IRQ_TYPE_EDGE_FALLING>;
};
This diff is collapsed.
Click to expand it.
Documentation/devicetree/bindings/input/rmi4/rmi_i2c.txt
View file @
08088828
...
@@ -22,6 +22,15 @@ See Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
...
@@ -22,6 +22,15 @@ See Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
- syna,reset-delay-ms: The number of milliseconds to wait after resetting the
- syna,reset-delay-ms: The number of milliseconds to wait after resetting the
device.
device.
- syna,startup-delay-ms: The number of milliseconds to wait after powering on
the device.
- vdd-supply: VDD power supply.
See ../regulator/regulator.txt
- vio-supply: VIO power supply
See ../regulator/regulator.txt
Function Parameters:
Function Parameters:
Parameters specific to RMI functions are contained in child nodes of the rmi device
Parameters specific to RMI functions are contained in child nodes of the rmi device
node. Documentation for the parameters of each function can be found in:
node. Documentation for the parameters of each function can be found in:
...
...
This diff is collapsed.
Click to expand it.
Documentation/devicetree/bindings/vendor-prefixes.txt
View file @
08088828
...
@@ -198,6 +198,7 @@ raidsonic RaidSonic Technology GmbH
...
@@ -198,6 +198,7 @@ raidsonic RaidSonic Technology GmbH
ralink Mediatek/Ralink Technology Corp.
ralink Mediatek/Ralink Technology Corp.
ramtron Ramtron International
ramtron Ramtron International
raspberrypi Raspberry Pi Foundation
raspberrypi Raspberry Pi Foundation
raydium Raydium Semiconductor Corp.
realtek Realtek Semiconductor Corp.
realtek Realtek Semiconductor Corp.
renesas Renesas Electronics Corporation
renesas Renesas Electronics Corporation
richtek Richtek Technology Corporation
richtek Richtek Technology Corporation
...
...
This diff is collapsed.
Click to expand it.
drivers/input/input-mt.c
View file @
08088828
...
@@ -218,8 +218,23 @@ void input_mt_report_pointer_emulation(struct input_dev *dev, bool use_count)
...
@@ -218,8 +218,23 @@ void input_mt_report_pointer_emulation(struct input_dev *dev, bool use_count)
}
}
input_event
(
dev
,
EV_KEY
,
BTN_TOUCH
,
count
>
0
);
input_event
(
dev
,
EV_KEY
,
BTN_TOUCH
,
count
>
0
);
if
(
use_count
)
if
(
use_count
)
{
if
(
count
==
0
&&
!
test_bit
(
ABS_MT_DISTANCE
,
dev
->
absbit
)
&&
test_bit
(
ABS_DISTANCE
,
dev
->
absbit
)
&&
input_abs_get_val
(
dev
,
ABS_DISTANCE
)
!=
0
)
{
/*
* Force reporting BTN_TOOL_FINGER for devices that
* only report general hover (and not per-contact
* distance) when contact is in proximity but not
* on the surface.
*/
count
=
1
;
}
input_mt_report_finger_count
(
dev
,
count
);
input_mt_report_finger_count
(
dev
,
count
);
}
if
(
oldest
)
{
if
(
oldest
)
{
int
x
=
input_mt_get_value
(
oldest
,
ABS_MT_POSITION_X
);
int
x
=
input_mt_get_value
(
oldest
,
ABS_MT_POSITION_X
);
...
...
This diff is collapsed.
Click to expand it.
drivers/input/input.c
View file @
08088828
...
@@ -153,8 +153,6 @@ static void input_pass_values(struct input_dev *dev,
...
@@ -153,8 +153,6 @@ static void input_pass_values(struct input_dev *dev,
rcu_read_unlock
();
rcu_read_unlock
();
add_input_randomness
(
vals
->
type
,
vals
->
code
,
vals
->
value
);
/* trigger auto repeat for key events */
/* trigger auto repeat for key events */
if
(
test_bit
(
EV_REP
,
dev
->
evbit
)
&&
test_bit
(
EV_KEY
,
dev
->
evbit
))
{
if
(
test_bit
(
EV_REP
,
dev
->
evbit
)
&&
test_bit
(
EV_KEY
,
dev
->
evbit
))
{
for
(
v
=
vals
;
v
!=
vals
+
count
;
v
++
)
{
for
(
v
=
vals
;
v
!=
vals
+
count
;
v
++
)
{
...
@@ -371,9 +369,10 @@ static int input_get_disposition(struct input_dev *dev,
...
@@ -371,9 +369,10 @@ static int input_get_disposition(struct input_dev *dev,
static
void
input_handle_event
(
struct
input_dev
*
dev
,
static
void
input_handle_event
(
struct
input_dev
*
dev
,
unsigned
int
type
,
unsigned
int
code
,
int
value
)
unsigned
int
type
,
unsigned
int
code
,
int
value
)
{
{
int
disposition
;
int
disposition
=
input_get_disposition
(
dev
,
type
,
code
,
&
value
)
;
disposition
=
input_get_disposition
(
dev
,
type
,
code
,
&
value
);
if
(
disposition
!=
INPUT_IGNORE_EVENT
&&
type
!=
EV_SYN
)
add_input_randomness
(
type
,
code
,
value
);
if
((
disposition
&
INPUT_PASS_TO_DEVICE
)
&&
dev
->
event
)
if
((
disposition
&
INPUT_PASS_TO_DEVICE
)
&&
dev
->
event
)
dev
->
event
(
dev
,
type
,
code
,
value
);
dev
->
event
(
dev
,
type
,
code
,
value
);
...
...
This diff is collapsed.
Click to expand it.
drivers/input/keyboard/tc3589x-keypad.c
View file @
08088828
...
@@ -32,7 +32,7 @@
...
@@ -32,7 +32,7 @@
#define TC3589x_PULL_DOWN_MASK 0x1
#define TC3589x_PULL_DOWN_MASK 0x1
#define TC3589x_PULL_UP_MASK 0x2
#define TC3589x_PULL_UP_MASK 0x2
#define TC3589x_PULLUP_ALL_MASK 0xAA
#define TC3589x_PULLUP_ALL_MASK 0xAA
#define TC3589x_IO_PULL_VAL(index, mask) ((mask)<<((index)%4)*2)
)
#define TC3589x_IO_PULL_VAL(index, mask) ((mask)<<((index)%4)*2)
/* Bit masks for IOCFG register */
/* Bit masks for IOCFG register */
#define IOCFG_BALLCFG 0x01
#define IOCFG_BALLCFG 0x01
...
...
This diff is collapsed.
Click to expand it.
drivers/input/keyboard/tegra-kbc.c
View file @
08088828
...
@@ -552,7 +552,7 @@ static int tegra_kbc_parse_dt(struct tegra_kbc *kbc)
...
@@ -552,7 +552,7 @@ static int tegra_kbc_parse_dt(struct tegra_kbc *kbc)
if
(
!
num_rows
||
!
num_cols
||
((
num_rows
+
num_cols
)
>
KBC_MAX_GPIO
))
{
if
(
!
num_rows
||
!
num_cols
||
((
num_rows
+
num_cols
)
>
KBC_MAX_GPIO
))
{
dev_err
(
kbc
->
dev
,
dev_err
(
kbc
->
dev
,
"keypad rows/columns not p
o
rperly specified
\n
"
);
"keypad rows/columns not pr
o
perly specified
\n
"
);
return
-
EINVAL
;
return
-
EINVAL
;
}
}
...
...
This diff is collapsed.
Click to expand it.
drivers/input/misc/Kconfig
View file @
08088828
...
@@ -82,6 +82,20 @@ config INPUT_ARIZONA_HAPTICS
...
@@ -82,6 +82,20 @@ config INPUT_ARIZONA_HAPTICS
To compile this driver as a module, choose M here: the
To compile this driver as a module, choose M here: the
module will be called arizona-haptics.
module will be called arizona-haptics.
config INPUT_ATMEL_CAPTOUCH
tristate "Atmel Capacitive Touch Button Driver"
depends on OF || COMPILE_TEST
depends on I2C
help
Say Y here if an Atmel Capacitive Touch Button device which
implements "captouch" protocol is connected to I2C bus. Typically
this device consists of Atmel Touch sensor controlled by AtMegaXX
MCU running firmware based on Qtouch library.
One should find "atmel,captouch" node in the board specific DTS.
To compile this driver as a module, choose M here: the
module will be called atmel_captouch.
config INPUT_BMA150
config INPUT_BMA150
tristate "BMA150/SMB380 acceleration sensor support"
tristate "BMA150/SMB380 acceleration sensor support"
depends on I2C
depends on I2C
...
@@ -796,4 +810,13 @@ config INPUT_DRV2667_HAPTICS
...
@@ -796,4 +810,13 @@ config INPUT_DRV2667_HAPTICS
To compile this driver as a module, choose M here: the
To compile this driver as a module, choose M here: the
module will be called drv2667-haptics.
module will be called drv2667-haptics.
config INPUT_HISI_POWERKEY
tristate "Hisilicon PMIC ONKEY support"
depends on ARCH_HISI || COMPILE_TEST
help
Say Y to enable support for PMIC ONKEY.
To compile this driver as a module, choose M here: the
module will be called hisi_powerkey.
endif
endif
This diff is collapsed.
Click to expand it.
drivers/input/misc/Makefile
View file @
08088828
...
@@ -17,6 +17,7 @@ obj-$(CONFIG_INPUT_APANEL) += apanel.o
...
@@ -17,6 +17,7 @@ obj-$(CONFIG_INPUT_APANEL) += apanel.o
obj-$(CONFIG_INPUT_ARIZONA_HAPTICS)
+=
arizona-haptics.o
obj-$(CONFIG_INPUT_ARIZONA_HAPTICS)
+=
arizona-haptics.o
obj-$(CONFIG_INPUT_ATI_REMOTE2)
+=
ati_remote2.o
obj-$(CONFIG_INPUT_ATI_REMOTE2)
+=
ati_remote2.o
obj-$(CONFIG_INPUT_ATLAS_BTNS)
+=
atlas_btns.o
obj-$(CONFIG_INPUT_ATLAS_BTNS)
+=
atlas_btns.o
obj-$(CONFIG_INPUT_ATMEL_CAPTOUCH)
+=
atmel_captouch.o
obj-$(CONFIG_INPUT_BFIN_ROTARY)
+=
bfin_rotary.o
obj-$(CONFIG_INPUT_BFIN_ROTARY)
+=
bfin_rotary.o
obj-$(CONFIG_INPUT_BMA150)
+=
bma150.o
obj-$(CONFIG_INPUT_BMA150)
+=
bma150.o
obj-$(CONFIG_INPUT_CM109)
+=
cm109.o
obj-$(CONFIG_INPUT_CM109)
+=
cm109.o
...
@@ -34,6 +35,7 @@ obj-$(CONFIG_INPUT_DRV2667_HAPTICS) += drv2667.o
...
@@ -34,6 +35,7 @@ obj-$(CONFIG_INPUT_DRV2667_HAPTICS) += drv2667.o
obj-$(CONFIG_INPUT_GP2A)
+=
gp2ap002a00f.o
obj-$(CONFIG_INPUT_GP2A)
+=
gp2ap002a00f.o
obj-$(CONFIG_INPUT_GPIO_BEEPER)
+=
gpio-beeper.o
obj-$(CONFIG_INPUT_GPIO_BEEPER)
+=
gpio-beeper.o
obj-$(CONFIG_INPUT_GPIO_TILT_POLLED)
+=
gpio_tilt_polled.o
obj-$(CONFIG_INPUT_GPIO_TILT_POLLED)
+=
gpio_tilt_polled.o
obj-$(CONFIG_INPUT_HISI_POWERKEY)
+=
hisi_powerkey.o
obj-$(CONFIG_HP_SDC_RTC)
+=
hp_sdc_rtc.o
obj-$(CONFIG_HP_SDC_RTC)
+=
hp_sdc_rtc.o
obj-$(CONFIG_INPUT_IMS_PCU)
+=
ims-pcu.o
obj-$(CONFIG_INPUT_IMS_PCU)
+=
ims-pcu.o
obj-$(CONFIG_INPUT_IXP4XX_BEEPER)
+=
ixp4xx-beeper.o
obj-$(CONFIG_INPUT_IXP4XX_BEEPER)
+=
ixp4xx-beeper.o
...
...
This diff is collapsed.
Click to expand it.
drivers/input/misc/apanel.c
View file @
08088828
...
@@ -297,7 +297,7 @@ static int __init apanel_init(void)
...
@@ -297,7 +297,7 @@ static int __init apanel_init(void)
if
(
slave
!=
i2c_addr
)
{
if
(
slave
!=
i2c_addr
)
{
pr_notice
(
APANEL
": only one SMBus slave "
pr_notice
(
APANEL
": only one SMBus slave "
"address supported, skiping device...
\n
"
);
"address supported, skip
p
ing device...
\n
"
);
continue
;
continue
;
}
}
...
...
This diff is collapsed.
Click to expand it.
drivers/input/misc/atmel_captouch.c
0 → 100644
View file @
08088828
/*
* Atmel Atmegaxx Capacitive Touch Button Driver
*
* Copyright (C) 2016 Google, inc.
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
* may be copied, distributed, and modified under those terms.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
/*
* It's irrelevant that the HW used to develop captouch driver is based
* on Atmega88PA part and uses QtouchADC parts for sensing touch.
* Calling this driver "captouch" is an arbitrary way to distinguish
* the protocol this driver supported by other atmel/qtouch drivers.
*
* Captouch driver supports a newer/different version of the I2C
* registers/commands than the qt1070.c driver.
* Don't let the similarity of the general driver structure fool you.
*
* For raw i2c access from userspace, use i2cset/i2cget
* to poke at /dev/i2c-N devices.
*/
#include <linux/device.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/i2c.h>
#include <linux/input.h>
#include <linux/interrupt.h>
#include <linux/slab.h>
/* Maximum number of buttons supported */
#define MAX_NUM_OF_BUTTONS 8
/* Registers */
#define REG_KEY1_THRESHOLD 0x02
#define REG_KEY2_THRESHOLD 0x03
#define REG_KEY3_THRESHOLD 0x04
#define REG_KEY4_THRESHOLD 0x05
#define REG_KEY1_REF_H 0x20
#define REG_KEY1_REF_L 0x21
#define REG_KEY2_REF_H 0x22
#define REG_KEY2_REF_L 0x23
#define REG_KEY3_REF_H 0x24
#define REG_KEY3_REF_L 0x25
#define REG_KEY4_REF_H 0x26
#define REG_KEY4_REF_L 0x27
#define REG_KEY1_DLT_H 0x30
#define REG_KEY1_DLT_L 0x31
#define REG_KEY2_DLT_H 0x32
#define REG_KEY2_DLT_L 0x33
#define REG_KEY3_DLT_H 0x34
#define REG_KEY3_DLT_L 0x35
#define REG_KEY4_DLT_H 0x36
#define REG_KEY4_DLT_L 0x37
#define REG_KEY_STATE 0x3C
/*
* @i2c_client: I2C slave device client pointer
* @input: Input device pointer
* @num_btn: Number of buttons
* @keycodes: map of button# to KeyCode
* @prev_btn: Previous key state to detect button "press" or "release"
* @xfer_buf: I2C transfer buffer
*/
struct
atmel_captouch_device
{
struct
i2c_client
*
client
;
struct
input_dev
*
input
;
u32
num_btn
;
u32
keycodes
[
MAX_NUM_OF_BUTTONS
];
u8
prev_btn
;
u8
xfer_buf
[
8
]
____cacheline_aligned
;
};
/*
* Read from I2C slave device
* The protocol is that the client has to provide both the register address
* and the length, and while reading back the device would prepend the data
* with address and length for verification.
*/
static
int
atmel_read
(
struct
atmel_captouch_device
*
capdev
,
u8
reg
,
u8
*
data
,
size_t
len
)
{
struct
i2c_client
*
client
=
capdev
->
client
;
struct
device
*
dev
=
&
client
->
dev
;
struct
i2c_msg
msg
[
2
];
int
err
;
if
(
len
>
sizeof
(
capdev
->
xfer_buf
)
-
2
)
return
-
EINVAL
;
capdev
->
xfer_buf
[
0
]
=
reg
;
capdev
->
xfer_buf
[
1
]
=
len
;
msg
[
0
].
addr
=
client
->
addr
;
msg
[
0
].
flags
=
0
;
msg
[
0
].
buf
=
capdev
->
xfer_buf
;
msg
[
0
].
len
=
2
;
msg
[
1
].
addr
=
client
->
addr
;
msg
[
1
].
flags
=
I2C_M_RD
;
msg
[
1
].
buf
=
capdev
->
xfer_buf
;
msg
[
1
].
len
=
len
+
2
;
err
=
i2c_transfer
(
client
->
adapter
,
msg
,
ARRAY_SIZE
(
msg
));
if
(
err
!=
ARRAY_SIZE
(
msg
))
return
err
<
0
?
err
:
-
EIO
;
if
(
capdev
->
xfer_buf
[
0
]
!=
reg
)
{
dev_err
(
dev
,
"I2C read error: register address does not match (%#02x vs %02x)
\n
"
,
capdev
->
xfer_buf
[
0
],
reg
);
return
-
ECOMM
;
}
memcpy
(
data
,
&
capdev
->
xfer_buf
[
2
],
len
);
return
0
;
}
/*
* Handle interrupt and report the key changes to the input system.
* Multi-touch can be supported; however, it really depends on whether
* the device can multi-touch.
*/
static
irqreturn_t
atmel_captouch_isr
(
int
irq
,
void
*
data
)
{
struct
atmel_captouch_device
*
capdev
=
data
;
struct
device
*
dev
=
&
capdev
->
client
->
dev
;
int
error
;
int
i
;
u8
new_btn
;
u8
changed_btn
;
error
=
atmel_read
(
capdev
,
REG_KEY_STATE
,
&
new_btn
,
1
);
if
(
error
)
{
dev_err
(
dev
,
"failed to read button state: %d
\n
"
,
error
);
goto
out
;
}
dev_dbg
(
dev
,
"%s: button state %#02x
\n
"
,
__func__
,
new_btn
);
changed_btn
=
new_btn
^
capdev
->
prev_btn
;
capdev
->
prev_btn
=
new_btn
;
for
(
i
=
0
;
i
<
capdev
->
num_btn
;
i
++
)
{
if
(
changed_btn
&
BIT
(
i
))
input_report_key
(
capdev
->
input
,
capdev
->
keycodes
[
i
],
new_btn
&
BIT
(
i
));
}
input_sync
(
capdev
->
input
);
out:
return
IRQ_HANDLED
;
}
/*
* Probe function to setup the device, input system and interrupt
*/
static
int
atmel_captouch_probe
(
struct
i2c_client
*
client
,
const
struct
i2c_device_id
*
id
)
{
struct
atmel_captouch_device
*
capdev
;
struct
device
*
dev
=
&
client
->
dev
;
struct
device_node
*
node
;
int
i
;
int
err
;
if
(
!
i2c_check_functionality
(
client
->
adapter
,
I2C_FUNC_SMBUS_BYTE_DATA
|
I2C_FUNC_SMBUS_WORD_DATA
|
I2C_FUNC_SMBUS_I2C_BLOCK
))
{
dev_err
(
dev
,
"needed i2c functionality is not supported
\n
"
);
return
-
EINVAL
;
}
capdev
=
devm_kzalloc
(
dev
,
sizeof
(
*
capdev
),
GFP_KERNEL
);
if
(
!
capdev
)
return
-
ENOMEM
;
capdev
->
client
=
client
;
i2c_set_clientdata
(
client
,
capdev
);
err
=
atmel_read
(
capdev
,
REG_KEY_STATE
,
&
capdev
->
prev_btn
,
sizeof
(
capdev
->
prev_btn
));
if
(
err
)
{
dev_err
(
dev
,
"failed to read initial button state: %d
\n
"
,
err
);
return
err
;
}
capdev
->
input
=
devm_input_allocate_device
(
dev
);
if
(
!
capdev
->
input
)
{
dev_err
(
dev
,
"failed to allocate input device
\n
"
);
return
-
ENOMEM
;
}
capdev
->
input
->
id
.
bustype
=
BUS_I2C
;
capdev
->
input
->
id
.
product
=
0x880A
;
capdev
->
input
->
id
.
version
=
0
;
capdev
->
input
->
name
=
"ATMegaXX Capacitive Button Controller"
;
__set_bit
(
EV_KEY
,
capdev
->
input
->
evbit
);
node
=
dev
->
of_node
;
if
(
!
node
)
{
dev_err
(
dev
,
"failed to find matching node in device tree
\n
"
);
return
-
EINVAL
;
}
if
(
of_property_read_bool
(
node
,
"autorepeat"
))
__set_bit
(
EV_REP
,
capdev
->
input
->
evbit
);
capdev
->
num_btn
=
of_property_count_u32_elems
(
node
,
"linux,keymap"
);
if
(
capdev
->
num_btn
>
MAX_NUM_OF_BUTTONS
)
capdev
->
num_btn
=
MAX_NUM_OF_BUTTONS
;
err
=
of_property_read_u32_array
(
node
,
"linux,keycodes"
,
capdev
->
keycodes
,
capdev
->
num_btn
);
if
(
err
)
{
dev_err
(
dev
,
"failed to read linux,keycode property: %d
\n
"
,
err
);
return
err
;
}
for
(
i
=
0
;
i
<
capdev
->
num_btn
;
i
++
)
__set_bit
(
capdev
->
keycodes
[
i
],
capdev
->
input
->
keybit
);
capdev
->
input
->
keycode
=
capdev
->
keycodes
;
capdev
->
input
->
keycodesize
=
sizeof
(
capdev
->
keycodes
[
0
]);
capdev
->
input
->
keycodemax
=
capdev
->
num_btn
;
err
=
input_register_device
(
capdev
->
input
);
if
(
err
)
return
err
;
err
=
devm_request_threaded_irq
(
dev
,
client
->
irq
,
NULL
,
atmel_captouch_isr
,
IRQF_ONESHOT
,
"atmel_captouch"
,
capdev
);
if
(
err
)
{
dev_err
(
dev
,
"failed to request irq %d: %d
\n
"
,
client
->
irq
,
err
);
return
err
;
}
return
0
;
}
#ifdef CONFIG_OF
static
const
struct
of_device_id
atmel_captouch_of_id
[]
=
{
{
.
compatible
=
"atmel,captouch"
,
},
{
/* sentinel */
}
};
MODULE_DEVICE_TABLE
(
of
,
atmel_captouch_of_id
);
#endif
static
const
struct
i2c_device_id
atmel_captouch_id
[]
=
{
{
"atmel_captouch"
,
0
},
{
}
};
MODULE_DEVICE_TABLE
(
i2c
,
atmel_captouch_id
);
static
struct
i2c_driver
atmel_captouch_driver
=
{
.
probe
=
atmel_captouch_probe
,
.
id_table
=
atmel_captouch_id
,
.
driver
=
{
.
name
=
"atmel_captouch"
,
.
of_match_table
=
of_match_ptr
(
atmel_captouch_of_id
),
},
};
module_i2c_driver
(
atmel_captouch_driver
);
/* Module information */
MODULE_AUTHOR
(
"Hung-yu Wu <hywu@google.com>"
);
MODULE_DESCRIPTION
(
"Atmel ATmegaXX Capacitance Touch Sensor I2C Driver"
);
MODULE_LICENSE
(
"GPL v2"
);
This diff is collapsed.
Click to expand it.
drivers/input/misc/hisi_powerkey.c
0 → 100644
View file @
08088828
/*
* Hisilicon PMIC powerkey driver
*
* Copyright (C) 2013 Hisilicon Ltd.
* Copyright (C) 2015, 2016 Linaro Ltd.
*
* This file is subject to the terms and conditions of the GNU General
* Public License. See the file "COPYING" in the main directory of this
* archive for more details.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <linux/platform_device.h>
#include <linux/interrupt.h>
#include <linux/reboot.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/of_irq.h>
#include <linux/input.h>
#include <linux/slab.h>
/* the held interrupt will trigger after 4 seconds */
#define MAX_HELD_TIME (4 * MSEC_PER_SEC)
static
irqreturn_t
hi65xx_power_press_isr
(
int
irq
,
void
*
q
)
{
struct
input_dev
*
input
=
q
;
pm_wakeup_event
(
input
->
dev
.
parent
,
MAX_HELD_TIME
);
input_report_key
(
input
,
KEY_POWER
,
1
);
input_sync
(
input
);
return
IRQ_HANDLED
;
}
static
irqreturn_t
hi65xx_power_release_isr
(
int
irq
,
void
*
q
)
{
struct
input_dev
*
input
=
q
;
pm_wakeup_event
(
input
->
dev
.
parent
,
MAX_HELD_TIME
);
input_report_key
(
input
,
KEY_POWER
,
0
);
input_sync
(
input
);
return
IRQ_HANDLED
;
}
static
irqreturn_t
hi65xx_restart_toggle_isr
(
int
irq
,
void
*
q
)
{
struct
input_dev
*
input
=
q
;
int
value
=
test_bit
(
KEY_RESTART
,
input
->
key
);
pm_wakeup_event
(
input
->
dev
.
parent
,
MAX_HELD_TIME
);
input_report_key
(
input
,
KEY_RESTART
,
!
value
);
input_sync
(
input
);
return
IRQ_HANDLED
;
}
static
const
struct
{
const
char
*
name
;
irqreturn_t
(
*
handler
)(
int
irq
,
void
*
q
);
}
hi65xx_irq_info
[]
=
{
{
"down"
,
hi65xx_power_press_isr
},
{
"up"
,
hi65xx_power_release_isr
},
{
"hold 4s"
,
hi65xx_restart_toggle_isr
},
};
static
int
hi65xx_powerkey_probe
(
struct
platform_device
*
pdev
)
{
struct
device
*
dev
=
&
pdev
->
dev
;
struct
input_dev
*
input
;
int
irq
,
i
,
error
;
input
=
devm_input_allocate_device
(
&
pdev
->
dev
);
if
(
!
input
)
{
dev_err
(
&
pdev
->
dev
,
"failed to allocate input device
\n
"
);
return
-
ENOMEM
;
}
input
->
phys
=
"hisi_on/input0"
;
input
->
name
=
"HISI 65xx PowerOn Key"
;
input_set_capability
(
input
,
EV_KEY
,
KEY_POWER
);
input_set_capability
(
input
,
EV_KEY
,
KEY_RESTART
);
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
hi65xx_irq_info
);
i
++
)
{
irq
=
platform_get_irq_byname
(
pdev
,
hi65xx_irq_info
[
i
].
name
);
if
(
irq
<
0
)
{
error
=
irq
;
dev_err
(
dev
,
"couldn't get irq %s: %d
\n
"
,
hi65xx_irq_info
[
i
].
name
,
error
);
return
error
;
}
error
=
devm_request_any_context_irq
(
dev
,
irq
,
hi65xx_irq_info
[
i
].
handler
,
IRQF_ONESHOT
,
hi65xx_irq_info
[
i
].
name
,
input
);
if
(
error
<
0
)
{
dev_err
(
dev
,
"couldn't request irq %s: %d
\n
"
,
hi65xx_irq_info
[
i
].
name
,
error
);
return
error
;
}
}
error
=
input_register_device
(
input
);
if
(
error
)
{
dev_err
(
&
pdev
->
dev
,
"failed to register input device: %d
\n
"
,
error
);
return
error
;
}
device_init_wakeup
(
&
pdev
->
dev
,
1
);
return
0
;
}
static
int
hi65xx_powerkey_remove
(
struct
platform_device
*
pdev
)
{
device_init_wakeup
(
&
pdev
->
dev
,
0
);
return
0
;
}
static
struct
platform_driver
hi65xx_powerkey_driver
=
{
.
driver
=
{
.
name
=
"hi65xx-powerkey"
,
},
.
probe
=
hi65xx_powerkey_probe
,
.
remove
=
hi65xx_powerkey_remove
,
};
module_platform_driver
(
hi65xx_powerkey_driver
);
MODULE_AUTHOR
(
"Zhiliang Xue <xuezhiliang@huawei.com"
);
MODULE_DESCRIPTION
(
"Hisi PMIC Power key driver"
);
MODULE_LICENSE
(
"GPL v2"
);
This diff is collapsed.
Click to expand it.
drivers/input/misc/regulator-haptic.c
View file @
08088828
...
@@ -124,7 +124,7 @@ regulator_haptic_parse_dt(struct device *dev, struct regulator_haptic *haptic)
...
@@ -124,7 +124,7 @@ regulator_haptic_parse_dt(struct device *dev, struct regulator_haptic *haptic)
node
=
dev
->
of_node
;
node
=
dev
->
of_node
;
if
(
!
node
)
{
if
(
!
node
)
{
dev_err
(
dev
,
"Missing d
v
eice tree data
\n
"
);
dev_err
(
dev
,
"Missing de
v
ice tree data
\n
"
);
return
-
EINVAL
;
return
-
EINVAL
;
}
}
...
...
This diff is collapsed.
Click to expand it.
drivers/input/misc/xen-kbdfront.c
View file @
08088828
...
@@ -130,8 +130,8 @@ static int xenkbd_probe(struct xenbus_device *dev,
...
@@ -130,8 +130,8 @@ static int xenkbd_probe(struct xenbus_device *dev,
if
(
xenbus_scanf
(
XBT_NIL
,
dev
->
otherend
,
"feature-abs-pointer"
,
"%d"
,
&
abs
)
<
0
)
if
(
xenbus_scanf
(
XBT_NIL
,
dev
->
otherend
,
"feature-abs-pointer"
,
"%d"
,
&
abs
)
<
0
)
abs
=
0
;
abs
=
0
;
if
(
abs
)
{
if
(
abs
)
{
ret
=
xenbus_
p
ri
ntf
(
XBT_NIL
,
dev
->
nodename
,
ret
=
xenbus_
w
ri
te
(
XBT_NIL
,
dev
->
nodename
,
"request-abs-pointer"
,
"1"
);
"request-abs-pointer"
,
"1"
);
if
(
ret
)
{
if
(
ret
)
{
pr_warning
(
"xenkbd: can't request abs-pointer"
);
pr_warning
(
"xenkbd: can't request abs-pointer"
);
abs
=
0
;
abs
=
0
;
...
@@ -327,8 +327,8 @@ static void xenkbd_backend_changed(struct xenbus_device *dev,
...
@@ -327,8 +327,8 @@ static void xenkbd_backend_changed(struct xenbus_device *dev,
if
(
ret
<
0
)
if
(
ret
<
0
)
val
=
0
;
val
=
0
;
if
(
val
)
{
if
(
val
)
{
ret
=
xenbus_
p
ri
ntf
(
XBT_NIL
,
info
->
xbdev
->
nodename
,
ret
=
xenbus_
w
ri
te
(
XBT_NIL
,
info
->
xbdev
->
nodename
,
"request-abs-pointer"
,
"1"
);
"request-abs-pointer"
,
"1"
);
if
(
ret
)
if
(
ret
)
pr_warning
(
"xenkbd: can't request abs-pointer"
);
pr_warning
(
"xenkbd: can't request abs-pointer"
);
}
}
...
...
This diff is collapsed.
Click to expand it.
drivers/input/mouse/elantech.c
View file @
08088828
...
@@ -1708,7 +1708,7 @@ int elantech_init(struct psmouse *psmouse)
...
@@ -1708,7 +1708,7 @@ int elantech_init(struct psmouse *psmouse)
snprintf
(
etd
->
tp_phys
,
sizeof
(
etd
->
tp_phys
),
"%s/input1"
,
snprintf
(
etd
->
tp_phys
,
sizeof
(
etd
->
tp_phys
),
"%s/input1"
,
psmouse
->
ps2dev
.
serio
->
phys
);
psmouse
->
ps2dev
.
serio
->
phys
);
tp_dev
->
phys
=
etd
->
tp_phys
;
tp_dev
->
phys
=
etd
->
tp_phys
;
tp_dev
->
name
=
"Elantech
PS/2
TrackPoint"
;
tp_dev
->
name
=
"
ETPS/2
Elantech TrackPoint"
;
tp_dev
->
id
.
bustype
=
BUS_I8042
;
tp_dev
->
id
.
bustype
=
BUS_I8042
;
tp_dev
->
id
.
vendor
=
0x0002
;
tp_dev
->
id
.
vendor
=
0x0002
;
tp_dev
->
id
.
product
=
PSMOUSE_ELANTECH
;
tp_dev
->
id
.
product
=
PSMOUSE_ELANTECH
;
...
...
This diff is collapsed.
Click to expand it.
drivers/input/mouse/lifebook.c
View file @
08088828
...
@@ -287,7 +287,7 @@ static int lifebook_create_relative_device(struct psmouse *psmouse)
...
@@ -287,7 +287,7 @@ static int lifebook_create_relative_device(struct psmouse *psmouse)
"%s/input1"
,
psmouse
->
ps2dev
.
serio
->
phys
);
"%s/input1"
,
psmouse
->
ps2dev
.
serio
->
phys
);
dev2
->
phys
=
priv
->
phys
;
dev2
->
phys
=
priv
->
phys
;
dev2
->
name
=
"PS/2 Touchpad"
;
dev2
->
name
=
"
LB
PS/2
Fujitsu Lifebook
Touchpad"
;
dev2
->
id
.
bustype
=
BUS_I8042
;
dev2
->
id
.
bustype
=
BUS_I8042
;
dev2
->
id
.
vendor
=
0x0002
;
dev2
->
id
.
vendor
=
0x0002
;
dev2
->
id
.
product
=
PSMOUSE_LIFEBOOK
;
dev2
->
id
.
product
=
PSMOUSE_LIFEBOOK
;
...
...
This diff is collapsed.
Click to expand it.
drivers/input/rmi4/rmi_f01.c
View file @
08088828
...
@@ -81,26 +81,26 @@ struct f01_basic_properties {
...
@@ -81,26 +81,26 @@ struct f01_basic_properties {
* This bit disables whatever sleep mode may be selected by the sleep_mode
* This bit disables whatever sleep mode may be selected by the sleep_mode
* field and forces the device to run at full power without sleeping.
* field and forces the device to run at full power without sleeping.
*/
*/
#define RMI_F01_C
R
TL0_NOSLEEP_BIT BIT(2)
#define RMI_F01_CT
R
L0_NOSLEEP_BIT BIT(2)
/*
/*
* When this bit is set, the touch controller employs a noise-filtering
* When this bit is set, the touch controller employs a noise-filtering
* algorithm designed for use with a connected battery charger.
* algorithm designed for use with a connected battery charger.
*/
*/
#define RMI_F01_C
R
TL0_CHARGER_BIT BIT(5)
#define RMI_F01_CT
R
L0_CHARGER_BIT BIT(5)
/*
/*
* Sets the report rate for the device. The effect of this setting is
* Sets the report rate for the device. The effect of this setting is
* highly product dependent. Check the spec sheet for your particular
* highly product dependent. Check the spec sheet for your particular
* touch sensor.
* touch sensor.
*/
*/
#define RMI_F01_C
R
TL0_REPORTRATE_BIT BIT(6)
#define RMI_F01_CT
R
L0_REPORTRATE_BIT BIT(6)
/*
/*
* Written by the host as an indicator that the device has been
* Written by the host as an indicator that the device has been
* successfully configured.
* successfully configured.
*/
*/
#define RMI_F01_C
R
TL0_CONFIGURED_BIT BIT(7)
#define RMI_F01_CT
R
L0_CONFIGURED_BIT BIT(7)
/**
/**
* @ctrl0 - see the bit definitions above.
* @ctrl0 - see the bit definitions above.
...
@@ -330,10 +330,10 @@ static int rmi_f01_probe(struct rmi_function *fn)
...
@@ -330,10 +330,10 @@ static int rmi_f01_probe(struct rmi_function *fn)
case
RMI_F01_NOSLEEP_DEFAULT
:
case
RMI_F01_NOSLEEP_DEFAULT
:
break
;
break
;
case
RMI_F01_NOSLEEP_OFF
:
case
RMI_F01_NOSLEEP_OFF
:
f01
->
device_control
.
ctrl0
&=
~
RMI_F01_C
R
TL0_NOSLEEP_BIT
;
f01
->
device_control
.
ctrl0
&=
~
RMI_F01_CT
R
L0_NOSLEEP_BIT
;
break
;
break
;
case
RMI_F01_NOSLEEP_ON
:
case
RMI_F01_NOSLEEP_ON
:
f01
->
device_control
.
ctrl0
|=
RMI_F01_C
R
TL0_NOSLEEP_BIT
;
f01
->
device_control
.
ctrl0
|=
RMI_F01_CT
R
L0_NOSLEEP_BIT
;
break
;
break
;
}
}
...
@@ -349,7 +349,7 @@ static int rmi_f01_probe(struct rmi_function *fn)
...
@@ -349,7 +349,7 @@ static int rmi_f01_probe(struct rmi_function *fn)
f01
->
device_control
.
ctrl0
&=
~
RMI_F01_CTRL0_SLEEP_MODE_MASK
;
f01
->
device_control
.
ctrl0
&=
~
RMI_F01_CTRL0_SLEEP_MODE_MASK
;
}
}
f01
->
device_control
.
ctrl0
|=
RMI_F01_C
R
TL0_CONFIGURED_BIT
;
f01
->
device_control
.
ctrl0
|=
RMI_F01_CT
R
L0_CONFIGURED_BIT
;
error
=
rmi_write
(
rmi_dev
,
fn
->
fd
.
control_base_addr
,
error
=
rmi_write
(
rmi_dev
,
fn
->
fd
.
control_base_addr
,
f01
->
device_control
.
ctrl0
);
f01
->
device_control
.
ctrl0
);
...
@@ -535,8 +535,8 @@ static int rmi_f01_suspend(struct rmi_function *fn)
...
@@ -535,8 +535,8 @@ static int rmi_f01_suspend(struct rmi_function *fn)
int
error
;
int
error
;
f01
->
old_nosleep
=
f01
->
old_nosleep
=
f01
->
device_control
.
ctrl0
&
RMI_F01_C
R
TL0_NOSLEEP_BIT
;
f01
->
device_control
.
ctrl0
&
RMI_F01_CT
R
L0_NOSLEEP_BIT
;
f01
->
device_control
.
ctrl0
&=
~
RMI_F01_C
R
TL0_NOSLEEP_BIT
;
f01
->
device_control
.
ctrl0
&=
~
RMI_F01_CT
R
L0_NOSLEEP_BIT
;
f01
->
device_control
.
ctrl0
&=
~
RMI_F01_CTRL0_SLEEP_MODE_MASK
;
f01
->
device_control
.
ctrl0
&=
~
RMI_F01_CTRL0_SLEEP_MODE_MASK
;
if
(
device_may_wakeup
(
fn
->
rmi_dev
->
xport
->
dev
))
if
(
device_may_wakeup
(
fn
->
rmi_dev
->
xport
->
dev
))
...
@@ -549,7 +549,7 @@ static int rmi_f01_suspend(struct rmi_function *fn)
...
@@ -549,7 +549,7 @@ static int rmi_f01_suspend(struct rmi_function *fn)
if
(
error
)
{
if
(
error
)
{
dev_err
(
&
fn
->
dev
,
"Failed to write sleep mode: %d.
\n
"
,
error
);
dev_err
(
&
fn
->
dev
,
"Failed to write sleep mode: %d.
\n
"
,
error
);
if
(
f01
->
old_nosleep
)
if
(
f01
->
old_nosleep
)
f01
->
device_control
.
ctrl0
|=
RMI_F01_C
R
TL0_NOSLEEP_BIT
;
f01
->
device_control
.
ctrl0
|=
RMI_F01_CT
R
L0_NOSLEEP_BIT
;
f01
->
device_control
.
ctrl0
&=
~
RMI_F01_CTRL0_SLEEP_MODE_MASK
;
f01
->
device_control
.
ctrl0
&=
~
RMI_F01_CTRL0_SLEEP_MODE_MASK
;
f01
->
device_control
.
ctrl0
|=
RMI_SLEEP_MODE_NORMAL
;
f01
->
device_control
.
ctrl0
|=
RMI_SLEEP_MODE_NORMAL
;
return
error
;
return
error
;
...
@@ -564,7 +564,7 @@ static int rmi_f01_resume(struct rmi_function *fn)
...
@@ -564,7 +564,7 @@ static int rmi_f01_resume(struct rmi_function *fn)
int
error
;
int
error
;
if
(
f01
->
old_nosleep
)
if
(
f01
->
old_nosleep
)
f01
->
device_control
.
ctrl0
|=
RMI_F01_C
R
TL0_NOSLEEP_BIT
;
f01
->
device_control
.
ctrl0
|=
RMI_F01_CT
R
L0_NOSLEEP_BIT
;
f01
->
device_control
.
ctrl0
&=
~
RMI_F01_CTRL0_SLEEP_MODE_MASK
;
f01
->
device_control
.
ctrl0
&=
~
RMI_F01_CTRL0_SLEEP_MODE_MASK
;
f01
->
device_control
.
ctrl0
|=
RMI_SLEEP_MODE_NORMAL
;
f01
->
device_control
.
ctrl0
|=
RMI_SLEEP_MODE_NORMAL
;
...
...
This diff is collapsed.
Click to expand it.
drivers/input/rmi4/rmi_f11.c
View file @
08088828
...
@@ -530,8 +530,8 @@ static void rmi_f11_rel_pos_report(struct f11_data *f11, u8 n_finger)
...
@@ -530,8 +530,8 @@ static void rmi_f11_rel_pos_report(struct f11_data *f11, u8 n_finger)
struct
f11_2d_data
*
data
=
&
f11
->
data
;
struct
f11_2d_data
*
data
=
&
f11
->
data
;
s8
x
,
y
;
s8
x
,
y
;
x
=
data
->
rel_pos
[
n_finger
*
2
];
x
=
data
->
rel_pos
[
n_finger
*
RMI_F11_REL_BYTES
];
y
=
data
->
rel_pos
[
n_finger
*
2
+
1
];
y
=
data
->
rel_pos
[
n_finger
*
RMI_F11_REL_BYTES
+
1
];
rmi_2d_sensor_rel_report
(
sensor
,
x
,
y
);
rmi_2d_sensor_rel_report
(
sensor
,
x
,
y
);
}
}
...
@@ -1241,7 +1241,6 @@ static int rmi_f11_attention(struct rmi_function *fn, unsigned long *irq_bits)
...
@@ -1241,7 +1241,6 @@ static int rmi_f11_attention(struct rmi_function *fn, unsigned long *irq_bits)
struct
rmi_driver_data
*
drvdata
=
dev_get_drvdata
(
&
rmi_dev
->
dev
);
struct
rmi_driver_data
*
drvdata
=
dev_get_drvdata
(
&
rmi_dev
->
dev
);
struct
f11_data
*
f11
=
dev_get_drvdata
(
&
fn
->
dev
);
struct
f11_data
*
f11
=
dev_get_drvdata
(
&
fn
->
dev
);
u16
data_base_addr
=
fn
->
fd
.
data_base_addr
;
u16
data_base_addr
=
fn
->
fd
.
data_base_addr
;
u16
data_base_addr_offset
=
0
;
int
error
;
int
error
;
if
(
rmi_dev
->
xport
->
attn_data
)
{
if
(
rmi_dev
->
xport
->
attn_data
)
{
...
@@ -1251,8 +1250,7 @@ static int rmi_f11_attention(struct rmi_function *fn, unsigned long *irq_bits)
...
@@ -1251,8 +1250,7 @@ static int rmi_f11_attention(struct rmi_function *fn, unsigned long *irq_bits)
rmi_dev
->
xport
->
attn_size
-=
f11
->
sensor
.
attn_size
;
rmi_dev
->
xport
->
attn_size
-=
f11
->
sensor
.
attn_size
;
}
else
{
}
else
{
error
=
rmi_read_block
(
rmi_dev
,
error
=
rmi_read_block
(
rmi_dev
,
data_base_addr
+
data_base_addr_offset
,
data_base_addr
,
f11
->
sensor
.
data_pkt
,
f11
->
sensor
.
data_pkt
,
f11
->
sensor
.
pkt_size
);
f11
->
sensor
.
pkt_size
);
if
(
error
<
0
)
if
(
error
<
0
)
return
error
;
return
error
;
...
@@ -1260,7 +1258,6 @@ static int rmi_f11_attention(struct rmi_function *fn, unsigned long *irq_bits)
...
@@ -1260,7 +1258,6 @@ static int rmi_f11_attention(struct rmi_function *fn, unsigned long *irq_bits)
rmi_f11_finger_handler
(
f11
,
&
f11
->
sensor
,
irq_bits
,
rmi_f11_finger_handler
(
f11
,
&
f11
->
sensor
,
irq_bits
,
drvdata
->
num_of_irq_regs
);
drvdata
->
num_of_irq_regs
);
data_base_addr_offset
+=
f11
->
sensor
.
pkt_size
;
return
0
;
return
0
;
}
}
...
...
This diff is collapsed.
Click to expand it.
drivers/input/rmi4/rmi_f12.c
View file @
08088828
...
@@ -27,7 +27,6 @@ enum rmi_f12_object_type {
...
@@ -27,7 +27,6 @@ enum rmi_f12_object_type {
};
};
struct
f12_data
{
struct
f12_data
{
struct
rmi_function
*
fn
;
struct
rmi_2d_sensor
sensor
;
struct
rmi_2d_sensor
sensor
;
struct
rmi_2d_sensor_platform_data
sensor_pdata
;
struct
rmi_2d_sensor_platform_data
sensor_pdata
;
...
...
This diff is collapsed.
Click to expand it.
Prev
1
2
3
Next
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