요약·해설과 원문, 전문 번역을 서로 분리했습니다. 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/spi-mux.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Generic SPI Multiplexer
description: |
This binding describes a SPI bus multiplexer to route the SPI chip select
signals. This can be used when you need more devices than the SPI controller
has chip selects available. An example setup is shown in ASCII art; the actual
setting of the multiplexer to a channel needs to be done by a specific SPI mux
driver.
MOSI /--------------------------------+--------+--------+--------\
MISO |/------------------------------+|-------+|-------+|-------\|
SCL ||/----------------------------+||------+||------+||------\||
||| ||| ||| ||| |||
+------------+ ||| ||| ||| |||
| SoC ||| | +-+++-+ +-+++-+ +-+++-+ +-+++-+
| ||| | | dev | | dev | | dev | | dev |
| +--+++-+ | CS-X +------+\ +--+--+ +--+--+ +--+--+ +--+--+
| | SPI +-|-------+ Mux |\\ CS-0 | | | |
| +------+ | +--+---+\\\-------/ CS-1 | | |
| | | \\\----------------/ CS-2 | |
| +------+ | | \\-------------------------/ CS-3 |
| | ? +-|----------/ \----------------------------------/
| +------+ |
+------------+
allOf:
- $ref: /schemas/spi/spi-controller.yaml#
- $ref: /schemas/spi/spi-peripheral-props.yaml#
maintainers:
- Chris Packham <[email protected]>
properties:
compatible:
const: spi-mux
mux-controls:
maxItems: 1
required:
- compatible
- reg
- mux-controls
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
mux: mux-controller {
compatible = "gpio-mux";
#mux-control-cells = <0>;
mux-gpios = <&gpio0 3 GPIO_ACTIVE_HIGH>;
};
spi {
#address-cells = <1>;
#size-cells = <0>;
spi@0 {
compatible = "spi-mux";
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
spi-max-frequency = <100000000>;
mux-controls = <&mux>;
flash@0 {
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <40000000>;
};
sensor@1 {
compatible = "bosch,bme680";
reg = <1>;
spi-max-frequency = <10000000>;
};
};
};
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
Generic SPI multiplexer 개요
1-15이 GPL-2.0 또는 BSD-2-Clause YAML binding은 SPI chip-select signal을 경로 지정하는 generic SPI bus multiplexer를 설명합니다. SPI controller가 제공하는 chip select 수보다 더 많은 device가 필요할 때 사용하며, 특정 SPI mux driver가 multiplexer를 원하는 channel로 실제 설정해야 합니다.
공유 bus와 chip-select 분배 구조
16-30원문의 ASCII 그림에서 MOSI, MISO, SCL은 SoC의 SPI controller와 네 peripheral device가 공유합니다. Controller의 `CS-X`는 mux 입력으로 들어가고, 별도의 SoC 제어 block이 mux channel을 고르면 해당 출력 `CS-0`, `CS-1`, `CS-2`, `CS-3` 중 하나가 대응 device로 전달됩니다.
공유 data/clock signal과 multiplexed chip-select 경로를 분리해 나타낸 구조입니다.
상속 schema와 필수 속성
31-51이 binding은 `/schemas/spi/spi-controller.yaml#`과 `/schemas/spi/spi-peripheral-props.yaml#`을 모두 참조합니다. Maintainer는 Chris Packham입니다.
`compatible`은 `spi-mux`로 고정되고 `mux-controls`는 최대 한 항목입니다. 필수 속성은 `compatible`, `reg`, `mux-controls`이며 `unevaluatedProperties: false`로 평가되지 않은 추가 속성을 금지합니다.
GPIO mux와 두 SPI peripheral 예제
52-87예제는 GPIO 3을 active-high select line으로 쓰는 `gpio-mux` controller를 만들고, SPI bus의 chip select 0에 `spi-mux`를 배치합니다. Mux의 최대 주파수는 100 MHz이며 channel 0의 JEDEC SPI NOR는 40 MHz, channel 1의 Bosch BME680 sensor는 10 MHz로 동작합니다.
#include <dt-bindings/gpio/gpio.h>
mux: mux-controller {
compatible = "gpio-mux";
#mux-control-cells = <0>;
mux-gpios = <&gpio0 3 GPIO_ACTIVE_HIGH>;
};
spi {
#address-cells = <1>;
#size-cells = <0>;
spi@0 {
compatible = "spi-mux";
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
spi-max-frequency = <100000000>;
mux-controls = <&mux>;
flash@0 {
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <40000000>;
};
sensor@1 {
compatible = "bosch,bme680";
reg = <1>;
spi-max-frequency = <10000000>;
};
};
};
요약과 해설
spi-mux.yaml:1-87SPI mux의 공유 bus와 multiplexed chip-select 경로, 필수 mux control을 설명합니다. 접을 수 있는 영어 원문 전체와 줄 좌표를 보존하고, 한국어 전문 번역에서는 compatible·property·symbol·source path·수치·예제 코드를 원형대로 유지합니다.