GithubHelp home page GithubHelp logo

ipu6-drivers's Introduction

ipu6-drivers

This repository supports MIPI cameras through the IPU6 on Intel Tiger Lake and Alder Lake platforms. There are 4 repositories that provide the complete setup:

Content of this repository:

  • IPU6 kernel driver
  • Drivers for HM11B1, OV01A1S, OV01A10, OV02C10, OV2740, HM2170 and HI556 sensors

Build instructions:

Three ways are available:

  1. build with kernel source tree
  2. build out of kernel source tree
  3. and build with dkms

1. Build with kernel source tree

  • Tested with kernel 6.0

  • Check out kernel

  • Apply patches:

     # For IPU6
     patch/IOMMU-passthrough-for-intel-ipu.diff
    
     # For 5.15 <= kernel version < 5.17
     patch/int3472-support-independent-clock-and-LED-gpios.patch
    
     # For kernel version >= 5.17
     patch/int3472-support-independent-clock-and-LED-gpios-5.17+.patch
  • Copy repo content to kernel source (except Makefile and drivers/media/i2c/{Kconfig,Makefile}, will change manually next)

  • Modify related Kconfig and Makefile

  • Add config in LinuxRoot/drivers/media/i2c/Kconfig (for kernel version < 5.18, use VIDEO_V4L2 instead of VIDEO_DEV in depends on section)

     config POWER_CTRL_LOGIC
     	tristate "power control logic driver"
     	depends on GPIO_ACPI
     	help
     	  This is a power control logic driver for sensor, the design
     	  depends on camera sensor connections.
     	  This driver controls power by getting and using managed GPIO
     	  pins from ACPI config for sensors, such as HM11B1, OV01A1S.
    
     	  To compile this driver as a module, choose M here: the
     	  module will be called power_ctrl_logic.
    
     config VIDEO_OV01A1S
     	tristate "OmniVision OV01A1S sensor support"
     	depends on VIDEO_DEV && I2C
     	depends on ACPI || COMPILE_TEST
     	select MEDIA_CONTROLLER
     	select VIDEO_V4L2_SUBDEV_API
     	select V4L2_FWNODE
     	help
     	  This is a Video4Linux2 sensor driver for the OmniVision
     	  OV01A1S camera.
    
     	  To compile this driver as a module, choose M here: the
     	  module will be called ov01a1s.
    
     config VIDEO_HM11B1
     	tristate "Himax HM11B1 sensor support"
     	depends on VIDEO_DEV && I2C
     	select MEDIA_CONTROLLER
     	select VIDEO_V4L2_SUBDEV_API
     	select V4L2_FWNODE
     	help
     	  This is a Video4Linux2 sensor driver for the Himax
     	  HM11B1 camera.
    
     	  To compile this driver as a module, choose M here: the
     	  module will be called hm11b1.
    
     config VIDEO_OV01A10
     	tristate "OmniVision OV01A10 sensor support"
     	depends on VIDEO_DEV && I2C
     	depends on ACPI || COMPILE_TEST
     	select MEDIA_CONTROLLER
     	select VIDEO_V4L2_SUBDEV_API
     	select V4L2_FWNODE
     	help
     	  This is a Video4Linux2 sensor driver for the OmniVision
     	  OV01A10 camera.
    
     	  To compile this driver as a module, choose M here: the
     	  module will be called ov01a10.
    
     config VIDEO_OV02C10
     	tristate "OmniVision OV02C10 sensor support"
     	depends on VIDEO_DEV && I2C
     	depends on ACPI || COMPILE_TEST
     	select MEDIA_CONTROLLER
     	select VIDEO_V4L2_SUBDEV_API
     	select V4L2_FWNODE
     	help
     	  This is a Video4Linux2 sensor driver for the OmniVision
     	  OV02C10 camera.
    
     	  To compile this driver as a module, choose M here: the
     	  module will be called ov02c10.
    
     config VIDEO_HM2170
     	tristate "Himax HM2170 sensor support"
     	depends on VIDEO_DEV && I2C
     	select MEDIA_CONTROLLER
     	select VIDEO_V4L2_SUBDEV_API
     	select V4L2_FWNODE
     	help
     		This is a Video4Linux2 sensor driver for the Himax
     		HM2170 camera.
    
     		To compile this driver as a module, choose M here: the
     		module will be called hm2170.
    
    
  • Add to drivers/media/i2c/Makefile

     obj-$(CONFIG_POWER_CTRL_LOGIC) += power_ctrl_logic.o
     obj-$(CONFIG_VIDEO_OV01A1S) += ov01a1s.o
     obj-$(CONFIG_VIDEO_HM11B1)  += hm11b1.o
     obj-$(CONFIG_VIDEO_OV01A10) += ov01a10.o
     obj-$(CONFIG_VIDEO_OV02C10) += ov02c10.o
     obj-$(CONFIG_VIDEO_HM2170) += hm2170.o
  • Modify drivers/media/pci/Kconfig

     # replace line:
     # source "drivers/media/pci/intel/ipu3/Kconfig"
     # with line:
     source "drivers/media/pci/intel/Kconfig"
    
  • Enable the following settings in .config

     CONFIG_VIDEO_INTEL_IPU6=m
     CONFIG_IPU_ISYS_BRIDGE=y
     CONFIG_VIDEO_OV01A1S=m
     CONFIG_VIDEO_OV01A10=m
     CONFIG_VIDEO_HM11B1=m
     CONFIG_VIDEO_OV02C10=m
     CONFIG_VIDEO_HM2170=m
     # If your kernel < 5.15 or not set CONFIG_INTEL_SKL_INT3472, please add the line below:
     # CONFIG_POWER_CTRL_LOGIC=m
    
  • LJCA and CVF part as below, please check details at https://github.com/intel/ivsc-driver/blob/main/README.md

     CONFIG_MFD_LJCA=m
     CONFIG_I2C_LJCA=m
     CONFIG_SPI_LJCA=m
     CONFIG_GPIO_LJCA=m
     CONFIG_INTEL_MEI_VSC=m
     CONFIG_INTEL_VSC=m
     CONFIG_INTEL_VSC_CSI=m
     CONFIG_INTEL_VSC_ACE=m
     CONFIG_INTEL_VSC_PSE=m
     CONFIG_INTEL_VSC_ACE_DEBUG=m
    

2. Build outside kernel source tree

  • Requires kernel header installed on build machine

  • Requires iVSC driver be built together

  • To prepare dependency:

     cd ipu6-drivers
     git clone https://github.com/intel/ivsc-driver.git
     cp -r ivsc-driver/backport-include ivsc-driver/drivers ivsc-driver/include .
     rm -rf ivsc-driver
  • To build and install:

     make -j`nproc` && sudo make modules_install && sudo depmod -a

3. Build with dkms

  • Prepare dependency:

     cd ipu6-drivers
     git clone https://github.com/intel/ivsc-driver.git
     cp -r ivsc-driver/backport-include ivsc-driver/drivers ivsc-driver/include .
     rm -rf ivsc-driver
  • Register, build and auto install:

     sudo dkms add .
     sudo dkms autoinstall ipu6-drivers/0.0.0

ipu6-drivers's People

Contributors

hao-yao avatar wytintel avatar jwrdegoede avatar vicamo avatar cjechlitschek avatar zouxiaoh avatar onceforall avatar ignaciohg avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.