[V2, 0/2] media: i2c: add support for DW9768 VCM driver

dongchun.zhu-NuS5LvNUpcJWk0Htik3J/w
2019-09-05T07:21:40Z

From: Dongchun Zhu <dongchun.zhu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>

Hello,

Add a v4l2 sub-device driver for Dongwoon's DW9768 lens voice coil.
This is a voice coil module using the i2c bus to control the focus position.

The DW9768 can control the position with 10 bits value and
consists of two 8 bit registers show as below.
register 0x04(DW9768_REG_POSITION):
+---+---+---+---+---+---+---+---+
|D07|D06|D05|D04|D03|D02|D01|D00|
+---+---+---+---+---+---+---+---+
register 0x03:
+---+---+---+---+---+---+---+---+
|---|---|---|---|---|---|D09|D08|
+---+---+---+---+---+---+---+---+

This driver supports:
- set DW9768 to standby mode once suspend and turn it back to active if resume
- set the position via V4L2_CID_FOCUS_ABSOLUTE ctrl

Mainly changes of v2 are addressing the comments from Tomasz, Bingbu, Andy,
including,
- Use i2c_smbus_write_byte_data/i2c_smbus_write_block_data to write I2C register
- Adopt the runtime PM suspend/resume callbacks to powering off/on
- Check the PM runtime status before powering off in dw9768_remove function
- Add one more regulator vin for the I2C interface
- Remove or refine redundant log print
- Fix other reviewed issues in v1

Dongchun Zhu (2):
media: i2c: dw9768: Add DT support and MAINTAINERS entry
media: i2c: Add DW9768 VCM driver

.../bindings/media/i2c/dongwoon,dw9768.txt | 9 +
MAINTAINERS | 8 +
drivers/media/i2c/Kconfig | 10 +
drivers/media/i2c/Makefile | 1 +
drivers/media/i2c/dw9768.c | 349 +++++++++++++++++++++
5 files changed, 377 insertions(+)
create mode 100644 Documentation/devicetree/bindings/media/i2c/dongwoon,dw9768.txt
create mode 100644 drivers/media/i2c/dw9768.c

--
2.9.2