Merge tag 'v4.5' into next
Merge with Linux 4.5 to get PROPERTY_ENTRY_INTEGER() that is needed to fix pxa/raumfeld rotary encoder properties.
This commit is contained in:
@@ -1207,7 +1207,6 @@ static void xpad_led_disconnect(struct usb_xpad *xpad)
|
||||
#else
|
||||
static int xpad_led_probe(struct usb_xpad *xpad) { return 0; }
|
||||
static void xpad_led_disconnect(struct usb_xpad *xpad) { }
|
||||
static void xpad_identify_controller(struct usb_xpad *xpad) { }
|
||||
#endif
|
||||
|
||||
static int xpad_start_input(struct usb_xpad *xpad)
|
||||
|
@@ -235,7 +235,7 @@ struct adp5589_kpad {
|
||||
unsigned short gpimapsize;
|
||||
unsigned extend_cfg;
|
||||
bool is_adp5585;
|
||||
bool adp5585_support_row5;
|
||||
bool support_row5;
|
||||
#ifdef CONFIG_GPIOLIB
|
||||
unsigned char gpiomap[ADP5589_MAXGPIO];
|
||||
bool export_gpio;
|
||||
@@ -485,7 +485,7 @@ static int adp5589_build_gpiomap(struct adp5589_kpad *kpad,
|
||||
if (kpad->extend_cfg & C4_EXTEND_CFG)
|
||||
pin_used[kpad->var->c4_extend_cfg] = true;
|
||||
|
||||
if (!kpad->adp5585_support_row5)
|
||||
if (!kpad->support_row5)
|
||||
pin_used[5] = true;
|
||||
|
||||
for (i = 0; i < kpad->var->maxgpio; i++)
|
||||
@@ -884,12 +884,13 @@ static int adp5589_probe(struct i2c_client *client,
|
||||
|
||||
switch (id->driver_data) {
|
||||
case ADP5585_02:
|
||||
kpad->adp5585_support_row5 = true;
|
||||
kpad->support_row5 = true;
|
||||
case ADP5585_01:
|
||||
kpad->is_adp5585 = true;
|
||||
kpad->var = &const_adp5585;
|
||||
break;
|
||||
case ADP5589:
|
||||
kpad->support_row5 = true;
|
||||
kpad->var = &const_adp5589;
|
||||
break;
|
||||
}
|
||||
|
@@ -304,8 +304,10 @@ static int cap11xx_init_leds(struct device *dev,
|
||||
led->cdev.brightness = LED_OFF;
|
||||
|
||||
error = of_property_read_u32(child, "reg", ®);
|
||||
if (error != 0 || reg >= num_leds)
|
||||
if (error != 0 || reg >= num_leds) {
|
||||
of_node_put(child);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
led->reg = reg;
|
||||
led->priv = priv;
|
||||
@@ -313,8 +315,10 @@ static int cap11xx_init_leds(struct device *dev,
|
||||
INIT_WORK(&led->work, cap11xx_led_work);
|
||||
|
||||
error = devm_led_classdev_register(dev, &led->cdev);
|
||||
if (error)
|
||||
if (error) {
|
||||
of_node_put(child);
|
||||
return error;
|
||||
}
|
||||
|
||||
priv->num_leds++;
|
||||
led++;
|
||||
|
@@ -733,7 +733,7 @@ config INPUT_XEN_KBDDEV_FRONTEND
|
||||
module will be called xen-kbdfront.
|
||||
|
||||
config INPUT_SIRFSOC_ONKEY
|
||||
bool "CSR SiRFSoC power on/off/suspend key support"
|
||||
tristate "CSR SiRFSoC power on/off/suspend key support"
|
||||
depends on ARCH_SIRF && OF
|
||||
default y
|
||||
help
|
||||
|
@@ -101,7 +101,7 @@ static void sirfsoc_pwrc_close(struct input_dev *input)
|
||||
static const struct of_device_id sirfsoc_pwrc_of_match[] = {
|
||||
{ .compatible = "sirf,prima2-pwrc" },
|
||||
{},
|
||||
}
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, sirfsoc_pwrc_of_match);
|
||||
|
||||
static int sirfsoc_pwrc_probe(struct platform_device *pdev)
|
||||
|
@@ -458,8 +458,6 @@ int vmmouse_init(struct psmouse *psmouse)
|
||||
priv->abs_dev = abs_dev;
|
||||
psmouse->private = priv;
|
||||
|
||||
input_set_capability(rel_dev, EV_REL, REL_WHEEL);
|
||||
|
||||
/* Set up and register absolute device */
|
||||
snprintf(priv->phys, sizeof(priv->phys), "%s/input1",
|
||||
psmouse->ps2dev.serio->phys);
|
||||
@@ -475,10 +473,6 @@ int vmmouse_init(struct psmouse *psmouse)
|
||||
abs_dev->id.version = psmouse->model;
|
||||
abs_dev->dev.parent = &psmouse->ps2dev.serio->dev;
|
||||
|
||||
error = input_register_device(priv->abs_dev);
|
||||
if (error)
|
||||
goto init_fail;
|
||||
|
||||
/* Set absolute device capabilities */
|
||||
input_set_capability(abs_dev, EV_KEY, BTN_LEFT);
|
||||
input_set_capability(abs_dev, EV_KEY, BTN_RIGHT);
|
||||
@@ -488,6 +482,13 @@ int vmmouse_init(struct psmouse *psmouse)
|
||||
input_set_abs_params(abs_dev, ABS_X, 0, VMMOUSE_MAX_X, 0, 0);
|
||||
input_set_abs_params(abs_dev, ABS_Y, 0, VMMOUSE_MAX_Y, 0, 0);
|
||||
|
||||
error = input_register_device(priv->abs_dev);
|
||||
if (error)
|
||||
goto init_fail;
|
||||
|
||||
/* Add wheel capability to the relative device */
|
||||
input_set_capability(rel_dev, EV_REL, REL_WHEEL);
|
||||
|
||||
psmouse->protocol_handler = vmmouse_process_byte;
|
||||
psmouse->disconnect = vmmouse_disconnect;
|
||||
psmouse->reconnect = vmmouse_reconnect;
|
||||
|
@@ -412,16 +412,6 @@ static int hv_kbd_remove(struct hv_device *hv_dev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Keyboard GUID
|
||||
* {f912ad6d-2b17-48ea-bd65-f927a61c7684}
|
||||
*/
|
||||
#define HV_KBD_GUID \
|
||||
.guid = { \
|
||||
0x6d, 0xad, 0x12, 0xf9, 0x17, 0x2b, 0xea, 0x48, \
|
||||
0xbd, 0x65, 0xf9, 0x27, 0xa6, 0x1c, 0x76, 0x84 \
|
||||
}
|
||||
|
||||
static const struct hv_vmbus_device_id id_table[] = {
|
||||
/* Keyboard guid */
|
||||
{ HV_KBD_GUID, },
|
||||
|
@@ -257,6 +257,13 @@ static const struct dmi_system_id __initconst i8042_dmi_nomux_table[] = {
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "LifeBook S6230"),
|
||||
},
|
||||
},
|
||||
{
|
||||
/* Fujitsu Lifebook U745 */
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK U745"),
|
||||
},
|
||||
},
|
||||
{
|
||||
/* Fujitsu T70H */
|
||||
.matches = {
|
||||
|
@@ -134,7 +134,7 @@ static void serio_find_driver(struct serio *serio)
|
||||
int error;
|
||||
|
||||
error = device_attach(&serio->dev);
|
||||
if (error < 0)
|
||||
if (error < 0 && error != -EPROBE_DEFER)
|
||||
dev_warn(&serio->dev,
|
||||
"device_attach() failed for %s (%s), error: %d\n",
|
||||
serio->phys, serio->name, error);
|
||||
|
@@ -376,7 +376,7 @@ config TOUCHSCREEN_IPROC
|
||||
config TOUCHSCREEN_S3C2410
|
||||
tristate "Samsung S3C2410/generic touchscreen input driver"
|
||||
depends on ARCH_S3C24XX || SAMSUNG_DEV_TS
|
||||
select S3C_ADC
|
||||
depends on S3C_ADC
|
||||
help
|
||||
Say Y here if you have the s3c2410 touchscreen.
|
||||
|
||||
|
@@ -454,7 +454,7 @@ static int ad7879_gpio_add(struct ad7879 *ts,
|
||||
ts->gc.ngpio = 1;
|
||||
ts->gc.label = "AD7879-GPIO";
|
||||
ts->gc.owner = THIS_MODULE;
|
||||
ts->gc.dev = ts->dev;
|
||||
ts->gc.parent = ts->dev;
|
||||
|
||||
ret = gpiochip_add(&ts->gc);
|
||||
if (ret)
|
||||
|
@@ -21,6 +21,7 @@
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/pinctrl/consumer.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/slab.h>
|
||||
|
@@ -822,16 +822,22 @@ static void edt_ft5x06_ts_get_defaults(struct device *dev,
|
||||
int error;
|
||||
|
||||
error = device_property_read_u32(dev, "threshold", &val);
|
||||
if (!error)
|
||||
reg_addr->reg_threshold = val;
|
||||
if (!error) {
|
||||
edt_ft5x06_register_write(tsdata, reg_addr->reg_threshold, val);
|
||||
tsdata->threshold = val;
|
||||
}
|
||||
|
||||
error = device_property_read_u32(dev, "gain", &val);
|
||||
if (!error)
|
||||
reg_addr->reg_gain = val;
|
||||
if (!error) {
|
||||
edt_ft5x06_register_write(tsdata, reg_addr->reg_gain, val);
|
||||
tsdata->gain = val;
|
||||
}
|
||||
|
||||
error = device_property_read_u32(dev, "offset", &val);
|
||||
if (!error)
|
||||
reg_addr->reg_offset = val;
|
||||
if (!error) {
|
||||
edt_ft5x06_register_write(tsdata, reg_addr->reg_offset, val);
|
||||
tsdata->offset = val;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
@@ -444,7 +444,7 @@ static void sur40_process_video(struct sur40_state *sur40)
|
||||
goto err_poll;
|
||||
|
||||
/* mark as finished */
|
||||
v4l2_get_timestamp(&new_buf->vb.timestamp);
|
||||
new_buf->vb.vb2_buf.timestamp = ktime_get_ns();
|
||||
new_buf->vb.sequence = sur40->sequence++;
|
||||
new_buf->vb.field = V4L2_FIELD_NONE;
|
||||
vb2_buffer_done(&new_buf->vb.vb2_buf, VB2_BUF_STATE_DONE);
|
||||
@@ -644,22 +644,21 @@ static void sur40_disconnect(struct usb_interface *interface)
|
||||
* minimum number: many DMA engines need a minimum of 2 buffers in the
|
||||
* queue and you need to have another available for userspace processing.
|
||||
*/
|
||||
static int sur40_queue_setup(struct vb2_queue *q, const void *parg,
|
||||
static int sur40_queue_setup(struct vb2_queue *q,
|
||||
unsigned int *nbuffers, unsigned int *nplanes,
|
||||
unsigned int sizes[], void *alloc_ctxs[])
|
||||
{
|
||||
const struct v4l2_format *fmt = parg;
|
||||
struct sur40_state *sur40 = vb2_get_drv_priv(q);
|
||||
|
||||
if (q->num_buffers + *nbuffers < 3)
|
||||
*nbuffers = 3 - q->num_buffers;
|
||||
alloc_ctxs[0] = sur40->alloc_ctx;
|
||||
|
||||
if (fmt && fmt->fmt.pix.sizeimage < sur40_video_format.sizeimage)
|
||||
return -EINVAL;
|
||||
if (*nplanes)
|
||||
return sizes[0] < sur40_video_format.sizeimage ? -EINVAL : 0;
|
||||
|
||||
*nplanes = 1;
|
||||
sizes[0] = fmt ? fmt->fmt.pix.sizeimage : sur40_video_format.sizeimage;
|
||||
alloc_ctxs[0] = sur40->alloc_ctx;
|
||||
sizes[0] = sur40_video_format.sizeimage;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user