요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
Hisilicon Hi3660 Mailbox Controller
Hisilicon Hi3660 mailbox controller supports up to 32 channels. Messages
are passed between processors, including application & communication
processors, MCU, HIFI, etc. Each channel is unidirectional and accessed
by using MMIO registers; it supports maximum to 8 words message.
Controller
----------
Required properties:
- compatible: : Shall be "hisilicon,hi3660-mbox"
- reg: : Offset and length of the device's register set
- #mbox-cells: : Must be 3
<&phandle channel dst_irq ack_irq>
phandle : Label name of controller
channel : Channel number
dst_irq : Remote interrupt vector
ack_irq : Local interrupt vector
- interrupts: : Contains the two IRQ lines for mailbox.
Example:
mailbox: mailbox@e896b000 {
compatible = "hisilicon,hi3660-mbox";
reg = <0x0 0xe896b000 0x0 0x1000>;
interrupts = <0x0 0xc0 0x4>,
<0x0 0xc1 0x4>;
#mbox-cells = <3>;
};
Client
------
Required properties:
- compatible : See the client docs
- mboxes : Standard property to specify a Mailbox (See ./mailbox.txt)
Cells must match 'mbox-cells' (See Controller docs above)
Optional properties
- mbox-names : Name given to channels seen in the 'mboxes' property.
Example:
stub_clock: stub_clock@e896b500 {
compatible = "hisilicon,hi3660-stub-clk";
reg = <0x0 0xe896b500 0x0 0x0100>;
#clock-cells = <1>;
mboxes = <&mailbox 13 3 0>;
};
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
Hi3660 mailbox controller
1-22HiSilicon Hi3660 mailbox controller는 최대 32개 channel을 지원하고 application processor, communication processor, MCU, HIFI 등 processor 사이에서 message를 전달합니다. 각 channel은 단방향이며 MMIO register로 접근하고 최대 8-word message를 지원합니다.
필수 `compatible`은 `hisilicon,hi3660-mbox`, `reg`는 device register set의 offset과 길이입니다. `#mbox-cells`는 3이어야 하며 specifier는 `<&phandle channel dst_irq ack_irq>` 형식입니다. `phandle`은 controller label, `channel`은 channel 번호, `dst_irq`는 remote interrupt vector, `ack_irq`는 local interrupt vector입니다. `interrupts`에는 mailbox의 두 IRQ line을 기록합니다.
`#mbox-cells = <3>` 뒤의 세 cell 의미를 순서대로 정리합니다.
Controller 예제
23-32예제 controller는 `0xe896b000`의 0x1000-byte register region과 두 IRQ line `0xc0`, `0xc1`을 사용합니다.
mailbox: mailbox@e896b000 {
compatible = "hisilicon,hi3660-mbox";
reg = <0x0 0xe896b000 0x0 0x1000>;
interrupts = <0x0 0xc0 0x4>,
<0x0 0xc1 0x4>;
#mbox-cells = <3>;
};
Hi3660 client 속성
33-43Client의 `compatible`은 해당 client 문서를 따릅니다. 필수 `mboxes`는 `./mailbox.txt`의 표준 mailbox 속성이며 cell 수와 순서는 controller의 `#mbox-cells` 정의와 일치해야 합니다. 선택적인 `mbox-names`는 `mboxes`에 나열한 channel에 이름을 붙입니다.
Stub clock client 예제
44-51예제 `hisilicon,hi3660-stub-clk` client는 mailbox channel 13, remote interrupt vector 3, local acknowledgement vector 0을 `<&mailbox 13 3 0>`으로 지정합니다.
stub_clock: stub_clock@e896b500 {
compatible = "hisilicon,hi3660-stub-clk";
reg = <0x0 0xe896b500 0x0 0x0100>;
#clock-cells = <1>;
mboxes = <&mailbox 13 3 0>;
};
요약과 해설
hisilicon,hi3660-mailbox.txt:1-51Channel, remote IRQ, local acknowledgement IRQ의 순서를 보존합니다.