요약·해설, 영어 원문, 전체 번역을 구분해 실었습니다. API 이름, 코드 심벌, 소스 경로는 원문 표기를 유지합니다.
1. 요약·해설
원문의 핵심 내용을 정리하고 커널 프로그래밍에 필요한 설명을 덧붙였습니다. 아래의 전체 번역과는 별도로 작성한 해설입니다.
2. 영어 원문 전체
번역에 사용한 Linux v6.18.37 원문입니다. 줄 번호는 해당 버전의 소스 파일을 기준으로 합니다.
원문 전체 펼치기
* UCTL SATA controller glue
UCTL is the bridge unit between the I/O interconnect (an internal bus)
and the SATA AHCI host controller (UAHC). It performs the following functions:
- provides interfaces for the applications to access the UAHC AHCI
registers on the CN71XX I/O space.
- provides a bridge for UAHC to fetch AHCI command table entries and data
buffers from Level 2 Cache.
- posts interrupts to the CIU.
- contains registers that:
- control the behavior of the UAHC
- control the clock/reset generation to UAHC
- control endian swapping for all UAHC registers and DMA accesses
Properties:
- compatible: "cavium,octeon-7130-sata-uctl"
Compatibility with the cn7130 SOC.
- reg: The base address of the UCTL register bank.
- #address-cells, #size-cells, ranges and dma-ranges must be present and hold
suitable values to map all child nodes.
Example:
uctl@118006c000000 {
compatible = "cavium,octeon-7130-sata-uctl";
reg = <0x11800 0x6c000000 0x0 0x100>;
ranges; /* Direct mapping */
dma-ranges;
#address-cells = <2>;
#size-cells = <2>;
sata: sata@16c0000000000 {
compatible = "cavium,octeon-7130-ahci";
reg = <0x16c00 0x00000000 0x0 0x200>;
interrupt-parent = <&cibsata>;
interrupts = <2 4>; /* Bit: 2, level */
};
};
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미에 맞춰 전체 내용을 번역했습니다. 코드, 함수명, 코드 심벌, URL은 원문 표기를 유지합니다.
SATA UCTL bridge 기능
1-14UCTL은 internal I/O interconnect와 SATA AHCI host controller(UAHC) 사이의 bridge unit입니다. Application이 CN71XX I/O space의 UAHC AHCI register에 접근할 interface를 제공하고, UAHC가 Level 2 Cache에서 AHCI command-table entry와 data buffer를 가져오도록 bridge 역할을 합니다.
또한 CIU에 interrupt를 post하며 UAHC 동작, UAHC clock/reset 생성, 모든 UAHC register와 DMA access의 endian swapping을 제어하는 register를 포함합니다.
UCTL이 I/O register 접근, L2 data fetch, interrupt, clock/reset을 한곳에서 중개합니다.
SATA UCTL 주소와 자식 매핑
15-25`compatible`은 `cavium,octeon-7130-sata-uctl`이며 cn7130 SoC와 호환됩니다. `reg`는 UCTL register bank base address입니다.
`#address-cells`, `#size-cells`, `ranges`, `dma-ranges`는 모두 있어야 하며 모든 child node를 매핑할 수 있는 적절한 값을 가져야 합니다.
Direct-mapped AHCI 예제
26-42예제는 UCTL register `0x118006c000000`, 빈 `ranges`와 `dma-ranges`, 두 cell 주소·크기를 사용합니다. SATA 자식은 `cavium,octeon-7130-ahci`, 주소 `0x16c0000000000`, CIB SATA bit 2의 level interrupt `<2 4>`를 지정합니다.
uctl@118006c000000 {
compatible = "cavium,octeon-7130-sata-uctl";
reg = <0x11800 0x6c000000 0x0 0x100>;
ranges; /* Direct mapping */
dma-ranges;
#address-cells = <2>;
#size-cells = <2>;
sata: sata@16c0000000000 {
compatible = "cavium,octeon-7130-ahci";
reg = <0x16c00 0x00000000 0x0 0x200>;
interrupt-parent = <&cibsata>;
interrupts = <2 4>; /* Bit: 2, level */
};
};
요약과 해설
sata-uctl.txt:1-42AHCI register·L2 data·clock/reset·endian 제어와 CIB interrupt를 설명합니다.