mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 13:11:40 +00:00
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
Pull input fixes from Dmitry Torokhov: "A few last-minute updates for the input subsystem" * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: Input: ts4800-ts - add missing of_node_put after calling of_parse_phandle Input: synaptics-rmi4 - use of_get_child_by_name() to fix refcount Revert "Input: wacom_w8001 - drop use of ABS_MT_TOOL_TYPE" Input: xpad - validate USB endpoint count during probe Input: add SW_PEN_INSERTED define
This commit is contained in:
commit
631517032f
@ -1431,6 +1431,9 @@ static int xpad_probe(struct usb_interface *intf, const struct usb_device_id *id
|
||||
int ep_irq_in_idx;
|
||||
int i, error;
|
||||
|
||||
if (intf->cur_altsetting->desc.bNumEndpoints != 2)
|
||||
return -ENODEV;
|
||||
|
||||
for (i = 0; xpad_device[i].idVendor; i++) {
|
||||
if ((le16_to_cpu(udev->descriptor.idVendor) == xpad_device[i].idVendor) &&
|
||||
(le16_to_cpu(udev->descriptor.idProduct) == xpad_device[i].idProduct))
|
||||
|
@ -157,11 +157,11 @@ static int rmi_function_match(struct device *dev, struct device_driver *drv)
|
||||
static void rmi_function_of_probe(struct rmi_function *fn)
|
||||
{
|
||||
char of_name[9];
|
||||
struct device_node *node = fn->rmi_dev->xport->dev->of_node;
|
||||
|
||||
snprintf(of_name, sizeof(of_name), "rmi4-f%02x",
|
||||
fn->fd.function_number);
|
||||
fn->dev.of_node = of_find_node_by_name(
|
||||
fn->rmi_dev->xport->dev->of_node, of_name);
|
||||
fn->dev.of_node = of_get_child_by_name(node, of_name);
|
||||
}
|
||||
#else
|
||||
static inline void rmi_function_of_probe(struct rmi_function *fn)
|
||||
|
@ -118,6 +118,13 @@ static int ts4800_parse_dt(struct platform_device *pdev,
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
ts->regmap = syscon_node_to_regmap(syscon_np);
|
||||
of_node_put(syscon_np);
|
||||
if (IS_ERR(ts->regmap)) {
|
||||
dev_err(dev, "cannot get parent's regmap\n");
|
||||
return PTR_ERR(ts->regmap);
|
||||
}
|
||||
|
||||
error = of_property_read_u32_index(np, "syscon", 1, ®);
|
||||
if (error < 0) {
|
||||
dev_err(dev, "no offset in syscon\n");
|
||||
@ -134,12 +141,6 @@ static int ts4800_parse_dt(struct platform_device *pdev,
|
||||
|
||||
ts->bit = BIT(bit);
|
||||
|
||||
ts->regmap = syscon_node_to_regmap(syscon_np);
|
||||
if (IS_ERR(ts->regmap)) {
|
||||
dev_err(dev, "cannot get parent's regmap\n");
|
||||
return PTR_ERR(ts->regmap);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -155,6 +155,7 @@ static void parse_multi_touch(struct w8001 *w8001)
|
||||
bool touch = data[0] & (1 << i);
|
||||
|
||||
input_mt_slot(dev, i);
|
||||
input_mt_report_slot_state(dev, MT_TOOL_FINGER, touch);
|
||||
if (touch) {
|
||||
x = (data[6 * i + 1] << 7) | data[6 * i + 2];
|
||||
y = (data[6 * i + 3] << 7) | data[6 * i + 4];
|
||||
@ -522,6 +523,8 @@ static int w8001_setup_touch(struct w8001 *w8001, char *basename,
|
||||
0, touch.x, 0, 0);
|
||||
input_set_abs_params(dev, ABS_MT_POSITION_Y,
|
||||
0, touch.y, 0, 0);
|
||||
input_set_abs_params(dev, ABS_MT_TOOL_TYPE,
|
||||
0, MT_TOOL_MAX, 0, 0);
|
||||
|
||||
strlcat(basename, " 2FG", basename_sz);
|
||||
if (w8001->max_pen_x && w8001->max_pen_y)
|
||||
|
@ -780,6 +780,7 @@
|
||||
#define SW_ROTATE_LOCK 0x0c /* set = rotate locked/disabled */
|
||||
#define SW_LINEIN_INSERT 0x0d /* set = inserted */
|
||||
#define SW_MUTE_DEVICE 0x0e /* set = device disabled */
|
||||
#define SW_PEN_INSERTED 0x0f /* set = pen inserted */
|
||||
#define SW_MAX 0x0f
|
||||
#define SW_CNT (SW_MAX+1)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user