요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/spi/qcom,spi-geni-qcom.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: GENI based Qualcomm Universal Peripheral (QUP) Serial Peripheral Interface (SPI)
maintainers:
- Andy Gross <agross@kernel.org>
- Bjorn Andersson <bjorn.andersson@linaro.org>
- Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
description:
The QUP v3 core is a GENI based AHB slave that provides a common data path
(an output FIFO and an input FIFO) for serial peripheral interface (SPI)
mini-core.
SPI in master mode supports up to 50MHz, up to four chip selects,
programmable data path from 4 bits to 32 bits and numerous protocol variants.
SPI Controller nodes must be child of GENI based Qualcomm Universal
Peripharal. Please refer GENI based QUP wrapper controller node bindings
described in Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml.
allOf:
- $ref: /schemas/spi/spi-controller.yaml#
- $ref: /schemas/soc/qcom/qcom,se-common-props.yaml#
properties:
compatible:
const: qcom,geni-spi
clocks:
maxItems: 1
clock-names:
const: se
dmas:
maxItems: 2
dma-names:
items:
- const: tx
- const: rx
interconnects:
minItems: 2
maxItems: 3
interconnect-names:
minItems: 2
items:
- const: qup-core
- const: qup-config
- const: qup-memory
interrupts:
maxItems: 1
operating-points-v2: true
power-domains:
maxItems: 1
reg:
maxItems: 1
required:
- compatible
- clocks
- clock-names
- interrupts
- reg
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/clock/qcom,gcc-sc7180.h>
#include <dt-bindings/interconnect/qcom,sc7180.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/power/qcom-rpmpd.h>
spi@880000 {
compatible = "qcom,geni-spi";
reg = <0x00880000 0x4000>;
clock-names = "se";
clocks = <&gcc GCC_QUPV3_WRAP0_S0_CLK>;
pinctrl-names = "default";
pinctrl-0 = <&qup_spi0_default>;
interrupts = <GIC_SPI 601 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
power-domains = <&rpmhpd SC7180_CX>;
operating-points-v2 = <&qup_opp_table>;
interconnects = <&qup_virt MASTER_QUP_CORE_0 0 &qup_virt SLAVE_QUP_CORE_0 0>,
<&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_0 0>;
interconnect-names = "qup-core", "qup-config";
};
- |
#include <dt-bindings/dma/qcom-gpi.h>
spi@884000 {
compatible = "qcom,geni-spi";
reg = <0x00884000 0x4000>;
clock-names = "se";
clocks = <&gcc GCC_QUPV3_WRAP0_S1_CLK>;
dmas = <&gpi_dma0 0 1 QCOM_GPI_SPI>,
<&gpi_dma0 1 1 QCOM_GPI_SPI>;
dma-names = "tx", "rx";
pinctrl-names = "default";
pinctrl-0 = <&qup_spi1_default>;
interrupts = <GIC_SPI 602 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
};
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
GENI 기반 QUP SPI 개요
1-29이 GPL-2.0 또는 BSD-2-Clause YAML schema는 GENI 기반 Qualcomm Universal Peripheral(QUP) Serial Peripheral Interface(SPI)를 정의합니다. Schema ID는 `http://devicetree.org/schemas/spi/qcom,spi-geni-qcom.yaml#`이며 maintainer는 Andy Gross, Bjorn Andersson, Krzysztof Kozlowski입니다.
QUP v3 core는 GENI 기반 AHB slave입니다. SPI mini-core를 위해 output FIFO와 input FIFO로 구성된 공통 data path를 제공합니다. Master mode SPI는 최대 `50MHz`, 최대 네 chip select, `4 bits`부터 `32 bits`까지 프로그래밍 가능한 data path와 여러 protocol 변형을 지원합니다.
SPI controller node는 GENI 기반 Qualcomm Universal Peripheral의 child여야 합니다. GENI 기반 QUP wrapper controller node binding은 `Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml`을 참조합니다. 이 schema는 공통 `/schemas/spi/spi-controller.yaml#`과 Qualcomm 공통 serial-engine 속성 `/schemas/soc/qcom/qcom,se-common-props.yaml#`을 함께 상속합니다.
Compatible, clock과 DMA
30-46`compatible`은 `qcom,geni-spi`로 고정됩니다. `clocks`는 최대 한 항목이며 `clock-names`는 `se`여야 합니다.
`dmas`는 최대 두 항목입니다. `dma-names` 배열은 첫 항목 `tx`, 둘째 항목 `rx` 순서를 사용하므로 두 DMA specifier의 전송 방향과 이름이 일치해야 합니다.
Interconnect와 실행 자원
47-69`interconnects`는 최소 두 항목, 최대 세 항목입니다. 대응하는 `interconnect-names`도 최소 두 항목이며 순서대로 `qup-core`, `qup-config`, 선택적인 `qup-memory`를 사용합니다.
`interrupts`, `power-domains`, `reg`는 각각 최대 한 항목입니다. `operating-points-v2` 속성도 허용되어 serial engine의 성능 상태 표를 연결할 수 있습니다.
필수 속성과 추가 속성 제한
70-78필수 속성은 `compatible`, `clocks`, `clock-names`, `interrupts`, `reg`입니다. `unevaluatedProperties: false`는 이 schema와 상속한 두 schema에서 평가되지 않은 추가 속성을 허용하지 않습니다.
Interconnect와 GPI DMA 예제
79-119첫 예제는 SC7180의 `spi@880000` serial engine입니다. `GCC_QUPV3_WRAP0_S0_CLK`, `GIC_SPI 601`, CX power domain과 OPP table을 연결하고 `qup-core`, `qup-config` 두 interconnect path를 지정합니다.
#include <dt-bindings/clock/qcom,gcc-sc7180.h>
#include <dt-bindings/interconnect/qcom,sc7180.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/power/qcom-rpmpd.h>
spi@880000 {
compatible = "qcom,geni-spi";
reg = <0x00880000 0x4000>;
clock-names = "se";
clocks = <&gcc GCC_QUPV3_WRAP0_S0_CLK>;
pinctrl-names = "default";
pinctrl-0 = <&qup_spi0_default>;
interrupts = <GIC_SPI 601 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
power-domains = <&rpmhpd SC7180_CX>;
operating-points-v2 = <&qup_opp_table>;
interconnects = <&qup_virt MASTER_QUP_CORE_0 0 &qup_virt SLAVE_QUP_CORE_0 0>,
<&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_0 0>;
interconnect-names = "qup-core", "qup-config";
};
둘째 예제는 `spi@884000`에 GPI DMA를 연결합니다. 두 DMA specifier가 모두 protocol selector `QCOM_GPI_SPI`를 사용하며 이름은 `tx`, `rx` 순서입니다. Interrupt는 `GIC_SPI 602`입니다.
#include <dt-bindings/dma/qcom-gpi.h>
spi@884000 {
compatible = "qcom,geni-spi";
reg = <0x00884000 0x4000>;
clock-names = "se";
clocks = <&gcc GCC_QUPV3_WRAP0_S1_CLK>;
dmas = <&gpi_dma0 0 1 QCOM_GPI_SPI>,
<&gpi_dma0 1 1 QCOM_GPI_SPI>;
dma-names = "tx", "rx";
pinctrl-names = "default";
pinctrl-0 = <&qup_spi1_default>;
interrupts = <GIC_SPI 602 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
};
요약과 해설
qcom,spi-geni-qcom.yaml:1-119GENI 기반 QUP SPI의 clock·DMA·interconnect와 두 구성 예제를 설명합니다. 접을 수 있는 영어 원문 전체와 줄 좌표를 보존하고, 한국어 전문 번역에서는 compatible·property·phandle·clock/DMA/interconnect 순서·수치·예제 코드를 원형대로 유지합니다.