diff options
author | shadoukun | 2017-11-24 18:35:14 -0500 |
---|---|---|
committer | shadoukun | 2017-11-24 18:35:14 -0500 |
commit | a0eb6bf18d3c2e387d2096c0e4216e39fe6678a3 (patch) | |
tree | 070bc8d93f7e579934a6f993650c39ca08cad6b7 /0005-camera.patch | |
parent | a1888e9546f9f56419fd797cfacd8d5d8d5aaa44 (diff) | |
download | aur-a0eb6bf18d3c2e387d2096c0e4216e39fe6678a3.tar.gz |
update to 4.14.2. Multitouch/pen fixed.
Diffstat (limited to '0005-camera.patch')
-rw-r--r-- | 0005-camera.patch | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/0005-camera.patch b/0005-camera.patch new file mode 100644 index 000000000000..87d72a2a83e1 --- /dev/null +++ b/0005-camera.patch @@ -0,0 +1,145 @@ +diff --git a/drivers/staging/media/atomisp/i2c/ov5693/Kconfig b/drivers/staging/media/atomisp/i2c/ov5693/Kconfig +index 9fb1bff..3954b8c 100644 +--- a/drivers/staging/media/atomisp/i2c/ov5693/Kconfig ++++ b/drivers/staging/media/atomisp/i2c/ov5693/Kconfig +@@ -1,6 +1,6 @@ + config VIDEO_OV5693 + tristate "Omnivision ov5693 sensor support" +- depends on I2C && VIDEO_V4L2 ++ depends on I2C && VIDEO_V4L2 && MEDIA_CONTROLLER + ---help--- + This is a Video4Linux2 sensor-level driver for the Micron + ov5693 5 Mpixel camera. +diff --git a/drivers/staging/media/atomisp/i2c/ov5693/ov5693.c b/drivers/staging/media/atomisp/i2c/ov5693/ov5693.c +index 1236425..37986f5 100644 +--- a/drivers/staging/media/atomisp/i2c/ov5693/ov5693.c ++++ b/drivers/staging/media/atomisp/i2c/ov5693/ov5693.c +@@ -1332,7 +1332,7 @@ static int power_ctrl(struct v4l2_subdev *sd, bool flag) + + static int gpio_ctrl(struct v4l2_subdev *sd, bool flag) + { +- int ret; ++ int ret = 0; + struct ov5693_device *dev = to_ov5693_sensor(sd); + + if (!dev || !dev->platform_data) +@@ -1342,7 +1342,8 @@ static int gpio_ctrl(struct v4l2_subdev *sd, bool flag) + if (dev->platform_data->gpio_ctrl) + return dev->platform_data->gpio_ctrl(sd, flag); + +- ret = dev->platform_data->gpio0_ctrl(sd, flag); ++ if (dev->platform_data->gpio0_ctrl) ++ ret = dev->platform_data->gpio0_ctrl(sd, flag); + + return ret; + } +@@ -1709,7 +1710,7 @@ static int ov5693_detect(struct i2c_client *client) + OV5693_SC_CMMN_CHIP_ID_L, &low); + id = ((((u16) high) << 8) | (u16) low); + +- if (id != OV5693_ID) { ++ if (id != OV5690_ID && id != OV5693_ID) { + dev_err(&client->dev, "sensor ID error 0x%x\n", id); + return -ENODEV; + } +diff --git a/drivers/staging/media/atomisp/i2c/ov5693/ov5693.h b/drivers/staging/media/atomisp/i2c/ov5693/ov5693.h +index 8c2e679..a657f94 100644 +--- a/drivers/staging/media/atomisp/i2c/ov5693/ov5693.h ++++ b/drivers/staging/media/atomisp/i2c/ov5693/ov5693.h +@@ -33,7 +33,7 @@ + #include <linux/v4l2-mediabus.h> + #include <media/media-entity.h> + +-#include "../../include/linux/atomisp_platform.h" ++#include "../../include/linux/atomisp_gmin_platform.h" + + #define OV5693_NAME "ov5693" + +@@ -78,7 +78,8 @@ + * bits 7-0: min f-number denominator + */ + #define OV5693_F_NUMBER_RANGE 0x180a180a +-#define OV5693_ID 0x5690 ++#define OV5690_ID 0x5690 ++#define OV5693_ID 0x5693 + + #define OV5693_FINE_INTG_TIME_MIN 0 + #define OV5693_FINE_INTG_TIME_MAX_MARGIN 0 +diff --git a/drivers/staging/media/atomisp/platform/intel-mid/atomisp_gmin_platform.c b/drivers/staging/media/atomisp/platform/intel-mid/atomisp_gmin_platform.c +index edaae93..ca59c4f 100644 +--- a/drivers/staging/media/atomisp/platform/intel-mid/atomisp_gmin_platform.c ++++ b/drivers/staging/media/atomisp/platform/intel-mid/atomisp_gmin_platform.c +@@ -296,11 +296,13 @@ static const struct gmin_cfg_var ecs7_vars[] = { + {"INT33BE:00_CsiFmt", "13"}, + {"INT33BE:00_CsiBayer", "2"}, + {"INT33BE:00_CamClk", "0"}, ++ {"INT33BE:00_ClkSrc", "1"}, + {"INT33F0:00_CsiPort", "0"}, + {"INT33F0:00_CsiLanes", "1"}, + {"INT33F0:00_CsiFmt", "13"}, + {"INT33F0:00_CsiBayer", "0"}, + {"INT33F0:00_CamClk", "1"}, ++ {"INT33BE:00_I2CAddr", "-1"}, + {"gmin_V2P8GPIO", "402"}, + {}, + }; +@@ -325,6 +327,8 @@ static const struct { + { "MRD7", mrd7_vars }, + { "ST70408", ecs7_vars }, + { "VTA0803", i8880_vars }, ++ { "Surface Book" , ecs7_vars } , ++ { "Surface Pro 4" , ecs7_vars } , + }; + + +diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c +index 6d22b22..b72b782 100644 +--- a/drivers/media/usb/uvc/uvc_driver.c ++++ b/drivers/media/usb/uvc/uvc_driver.c +@@ -2277,6 +2277,46 @@ MODULE_PARM_DESC(timeout, "Streaming control requests timeout"); + * though they are compliant. + */ + static const struct usb_device_id uvc_ids[] = { ++ /* Microsoft Surface Pro 3 Front */ ++ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE ++ | USB_DEVICE_ID_MATCH_INT_INFO, ++ .idVendor = 0x045e, ++ .idProduct = 0x07be, ++ .bInterfaceClass = USB_CLASS_VIDEO, ++ .bInterfaceSubClass = 1, ++ .bInterfaceProtocol = 1 }, ++ /* Microsoft Surface Pro 3 Rear */ ++ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE ++ | USB_DEVICE_ID_MATCH_INT_INFO, ++ .idVendor = 0x045e, ++ .idProduct = 0x07bf, ++ .bInterfaceClass = USB_CLASS_VIDEO, ++ .bInterfaceSubClass = 1, ++ .bInterfaceProtocol = 1 }, ++ /* Microsoft Surface Pro 4 Cam */ ++ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE ++ | USB_DEVICE_ID_MATCH_INT_INFO, ++ .idVendor = 0x045e, ++ .idProduct = 0x090c, ++ .bInterfaceClass = USB_CLASS_VIDEO, ++ .bInterfaceSubClass = 1, ++ .bInterfaceProtocol = 1 }, ++ /* Microsoft Surface Book Cam 1 */ ++ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE ++ | USB_DEVICE_ID_MATCH_INT_INFO, ++ .idVendor = 0x045e, ++ .idProduct = 0x090b, ++ .bInterfaceClass = USB_CLASS_VIDEO, ++ .bInterfaceSubClass = 1, ++ .bInterfaceProtocol = 1 }, ++ /* Microsoft Surface Book Cam 2 */ ++ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE ++ | USB_DEVICE_ID_MATCH_INT_INFO, ++ .idVendor = 0x045e, ++ .idProduct = 0x091a, ++ .bInterfaceClass = USB_CLASS_VIDEO, ++ .bInterfaceSubClass = 1, ++ .bInterfaceProtocol = 1 }, + /* LogiLink Wireless Webcam */ + { .match_flags = USB_DEVICE_ID_MATCH_DEVICE + | USB_DEVICE_ID_MATCH_INT_INFO, |