mbox series

[v2,00/29] Linux CCS driver preparation

Message ID 20201127103325.29814-1-sakari.ailus@linux.intel.com (mailing list archive)
Headers show
Series Linux CCS driver preparation | expand

Message

Sakari Ailus Nov. 27, 2020, 10:32 a.m. UTC
Hello everyone,

Here's a set of patches that turn the existing SMIA driver into a MIPI CCS
driver while maintaining SMIA support. A number of bugs in the existing
code are fixed in this set, too.

The changes at this point are primarily focused on dealing with new
mandatory driver features related to PLL configuration (as CCS allows for
much more variation there) and things such as integer conversion from
U16.U16 format instead of float. There are some other new features as well
such as digital gain and support for getting device specific analogue gain
coefficients.

A new feature in CCS is CCS static data which makes it possible to obtain
sensor's capabilities and limits from a file chosen based on sensor
identification. CCS static data is used also for storing MSR registers so
supporting new, CCS compliant devices requires no driver changes.

Note that the library as well as the register definitions are dual
licensed under GNU GPL v2 OR BSD 3-clause licenses for use outside the
Linux kernel.

Also DT bindings are updated accordingly and converted to YAML format.

More information on MIPI CCS can be found here:

<URL:https://www.mipi.org/specifications/camera-command-set>

Comments are welcome.

since v1:

- Fix the SPDX tag in mk-ccs-regs script

- Add support for producing kernel definitions including use of BIT macro
  and kernel types in mk-ccs-regs (was C99 only)

- Add MAINTAINERS entry for the documentation in the first documentation
  patch.

- Fix compilation issues due to ccs-limits.o missing from Makefile in a
  few patches early in the set.

since the big, big patchset (v2):

- Split into more easily reviewable chunks (this is the first of maybe
  three). The cover page describes the entire big set. This set contains
  mostly cleanups for the smiapp driver that prepare for support for
  additional features as well as DT bindings, as well as using CCS limits.

- Fix SPDX tags. Some were left accidentally with BSD-3-Clause license
  only.

- Fix bus-type alignment in DT bindings.

- Add CCS driver documentation

- Add -u option to the CCS register definition generator.

- Add static keyword for ccs_limit_offset array.

- Add generated CCS register definitions, and do not generate the definitions as
  part of the build process.

- Remove ccs-os.h header.

