← Documents Documentation/devicetree/bindings/spi/spi-mux.yaml GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings / SPI

Generic SPI multiplexer

SPI mux의 공유 bus와 multiplexed chip-select 경로, 필수 mux control을 설명합니다.

Source pathDocumentation/devicetree/bindings/spi/spi-mux.yaml
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약과 해설

spi-mux.yaml:1-87

SPI mux의 공유 bus와 multiplexed chip-select 경로, 필수 mux control을 설명합니다. 접을 수 있는 영어 원문 전체와 줄 좌표를 보존하고, 한국어 전문 번역에서는 compatible·property·symbol·source path·수치·예제 코드를 원형대로 유지합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/spi/spi-mux.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Generic SPI Multiplexer
8
9 description: |
10 This binding describes a SPI bus multiplexer to route the SPI chip select
11 signals. This can be used when you need more devices than the SPI controller
12 has chip selects available. An example setup is shown in ASCII art; the actual
13 setting of the multiplexer to a channel needs to be done by a specific SPI mux
14 driver.
15
16 MOSI /--------------------------------+--------+--------+--------\
17 MISO |/------------------------------+|-------+|-------+|-------\|
18 SCL ||/----------------------------+||------+||------+||------\||
19 ||| ||| ||| ||| |||
20 +------------+ ||| ||| ||| |||
21 | SoC ||| | +-+++-+ +-+++-+ +-+++-+ +-+++-+
22 | ||| | | dev | | dev | | dev | | dev |
23 | +--+++-+ | CS-X +------+\ +--+--+ +--+--+ +--+--+ +--+--+
24 | | SPI +-|-------+ Mux |\\ CS-0 | | | |
25 | +------+ | +--+---+\\\-------/ CS-1 | | |
26 | | | \\\----------------/ CS-2 | |
27 | +------+ | | \\-------------------------/ CS-3 |
28 | | ? +-|----------/ \----------------------------------/
29 | +------+ |
30 +------------+
31
32 allOf:
33 - $ref: /schemas/spi/spi-controller.yaml#
34 - $ref: /schemas/spi/spi-peripheral-props.yaml#
35
36 maintainers:
37 - Chris Packham <[email protected]>
38
39 properties:
40 compatible:
41 const: spi-mux
42
43 mux-controls:
44 maxItems: 1
45
46 required:
47 - compatible
48 - reg
49 - mux-controls
50
51 unevaluatedProperties: false
52
53 examples:
54 - |
55 #include <dt-bindings/gpio/gpio.h>
56 mux: mux-controller {
57 compatible = "gpio-mux";
58 #mux-control-cells = <0>;
59
60 mux-gpios = <&gpio0 3 GPIO_ACTIVE_HIGH>;
61 };
62
63 spi {
64 #address-cells = <1>;
65 #size-cells = <0>;
66 spi@0 {
67 compatible = "spi-mux";
68 reg = <0>;
69 #address-cells = <1>;
70 #size-cells = <0>;
71 spi-max-frequency = <100000000>;
72
73 mux-controls = <&mux>;
74
75 flash@0 {
76 compatible = "jedec,spi-nor";
77 reg = <0>;
78 spi-max-frequency = <40000000>;
79 };
80
81 sensor@1 {
82 compatible = "bosch,bme680";
83 reg = <1>;
84 spi-max-frequency = <10000000>;
85 };
86 };
87 };
88

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로 전달됩니다.

SPI mux signal routing
경로SoC 쪽Mux 동작Peripheral 쪽
공유 bus`MOSI`, `MISO`, `SCL`Mux를 거치지 않음네 device에 병렬 연결
Chip select 입력SPI controller의 `CS-X`선택된 channel로 전달`CS-0` ~ `CS-3`
Channel 제어별도 `?` control blockMux select 입력 구동한 device의 CS 활성화
출력 대응`CS-X` 한 선1-of-4 분배device 0, 1, 2, 3

공유 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>;
        };
    };
};