Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 4 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -193,8 +193,8 @@ Build and install these software dependencies in your target system:
| IPU Version | ipu-camera-bins | ipu-camera-hal | icamerasrc |
|-------------------|------------------------------------------|------------------------------------------|------------------------------------------|
| IPU6EP, IPU6EPMTL | d9421fef539f24fc80c27002d5da753e193b0670 | 5aa9a3bd3d5582667915d93b0128a02953adbbbc | 7517af78f49a18dde6de86042055aa14ebe6d184 |
| IPU75XA | cead7320d84ee9ade4f60d74e935b16b5a760945 | ef30767553685b83034e42325992a2442c5fcb2c | 7517af78f49a18dde6de86042055aa14ebe6d184 |
| IPU8 | adf55525ab9d370828723b1ff8bee76ed7a492e8 | fd1efb6f2ef25fd24775a303cc71af6139d797eb | 7517af78f49a18dde6de86042055aa14ebe6d184 |
| IPU75XA | adf55525ab9d370828723b1ff8bee76ed7a492e8 | a17d17718e8df9e74940fac32beda016836ef43b | 7517af78f49a18dde6de86042055aa14ebe6d184 |
| IPU8 | adf55525ab9d370828723b1ff8bee76ed7a492e8 | a17d17718e8df9e74940fac32beda016836ef43b | 7517af78f49a18dde6de86042055aa14ebe6d184 |

</details>

Expand Down Expand Up @@ -226,26 +226,6 @@ Build and install these software dependencies in your target system:
git checkout main
git submodule update --init --recursive

<details>
<summary> Workaround for IPU7/IPU8 AR0234 RAW sensor </summary>

> **Note:** Workaround required for IPU7/IPU8 **RAW sensor** due to tuning dependency.

By default, `ipu7-drivers` submodule tracks the tip of its `main` branch.
For IPU75XA,

cd ipu7-drivers
git checkout 44bbc2de71fe5e7a5a7124d4c5e5900e70e13736
cd ..

For IPU8,

cd ipu7-drivers
git checkout bed9b71d5be56d0e24c771c7a6ec83fd0a9db433
cd ..

</details>

**Build and install** modules using DKMS

