From patchwork Thu Jul 29 06:48:19 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: You-Sheng Yang X-Patchwork-Id: 1511081 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4Gb1Mc6Vnpz9sX5; Thu, 29 Jul 2021 16:48:44 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1m8zqS-0006w9-EQ; Thu, 29 Jul 2021 06:48:40 +0000 Received: from mail-pj1-f46.google.com ([209.85.216.46]) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1m8zqP-0006vy-MO for kernel-team@lists.ubuntu.com; Thu, 29 Jul 2021 06:48:37 +0000 Received: by mail-pj1-f46.google.com with SMTP id u9-20020a17090a1f09b029017554809f35so14044390pja.5 for ; Wed, 28 Jul 2021 23:48:36 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=spXKKgvp30OcQ9Tp8EWf5M7c3nccIgPAtILi+VF75qw=; b=ueMXy1dfLXq91yYuo4ZDewx42bWtk5MeylWuW8M1yoBZD4cBsy9CFOBCVTghgbNqk0 0NJs6lA0NTru/KEdQs5uNP9cwFG35oN+Q7KEjeTMmvRzsNyF44PgdNiKkMHxH9uNwYJe XRhvYHpBYxhjObE2ATV9D1i+pXS3L8dMA7XsTtNyDpquI0k86Sin1dbpGbOv9+jcWbZ1 qMeU3hHxBHnYjHu7oyXjVEuM5tkZ3XnMK8DhZqAfvSDPHiBU3Hc8SCTeexhaGNmd1h9m rhqdQ5ZssEUZn38vzLQ3pwI6KkbUltHD2Uti8ni7EcFy+188nhH+1GLUShocBo5D75mR Ol8A== X-Gm-Message-State: AOAM532G904kdee/cwPq88hQzfCElexm4iQx+cfDgv6kN+HRFeZ4b1NY Y3PH7aSIOSN0mq0HnZFPu2bZULWMhnRDew== X-Google-Smtp-Source: ABdhPJy7ZqyJsW6DCAlyzddBDBKLqdhGY8LV3VCFcffrUtPd4L8VzQ8KPEL30LUIdJABfMUY/Jbf0A== X-Received: by 2002:a17:90a:bb0b:: with SMTP id u11mr13582936pjr.18.1627541314972; Wed, 28 Jul 2021 23:48:34 -0700 (PDT) Received: from localhost (61-220-137-37.HINET-IP.hinet.net. [61.220.137.37]) by smtp.gmail.com with ESMTPSA id w11sm1930303pjr.44.2021.07.28.23.48.34 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Jul 2021 23:48:34 -0700 (PDT) From: You-Sheng Yang To: kernel-team@lists.ubuntu.com Subject: [PATCH 00/13][SRU][OEM-5.13] Support MIPI camera through Intel IPU6 Date: Thu, 29 Jul 2021 14:48:19 +0800 Message-Id: <20210729064832.25656-1-vicamo.yang@canonical.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Received-SPF: pass client-ip=209.85.216.46; envelope-from=vicamo@gmail.com; helo=mail-pj1-f46.google.com X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" BugLink: https://bugs.launchpad.net/bugs/1921345 [Impact] To bring Intel IPU6(Imaging Processing Unit version 6) to oem-5.13. [Fix] This patchset took kernel patches that have been included in oem-5.10 and two more to address changes in kernel version differences. [Test Case] With kernel/firmware properly installed, the hardware should be ready for further development: $ dmesg | grep ipu intel-ipu6 intel-ipu: enabling device (0000 -> 0002) intel-ipu6 intel-ipu: Device 0x9a19 (rev: 0x1) intel-ipu6 intel-ipu: physical base address 0x6054000000 intel-ipu6 intel-ipu: mapped as: 0x0000000097793328 intel-ipu6 intel-ipu: IPU in secure mode intel-ipu6 intel-ipu: IPC reset done intel-ipu6 intel-ipu: cpd file name: intel/ipu6_fw.bin intel-ipu6 intel-ipu: FW version: 20201222 intel-ipu6 intel-ipu: Sending BOOT_LOAD to CSE intel-ipu6 intel-ipu: Sending AUTHENTICATE_RUN to CSE intel-ipu6 intel-ipu: CSE authenticate_run done intel-ipu6 intel-ipu: IPU driver version 1.0 intel-ipu6-psys intel-ipu6-psys0: pkg_dir entry count:8 intel-ipu6-psys intel-ipu6-psys0: psys probe minor: 0 intel-ipu6-isys intel-ipu6-isys0: bind ov01a1s 20-0036 nlanes is 1 port is 1 intel-ipu6-isys intel-ipu6-isys0: All sensor registration completed. intel-ipu6-isys intel-ipu6-isys0: stream on ov01a1s 20-0036 There should be a new video4linux device created under /dev. [Where problems could occur] The last patch contains addtional bits other than the need to address in kernel mmap API changes. Not necessarily an issue, but at least that has not yet received the same amount of verifications as oem-5.10 has. [Other Info] This SRU integrates fixes from several bugs for IPU6 previously for oem-5.10. They are bug 1921345, 1926275, and 1929157. Wang Yating (12): UBUNTU: SAUCE: intel ipu drivers first release UBUNTU: SAUCE: IPU driver release WW48 UBUNTU: SAUCE: IPU driver release WW48 with MCU UBUNTU: SAUCE: IPU driver release WW52 UBUNTU: SAUCE: IPU driver release WW04 UBUNTU: SAUCE: IPU driver release WW14 UBUNTU: SAUCE: Fix ov01a1s output mirror issue UBUNTU: SAUCE: integrate IPU6 builds UBUNTU: SAUCE: Fix ov01a1s IQ issues UBUNTU: SAUCE: intel/ipu6: Remove unnecessary video devices UBUNTU: SAUCE: change power control driver to acpi driver UBUNTU: SAUCE: IPU6 driver release for kernel 5.13 You-Sheng Yang (1): UBUNTU: [Config] updateconfigs for IPU6 driver debian.oem/config/config.common.ubuntu | 5 + drivers/media/i2c/Kconfig | 41 + drivers/media/i2c/Makefile | 4 + drivers/media/i2c/hm11b1.c | 1366 +++++++++++++ drivers/media/i2c/ov01a1s.c | 936 +++++++++ drivers/media/i2c/power_ctrl_logic.c | 147 ++ drivers/media/i2c/power_ctrl_logic.h | 9 + drivers/media/pci/Kconfig | 2 +- drivers/media/pci/intel/Kconfig | 21 + drivers/media/pci/intel/Makefile | 11 +- drivers/media/pci/intel/ipu-bus.c | 256 +++ drivers/media/pci/intel/ipu-bus.h | 67 + drivers/media/pci/intel/ipu-buttress.c | 1399 +++++++++++++ drivers/media/pci/intel/ipu-buttress.h | 129 ++ drivers/media/pci/intel/ipu-cpd.c | 465 +++++ drivers/media/pci/intel/ipu-cpd.h | 110 ++ drivers/media/pci/intel/ipu-dma.c | 406 ++++ drivers/media/pci/intel/ipu-dma.h | 19 + drivers/media/pci/intel/ipu-fw-com.c | 496 +++++ drivers/media/pci/intel/ipu-fw-com.h | 48 + drivers/media/pci/intel/ipu-fw-isys.c | 600 ++++++ drivers/media/pci/intel/ipu-fw-isys.h | 816 ++++++++ drivers/media/pci/intel/ipu-fw-psys.c | 430 ++++ drivers/media/pci/intel/ipu-fw-psys.h | 382 ++++ .../media/pci/intel/ipu-isys-csi2-be-soc.c | 341 ++++ drivers/media/pci/intel/ipu-isys-csi2-be.h | 63 + drivers/media/pci/intel/ipu-isys-csi2.c | 631 ++++++ drivers/media/pci/intel/ipu-isys-csi2.h | 164 ++ drivers/media/pci/intel/ipu-isys-media.h | 77 + drivers/media/pci/intel/ipu-isys-queue.c | 1063 ++++++++++ drivers/media/pci/intel/ipu-isys-queue.h | 142 ++ drivers/media/pci/intel/ipu-isys-subdev.c | 657 +++++++ drivers/media/pci/intel/ipu-isys-subdev.h | 153 ++ drivers/media/pci/intel/ipu-isys-video.c | 1748 +++++++++++++++++ drivers/media/pci/intel/ipu-isys-video.h | 178 ++ drivers/media/pci/intel/ipu-isys.c | 1383 +++++++++++++ drivers/media/pci/intel/ipu-isys.h | 228 +++ drivers/media/pci/intel/ipu-mmu.c | 860 ++++++++ drivers/media/pci/intel/ipu-mmu.h | 76 + drivers/media/pci/intel/ipu-pdata.h | 242 +++ drivers/media/pci/intel/ipu-psys-compat32.c | 226 +++ drivers/media/pci/intel/ipu-psys.c | 1628 +++++++++++++++ drivers/media/pci/intel/ipu-psys.h | 218 ++ drivers/media/pci/intel/ipu-trace.c | 869 ++++++++ drivers/media/pci/intel/ipu-trace.h | 146 ++ drivers/media/pci/intel/ipu.c | 821 ++++++++ drivers/media/pci/intel/ipu.h | 108 + drivers/media/pci/intel/ipu6/Makefile | 58 + .../media/pci/intel/ipu6/ipu-fw-resources.c | 103 + .../intel/ipu6/ipu-platform-buttress-regs.h | 317 +++ .../intel/ipu6/ipu-platform-isys-csi2-reg.h | 277 +++ .../media/pci/intel/ipu6/ipu-platform-isys.h | 26 + .../media/pci/intel/ipu6/ipu-platform-psys.h | 78 + .../media/pci/intel/ipu6/ipu-platform-regs.h | 333 ++++ .../pci/intel/ipu6/ipu-platform-resources.h | 103 + drivers/media/pci/intel/ipu6/ipu-platform.h | 34 + drivers/media/pci/intel/ipu6/ipu-resources.c | 863 ++++++++ .../media/pci/intel/ipu6/ipu6-fw-resources.c | 595 ++++++ drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c | 513 +++++ drivers/media/pci/intel/ipu6/ipu6-isys-csi2.h | 14 + drivers/media/pci/intel/ipu6/ipu6-isys-gpc.c | 205 ++ drivers/media/pci/intel/ipu6/ipu6-isys-phy.c | 595 ++++++ drivers/media/pci/intel/ipu6/ipu6-isys-phy.h | 159 ++ drivers/media/pci/intel/ipu6/ipu6-isys.c | 174 ++ .../media/pci/intel/ipu6/ipu6-l-scheduler.c | 615 ++++++ .../pci/intel/ipu6/ipu6-platform-resources.h | 196 ++ drivers/media/pci/intel/ipu6/ipu6-ppg.c | 561 ++++++ drivers/media/pci/intel/ipu6/ipu6-ppg.h | 38 + drivers/media/pci/intel/ipu6/ipu6-psys-gpc.c | 212 ++ drivers/media/pci/intel/ipu6/ipu6-psys.c | 1056 ++++++++++ drivers/media/pci/intel/ipu6/ipu6.c | 333 ++++ .../pci/intel/ipu6/ipu6ep-fw-resources.c | 393 ++++ .../intel/ipu6/ipu6ep-platform-resources.h | 42 + .../pci/intel/ipu6/ipu6se-fw-resources.c | 194 ++ .../intel/ipu6/ipu6se-platform-resources.h | 103 + drivers/usb/Kconfig | 2 + drivers/usb/Makefile | 2 + drivers/usb/intel_ulpss/Kconfig | 11 + drivers/usb/intel_ulpss/Makefile | 3 + drivers/usb/intel_ulpss/diag_stub.c | 116 ++ drivers/usb/intel_ulpss/diag_stub.h | 19 + drivers/usb/intel_ulpss/gpio_stub.c | 459 +++++ drivers/usb/intel_ulpss/gpio_stub.h | 13 + drivers/usb/intel_ulpss/i2c_stub.c | 456 +++++ drivers/usb/intel_ulpss/i2c_stub.h | 21 + drivers/usb/intel_ulpss/mng_stub.c | 244 +++ drivers/usb/intel_ulpss/mng_stub.h | 18 + .../usb/intel_ulpss/protocol_intel_ulpss.h | 173 ++ drivers/usb/intel_ulpss/ulpss_bridge.c | 529 +++++ drivers/usb/intel_ulpss/ulpss_bridge.h | 77 + drivers/usb/intel_ulpss/usb_stub.c | 285 +++ drivers/usb/intel_ulpss/usb_stub.h | 49 + include/media/ipu-isys.h | 44 + include/uapi/linux/ipu-isys.h | 15 + include/uapi/linux/ipu-psys.h | 121 ++ 95 files changed, 31032 insertions(+), 2 deletions(-) create mode 100644 drivers/media/i2c/hm11b1.c create mode 100644 drivers/media/i2c/ov01a1s.c create mode 100644 drivers/media/i2c/power_ctrl_logic.c create mode 100644 drivers/media/i2c/power_ctrl_logic.h create mode 100644 drivers/media/pci/intel/Kconfig create mode 100644 drivers/media/pci/intel/ipu-bus.c create mode 100644 drivers/media/pci/intel/ipu-bus.h create mode 100644 drivers/media/pci/intel/ipu-buttress.c create mode 100644 drivers/media/pci/intel/ipu-buttress.h create mode 100644 drivers/media/pci/intel/ipu-cpd.c create mode 100644 drivers/media/pci/intel/ipu-cpd.h create mode 100644 drivers/media/pci/intel/ipu-dma.c create mode 100644 drivers/media/pci/intel/ipu-dma.h create mode 100644 drivers/media/pci/intel/ipu-fw-com.c create mode 100644 drivers/media/pci/intel/ipu-fw-com.h create mode 100644 drivers/media/pci/intel/ipu-fw-isys.c create mode 100644 drivers/media/pci/intel/ipu-fw-isys.h create mode 100644 drivers/media/pci/intel/ipu-fw-psys.c create mode 100644 drivers/media/pci/intel/ipu-fw-psys.h create mode 100644 drivers/media/pci/intel/ipu-isys-csi2-be-soc.c create mode 100644 drivers/media/pci/intel/ipu-isys-csi2-be.h create mode 100644 drivers/media/pci/intel/ipu-isys-csi2.c create mode 100644 drivers/media/pci/intel/ipu-isys-csi2.h create mode 100644 drivers/media/pci/intel/ipu-isys-media.h create mode 100644 drivers/media/pci/intel/ipu-isys-queue.c create mode 100644 drivers/media/pci/intel/ipu-isys-queue.h create mode 100644 drivers/media/pci/intel/ipu-isys-subdev.c create mode 100644 drivers/media/pci/intel/ipu-isys-subdev.h create mode 100644 drivers/media/pci/intel/ipu-isys-video.c create mode 100644 drivers/media/pci/intel/ipu-isys-video.h create mode 100644 drivers/media/pci/intel/ipu-isys.c create mode 100644 drivers/media/pci/intel/ipu-isys.h create mode 100644 drivers/media/pci/intel/ipu-mmu.c create mode 100644 drivers/media/pci/intel/ipu-mmu.h create mode 100644 drivers/media/pci/intel/ipu-pdata.h create mode 100644 drivers/media/pci/intel/ipu-psys-compat32.c create mode 100644 drivers/media/pci/intel/ipu-psys.c create mode 100644 drivers/media/pci/intel/ipu-psys.h create mode 100644 drivers/media/pci/intel/ipu-trace.c create mode 100644 drivers/media/pci/intel/ipu-trace.h create mode 100644 drivers/media/pci/intel/ipu.c create mode 100644 drivers/media/pci/intel/ipu.h create mode 100644 drivers/media/pci/intel/ipu6/Makefile create mode 100644 drivers/media/pci/intel/ipu6/ipu-fw-resources.c create mode 100644 drivers/media/pci/intel/ipu6/ipu-platform-buttress-regs.h create mode 100644 drivers/media/pci/intel/ipu6/ipu-platform-isys-csi2-reg.h create mode 100644 drivers/media/pci/intel/ipu6/ipu-platform-isys.h create mode 100644 drivers/media/pci/intel/ipu6/ipu-platform-psys.h create mode 100644 drivers/media/pci/intel/ipu6/ipu-platform-regs.h create mode 100644 drivers/media/pci/intel/ipu6/ipu-platform-resources.h create mode 100644 drivers/media/pci/intel/ipu6/ipu-platform.h create mode 100644 drivers/media/pci/intel/ipu6/ipu-resources.c create mode 100644 drivers/media/pci/intel/ipu6/ipu6-fw-resources.c create mode 100644 drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c create mode 100644 drivers/media/pci/intel/ipu6/ipu6-isys-csi2.h create mode 100644 drivers/media/pci/intel/ipu6/ipu6-isys-gpc.c create mode 100644 drivers/media/pci/intel/ipu6/ipu6-isys-phy.c create mode 100644 drivers/media/pci/intel/ipu6/ipu6-isys-phy.h create mode 100644 drivers/media/pci/intel/ipu6/ipu6-isys.c create mode 100644 drivers/media/pci/intel/ipu6/ipu6-l-scheduler.c create mode 100644 drivers/media/pci/intel/ipu6/ipu6-platform-resources.h create mode 100644 drivers/media/pci/intel/ipu6/ipu6-ppg.c create mode 100644 drivers/media/pci/intel/ipu6/ipu6-ppg.h create mode 100644 drivers/media/pci/intel/ipu6/ipu6-psys-gpc.c create mode 100644 drivers/media/pci/intel/ipu6/ipu6-psys.c create mode 100644 drivers/media/pci/intel/ipu6/ipu6.c create mode 100644 drivers/media/pci/intel/ipu6/ipu6ep-fw-resources.c create mode 100644 drivers/media/pci/intel/ipu6/ipu6ep-platform-resources.h create mode 100644 drivers/media/pci/intel/ipu6/ipu6se-fw-resources.c create mode 100644 drivers/media/pci/intel/ipu6/ipu6se-platform-resources.h create mode 100644 drivers/usb/intel_ulpss/Kconfig create mode 100644 drivers/usb/intel_ulpss/Makefile create mode 100644 drivers/usb/intel_ulpss/diag_stub.c create mode 100644 drivers/usb/intel_ulpss/diag_stub.h create mode 100644 drivers/usb/intel_ulpss/gpio_stub.c create mode 100644 drivers/usb/intel_ulpss/gpio_stub.h create mode 100644 drivers/usb/intel_ulpss/i2c_stub.c create mode 100644 drivers/usb/intel_ulpss/i2c_stub.h create mode 100644 drivers/usb/intel_ulpss/mng_stub.c create mode 100644 drivers/usb/intel_ulpss/mng_stub.h create mode 100644 drivers/usb/intel_ulpss/protocol_intel_ulpss.h create mode 100644 drivers/usb/intel_ulpss/ulpss_bridge.c create mode 100644 drivers/usb/intel_ulpss/ulpss_bridge.h create mode 100644 drivers/usb/intel_ulpss/usb_stub.c create mode 100644 drivers/usb/intel_ulpss/usb_stub.h create mode 100644 include/media/ipu-isys.h create mode 100644 include/uapi/linux/ipu-isys.h create mode 100644 include/uapi/linux/ipu-psys.h