Sakari Ailus (29):
  ccs: Add the generator for CCS register definitions and limits
  Documentation: ccs: Add CCS driver documentation
  smiapp: Import CCS definitions
  smiapp: Use CCS register flags
  smiapp: Calculate CCS limit offsets and limit buffer size
  smiapp: Remove macros for defining registers, merge definitions
  smiapp: Add macros for accessing CCS registers
  smiapp: Use MIPI CCS version and manufacturer ID information
  smiapp: Read CCS limit values
  smiapp: Switch to CCS limits
  smiapp: Obtain frame descriptor from CCS limits
  smiapp: Use CCS limits in reading data format descriptors
  smiapp: Use CCS limits in reading binning capabilities
  smiapp: Use CCS registers
  smiapp: Remove quirk function for writing a single 8-bit register
  smiapp: Rename register access functions
  smiapp: Internal rename to CCS
  smiapp: Differentiate CCS sensors from SMIA in subdev naming
  smiapp: Rename as "ccs"
  ccs: Remove profile concept
  ccs: Give all subdevs a function
  dt-bindings: nokia,smia: Fix link-frequencies documentation
  dt-bindings: nokia,smia: Make vana-supply optional
  dt-bindings: nokia,smia: Remove nokia,nvm-size property
  dt-bindings: nokia,smia: Convert to YAML
  dt-bindings: nokia,smia: Use better active polarity for reset
  dt-bindings: nokia,smia: Amend SMIA bindings with MIPI CCS support
  dt-bindings: mipi-ccs: Add bus-type for C-PHY support
  ccs: Request for "reset" GPIO

 .../bindings/media/i2c/mipi-ccs.yaml          |  128 ++
 .../bindings/media/i2c/nokia,smia.txt         |   66 -
 .../driver-api/media/drivers/ccs/ccs-regs.txt | 1041 ++++++++++
 .../driver-api/media/drivers/ccs/ccs.rst      |   82 +
 .../driver-api/media/drivers/ccs/mk-ccs-regs  |  433 ++++
 .../driver-api/media/drivers/index.rst        |    1 +
 MAINTAINERS                                   |   21 +-
 drivers/media/i2c/Kconfig                     |    2 +-
 drivers/media/i2c/Makefile                    |    2 +-
 drivers/media/i2c/{smiapp => ccs}/Kconfig     |    7 +-
 drivers/media/i2c/ccs/Makefile                |    6 +
 .../{smiapp/smiapp-core.c => ccs/ccs-core.c}  | 1828 +++++++++--------
 drivers/media/i2c/ccs/ccs-limits.c            |  239 +++
 drivers/media/i2c/ccs/ccs-limits.h            |  259 +++
 .../smiapp-quirk.c => ccs/ccs-quirk.c}        |   92 +-
 .../smiapp-quirk.h => ccs/ccs-quirk.h}        |   52 +-
 .../smiapp-regs.c => ccs/ccs-reg-access.c}    |   85 +-
 drivers/media/i2c/ccs/ccs-reg-access.h        |   38 +
 drivers/media/i2c/ccs/ccs-regs.h              |  954 +++++++++
 .../media/i2c/{smiapp/smiapp.h => ccs/ccs.h}  |  164 +-
 drivers/media/i2c/ccs/smiapp-reg-defs.h       |  580 ++++++
 drivers/media/i2c/smiapp/Makefile             |    6 -
 drivers/media/i2c/smiapp/smiapp-limits.c      |  118 --
 drivers/media/i2c/smiapp/smiapp-limits.h      |  114 -
 drivers/media/i2c/smiapp/smiapp-reg-defs.h    |  489 -----
 drivers/media/i2c/smiapp/smiapp-reg.h         |  116 --
 drivers/media/i2c/smiapp/smiapp-regs.h        |   36 -
 27 files changed, 4947 insertions(+), 2012 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/media/i2c/mipi-ccs.yaml
 delete mode 100644 Documentation/devicetree/bindings/media/i2c/nokia,smia.txt
 create mode 100644 Documentation/driver-api/media/drivers/ccs/ccs-regs.txt
 create mode 100644 Documentation/driver-api/media/drivers/ccs/ccs.rst
 create mode 100755 Documentation/driver-api/media/drivers/ccs/mk-ccs-regs
 rename drivers/media/i2c/{smiapp => ccs}/Kconfig (55%)
 create mode 100644 drivers/media/i2c/ccs/Makefile
 rename drivers/media/i2c/{smiapp/smiapp-core.c => ccs/ccs-core.c} (53%)
 create mode 100644 drivers/media/i2c/ccs/ccs-limits.c
 create mode 100644 drivers/media/i2c/ccs/ccs-limits.h
 rename drivers/media/i2c/{smiapp/smiapp-quirk.c => ccs/ccs-quirk.c} (66%)
 rename drivers/media/i2c/{smiapp/smiapp-quirk.h => ccs/ccs-quirk.h} (55%)
 rename drivers/media/i2c/{smiapp/smiapp-regs.c => ccs/ccs-reg-access.c} (66%)
 create mode 100644 drivers/media/i2c/ccs/ccs-reg-access.h
 create mode 100644 drivers/media/i2c/ccs/ccs-regs.h
 rename drivers/media/i2c/{smiapp/smiapp.h => ccs/ccs.h} (57%)
 create mode 100644 drivers/media/i2c/ccs/smiapp-reg-defs.h
 delete mode 100644 drivers/media/i2c/smiapp/Makefile
 delete mode 100644 drivers/media/i2c/smiapp/smiapp-limits.c
 delete mode 100644 drivers/media/i2c/smiapp/smiapp-limits.h
 delete mode 100644 drivers/media/i2c/smiapp/smiapp-reg-defs.h
 delete mode 100644 drivers/media/i2c/smiapp/smiapp-reg.h
 delete mode 100644 drivers/media/i2c/smiapp/smiapp-regs.h