sudo dkms remove ipu-camera-sensor/0.1
Expand All @@ -271,7 +251,7 @@ For IPU8,
1. Power cycle target system with sensors connected.
2. Import sensor profile into BIOS, under section `BIOS Configuration Table` in respective userspace.md.
- E.g. ISX031 GMSL using [userspace-gmsl.md](doc/isx031/userspace-gmsl.md#acpi-setup---bios-configuration)
- E.g. AR0234 MIPI using [userspace-mipi.md](doc/ar0234/userspace-mipi.md#bios-configuration-table)
- E.g. AR0234 MIPI using [userspace-mipi.md](doc/ar0234/userspace-mipi.md#acpi-setup---bios-configuration)

<p align="right">(<a href="#setup-procedure">back to Setup Procedure</a>)</p>

Expand Down Expand Up @@ -300,7 +280,7 @@ ASL Configuration is added since release/26Q2.1.

1. Reference stream verification for different sensor setup can be found in [doc/{sensor}](doc/) and respective userspace.md files.
- E.g. ISX031 GMSL using [userspace-gmsl.md](doc/isx031/userspace-gmsl.md#stream-verification)
- E.g. AR0234 MIPI using [userspace-mipi.md](doc/ar0234/userspace-mipi.md#sample-userspace-command)
- E.g. AR0234 MIPI using [userspace-mipi.md](doc/ar0234/userspace-mipi.md#stream-verification)

<p align="right">(<a href="#setup-procedure">back to Setup Procedure</a>)</p>

Expand Down
301 changes: 301 additions & 0 deletions acpi/ipu7/max96724_mixed_d3_ar0234_isx031.asl
Original file line number Diff line number Diff line change
@@ -0,0 +1,301 @@
/*
* SPDX-License-Identifier: GPL-2.0
* Copyright (c) 2026 Intel Corporation.
*
* SSDT overlay: Mixed AR0234 + ISX031 GMSL camera configuration on PTL platform.
* Two MAX96724 deserializers (DES0, DES1) with CPHY connection to PTL platform.
* - DES0 carries two D3 AR0234 cameras and two D3 ISX031 cameras on Links 0..3
* - DES1 carries two D3 ISX031 cameras and two D3 AR0234 cameras on Links 0..3
* All cameras are fronted by MAX9295A serializers.
*
* DES-level defines (set per DESx, undef'd at the end of each Device):
* DES_PHY_TYPE - DES PHY type (0 for CPHY, 1 for DPHY)
* DES_I2C_ADDR - DES I2C slave address (e.g. 0x0027 for MAX96724)
* DES_LANES - Number of MIPI data lanes (e.g. 2, 4)
* DES_INTERNAL_PHY - DES internal PHY (PHY0 = 4, PHY1 = 5, PHY2 = 6, PHY3 = 7)
* DES_TO_MIPI_PORT - DES connected to IPU0 MIPI port (e.g. 0/1/2/3)
* DES_I2C_BUS - DES I2C bus path (e.g. "\\_SB.PC00.I2C1")
* DES_PATH - DES ACPI path string (e.g. "\\_SB.PC00.DES0")
* DES_REF - DES ACPI namespace reference (e.g. \_SB.PC00.DES0)
*
* Channel-level defines (set per CHxx):
* DESCH_LINK_NUM - Channel/link number (0..3) - used for _ADR, reg, SER remote port
* DESCH_CH - Channel device name (e.g. CH00)
* DESCH_SER - Serializer device name (e.g. SER0)
* DESCH_CAM - Camera device name (e.g. CAM0)
* DESCH_SER_I2C - SER I2C slave address (e.g. 0x40 for MAX9295A)
* DESCH_CH_PATH - CHxx ACPI path string (e.g. "\\_SB.PC00.DES0.CH00")
* DESCH_SER_PATH - SERx ACPI path string (e.g. "\\_SB.PC00.DES0.CH00.SER0")
* DESCH_SER_REF - SERx ACPI namespace reference (e.g. \_SB.PC00.DES0.CH00.SER0)
* DESCH_SER_GPIOREF - SERx GPIO controller reference (e.g. ^^SER0)
* CAM_ALIAS - Camera alias I2C address used in i2c-alias-pool of the SER
* CAM_LANES - Number of MIPI data lanes for the camera (e.g. 2, 4)
*/

DefinitionBlock ("", "SSDT", 2, "", "IMG_IPU", 0x20260904)
{
External (_SB.PC00, DeviceObj) // Root device

Include ("_ipu.asl")

Scope (\_SB.PC00)
{
Device (DES0)
{
/*
* For detailed explanation of each define,
* please refer to the comment block at the top of this file.
*/

// DES-level defines for DES0.
#define DES_PHY_TYPE 0
#define DES_I2C_ADDR 0x0027
#define DES_LANES 2
#define DES_INTERNAL_PHY 6
#define DES_TO_MIPI_PORT 0
#define DES_I2C_BUS "\\_SB.PC00.I2C1"
#define DES_PATH "\\_SB.PC00.DES0"
#define DES_REF \_SB.PC00.DES0
#include "_des_common_max96724.asl"

// Channel-level defines for Channel 0 (D3 AR0234)
#define DESCH_LINK_NUM 0
#define DESCH_CH CH00
#define DESCH_SER SER0
#define DESCH_CAM CAM0
#define DESCH_SER_I2C 0x40
#define DESCH_CH_PATH "\\_SB.PC00.DES0.CH00"
#define DESCH_SER_PATH "\\_SB.PC00.DES0.CH00.SER0"
#define DESCH_SER_REF \_SB.PC00.DES0.CH00.SER0
#define DESCH_SER_GPIOREF ^^SER0
#define CAM_ALIAS 0x54
#define CAM_LANES 2
#include "_des_ch_common_ar0234.asl"
#undef DESCH_LINK_NUM
#undef DESCH_CH
#undef DESCH_SER
#undef DESCH_CAM
#undef DESCH_SER_I2C
#undef DESCH_CH_PATH
#undef DESCH_SER_PATH
#undef DESCH_SER_REF
#undef DESCH_SER_GPIOREF
#undef CAM_ALIAS
#undef CAM_LANES

// Channel-level defines for Channel 1 (D3 AR0234)
#define DESCH_LINK_NUM 1
#define DESCH_CH CH01
#define DESCH_SER SER1
#define DESCH_CAM CAM1
#define DESCH_SER_I2C 0x40
#define DESCH_CH_PATH "\\_SB.PC00.DES0.CH01"
#define DESCH_SER_PATH "\\_SB.PC00.DES0.CH01.SER1"
#define DESCH_SER_REF \_SB.PC00.DES0.CH01.SER1
#define DESCH_SER_GPIOREF ^^SER1
#define CAM_ALIAS 0x55
#define CAM_LANES 2
#include "_des_ch_common_ar0234.asl"
#undef DESCH_LINK_NUM
#undef DESCH_CH
#undef DESCH_SER
#undef DESCH_CAM
#undef DESCH_SER_I2C
#undef DESCH_CH_PATH
#undef DESCH_SER_PATH
#undef DESCH_SER_REF
#undef DESCH_SER_GPIOREF
#undef CAM_ALIAS
#undef CAM_LANES

// Channel-level defines for Channel 2 (D3 ISX031)
#define DESCH_LINK_NUM 2
#define DESCH_CH CH02
#define DESCH_SER SER2
#define DESCH_CAM CAM2
#define DESCH_SER_I2C 0x40
#define DESCH_CH_PATH "\\_SB.PC00.DES0.CH02"
#define DESCH_SER_PATH "\\_SB.PC00.DES0.CH02.SER2"
#define DESCH_SER_REF \_SB.PC00.DES0.CH02.SER2
#define DESCH_SER_GPIOREF ^^SER2
#define CAM_ALIAS 0x56
#define CAM_LANES 4
#include "_des_ch_common_isx031.asl"
#undef DESCH_LINK_NUM
#undef DESCH_CH
#undef DESCH_SER
#undef DESCH_CAM
#undef DESCH_SER_I2C
#undef DESCH_CH_PATH
#undef DESCH_SER_PATH
#undef DESCH_SER_REF
#undef DESCH_SER_GPIOREF
#undef CAM_ALIAS
#undef CAM_LANES

// Channel-level defines for Channel 3 (D3 ISX031)
#define DESCH_LINK_NUM 3
#define DESCH_CH CH03
#define DESCH_SER SER3
#define DESCH_CAM CAM3
#define DESCH_SER_I2C 0x40
#define DESCH_CH_PATH "\\_SB.PC00.DES0.CH03"
#define DESCH_SER_PATH "\\_SB.PC00.DES0.CH03.SER3"
#define DESCH_SER_REF \_SB.PC00.DES0.CH03.SER3
#define DESCH_SER_GPIOREF ^^SER3
#define CAM_ALIAS 0x57
#define CAM_LANES 4
#include "_des_ch_common_isx031.asl"
#undef DESCH_LINK_NUM
#undef DESCH_CH
#undef DESCH_SER
#undef DESCH_CAM
#undef DESCH_SER_I2C
#undef DESCH_CH_PATH
#undef DESCH_SER_PATH
#undef DESCH_SER_REF
#undef DESCH_SER_GPIOREF
#undef CAM_ALIAS
#undef CAM_LANES

// Clean up DES0-level defines
#undef DES_PHY_TYPE
#undef DES_I2C_ADDR
#undef DES_LANES
#undef DES_INTERNAL_PHY
#undef DES_TO_MIPI_PORT
#undef DES_I2C_BUS
#undef DES_PATH
#undef DES_REF
}

Device (DES1)
{
/*
* For detailed explanation of each define,
* please refer to the comment block at the top of this file.
*/

// DES-level defines for DES1.
#define DES_PHY_TYPE 0
#define DES_I2C_ADDR 0x0027
#define DES_LANES 2
#define DES_INTERNAL_PHY 4
#define DES_TO_MIPI_PORT 2
#define DES_I2C_BUS "\\_SB.PC00.I2C2"
#define DES_PATH "\\_SB.PC00.DES1"
#define DES_REF \_SB.PC00.DES1
#include "_des_common_max96724.asl"

// Channel-level defines for Channel 0 (D3 ISX031)
#define DESCH_LINK_NUM 0
#define DESCH_CH CH00
#define DESCH_SER SER0
#define DESCH_CAM CAM0
#define DESCH_SER_I2C 0x40
#define DESCH_CH_PATH "\\_SB.PC00.DES1.CH00"
#define DESCH_SER_PATH "\\_SB.PC00.DES1.CH00.SER0"
#define DESCH_SER_REF \_SB.PC00.DES1.CH00.SER0
#define DESCH_SER_GPIOREF ^^SER0
#define CAM_ALIAS 0x54
#define CAM_LANES 4
#include "_des_ch_common_isx031.asl"
#undef DESCH_LINK_NUM
#undef DESCH_CH
#undef DESCH_SER
#undef DESCH_CAM
#undef DESCH_SER_I2C
#undef DESCH_CH_PATH
#undef DESCH_SER_PATH
#undef DESCH_SER_REF
#undef DESCH_SER_GPIOREF
#undef CAM_ALIAS
#undef CAM_LANES

// Channel-level defines for Channel 1 (D3 ISX031)
#define DESCH_LINK_NUM 1
#define DESCH_CH CH01
#define DESCH_SER SER1
#define DESCH_CAM CAM1
#define DESCH_SER_I2C 0x40
#define DESCH_CH_PATH "\\_SB.PC00.DES1.CH01"
#define DESCH_SER_PATH "\\_SB.PC00.DES1.CH01.SER1"
#define DESCH_SER_REF \_SB.PC00.DES1.CH01.SER1
#define DESCH_SER_GPIOREF ^^SER1
#define CAM_ALIAS 0x55
#define CAM_LANES 4
#include "_des_ch_common_isx031.asl"
#undef DESCH_LINK_NUM
#undef DESCH_CH
#undef DESCH_SER
#undef DESCH_CAM
#undef DESCH_SER_I2C
#undef DESCH_CH_PATH
#undef DESCH_SER_PATH
#undef DESCH_SER_REF
#undef DESCH_SER_GPIOREF
#undef CAM_ALIAS
#undef CAM_LANES

// Channel-level defines for Channel 2 (D3 AR0234)
#define DESCH_LINK_NUM 2
#define DESCH_CH CH02
#define DESCH_SER SER2
#define DESCH_CAM CAM2
#define DESCH_SER_I2C 0x40
#define DESCH_CH_PATH "\\_SB.PC00.DES1.CH02"
#define DESCH_SER_PATH "\\_SB.PC00.DES1.CH02.SER2"
#define DESCH_SER_REF \_SB.PC00.DES1.CH02.SER2
#define DESCH_SER_GPIOREF ^^SER2
#define CAM_ALIAS 0x56
#define CAM_LANES 2
#include "_des_ch_common_ar0234.asl"
#undef DESCH_LINK_NUM
#undef DESCH_CH
#undef DESCH_SER
#undef DESCH_CAM
#undef DESCH_SER_I2C
#undef DESCH_CH_PATH
#undef DESCH_SER_PATH
#undef DESCH_SER_REF
#undef DESCH_SER_GPIOREF
#undef CAM_ALIAS
#undef CAM_LANES

// Channel-level defines for Channel 3 (D3 AR0234)
#define DESCH_LINK_NUM 3
#define DESCH_CH CH03
#define DESCH_SER SER3
#define DESCH_CAM CAM3
#define DESCH_SER_I2C 0x40
#define DESCH_CH_PATH "\\_SB.PC00.DES1.CH03"
#define DESCH_SER_PATH "\\_SB.PC00.DES1.CH03.SER3"
#define DESCH_SER_REF \_SB.PC00.DES1.CH03.SER3
#define DESCH_SER_GPIOREF ^^SER3
#define CAM_ALIAS 0x57
#define CAM_LANES 2
#include "_des_ch_common_ar0234.asl"
#undef DESCH_LINK_NUM
#undef DESCH_CH
#undef DESCH_SER
#undef DESCH_CAM
#undef DESCH_SER_I2C
#undef DESCH_CH_PATH
#undef DESCH_SER_PATH
#undef DESCH_SER_REF
#undef DESCH_SER_GPIOREF
#undef CAM_ALIAS
#undef CAM_LANES

// Clean up DES1-level defines
#undef DES_PHY_TYPE
#undef DES_I2C_ADDR
#undef DES_LANES
#undef DES_INTERNAL_PHY
#undef DES_TO_MIPI_PORT
#undef DES_I2C_BUS
#undef DES_PATH
#undef DES_REF
}
}
}
Loading