From ff0733084f705bda75bc8800fbf0b89974d8fdc1 Mon Sep 17 00:00:00 2001 From: "Sodhi, Vunny" Date: Fri, 4 Sep 2026 09:25:27 +0800 Subject: [PATCH 01/12] docs(d4xx): update userspace gmsl guide Update the PR link from 15007 to 15636 Signed-off-by: Sodhi, Vunny --- doc/d4xx/userspace-gmsl.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/d4xx/userspace-gmsl.md b/doc/d4xx/userspace-gmsl.md index 669a3f8e..65dd0446 100644 --- a/doc/d4xx/userspace-gmsl.md +++ b/doc/d4xx/userspace-gmsl.md @@ -655,7 +655,7 @@ Hence, pipeline will be configured as UYVY8_1X16 for Depth stream, but Video Nod >**Note:** This step is only necessary when streaming with the RealSense SDK. If you are using v4l2src or v4l2-ctl, you can skip it and use the video device directly. -Running the script below creates symlinks for the video devices used by the RealSense SDK. The symlink must be used with librealsense pull request [#15007](https://github.com/IntelRealSense/librealsense/pull/15007). +Running the script below creates symlinks for the video devices used by the RealSense SDK. The symlink must be used with librealsense pull request [#15636](https://github.com/IntelRealSense/librealsense/pull/15636). sudo ../../script/d4xx/upstream-rs-enum.sh @@ -672,7 +672,7 @@ For example, if the Depth and RGB streams from link 0 on DES0 are enabled, the D ##### Sample Subdev Symlink -The subdev symlink uses the syntax video-rs-{stream-type}-sd-{index}. The stream type and index follow the same rule as the capture-node symlink, except that the target is the subdev node instead of the video capture node. The subdev node is used to configure the sensor, and it is required for librealsense pull request [#15007](https://github.com/IntelRealSense/librealsense/pull/15007). +The subdev symlink uses the syntax video-rs-{stream-type}-sd-{index}. The stream type and index follow the same rule as the capture-node symlink, except that the target is the subdev node instead of the video capture node. The subdev node is used to configure the sensor, and it is required for librealsense pull request [#15636](https://github.com/IntelRealSense/librealsense/pull/15636). | Sample Entity | Sample symlink | | --- | --- | @@ -688,8 +688,8 @@ There are SDK changes to support Intel IPU that are currently under review. git clone https://github.com/realsenseai/librealsense.git cd librealsense - git fetch origin pull/15007/head:pr-15007 - git checkout pr-15007 + git fetch origin pull/15636/head:pr-15636 + git checkout pr-15636 mkdir build && cd build cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local make -j2 From 5515822c301f80879f7cb395e8ace4fc28f9586f Mon Sep 17 00:00:00 2001 From: "Goh, Wei Khang1" Date: Thu, 3 Sep 2026 20:56:38 +0800 Subject: [PATCH 02/12] config: acpi: ipu75xa: Add sensor entries for Link E - Link H The IPU75XA GMSL ACPI config only defined the "acpi-1" .. "acpi-4" entries for the first deserializer (Link A - Link D). Add the matching "acpi-5" .. "acpi-8" entries for the second deserializer's four channels (Link E - Link H), each with its acpiName-based pixel array node and supported stream configurations, mirroring the existing Link A - Link D entries. Also drop a stray trailing comma after the last MediaCtlConfig array entry for Link A - Link D, which is invalid JSON syntax. Signed-off-by: Khai Wen, Ng Signed-off-by: Goh, Wei Khang1 --- config/acpi/ipu75xa/libcamhal_configs.json | 2 - config/acpi/ipu75xa/sensors/acpi.json | 314 ++++++++++++++++++++- 2 files changed, 307 insertions(+), 9 deletions(-) diff --git a/config/acpi/ipu75xa/libcamhal_configs.json b/config/acpi/ipu75xa/libcamhal_configs.json index 911d299f..d84c6c94 100644 --- a/config/acpi/ipu75xa/libcamhal_configs.json +++ b/config/acpi/ipu75xa/libcamhal_configs.json @@ -18,8 +18,6 @@ "Common" : { "version": 1.0, "platform": "IPU7", - // The value format of availableSensors is "sensor name"-wf/uf-"CSI port ID". - // wf is world facing, and uf is user facing. "availableSensors": ["acpi"], "videoStreamNum" : 2 } diff --git a/config/acpi/ipu75xa/sensors/acpi.json b/config/acpi/ipu75xa/sensors/acpi.json index b90ac76b..b44c8ee8 100644 --- a/config/acpi/ipu75xa/sensors/acpi.json +++ b/config/acpi/ipu75xa/sensors/acpi.json @@ -19,7 +19,7 @@ "Sensor": [ { "name": "acpi-1", - "description": "acpi GMSL sensor on Link A", + "description": "acpi GMSL sensor on DES0 Link A", "MediaCtlConfig": [ { "id": 0 , @@ -71,7 +71,7 @@ "acpiName": "\\_SB_.PC00.DES0.CH00.SER0.CAM0", "videoNodeType": "VIDEO_PIXEL_ARRAY" } ] - }, + } ], "StaticMetadata": { "supportedStreamConfig": [ @@ -94,7 +94,7 @@ }, { "name": "acpi-2", - "description": "acpi GMSL sensor on Link B", + "description": "acpi GMSL sensor on DES0 Link B", "MediaCtlConfig": [ { "id": 0 , @@ -146,7 +146,7 @@ "acpiName": "\\_SB_.PC00.DES0.CH01.SER1.CAM1", "videoNodeType": "VIDEO_PIXEL_ARRAY" } ] - }, + } ], "StaticMetadata": { "supportedStreamConfig": [ @@ -169,7 +169,7 @@ }, { "name": "acpi-3", - "description": "acpi GMSL sensor on Link C", + "description": "acpi GMSL sensor on DES0 Link C", "MediaCtlConfig": [ { "id": 0 , @@ -221,7 +221,7 @@ "acpiName": "\\_SB_.PC00.DES0.CH02.SER2.CAM2", "videoNodeType": "VIDEO_PIXEL_ARRAY" } ] - }, + } ], "StaticMetadata": { "supportedStreamConfig": [ @@ -244,7 +244,7 @@ }, { "name": "acpi-4", - "description": "acpi GMSL sensor on Link D", + "description": "acpi GMSL sensor on DES0 Link D", "MediaCtlConfig": [ { "id": 0 , @@ -296,7 +296,307 @@ "acpiName": "\\_SB_.PC00.DES0.CH03.SER3.CAM3", "videoNodeType": "VIDEO_PIXEL_ARRAY" } ] + } + ], + "StaticMetadata": { + "supportedStreamConfig": [ + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1536], "field": 0, "mcId": 0 + }, + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1080], "field": 0, "mcId": 1 + }, + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1280, 720], "field": 0, "mcId": 2 + } + ] + }, + + "supportedISysSizes": [[1280, 720], [1920, 1080], [1920, 1536]], + "supportedISysFormat": ["V4L2_PIX_FMT_UYVY"], + "enableAIQ": false, + "usePSysProcessor": false + }, + { + "name": "acpi-5", + "description": "acpi GMSL sensor on DES1 Link E", + "MediaCtlConfig": [ + { + "id": 0 , + "configMode": "AUTO", + "output": [1920, 1536], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 16", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES1.CH00.SER0.CAM0", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + }, + { + "id": 1 , + "configMode": "AUTO", + "output": [1920, 1080], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 16", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES1.CH00.SER0.CAM0", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + }, + { + "id": 2 , + "configMode": "AUTO", + "output": [1280, 720], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 16", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES1.CH00.SER0.CAM0", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + } + ], + "StaticMetadata": { + "supportedStreamConfig": [ + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1536], "field": 0, "mcId": 0 + }, + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1080], "field": 0, "mcId": 1 + }, + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1280, 720], "field": 0, "mcId": 2 + } + ] + }, + + "supportedISysSizes": [[1280, 720], [1920, 1080], [1920, 1536]], + "supportedISysFormat": ["V4L2_PIX_FMT_UYVY"], + "enableAIQ": false, + "usePSysProcessor": false + }, + { + "name": "acpi-6", + "description": "acpi GMSL sensor on DES1 Link F", + "MediaCtlConfig": [ + { + "id": 0 , + "configMode": "AUTO", + "output": [1920, 1536], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 17", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES1.CH01.SER1.CAM1", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + }, + { + "id": 1 , + "configMode": "AUTO", + "output": [1920, 1080], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 17", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES1.CH01.SER1.CAM1", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + }, + { + "id": 2 , + "configMode": "AUTO", + "output": [1280, 720], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 17", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES1.CH01.SER1.CAM1", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + } + ], + "StaticMetadata": { + "supportedStreamConfig": [ + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1536], "field": 0, "mcId": 0 + }, + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1080], "field": 0, "mcId": 1 + }, + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1280, 720], "field": 0, "mcId": 2 + } + ] + }, + + "supportedISysSizes": [[1280, 720], [1920, 1080], [1920, 1536]], + "supportedISysFormat": ["V4L2_PIX_FMT_UYVY"], + "enableAIQ": false, + "usePSysProcessor": false + }, + { + "name": "acpi-7", + "description": "acpi GMSL sensor on DES1 Link G", + "MediaCtlConfig": [ + { + "id": 0 , + "configMode": "AUTO", + "output": [1920, 1536], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 18", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES1.CH02.SER2.CAM2", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + }, + { + "id": 1 , + "configMode": "AUTO", + "output": [1920, 1080], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 18", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES1.CH02.SER2.CAM2", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] }, + { + "id": 2 , + "configMode": "AUTO", + "output": [1280, 720], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 18", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES1.CH02.SER2.CAM2", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + } + ], + "StaticMetadata": { + "supportedStreamConfig": [ + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1536], "field": 0, "mcId": 0 + }, + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1080], "field": 0, "mcId": 1 + }, + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1280, 720], "field": 0, "mcId": 2 + } + ] + }, + + "supportedISysSizes": [[1280, 720], [1920, 1080], [1920, 1536]], + "supportedISysFormat": ["V4L2_PIX_FMT_UYVY"], + "enableAIQ": false, + "usePSysProcessor": false + }, + { + "name": "acpi-8", + "description": "acpi GMSL sensor on DES1 Link H", + "MediaCtlConfig": [ + { + "id": 0 , + "configMode": "AUTO", + "output": [1920, 1536], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 19", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES1.CH03.SER3.CAM3", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + }, + { + "id": 1 , + "configMode": "AUTO", + "output": [1920, 1080], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 19", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES1.CH03.SER3.CAM3", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + }, + { + "id": 2 , + "configMode": "AUTO", + "output": [1280, 720], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 19", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES1.CH03.SER3.CAM3", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + } ], "StaticMetadata": { "supportedStreamConfig": [ From 1a2850b9155b86928319adac8645de250cae4b23 Mon Sep 17 00:00:00 2001 From: "Goh, Wei Khang1" Date: Fri, 4 Sep 2026 21:24:27 +0800 Subject: [PATCH 03/12] config: acpi: ipu8: Add sensor entries for Link A - Link H Add IPU8 GMSL ACPI config that defined the "acpi-1" .. "acpi-8" entries for the first deserializer DES0 (Link A - Link D) and the second deserializer DES1 (Link E - Link H). Signed-off-by: Khai Wen, Ng Signed-off-by: Goh, Wei Khang1 --- config/acpi/ipu8/libcamhal_configs.json | 24 + config/acpi/ipu8/sensors/acpi.json | 622 ++++++++++++++++++++++++ 2 files changed, 646 insertions(+) create mode 100644 config/acpi/ipu8/libcamhal_configs.json create mode 100644 config/acpi/ipu8/sensors/acpi.json diff --git a/config/acpi/ipu8/libcamhal_configs.json b/config/acpi/ipu8/libcamhal_configs.json new file mode 100644 index 00000000..3b62485c --- /dev/null +++ b/config/acpi/ipu8/libcamhal_configs.json @@ -0,0 +1,24 @@ +// +// Copyright (C) 2026 Intel Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +{ + "Common" : { + "version": 1.0, + "platform": "IPU7", + "availableSensors": ["acpi"], + "videoStreamNum" : 2 + } +} diff --git a/config/acpi/ipu8/sensors/acpi.json b/config/acpi/ipu8/sensors/acpi.json new file mode 100644 index 00000000..3e0698fa --- /dev/null +++ b/config/acpi/ipu8/sensors/acpi.json @@ -0,0 +1,622 @@ +// +// Copyright (C) 2026 Intel Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +{ + "CameraSettings": { + "Sensor": [ + { + "name": "acpi-1", + "description": "acpi GMSL sensor on DES0 Link A", + "MediaCtlConfig": [ + { + "id": 0 , + "configMode": "AUTO", + "output": [1920, 1536], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 0", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES0.CH00.SER0.CAM0", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + }, + { + "id": 1 , + "configMode": "AUTO", + "output": [1920, 1080], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 0", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES0.CH00.SER0.CAM0", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + }, + { + "id": 2 , + "configMode": "AUTO", + "output": [1280, 720], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 0", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES0.CH00.SER0.CAM0", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + } + ], + "StaticMetadata": { + "supportedStreamConfig": [ + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1536], "field": 0, "mcId": 0 + }, + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1080], "field": 0, "mcId": 1 + }, + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1280, 720], "field": 0, "mcId": 2 + } + ] + }, + + "supportedISysSizes": [[1280, 720], [1920, 1080], [1920, 1536]], + "supportedISysFormat": ["V4L2_PIX_FMT_UYVY"], + "enableAIQ": false, + "usePSysProcessor": false + }, + { + "name": "acpi-2", + "description": "acpi GMSL sensor on DES0 Link B", + "MediaCtlConfig": [ + { + "id": 0 , + "configMode": "AUTO", + "output": [1920, 1536], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 1", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES0.CH01.SER1.CAM1", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + }, + { + "id": 1 , + "configMode": "AUTO", + "output": [1920, 1080], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 1", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES0.CH01.SER1.CAM1", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + }, + { + "id": 2 , + "configMode": "AUTO", + "output": [1280, 720], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 1", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES0.CH01.SER1.CAM1", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + } + ], + "StaticMetadata": { + "supportedStreamConfig": [ + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1536], "field": 0, "mcId": 0 + }, + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1080], "field": 0, "mcId": 1 + }, + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1280, 720], "field": 0, "mcId": 2 + } + ] + }, + + "supportedISysSizes": [[1280, 720], [1920, 1080], [1920, 1536]], + "supportedISysFormat": ["V4L2_PIX_FMT_UYVY"], + "enableAIQ": false, + "usePSysProcessor": false + }, + { + "name": "acpi-3", + "description": "acpi GMSL sensor on DES0 Link C", + "MediaCtlConfig": [ + { + "id": 0 , + "configMode": "AUTO", + "output": [1920, 1536], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 2", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES0.CH02.SER2.CAM2", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + }, + { + "id": 1 , + "configMode": "AUTO", + "output": [1920, 1080], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 2", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES0.CH02.SER2.CAM2", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + }, + { + "id": 2 , + "configMode": "AUTO", + "output": [1280, 720], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 2", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES0.CH02.SER2.CAM2", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + } + ], + "StaticMetadata": { + "supportedStreamConfig": [ + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1536], "field": 0, "mcId": 0 + }, + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1080], "field": 0, "mcId": 1 + }, + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1280, 720], "field": 0, "mcId": 2 + } + ] + }, + + "supportedISysSizes": [[1280, 720], [1920, 1080], [1920, 1536]], + "supportedISysFormat": ["V4L2_PIX_FMT_UYVY"], + "enableAIQ": false, + "usePSysProcessor": false + }, + { + "name": "acpi-4", + "description": "acpi GMSL sensor on DES0 Link D", + "MediaCtlConfig": [ + { + "id": 0 , + "configMode": "AUTO", + "output": [1920, 1536], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 3", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES0.CH03.SER3.CAM3", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + }, + { + "id": 1 , + "configMode": "AUTO", + "output": [1920, 1080], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 3", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES0.CH03.SER3.CAM3", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + }, + { + "id": 2 , + "configMode": "AUTO", + "output": [1280, 720], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 3", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES0.CH03.SER3.CAM3", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + } + ], + "StaticMetadata": { + "supportedStreamConfig": [ + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1536], "field": 0, "mcId": 0 + }, + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1080], "field": 0, "mcId": 1 + }, + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1280, 720], "field": 0, "mcId": 2 + } + ] + }, + + "supportedISysSizes": [[1280, 720], [1920, 1080], [1920, 1536]], + "supportedISysFormat": ["V4L2_PIX_FMT_UYVY"], + "enableAIQ": false, + "usePSysProcessor": false + }, + { + "name": "acpi-5", + "description": "acpi GMSL sensor on DES1 Link E", + "MediaCtlConfig": [ + { + "id": 0 , + "configMode": "AUTO", + "output": [1920, 1536], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 16", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES1.CH00.SER0.CAM0", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + }, + { + "id": 1 , + "configMode": "AUTO", + "output": [1920, 1080], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 16", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES1.CH00.SER0.CAM0", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + }, + { + "id": 2 , + "configMode": "AUTO", + "output": [1280, 720], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 16", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES1.CH00.SER0.CAM0", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + } + ], + "StaticMetadata": { + "supportedStreamConfig": [ + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1536], "field": 0, "mcId": 0 + }, + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1080], "field": 0, "mcId": 1 + }, + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1280, 720], "field": 0, "mcId": 2 + } + ] + }, + + "supportedISysSizes": [[1280, 720], [1920, 1080], [1920, 1536]], + "supportedISysFormat": ["V4L2_PIX_FMT_UYVY"], + "enableAIQ": false, + "usePSysProcessor": false + }, + { + "name": "acpi-6", + "description": "acpi GMSL sensor on DES1 Link F", + "MediaCtlConfig": [ + { + "id": 0 , + "configMode": "AUTO", + "output": [1920, 1536], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 17", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES1.CH01.SER1.CAM1", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + }, + { + "id": 1 , + "configMode": "AUTO", + "output": [1920, 1080], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 17", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES1.CH01.SER1.CAM1", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + }, + { + "id": 2 , + "configMode": "AUTO", + "output": [1280, 720], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 17", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES1.CH01.SER1.CAM1", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + } + ], + "StaticMetadata": { + "supportedStreamConfig": [ + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1536], "field": 0, "mcId": 0 + }, + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1080], "field": 0, "mcId": 1 + }, + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1280, 720], "field": 0, "mcId": 2 + } + ] + }, + + "supportedISysSizes": [[1280, 720], [1920, 1080], [1920, 1536]], + "supportedISysFormat": ["V4L2_PIX_FMT_UYVY"], + "enableAIQ": false, + "usePSysProcessor": false + }, + { + "name": "acpi-7", + "description": "acpi GMSL sensor on DES1 Link G", + "MediaCtlConfig": [ + { + "id": 0 , + "configMode": "AUTO", + "output": [1920, 1536], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 18", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES1.CH02.SER2.CAM2", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + }, + { + "id": 1 , + "configMode": "AUTO", + "output": [1920, 1080], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 18", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES1.CH02.SER2.CAM2", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + }, + { + "id": 2 , + "configMode": "AUTO", + "output": [1280, 720], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 18", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES1.CH02.SER2.CAM2", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + } + ], + "StaticMetadata": { + "supportedStreamConfig": [ + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1536], "field": 0, "mcId": 0 + }, + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1080], "field": 0, "mcId": 1 + }, + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1280, 720], "field": 0, "mcId": 2 + } + ] + }, + + "supportedISysSizes": [[1280, 720], [1920, 1080], [1920, 1536]], + "supportedISysFormat": ["V4L2_PIX_FMT_UYVY"], + "enableAIQ": false, + "usePSysProcessor": false + }, + { + "name": "acpi-8", + "description": "acpi GMSL sensor on DES1 Link H", + "MediaCtlConfig": [ + { + "id": 0 , + "configMode": "AUTO", + "output": [1920, 1536], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 19", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES1.CH03.SER3.CAM3", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + }, + { + "id": 1 , + "configMode": "AUTO", + "output": [1920, 1080], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 19", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES1.CH03.SER3.CAM3", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + }, + { + "id": 2 , + "configMode": "AUTO", + "output": [1280, 720], + "format": "V4L2_PIX_FMT_UYVY", + "videonode": [ + { + "name": "Intel IPU7 ISYS Capture 19", "videoNodeType": "VIDEO_GENERIC" + }, + { + "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" + }, + { + "acpiName": "\\_SB_.PC00.DES1.CH03.SER3.CAM3", "videoNodeType": "VIDEO_PIXEL_ARRAY" + } + ] + } + ], + "StaticMetadata": { + "supportedStreamConfig": [ + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1536], "field": 0, "mcId": 0 + }, + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1920, 1080], "field": 0, "mcId": 1 + }, + { + "format": "V4L2_PIX_FMT_UYVY", "size": [1280, 720], "field": 0, "mcId": 2 + } + ] + }, + + "supportedISysSizes": [[1280, 720], [1920, 1080], [1920, 1536]], + "supportedISysFormat": ["V4L2_PIX_FMT_UYVY"], + "enableAIQ": false, + "usePSysProcessor": false + } + ] + } +} From 87db9c4ce25a9d70a1ea1af694e8c32ed1a2106e Mon Sep 17 00:00:00 2001 From: "Goh, Wei Khang1" Date: Fri, 28 Aug 2026 19:24:20 +0800 Subject: [PATCH 04/12] acpi: ipu7: Add SSDT overlay for MAX96724 mixed AR0234/ISX031 setup Add acpi/ipu7/max96724_mixed_ar0234_isx031.asl, an SSDT overlay for two MAX96724 deserializers (DES0, DES1) on the PTL platform, each carrying two AR0234 and two ISX031 GMSL cameras across Links 0..3, fronted by MAX9295A serializers. Signed-off-by: Goh, Wei Khang1 --- acpi/ipu7/max96724_mixed_d3_ar0234_isx031.asl | 301 ++++++++++++++++++ 1 file changed, 301 insertions(+) create mode 100644 acpi/ipu7/max96724_mixed_d3_ar0234_isx031.asl diff --git a/acpi/ipu7/max96724_mixed_d3_ar0234_isx031.asl b/acpi/ipu7/max96724_mixed_d3_ar0234_isx031.asl new file mode 100644 index 00000000..91d68d17 --- /dev/null +++ b/acpi/ipu7/max96724_mixed_d3_ar0234_isx031.asl @@ -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 + } + } +} From 7287fd12b7efa1b29f16be417a95ef42a5e841c3 Mon Sep 17 00:00:00 2001 From: "Goh, Wei Khang1" Date: Fri, 4 Sep 2026 21:45:02 +0800 Subject: [PATCH 05/12] acpi: ipu8: Add SSDT overlay for MAX96724 mixed AR0234/ISX031 setup Add acpi/ipu8/max96724_mixed_ar0234_isx031.asl, an SSDT overlay for two MAX96724 deserializers (DES0, DES1) on the PTL platform, each carrying two AR0234 and two ISX031 GMSL cameras across Links 0..3, fronted by MAX9295A serializers. Signed-off-by: Goh, Wei Khang1 --- acpi/ipu8/max96724_mixed_d3_ar0234_isx031.asl | 301 ++++++++++++++++++ 1 file changed, 301 insertions(+) create mode 100644 acpi/ipu8/max96724_mixed_d3_ar0234_isx031.asl diff --git a/acpi/ipu8/max96724_mixed_d3_ar0234_isx031.asl b/acpi/ipu8/max96724_mixed_d3_ar0234_isx031.asl new file mode 100644 index 00000000..f3363bfe --- /dev/null +++ b/acpi/ipu8/max96724_mixed_d3_ar0234_isx031.asl @@ -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.I2C0" + #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 + } + } +} From aca7153a941f614c4e2dbc2ed6750e009f6bf1b5 Mon Sep 17 00:00:00 2001 From: "Goh, Wei Khang1" Date: Fri, 4 Sep 2026 22:07:32 +0800 Subject: [PATCH 06/12] doc: acpi: Document D3 AR0234 serializer entry and mixed-sensor overlays - Add the D3 AR0234 serializer-specific defines row to the ASL configuration table. - Clarify the existing MAX96724 mix-and-match link labels as '2D YUV + 2D YUV, 2D YUV + 3D YUV' to distinguish them from the new RAW/YUV mix overlay. - Add links to the new max96724_mixed_d3_ar0234_isx031.asl overlay for IPU7 and IPU8, covering 2D RAW + 2D YUV GMSL mix-and-match. Signed-off-by: Goh, Wei Khang1 --- doc/acpi/kernelspace.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/doc/acpi/kernelspace.md b/doc/acpi/kernelspace.md index 8b722a44..597aca29 100644 --- a/doc/acpi/kernelspace.md +++ b/doc/acpi/kernelspace.md @@ -213,6 +213,7 @@ Serializer-specific defines in ASL are used to specify the serializer configurat | LI ISX031 | 0x62 | - | - | 4 | - | | Sensing ISX031| 0x40 | 7 | 1 | 4 | - | | RS D457 | 0x40 | - | - | 2 | Package () { 0 } for VC0 on Pipe X
Package () { 1 } for VC1 on Pipe Y
Package () { 2 } for VC2 on Pipe Z
Package () { 3 } for VC3 on Pipe U | +| D3 AR0234 | 0x40 | - | - | 2 | - | @@ -257,7 +258,8 @@ Make sure the below ASL source files are at least a **subset** of your current h - [D457 GMSL 3D on MAX96724](../../acpi/ipu7/max96724_rs_d457.asl) - [LI ISX031 GMSL on MAX96724](../../acpi/ipu7/max96724_li_isx031.asl) - [Sensing ISX031 GMSL on MAX96724](../../acpi/ipu7/max96724_sensing_isx031.asl) -- [2D+2D, 2D+3D GMSL mix-and-match on MAX96724](../../acpi/ipu7/max96724_mixed.asl) +- [2D YUV + 2D YUV, 2D YUV + 3D YUV GMSL mix-and-match on MAX96724](../../acpi/ipu7/max96724_mixed.asl) +- [2D RAW + 2D YUV, 2D YUV + 2D RAW GMSL mix-and-match on MAX96724](../../acpi/ipu7/max96724_mixed_d3_ar0234_isx031.asl) - [FrameSync on MAX96724](../../acpi/ipu7/max96724_sensing_isx031_fs.asl)

(Go to Compile and Load)

@@ -274,7 +276,8 @@ Make sure the below ASL source files are at least a **subset** of your current h - [D457 GMSL 3D on MAX96724](../../acpi/ipu8/max96724_rs_d457.asl) - [LI ISX031 GMSL on MAX96724](../../acpi/ipu8/max96724_li_isx031.asl) - [Sensing ISX031 GMSL on MAX96724](../../acpi/ipu8/max96724_sensing_isx031.asl) -- [2D+2D, 2D+3D GMSL mix-and-match on MAX96724](../../acpi/ipu8/max96724_mixed.asl) +- [2D YUV + 2D YUV, 2D YUV + 3D YUV GMSL mix-and-match on MAX96724](../../acpi/ipu8/max96724_mixed.asl) +- [2D RAW + 2D YUV, 2D YUV + 2D RAW GMSL mix-and-match on MAX96724](../../acpi/ipu8/max96724_mixed_d3_ar0234_isx031.asl)

(Go to Compile and Load)

From a3122bcb847ede88a8b6ec0c7ace89b9844c7b59 Mon Sep 17 00:00:00 2001 From: "Goh, Wei Khang1" Date: Thu, 3 Sep 2026 20:54:34 +0800 Subject: [PATCH 07/12] config: ar0234: ipu75xa: Use ACPI names for pixel array nodes The IPU75XA AR0234 sensor config identified each pixel array videonode by a "name" field containing the sensor's I2C bus and address (e.g. "ar0234 28-0010"). This is fragile since the bus number depends on enumeration order and does not match the ACPI based identification used by the rest of the config and the SSDT overlays. Replace the "name" field with "acpiName" holding the full ACPI device path (e.g. "\_SB_.PC00.DES0.CH00.SER0.CAM0") for all 8 AR0234 pixel array nodes, covering both deserializers and all 4 channels each, so sensors are consistently matched by ACPI path. Signed-off-by: Goh, Wei Khang1 --- config/ar0234/ipu75xa/sensors/ar0234.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/config/ar0234/ipu75xa/sensors/ar0234.json b/config/ar0234/ipu75xa/sensors/ar0234.json index 0f555038..dc7005ee 100644 --- a/config/ar0234/ipu75xa/sensors/ar0234.json +++ b/config/ar0234/ipu75xa/sensors/ar0234.json @@ -31,7 +31,7 @@ "videonode": [ { "name": "Intel IPU7 ISYS Capture 0", "videoNodeType": "VIDEO_GENERIC" }, { "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" }, - { "name": "ar0234 28-0010", "videoNodeType": "VIDEO_PIXEL_ARRAY" } + { "acpiName": "\\_SB_.PC00.DES0.CH00.SER0.CAM0", "videoNodeType": "VIDEO_PIXEL_ARRAY" } ] } ], @@ -223,7 +223,7 @@ "videonode": [ { "name": "Intel IPU7 ISYS Capture 1", "videoNodeType": "VIDEO_GENERIC" }, { "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" }, - { "name": "ar0234 29-0010", "videoNodeType": "VIDEO_PIXEL_ARRAY" } + { "acpiName": "\\_SB_.PC00.DES0.CH01.SER1.CAM1", "videoNodeType": "VIDEO_PIXEL_ARRAY" } ] } ], @@ -415,7 +415,7 @@ "videonode": [ { "name": "Intel IPU7 ISYS Capture 2", "videoNodeType": "VIDEO_GENERIC" }, { "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" }, - { "name": "ar0234 30-0010", "videoNodeType": "VIDEO_PIXEL_ARRAY" } + { "acpiName": "\\_SB_.PC00.DES0.CH02.SER2.CAM2", "videoNodeType": "VIDEO_PIXEL_ARRAY" } ] } ], @@ -607,7 +607,7 @@ "videonode": [ { "name": "Intel IPU7 ISYS Capture 3", "videoNodeType": "VIDEO_GENERIC" }, { "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" }, - { "name": "ar0234 31-0010", "videoNodeType": "VIDEO_PIXEL_ARRAY" } + { "acpiName": "\\_SB_.PC00.DES0.CH03.SER3.CAM3", "videoNodeType": "VIDEO_PIXEL_ARRAY" } ] } ], @@ -799,7 +799,7 @@ "videonode": [ { "name": "Intel IPU7 ISYS Capture 16", "videoNodeType": "VIDEO_GENERIC" }, { "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" }, - { "name": "ar0234 32-0010", "videoNodeType": "VIDEO_PIXEL_ARRAY" } + { "acpiName": "\\_SB_.PC00.DES1.CH00.SER0.CAM0", "videoNodeType": "VIDEO_PIXEL_ARRAY" } ] } ], @@ -991,7 +991,7 @@ "videonode": [ { "name": "Intel IPU7 ISYS Capture 17", "videoNodeType": "VIDEO_GENERIC" }, { "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" }, - { "name": "ar0234 33-0010", "videoNodeType": "VIDEO_PIXEL_ARRAY" } + { "acpiName": "\\_SB_.PC00.DES1.CH01.SER1.CAM1", "videoNodeType": "VIDEO_PIXEL_ARRAY" } ] } ], @@ -1183,7 +1183,7 @@ "videonode": [ { "name": "Intel IPU7 ISYS Capture 18", "videoNodeType": "VIDEO_GENERIC" }, { "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" }, - { "name": "ar0234 34-0010", "videoNodeType": "VIDEO_PIXEL_ARRAY" } + { "acpiName": "\\_SB_.PC00.DES1.CH02.SER2.CAM2", "videoNodeType": "VIDEO_PIXEL_ARRAY" } ] } ], @@ -1375,7 +1375,7 @@ "videonode": [ { "name": "Intel IPU7 ISYS Capture 19", "videoNodeType": "VIDEO_GENERIC" }, { "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" }, - { "name": "ar0234 35-0010", "videoNodeType": "VIDEO_PIXEL_ARRAY" } + { "acpiName": "\\_SB_.PC00.DES1.CH03.SER3.CAM3", "videoNodeType": "VIDEO_PIXEL_ARRAY" } ] } ], From 07acf9866f31b710eb16dcb2002cb278316c530a Mon Sep 17 00:00:00 2001 From: "Goh, Wei Khang1" Date: Thu, 3 Sep 2026 21:19:14 +0800 Subject: [PATCH 08/12] config: ar0234: ipu8: Use ACPI names for pixel array nodes The IPU8 AR0234 sensor config identified each pixel array videonode by a "name" field containing the sensor's I2C bus and address (e.g. "ar0234 25-0010"). This is fragile since the bus number depends on enumeration order and does not match the ACPI based identification used by the rest of the config and the SSDT overlays. Replace the "name" field with "acpiName" holding the full ACPI device path (e.g. "\_SB_.PC00.DES0.CH00.SER0.CAM0") for all 8 AR0234 pixel array nodes, covering both deserializers and all 4 channels each, so sensors are consistently matched by ACPI path. Signed-off-by: Goh, Wei Khang1 --- config/ar0234/ipu8/sensors/ar0234.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/config/ar0234/ipu8/sensors/ar0234.json b/config/ar0234/ipu8/sensors/ar0234.json index 06375db8..da032cc2 100644 --- a/config/ar0234/ipu8/sensors/ar0234.json +++ b/config/ar0234/ipu8/sensors/ar0234.json @@ -31,7 +31,7 @@ "videonode": [ { "name": "Intel IPU7 ISYS Capture 0", "videoNodeType": "VIDEO_GENERIC" }, { "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" }, - { "name": "ar0234 25-0010", "videoNodeType": "VIDEO_PIXEL_ARRAY" } + { "acpiName": "\\_SB_.PC00.DES0.CH00.SER0.CAM0", "videoNodeType": "VIDEO_PIXEL_ARRAY" } ] } ], @@ -223,7 +223,7 @@ "videonode": [ { "name": "Intel IPU7 ISYS Capture 1", "videoNodeType": "VIDEO_GENERIC" }, { "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" }, - { "name": "ar0234 26-0010", "videoNodeType": "VIDEO_PIXEL_ARRAY" } + { "acpiName": "\\_SB_.PC00.DES0.CH01.SER1.CAM1", "videoNodeType": "VIDEO_PIXEL_ARRAY" } ] } ], @@ -415,7 +415,7 @@ "videonode": [ { "name": "Intel IPU7 ISYS Capture 2", "videoNodeType": "VIDEO_GENERIC" }, { "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" }, - { "name": "ar0234 27-0010", "videoNodeType": "VIDEO_PIXEL_ARRAY" } + { "acpiName": "\\_SB_.PC00.DES0.CH02.SER2.CAM2", "videoNodeType": "VIDEO_PIXEL_ARRAY" } ] } ], @@ -607,7 +607,7 @@ "videonode": [ { "name": "Intel IPU7 ISYS Capture 3", "videoNodeType": "VIDEO_GENERIC" }, { "name": "Intel IPU7 CSI2 0", "videoNodeType": "VIDEO_ISYS_RECEIVER" }, - { "name": "ar0234 28-0010", "videoNodeType": "VIDEO_PIXEL_ARRAY" } + { "acpiName": "\\_SB_.PC00.DES0.CH03.SER3.CAM3", "videoNodeType": "VIDEO_PIXEL_ARRAY" } ] } ], @@ -799,7 +799,7 @@ "videonode": [ { "name": "Intel IPU7 ISYS Capture 16", "videoNodeType": "VIDEO_GENERIC" }, { "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" }, - { "name": "ar0234 21-0010", "videoNodeType": "VIDEO_PIXEL_ARRAY" } + { "acpiName": "\\_SB_.PC00.DES1.CH00.SER0.CAM0", "videoNodeType": "VIDEO_PIXEL_ARRAY" } ] } ], @@ -991,7 +991,7 @@ "videonode": [ { "name": "Intel IPU7 ISYS Capture 17", "videoNodeType": "VIDEO_GENERIC" }, { "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" }, - { "name": "ar0234 22-0010", "videoNodeType": "VIDEO_PIXEL_ARRAY" } + { "acpiName": "\\_SB_.PC00.DES1.CH01.SER1.CAM1", "videoNodeType": "VIDEO_PIXEL_ARRAY" } ] } ], @@ -1183,7 +1183,7 @@ "videonode": [ { "name": "Intel IPU7 ISYS Capture 18", "videoNodeType": "VIDEO_GENERIC" }, { "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" }, - { "name": "ar0234 23-0010", "videoNodeType": "VIDEO_PIXEL_ARRAY" } + { "acpiName": "\\_SB_.PC00.DES1.CH02.SER2.CAM2", "videoNodeType": "VIDEO_PIXEL_ARRAY" } ] } ], @@ -1375,7 +1375,7 @@ "videonode": [ { "name": "Intel IPU7 ISYS Capture 19", "videoNodeType": "VIDEO_GENERIC" }, { "name": "Intel IPU7 CSI2 2", "videoNodeType": "VIDEO_ISYS_RECEIVER" }, - { "name": "ar0234 24-0010", "videoNodeType": "VIDEO_PIXEL_ARRAY" } + { "acpiName": "\\_SB_.PC00.DES1.CH03.SER3.CAM3", "videoNodeType": "VIDEO_PIXEL_ARRAY" } ] } ], From c423baec5fb9b06f1128021aad2b4427a9814445 Mon Sep 17 00:00:00 2001 From: "Goh, Wei Khang1" Date: Thu, 3 Sep 2026 21:00:19 +0800 Subject: [PATCH 09/12] config: ar0234: Upgrade IPU75XA GCSS for tag 20260618_0455_374 Upgrade AR0234.IPU75XA.bin with systool 26.31.3.0 (tag 20260618_0455_374). Signed-off-by: Goh, Wei Khang1 --- config/ar0234/ipu75xa/gcss/AR0234.IPU75XA.bin | Bin 90388 -> 90560 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/config/ar0234/ipu75xa/gcss/AR0234.IPU75XA.bin b/config/ar0234/ipu75xa/gcss/AR0234.IPU75XA.bin index 018c8f9f5d22d557560f44b6e43981dcd19fd653..7d4b59835a4386be1c688c7dbd4b68564d423a85 100644 GIT binary patch delta 762 zcmbPoi1ol>Rvrc@c$*b(K9Qq>Cu;rGq+M-{3?U1To}bvGz{ogxB4hmI8b$$5kPJvM z<77s5<;f0=K1d=H8MAqPL>U-R)J!~JGx-A}51ItXI3H#n-WghG$|nmjd!UIXGH3HX zu}4z}GWGz_091*ETm};_@JyCvVxQc@qQPqr$^iBP#KDHF@snj(d3g5#MG;OkWXgCwWn|Ar6M?9+ne4&A z!)tK>Rc$;LQIPru4iDaztH^3Ea%7{4z|584;^DpU3Rx{9d;DZf(S=;`lY4+_Wf&Nd z!eSv;HgAR~sz|(~KT=q1(L$4*{DPZ@gTVnJy7>?H0})34$&F$VDj7Fax;PyY!CEi ZWM-UPpy;@LFApO-P7#>C>9uBz>;S@5)u#Xe delta 649 zcmZvXF-XHe7=?4%H2Iqo6xvZ}=^%8fAfF+d&W!YSl$gp@L8chdQV@2#Hs5 zRXZqdaza56qb?#H3L=P8a1ue$MRC%k?UAD1@VNKh_jCW5S7PB(lm+`NzkW;^cnRO$ zOw63FAptF3d>MMsIGGcjNTB^vm|9+JSZY1kLj<&dApEMMTTQqjH<}3Ok-rpuvoW_= zX(n*r_YY<@U3bQD zm?np0Iwz@ceZ-M|iMWm<B+ z%!>TlQr-__@yVkD8x#m2KFOVprLLRfU=_NtPYe5!HvI zG& Date: Fri, 4 Sep 2026 15:17:35 +0800 Subject: [PATCH 10/12] doc: ar0234: Restructure userspace-gmsl.md for ASL and BIOS setups Reorganize the AR0234 GMSL userspace guide to clearly separate the BIOS-configured and ASL-configured setup flows: - Split the ACPI section into 'ACPI Setup - BIOS Configuration' and 'ACPI Setup - ASL Configuration' sections, each with per-IPU generation instructions. - Rename 'Camera Configuration/Tuning File Setup' sections to 'Libcamhal Configuration/Tuning File Setup' and split them by BIOS- vs ASL-configured systems. - Add a 'Sensor ACPI HID' table and an 'Auto Media-Ctl Routing Setup' section for ASL-configured systems. - Rename 'Sample Userspace Command' to 'Stream Verification' and update the table of contents to match the new structure. - Fix a stray character left in the C-PHY to D-PHY adapter connection section. Signed-off-by: Goh, Wei Khang1 --- doc/ar0234/userspace-gmsl.md | 355 +++++++++++++++++++++-------------- 1 file changed, 216 insertions(+), 139 deletions(-) diff --git a/doc/ar0234/userspace-gmsl.md b/doc/ar0234/userspace-gmsl.md index f903373f..f07dcd29 100644 --- a/doc/ar0234/userspace-gmsl.md +++ b/doc/ar0234/userspace-gmsl.md @@ -5,101 +5,108 @@ This document details the configuration settings for the AR0234 GMSL sensor, pro ## Table of Contents - [Hardware Connection](#hardware-connection) - - [MAX9296 (REV B) Connection](#max9296-rev-b-connection) - - [MAX96724 AIC (REV A) Connection](#max96724-aic-rev-a-connection) - - [MAX96724 AIC (D-PHY) (REV B) Connection](#max96724-aic-d-phy-rev-b-connection) + - [MAX9296 AIC (REV B) Connection](#max9296-aic-rev-b-connection) + - [MAX96724 AIC (C-PHY) (REV A) Connection](#max96724-aic-c-phy-rev-a-connection) - [MAX96724 AIC (C-PHY) (REV B) Connection](#max96724-aic-c-phy-rev-b-connection) + - [MAX96724 AIC (D-PHY) (REV B) Connection](#max96724-aic-d-phy-rev-b-connection) - [MAX96724 AIC (C-PHY to D-PHY Adapter) (REV B) Connection](#max96724-aic-c-phy-to-d-phy-adapter-rev-b-connection) -- [BIOS Configuration Table](#bios-configuration-table) - - [Disable C States](#disable-c-states) -- [MIPI Camera Configuration](#mipi-camera-configuration) - - [Setup for IPU6EPMTL](#setup-for-ipu6epmtl) - - [Setup for IPU75XA](#setup-for-ipu75xa) - - [Setup for IPU8](#setup-for-ipu8) -- [Camera Configuration File Setup](#camera-configuration-file-setup) - - [Setup for IPU6EPMTL](#setup-for-ipu6epmtl-1) - - [Setup for IPU75XA](#setup-for-ipu75xa-1) - - [Setup for IPU8](#setup-for-ipu8-1) -- [Camera Tuning File Setup](#camera-tuning-file-setup) - - [Setup for IPU6EPMTL](#setup-for-ipu6epmtl-2) - - [Setup for IPU75XA](#setup-for-ipu75xa-2) - - [Setup for IPU8](#setup-for-ipu8-2) -- [Environment Setup](#environment-setup) +- [ACPI Setup - BIOS Configuration](#acpi-setup---bios-configuration) + - [Sensor ACPI HID](#sensor-acpi-hid) + - [BIOS Settings for IPU6EPMTL](#bios-settings-for-ipu6epmtl) +- [ACPI Setup - ASL Configuration](#acpi-setup---asl-configuration) + - [ASL Configuration for IPU6EPMTL](#asl-configuration-for-ipu6epmtl) + - [ASL Configuration for IPU75XA](#asl-configuration-for-ipu75xa) + - [ASL Configuration for IPU8](#asl-configuration-for-ipu8) +- [Libcamhal Configuration File Setup (BIOS Configured Systems)](#libcamhal-configuration-file-setup-bios-configured-systems) + - [Libcamhal Config for IPU6EPMTL](#libcamhal-config-for-ipu6epmtl) +- [Libcamhal Configuration File Setup (ASL Configured Systems)](#libcamhal-configuration-file-setup-asl-configured-systems) + - [Libcamhal Config for IPU6EPMTL](#libcamhal-config-for-ipu6epmtl-1) + - [Libcamhal Config for IPU75XA](#libcamhal-config-for-ipu75xa) + - [Libcamhal Config for IPU8](#libcamhal-config-for-ipu8) +- [Libcamhal Tuning File Setup](#libcamhal-tuning-file-setup) + - [Libcamhal Tuning for IPU6EPMTL](#libcamhal-tuning-for-ipu6epmtl) + - [Libcamhal Tuning for IPU75XA](#libcamhal-tuning-for-ipu75xa) + - [Libcamhal Tuning for IPU8](#libcamhal-tuning-for-ipu8) +- [Auto Media-Ctl Routing Setup (ASL Configured Systems)](#auto-media-ctl-routing-setup-asl-configured-systems) - [Sensor Verification](#sensor-verification) -- [Sample Userspace Command](#sample-userspace-command) - - [Sensor Device Selection](#sensor-device-selection) - - [How to relate Sensor Number N with AIC Link Port](#how-to-relate-sensor-number-n-with-aic-link-port) - - [Frame Buffer Memory Type (IO Mode) Selection](#frame-buffer-memory-type-io-mode-selection) - - [Sensor Resolution Selection](#sensor-resolution-selection) - - [Sensor Format Selection](#sensor-format-selection) - - [Multi-Stream Selection](#multi-stream-selection) - - [Multiprocessing Multi-Stream](#multiprocessing-multi-stream) - - [Multithreading Multi-Stream](#multithreading-multi-stream) +- [Stream Verification](#stream-verification) + - [Environment Setup](#environment-setup) + - [Stream with GStreamer icamerasrc](#stream-with-gstreamer-icamerasrc) + - [Device Name Selection](#device-name-selection) + - [Frame Buffer Memory Type (IO Mode) Selection](#frame-buffer-memory-type-io-mode-selection) + - [Sensor Resolution Selection](#sensor-resolution-selection) + - [Sensor Format Selection](#sensor-format-selection) + - [Multi-Stream Selection](#multi-stream-selection) + - [Multiprocessing Multi-Stream](#multiprocessing-multi-stream) + - [Multithreading Multi-Stream](#multithreading-multi-stream) - [Streaming Result](#streaming-result) + - [Highest Bandwidth Configuration](#highest-bandwidth-configuration) ## Hardware Connection This section describes the physical AIC (Add-In Card) hardware setup, including link port layout and jumper configurations for MIPI PHY selection. -#### MAX9296 AIC (REV B) Connection +### MAX9296 AIC (REV B) Connection > **Note:** Samtec cables and an external power supply are required to connect the MAX9296 AIC to the baseboard. ![link-port](../images/max9296-fabb-dphy.png) -#### MAX96724 AIC (C-PHY) (REV A) Connection +### MAX96724 AIC (C-PHY) (REV A) Connection > **Note:** The MAX96724 AIC (REV A) supports only C-PHY connections, selectable via the J14 jumper highlighted in the image below. ![link-port](../images/max96724-faba-cphy.png) -#### MAX96724 AIC (C-PHY) (REV B) Connection +### MAX96724 AIC (C-PHY) (REV B) Connection > **Note:** The MAX96724 AIC (REV B) supports both C-PHY and D-PHY connections, selectable via the J14 jumper. -Image below shows the C-PHY setup. - +The image below shows the C-PHY setup. ![link-port](../images/max96724-fabb-cphy.png) -#### MAX96724 AIC (D-PHY) (REV B) Connection +### MAX96724 AIC (D-PHY) (REV B) Connection > **Note:** Ensure the J14 jumper pins are oriented toward the D-PHY connector, as shown in the image below. -Image below shows the D-PHY setup. +The image below shows the D-PHY setup. ![link-port](../images/max96724-fabb-dphy.png) +### MAX96724 AIC (C-PHY to D-PHY Adapter) (REV B) Connection -#### MAX96724 AIC (C-PHY to D-PHY Adapter) (REV B) Connection - -Image below shows the C-PHY to D-PHY adapter setup. +The image below shows the C-PHY to D-PHY adapter setup. ![link-port](../images/max96724-fabb-cphy-dphy.png) +The following sections show the BIOS settings for each platform. Configure the BIOS for the platform in use. -## BIOS Configuration Table +>**Note:** If you want to configure ACPI using ASL, please refer to the [ASL configuration](#acpi-setup---asl-configuration) section below. -> **Note:** No External Clock required. +--- +## ACPI Setup - BIOS Configuration -#### Disable C States +Using the BIOS configuration exercises the [ipu-acpi](../../drivers/media/platform/intel/) and [max9x](../../drivers/media/i2c/max9x/) drivers. -Config path: `Intel Advanced Menu`->`Power & Performance`->`CPU - Power Management Control` +### Sensor ACPI HID -| | Options | -|--- |--- | -| C states | Disabled | +Use the sensor ACPI HID in the **Custom HID** field. -> **Note:** This option is only applicable for IPU6EP platforms (ADL, TWL, ASL and RPL). +| Vendor | Sensor ACPI HID | +|-----------------|:---------------:| +| D3 Embedded | INTC0234 | -## MIPI Camera Configuration +### BIOS Settings for IPU6EPMTL -#### Setup for IPU6EPMTL +
+MAX9296 DPHY + 2x AR0234 +

(Back to Hardware Setup)

-Config path: `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Camera Configuration` +> **Note:** No control logic or external clock is required. -
-Click to expand BIOS camera link options +>**BIOS Camera Option 1 Path:**\ + `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Camera Configuration` -> `Camera Option 1` -> **Enabled** | | Camera1 Link options | |--- |--- | @@ -139,134 +146,197 @@ Config path: `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Cam
-#### Setup for IPU75XA +--- +## ACPI Setup - ASL Configuration + +

IMPORTANT: Turn off the BIOS setting to use the ASL method.

+ +>**BIOS Camera Option 1 Path:**\ + `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Camera Configuration` -> `Camera Option 1` -> **Disabled** + +>**BIOS Camera Option 2 Path:**\ + `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Camera Configuration` -> `Camera Option 2` -> **Disabled** + +Using the ASL configuration exercises the [maxim-serdes](../../drivers/media/i2c/maxim-serdes/) drivers. + +To compile ASL and load an SSDT overlay image, refer to [acpi/kernelspace.md](../acpi/kernelspace.md#compile-and-load). + +### ASL Configuration for IPU6EPMTL + +
+ MAX9296 DPHY + 2x D3 AR0234 GMSL sensors use case +

(Back to Hardware Setup)

+ +>**ASL:** [max9296_d3_ar0234.asl](../../acpi/ipu6/max9296_d3_ar0234.asl) + +
+ +### ASL Configuration for IPU75XA + +
+ MAX96724 CPHY + 8x D3 AR0234 GMSL sensors use case +

(Back to Hardware Setup)

+ +>**ASL:** [max96724_d3_ar0234.asl](../../acpi/ipu7/max96724_d3_ar0234.asl) -> **Note:** Configuration is performed using SSDT ACPI method based on [MAX96724 AIC (C-PHY) (REV A) Connection](#max96724-aic-c-phy-rev-a-connection). Please visit 'Compile and Load ACPI ASL source' in [acpi](../acpi/kernelspace.md) for setup guideline. +
- cd ../../acpi/ipu7 - ../../script/gen_ssdt.sh max96724_d3_ar0234.asl +### ASL Configuration for IPU8 -#### Setup for IPU8 +
+ MAX96724 CPHY + 8x D3 AR0234 GMSL sensors use case +

(Back to Hardware Setup)

-> **Note:** Configuration is performed using SSDT ACPI method based on [MAX96724 AIC (C-PHY) (REV A) Connection](#max96724-aic-c-phy-rev-a-connection). Please visit 'Compile and Load ACPI ASL source' in [acpi](../acpi/kernelspace.md) for setup guideline. +>**ASL:** [max96724_d3_ar0234.asl](../../acpi/ipu8/max96724_d3_ar0234.asl) - cd ../../acpi/ipu8 - ../../script/gen_ssdt.sh max96724_d3_ar0234.asl +
-## Camera Configuration File Setup +--- +## Libcamhal Configuration File Setup (BIOS Configured Systems) -#### Setup for IPU6EPMTL +#### Libcamhal Config for IPU6EPMTL -Replace target system with recommended [ipu6epmtl](../../config/ar0234/ipu6epmtl) setting +
+2x GMSL sensors use case -> **Note:** Add config below only if using x2 GMSL sensors. +Please use recommended config from [ipu6epmtl](../../config/ar0234/ipu6epmtl). sudo cp -r ../../config/ar0234/ipu6epmtl /etc/camera sudo sed -i '/availableSensors/c\ ' /etc/camera/ipu6epmtl/libcamhal_profile.xml -#### Setup for IPU75XA +
-Replace target system with recommended [ipu75xa](../../config/ar0234/ipu75xa) setting +--- +## Libcamhal Configuration File Setup (ASL Configured Systems) + +#### Libcamhal Config for IPU6EPMTL + +
+2x GMSL sensors use case + +Please use config from [ipu6epmtl](../../config/ar0234/ipu6epmtl). + + sudo cp -r ../../config/ar0234/ipu6epmtl /etc/camera + +
+ +#### Libcamhal Config for IPU75XA + +
+8x GMSL sensors use case + +Please use recommended config from [ipu75xa](../../config/ar0234/ipu75xa). sudo cp -r ../../config/ar0234/ipu75xa /etc/camera - ../../script/acpi/mc-setup.sh -#### Setup for IPU8 +
+ +#### Libcamhal Config for IPU8 + +
+8x GMSL sensors use case -Replace target system with recommended [ipu8](../../config/ar0234/ipu8) setting +Please use recommended config from [ipu8](../../config/ar0234/ipu8). sudo cp -r ../../config/ar0234/ipu8 /etc/camera - ../../script/acpi/mc-setup.sh -## Camera Tuning File Setup +
-#### Setup for IPU6EPMTL +--- +## Libcamhal Tuning File Setup -Import [AR0234_TGL_10bits.aiqb](https://github.com/intel/ipu6-camera-hal/blob/iotg_ipu6/config/linux/ipu6epmtl/AR0234_TGL_10bits.aiqb) into target system `/etc/camera/ipu6epmtl` +RAW sensor required respective tuning configuration files below for streaming: -#### Setup for IPU75XA +1. Arithmetic Image Quality Binary (AIQB) +2. Graph Setting Configuration (GCSS) -> **TODO:** No action needed for now, will revisit once AIQB config available in [ipu7-camera-hal](https://github.com/intel/ipu7-camera-hal/tree/main/config/linux/ipu75xa). +#### Libcamhal Tuning for IPU6EPMTL -#### Setup for IPU8 +1. Download [AR0234_TGL_10bits.aiqb](https://github.com/intel/ipu6-camera-hal/blob/iotg_ipu6/config/linux/ipu6epmtl/AR0234_TGL_10bits.aiqb) +2. Download [graph_settings_ar0234.xml](https://github.com/intel/ipu6-camera-hal/blob/iotg_ipu6/config/linux/ipu6epmtl/gcss/graph_settings_ar0234.xml) +3. Copy the files into target system: -> **TODO:** No action needed for now, will revisit once AIQB config available in [ipu7-camera-hal](https://github.com/intel/ipu7-camera-hal/tree/main/config/linux/ipu8). + ``` + sudo cp AR0234_TGL_10bits.aiqb /etc/camera/ipu6epmtl + sudo cp graph_settings_ar0234.xml /etc/camera/ipu6epmtl/gcss + ``` -## Environment Setup +#### Libcamhal Tuning for IPU75XA -> **Note:** PSYS library requires superuser access, please login as root to run the sample commands given below. +The tuning files are available in [ipu75xa](../../config/ar0234/ipu75xa). In the future, this will be hosted at [here](https://github.com/intel/ipu7-camera-hal/tree/main/config/linux/ipu75xa). -Export environment variables below +#### Libcamhal Tuning for IPU8 - unset XDG_RUNTIME_DIR - export DISPLAY=:0; xhost + - export GST_PLUGIN_PATH=/usr/lib/gstreamer-1.0 - export LIBVA_DRIVER_NAME=iHD - export GST_GL_API=gles2 - export GST_GL_PLATFORM=egl - export LIBVA_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/dri - export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/lib/pkgconfig - export LD_LIBRARY_PATH=/usr/local/lib/pkgconfig:/usr/local/lib:/usr/lib64:/usr/lib:/usr/lib/x86_64-linux-gnu - export logSink=terminal - rm -rf ~/.cache/gstreamer-1.0 +The tuning files are available in [ipu8](../../config/ar0234/ipu8). In the future, this will be hosted at [here](https://github.com/intel/ipu7-camera-hal/tree/main/config/linux/ipu8). -(Required for IPU6 only) Configure isys_freq value +--- +## Auto Media-Ctl Routing Setup (ASL Configured Systems) - sudo bash -c 'echo "options intel-ipu6 isys_freq_override=475" >> /etc/modprobe.d/ipu.conf' +Please refer to [How to use mc-setup.sh](../acpi/userspace-gmsl.md#how-to-use-mc-setupsh) +--- ## Sensor Verification -Upon setup completion, verify sensor with: +After completing the setup, verify that the sensor is probed and registered with the V4L2 framework: media-ctl -p +When using the BIOS configuration, the output for a single camera should look like the example below. + ![media-ctl output](img-entity-ar0234-gmsl.png) -## Sample Userspace Command +--- +## Stream Verification -> **Note:** PSYS library requires superuser access, please login as root to run the sample commands given below. +Follow the sections below to verify streaming: -> **Attention:** If target is setup using BIOS MIPI Camera Configuration, please replace 'device-name' format in sample commands below from 'ar0234_acpi-' to 'ar0234-'. For example, 'ar0234_acpi-1' become 'ar0234-1'. +- [Environment Setup](#environment-setup) +- [Stream with GStreamer icamerasrc](#stream-with-gstreamer-icamerasrc) -#### Sensor Device Selection +For more details on verification setup guide, please refer to [construct-pipeline](../acpi/userspace-gmsl.md#construct-pipeline) & [stream-verification](../acpi/userspace-gmsl.md#stream-verification). -| Sensor Number | Command Pipeline | -|---|---| -| 1 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=ar0234_acpi-1 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=NV12,width=1280,height=960' ! glimagesink sync=false | -| 2 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=ar0234_acpi-2 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=NV12,width=1280,height=960' ! glimagesink sync=false | -| N | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=ar0234_acpi-N printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=NV12,width=1280,height=960' ! glimagesink sync=false | +### Environment Setup -> **Note**: Refer to icamerasrc device-name property for more sensor details. +Export the environment variables below: -##### How to relate Sensor Number N with AIC Link Port + unset XDG_RUNTIME_DIR + export DISPLAY=:0; xhost + + export GST_PLUGIN_PATH=/usr/lib/gstreamer-1.0 + export LIBVA_DRIVER_NAME=iHD + export GST_GL_API=gles2 + export GST_GL_PLATFORM=egl + export LIBVA_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/dri + export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/lib/pkgconfig + export LD_LIBRARY_PATH=/usr/local/lib/pkgconfig:/usr/local/lib:/usr/lib64:/usr/lib:/usr/lib/x86_64-linux-gnu + export logSink=terminal + rm -rf ~/.cache/gstreamer-1.0 -
-Sensor Number N For MAX9296 AIC +For IPU6 only, configure the `isys_freq` value: -| Link Port | Sensor Number | -|---|---| -| A | 1 | -| B | 2 | -| C | 3 | -| D | 4 | + sudo bash -c 'echo "options intel-ipu6 isys_freq_override=475" >> /etc/modprobe.d/ipu.conf' -
+### Stream with GStreamer icamerasrc -
-Sensor Number N For MAX96724 AIC +> **Note:** PSYS library requires superuser access, please login as root to run the sample commands given below. -| Link Port | Sensor Number | -|---|---| -| A | 1 | -| B | 2 | -| C | 3 | -| D | 4 | -| E | 5 | -| F | 6 | -| G | 7 | -| H | 8 | +#### Device Name Selection -
+| AIC Link | Supported Device-name | Command Pipeline | +|---|---|---| +| A | ar0234_acpi-1 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=ar0234_acpi-1 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=NV12,width=1280,height=960' ! glimagesink sync=false | +| B | ar0234_acpi-2 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=ar0234_acpi-2 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=NV12,width=1280,height=960' ! glimagesink sync=false | +| C | ar0234_acpi-3 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=ar0234_acpi-3 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=NV12,width=1280,height=960' ! glimagesink sync=false | +| D | ar0234_acpi-4 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=ar0234_acpi-4 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=NV12,width=1280,height=960' ! glimagesink sync=false | +| E | ar0234_acpi-5 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=ar0234_acpi-5 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=NV12,width=1280,height=960' ! glimagesink sync=false | +| F | ar0234_acpi-6 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=ar0234_acpi-6 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=NV12,width=1280,height=960' ! glimagesink sync=false | +| G | ar0234_acpi-7 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=ar0234_acpi-7 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=NV12,width=1280,height=960' ! glimagesink sync=false | +| H | ar0234_acpi-8 | gst-launch-1.0 icamerasrc num-buffers=-1 num-vc=1 scene-mode=normal device-name=ar0234_acpi-8 printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=NV12,width=1280,height=960' ! glimagesink sync=false | + +> **Attention:** If the target is set up using "ACPI Setup - BIOS Configuration", replace the 'device-name' prefix in the sample commands above from 'ar0234_acpi-' to 'ar0234-'. For example, 'ar0234_acpi-1' becomes 'ar0234-1'. + +> **Note:** Link ports E, F, G, and H apply only to the MAX96724 AIC. + +> **Note**: Refer to icamerasrc device-name property for more sensor details. #### Frame Buffer Memory Type (IO Mode) Selection @@ -293,8 +363,8 @@ Upon setup completion, verify sensor with: Multi-stream support can be configured using either of the following approaches: -- Multiprocessing -- Multithreading +- [Multiprocessing Multi-Stream](#multiprocessing-multi-stream) +- [Multithreading Multi-Stream](#multithreading-multi-stream) ##### Multiprocessing Multi-Stream @@ -318,21 +388,28 @@ Open a terminal window and run the command below, replacing the sensor number as > **Note**: Known VC limitation (max vc=5) for multi-stream. \ For example, to enable 8 streams, user can launch 2 terminals, with each terminal running x4 streams. +--- ## Streaming Result -| Number of Stream | IO Mode | FPS Result | -|--- |--- |--- | -| x1 | USERPTR | 30 | -| x1 | DMA MODE | 30 | -| x2 | USERPTR | 30 | -| x2 | DMA MODE | 30 | -| x4 | USERPTR | 30 | -| x4 | DMA MODE | 30 | -| x8 | USERPTR | 30 | -| x8 | DMA MODE | 30 | +> **Note:** Please ensure your system supports the specified number of streams before testing. -> **Note:** Please ensure your system enable support for specified number of stream before test. +| Number of Streams | IO Mode | FPS Result |ipu6ep|ipu6epmtl|ipu75xa|ipu8| +|:----------------:|:--------:|:----------:|:----:|:-------:|:-----:|:--:| +| x1 | USERPTR | 30 |❌|✅|✅|✅| +| x2 | USERPTR | 30 |❌|✅|✅|✅| +| x4 | USERPTR | 30 |❌|❌|✅|✅| +| x8 | USERPTR | 30 |❌|❌|✅|❌| +| x1 | DMA MODE | 30 |❌|✅|✅|✅| +| x2 | DMA MODE | 30 |❌|✅|✅|✅| +| x4 | DMA MODE | 30 |❌|❌|✅|✅| +| x8 | DMA MODE | 30 |❌|❌|✅|❌| ---- +### Highest Bandwidth Configuration +The highest-bandwidth configurations tested are listed below. + + 1. CPHY 2-lane per MIPI Port + - 8x 1280x960 @ 30fps (default) + +--- [↑ Back to Top](#description) From 07449f46ecaf046eaf49ef05f9fbc0369a404d85 Mon Sep 17 00:00:00 2001 From: "Goh, Wei Khang1" Date: Fri, 4 Sep 2026 17:37:08 +0800 Subject: [PATCH 11/12] doc: ar0234: Restructure userspace-mipi.md and add per-IPU BIOS setup Reorganize the AR0234 MIPI CSI-2 userspace guide and add missing per-IPU-generation BIOS instructions: - Replace the collapsible HTML table of contents with a markdown TOC matching the new section structure. - Rename 'BIOS Configuration Table'/'MIPI Camera Configuration' to 'ACPI Setup - BIOS Configuration' and add a 'Sensor ACPI HID' table plus collapsible 'BIOS Settings for IPU6EPMTL/IPU75XA/IPU8' subsections with Control Logic and Camera Option BIOS paths. - Rename 'Camera Configuration/Tuning File Setup' sections to 'Libcamhal Configuration/Tuning File Setup' and add IPU75XA/IPU8 AIQB and GCSS tuning file locations. - Rename 'Sample Userspace Command' to 'Stream Verification', split it into 'Environment Setup' and 'Stream with GStreamer icamerasrc' subsections, and rename 'Sensor Device Selection' to 'Device Name Selection' with an added device-name column. - Add per-platform support columns and a 'Highest Bandwidth Configuration' subsection to the streaming result table. Signed-off-by: Goh, Wei Khang1 --- doc/ar0234/userspace-mipi.md | 261 +++++++++++++++++++++++------------ 1 file changed, 175 insertions(+), 86 deletions(-) diff --git a/doc/ar0234/userspace-mipi.md b/doc/ar0234/userspace-mipi.md index ce2878f5..55d658a2 100644 --- a/doc/ar0234/userspace-mipi.md +++ b/doc/ar0234/userspace-mipi.md @@ -2,48 +2,58 @@ This document details the configuration settings for the AR0234 MIPI CSI-2 sensor, providing essential information for system integration. The table below presents the key parameters and their respective values used during system setup and validation. - -
- Table of Contents -
    -
  1. BIOS Configuration Table
  2. -
  3. MIPI Camera Configuration - -
  4. -
  5. Camera Configuration File Setup - -
  6. -
  7. Camera Tuning File Setup - -
  8. -
  9. Environment Setup
  10. -
  11. Sensor Verification
  12. -
  13. Sample Userspace Command
  14. -
  15. Streaming Result
  16. -
-
+## Table of Contents + +- [ACPI Setup - BIOS Configuration](#acpi-setup---bios-configuration) + - [Sensor ACPI HID](#sensor-acpi-hid) + - [BIOS Settings for IPU6EPMTL](#bios-settings-for-ipu6epmtl) + - [BIOS Settings for IPU75XA](#bios-settings-for-ipu75xa) + - [BIOS Settings for IPU8](#bios-settings-for-ipu8) +- [Libcamhal Configuration File Setup (BIOS Configured Systems)](#libcamhal-configuration-file-setup-bios-configured-systems) + - [Libcamhal Config for IPU6EPMTL](#libcamhal-config-for-ipu6epmtl) + - [Libcamhal Config for IPU75XA](#libcamhal-config-for-ipu75xa) + - [Libcamhal Config for IPU8](#libcamhal-config-for-ipu8) +- [Libcamhal Tuning File Setup](#libcamhal-tuning-file-setup) + - [Libcamhal Tuning for IPU6EPMTL](#libcamhal-tuning-for-ipu6epmtl) + - [Libcamhal Tuning for IPU75XA](#libcamhal-tuning-for-ipu75xa) + - [Libcamhal Tuning for IPU8](#libcamhal-tuning-for-ipu8) +- [Sensor Verification](#sensor-verification) +- [Stream Verification](#stream-verification) + - [Environment Setup](#environment-setup) + - [Stream with GStreamer icamerasrc](#stream-with-gstreamer-icamerasrc) + - [Device Name Selection](#device-name-selection) + - [Frame Buffer Memory Type (IO Mode) Selection](#frame-buffer-memory-type-io-mode-selection) + - [Sensor Resolution Selection](#sensor-resolution-selection) + - [Sensor Format Selection](#sensor-format-selection) + - [Multi-Stream Selection](#multi-stream-selection) +- [Streaming Result](#streaming-result) + - [Highest Bandwidth Configuration](#highest-bandwidth-configuration) -## BIOS Configuration Table +--- +## ACPI Setup - BIOS Configuration -> **Note:** No External Clock required. +Using the BIOS configuration exercises the [ipu-acpi](../../drivers/media/platform/intel/) and [max9x](../../drivers/media/i2c/max9x/) drivers. + +### Sensor ACPI HID + +Use the sensor ACPI HID in the **Custom HID** field. + +| Vendor | Sensor ACPI HID | +|-----------------|:---------------:| +| D3 Embedded | INTC10C0 | + +### BIOS Settings for IPU6EPMTL + +
+2x AR0234 -## MIPI Camera Configuration +> **Note:** No External Clock required. -#### Setup for IPU6EPMTL +>**BIOS Camera Option 1 Path:**\ + `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Camera Configuration` -> `Control Logic 1` -> **Enabled** -Config path: `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Camera Configuration` + >**BIOS Camera Option 2 Path:**\ + `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Camera Configuration` -> `Control Logic 2` -> **Enabled** | | Control Logic 1 | Control Logic 2 | |--- |--- | --- | @@ -56,6 +66,12 @@ Config path: `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Cam | Active Value | 1 | 1 | | Initial Value | 1 | 1 | +>**BIOS Camera Option 1 Path:**\ + `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Camera Configuration` -> `Camera Option 1` -> **Enabled** + + >**BIOS Camera Option 2 Path:**\ + `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Camera Configuration` -> `Camera Option 2` -> **Enabled** + | | Camera1 Link options | Camera2 Link options | |--- |--- | --- | | Sensor Model | User Custom | User Custom | @@ -86,9 +102,20 @@ Config path: `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Cam | Customize Device ID Number | 19 | 19 | | Flash Driver Selection | Disabled | Disabled | -#### Setup for IPU75XA +
+ +### BIOS Settings for IPU75XA + +
+2x AR0234 + +> **Note:** No External Clock required. + +>**BIOS Camera Option 1 Path:**\ + `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Camera Configuration` -> `Control Logic 1` -> **Enabled** -Config path: `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Camera Configuration` + >**BIOS Camera Option 2 Path:**\ + `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Camera Configuration` -> `Control Logic 2` -> **Enabled** | | Control Logic 1 | Control Logic 2 | |--- |--- |--- | @@ -106,6 +133,12 @@ Config path: `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Cam | Initial Value | 0 | 0 | | Interrupt GPIO | Disabled | Disabled | +>**BIOS Camera Option 1 Path:**\ + `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Camera Configuration` -> `Camera Option 1` -> **Enabled** + + >**BIOS Camera Option 2 Path:**\ + `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Camera Configuration` -> `Camera Option 2` -> **Enabled** + | | Camera1 Link options | Camera2 Link options | |--- |--- | --- | | Sensor Model | User Custom | User Custom | @@ -137,9 +170,20 @@ Config path: `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Cam | Customize Device ID Number | 19 | 19 | | Flash Driver Selection | Disabled | Disabled | -#### Setup for IPU8 +
+ +### BIOS Settings for IPU8 + +
+2x AR0234 + +> **Note:** No External Clock required. + +>**BIOS Camera Option 1 Path:**\ + `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Camera Configuration` -> `Control Logic 1` -> **Enabled** -Config path: `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Camera Configuration` + >**BIOS Camera Option 2 Path:**\ + `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Camera Configuration` -> `Control Logic 2` -> **Enabled** | | Control Logic 1 | Control Logic 2 | |--- |--- |--- | @@ -157,6 +201,12 @@ Config path: `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Cam | Initial Value | 0 | 0 | | Interrupt GPIO | Disabled | Disabled | +>**BIOS Camera Option 1 Path:**\ + `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Camera Configuration` -> `Camera Option 1` -> **Enabled** + + >**BIOS Camera Option 2 Path:**\ + `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Camera Configuration` -> `Camera Option 2` -> **Enabled** + | | Camera1 Link options | Camera2 Link options | |--- |--- | --- | | Sensor Model | User Custom | User Custom | @@ -188,52 +238,94 @@ Config path: `Intel Advanced Menu`->`System Agent (SA) Configuration`->`MIPI Cam | Customize Device ID Number | 19 | 19 | | Flash Driver Selection | Disabled | Disabled | -## Camera Configuration File Setup +
-#### Setup for IPU6EPMTL +--- +## Libcamhal Configuration File Setup (BIOS Configured Systems) + +#### Libcamhal Config for IPU6EPMTL -Replace target system with recommended [ipu6epmtl](../../config/ar0234/ipu6epmtl) setting +
+2x MIPI sensors use case -> **Note:** Add config below only if using x2 MIPI sensors. +Please use recommended config from [ipu6epmtl](../../config/ar0234/ipu6epmtl). sudo cp -r ../../config/ar0234/ipu6epmtl /etc/camera sudo sed -i '/availableSensors/c\ ' /etc/camera/ipu6epmtl/libcamhal_profile.xml -#### Setup for IPU75XA +
+ +#### Libcamhal Config for IPU75XA -Replace target system with recommended [ipu75xa](../../config/ar0234/ipu75xa) setting +
+2x MIPI sensors use case -> **Note:** Add config below only if using x2 MIPI sensors. +Please use recommended config from [ipu75xa](../../config/ar0234/ipu75xa). sudo cp -r ../../config/ar0234/ipu75xa /etc/camera -#### Setup for IPU8 +
-Replace target system with recommended [ipu8](../../config/ar0234/ipu8) setting +#### Libcamhal Config for IPU8 + +
+2x MIPI sensors use case -> **Note:** Add config below only if using x2 MIPI sensors. +Please use recommended config from [ipu8](../../config/ar0234/ipu8). sudo cp -r ../../config/ar0234/ipu8 /etc/camera -## Camera Tuning File Setup +
+ +--- +## Libcamhal Tuning File Setup -#### Setup for IPU6EPMTL +RAW sensor required respective tuning configuration files below for streaming: -Import [AR0234_TGL_10bits.aiqb](https://github.com/intel/ipu6-camera-hal/blob/iotg_ipu6/config/linux/ipu6epmtl/AR0234_TGL_10bits.aiqb) into target system `/etc/camera/ipu6epmtl` +1. Arithmetic Image Quality Binary (AIQB) +2. Graph Setting Configuration (GCSS) -#### Setup for IPU75XA +#### Libcamhal Tuning for IPU6EPMTL -> **TODO:** No action needed for now, will revisit once AIQB config available in [ipu7-camera-hal](https://github.com/intel/ipu7-camera-hal/tree/main/config/linux/ipu75xa). +1. Download [AR0234_TGL_10bits.aiqb](https://github.com/intel/ipu6-camera-hal/blob/iotg_ipu6/config/linux/ipu6epmtl/AR0234_TGL_10bits.aiqb) +2. Download [graph_settings_ar0234.xml](https://github.com/intel/ipu6-camera-hal/blob/iotg_ipu6/config/linux/ipu6epmtl/gcss/graph_settings_ar0234.xml) +3. Copy the files into target system: -#### Setup for IPU8 + ``` + sudo cp AR0234_TGL_10bits.aiqb /etc/camera/ipu6epmtl + sudo cp graph_settings_ar0234.xml /etc/camera/ipu6epmtl/gcss + ``` -> **TODO:** No action needed for now, will revisit once AIQB config available in [ipu7-camera-hal](https://github.com/intel/ipu7-camera-hal/tree/main/config/linux/ipu8). +#### Libcamhal Tuning for IPU75XA -## Environment Setup +The tuning files are available in [ipu75xa](../../config/ar0234/ipu75xa). In the future, this will be hosted at [here](https://github.com/intel/ipu7-camera-hal/tree/main/config/linux/ipu75xa). -> **Note:** PSYS library requires superuser access, please login as root to run the sample commands given below. +#### Libcamhal Tuning for IPU8 + +The tuning files are available in [ipu8](../../config/ar0234/ipu8). In the future, this will be hosted at [here](https://github.com/intel/ipu7-camera-hal/tree/main/config/linux/ipu8). + +--- +## Sensor Verification + +After completing the setup, verify that the sensor is probed and registered with the V4L2 framework: + + media-ctl -p + +When using the BIOS configuration, the output for a single camera should look like the example below. + +![media-ctl output](img-entity-ar0234-mipi.png) + +--- +## Stream Verification + +Follow the sections below to verify streaming: + +- [Environment Setup](#environment-setup) +- [Stream with GStreamer icamerasrc](#stream-with-gstreamer-icamerasrc) -Export environment variables below +### Environment Setup + +Export the environment variables below: unset XDG_RUNTIME_DIR export DISPLAY=:0; xhost + @@ -247,28 +339,20 @@ Export environment variables below export logSink=terminal rm -rf ~/.cache/gstreamer-1.0 -(Required for IPU6 only) Configure isys_freq value +For IPU6 only, configure the `isys_freq` value: sudo bash -c 'echo "options intel-ipu6 isys_freq_override=475" >> /etc/modprobe.d/ipu.conf' -## Sensor Verification - -Upon setup completion, verify sensor with: - - media-ctl -p - -![media-ctl output](img-entity-ar0234-mipi.png) - -## Sample Userspace Command +### Stream with GStreamer icamerasrc > **Note:** PSYS library requires superuser access, please login as root to run the sample commands given below. -#### Sensor Device Selection +#### Device Name Selection -| MIPI Port | Command Pipeline | -|---|---| -| CRD1 | gst-launch-1.0 icamerasrc num-buffers=-1 scene-mode=normal device-name=ar0234-a printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=NV12,width=1280,height=960' ! glimagesink sync=false | -| CRD2 | gst-launch-1.0 icamerasrc num-buffers=-1 scene-mode=normal device-name=ar0234-b printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=NV12,width=1280,height=960' ! glimagesink sync=false | +| MIPI Port | Supported Device-name | Command Pipeline | +|---|---|---| +| CRD1 | ar0234-a | gst-launch-1.0 icamerasrc num-buffers=-1 scene-mode=normal device-name=ar0234-a printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=NV12,width=1280,height=960' ! glimagesink sync=false | +| CRD2 | ar0234-b | gst-launch-1.0 icamerasrc num-buffers=-1 scene-mode=normal device-name=ar0234-b printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=NV12,width=1280,height=960' ! glimagesink sync=false | > **Note**: Refer to icamerasrc device-name property for more sensor details. @@ -293,24 +377,29 @@ Upon setup completion, verify sensor with: |---|---| | NV12 | gst-launch-1.0 icamerasrc num-buffers=-1 scene-mode=normal device-name=ar0234-a printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=NV12,width=1280,height=960' ! glimagesink sync=false | -#### Number of Stream (Single Stream / Multi Stream) Selection +#### Multi-Stream Selection -| Number of Stream | Command Pipeline | +| Number of Streams | Command Pipeline | |---|---| | x1 | gst-launch-1.0 icamerasrc num-buffers=-1 scene-mode=normal device-name=ar0234-a printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=NV12,width=1280,height=960' ! glimagesink sync=false | | x2 | gst-launch-1.0 icamerasrc num-buffers=-1 scene-mode=normal device-name=ar0234-a printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=NV12,width=1280,height=960' ! glimagesink sync=false icamerasrc num-buffers=-1 scene-mode=normal device-name=ar0234-b printfps=true io-mode=dma_mode ! 'video/x-raw(memory:DMABuf),drm-format=NV12,width=1280,height=960' ! glimagesink sync=false | +--- ## Streaming Result -| Number of Stream | IO Mode | FPS Result | -|--- |--- |--- | -| x1 | USERPTR | 30 | -| x1 | DMA MODE | 30 | -| x2 | USERPTR | 30 | -| x2 | DMA MODE | 30 | +| Number of Streams | IO Mode | FPS Result |ipu6ep|ipu6epmtl|ipu75xa|ipu8| +|:----------------:|:--------:|:----------:|:----:|:-------:|:-----:|:--:| +| x1 | USERPTR | 30 |❌|✅|✅|✅| +| x2 | USERPTR | 30 |❌|✅|✅|✅| +| x1 | DMA MODE | 30 |❌|✅|✅|✅| +| x2 | DMA MODE | 30 |❌|✅|✅|✅| -> **Note**: Refer to [README.md](https://github.com/intel-innersource/drivers.camera.scaling.sensor) for system setup prerequisite. +### Highest Bandwidth Configuration ---- +The highest-bandwidth configurations tested are listed below. + 1. CPHY 2-lane per MIPI Port + - 2x 1280x960 @ 30fps (default) + +--- [↑ Back to Top](#description) From 7cec0ea1e3296a34e87ce4b9c19c80ebbcf4e8b2 Mon Sep 17 00:00:00 2001 From: "Goh, Wei Khang1" Date: Fri, 4 Sep 2026 15:21:43 +0800 Subject: [PATCH 12/12] README: Update dependency commits and remove obsolete AR0234 workaround - Update IPU75XA/IPU8 ipu-camera-bins and ipu-camera-hal pinned commits to the latest tested revisions tag:20260618_0455_374. - Remove the IPU7/IPU8 AR0234 RAW sensor workaround section, which is no longer required. - Fix stale anchor links to the renamed 'ACPI Setup - BIOS Configuration' and 'Stream Verification' sections in userspace-mipi.md. Signed-off-by: Goh, Wei Khang1 --- README.md | 28 ++++------------------------ 1 file changed, 4 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 43ee673f..713da4a4 100644 --- a/README.md +++ b/README.md @@ -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 |
@@ -226,26 +226,6 @@ Build and install these software dependencies in your target system: git checkout main git submodule update --init --recursive -
- Workaround for IPU7/IPU8 AR0234 RAW sensor - -> **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 .. - -
- **Build and install** modules using DKMS sudo dkms remove ipu-camera-sensor/0.1 @@ -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)

(back to Setup Procedure)

@@ -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)

(back to Setup Procedure)