요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
Device Tree Clock bindings for ATL (Audio Tracking Logic) of DRA7 SoC.
The ATL IP is used to generate clock to be used to synchronize baseband and
audio codec. A single ATL IP provides four ATL clock instances sharing the same
functional clock but can be configured to provide different clocks.
ATL can maintain a clock averages to some desired frequency based on the bws/aws
signals - can compensate the drift between the two ws signal.
In order to provide the support for ATL and its output clocks (which can be used
internally within the SoC or external components) two sets of bindings is needed:
Clock tree binding:
This binding uses the common clock binding[1].
To be able to integrate the ATL clocks with DT clock tree.
Provides ccf level representation of the ATL clocks to be used by drivers.
Since the clock instances are part of a single IP this binding is used as a node
for the DT clock tree, the IP driver is needed to handle the actual configuration
of the IP.
[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
Required properties:
- compatible : shall be "ti,dra7-atl-clock"
- #clock-cells : from common clock binding; shall be set to 0.
- clocks : link phandles to functional clock of ATL
Binding for the IP driver:
This binding is used to configure the IP driver which is going to handle the
configuration of the IP for the ATL clock instances.
Required properties:
- compatible : shall be "ti,dra7-atl"
- reg : base address for the ATL IP
- ti,provided-clocks : List of phandles to the clocks associated with the ATL
- clocks : link phandles to functional clock of ATL
- clock-names : Shall be set to "fck"
- ti,hwmods : Shall be set to "atl"
Optional properties:
Configuration of ATL instances:
- atl{0/1/2/3} {
- bws : Baseband word select signal selection
- aws : Audio word select signal selection
};
For valid word select signals, see the dt-bindings/clock/ti-dra7-atl.h include
file.
Examples:
/* clock bindings for atl provided clocks */
atl_clkin0_ck: atl_clkin0_ck {
#clock-cells = <0>;
compatible = "ti,dra7-atl-clock";
clocks = <&atl_gfclk_mux>;
};
atl_clkin1_ck: atl_clkin1_ck {
#clock-cells = <0>;
compatible = "ti,dra7-atl-clock";
clocks = <&atl_gfclk_mux>;
};
atl_clkin2_ck: atl_clkin2_ck {
#clock-cells = <0>;
compatible = "ti,dra7-atl-clock";
clocks = <&atl_gfclk_mux>;
};
atl_clkin3_ck: atl_clkin3_ck {
#clock-cells = <0>;
compatible = "ti,dra7-atl-clock";
clocks = <&atl_gfclk_mux>;
};
/* binding for the IP */
atl: atl@4843c000 {
compatible = "ti,dra7-atl";
reg = <0x4843c000 0x3ff>;
ti,hwmods = "atl";
ti,provided-clocks = <&atl_clkin0_ck>, <&atl_clkin1_ck>,
<&atl_clkin2_ck>, <&atl_clkin3_ck>;
clocks = <&atl_gfclk_mux>;
clock-names = "fck";
};
#include <dt-bindings/clock/ti-dra7-atl.h>
&atl {
atl2 {
bws = <DRA7_ATL_WS_MCASP2_FSX>;
aws = <DRA7_ATL_WS_MCASP3_FSX>;
};
};
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
DRA7 Audio Tracking Logic
1-20DRA7 SoC의 ATL(Audio Tracking Logic) clock 바인딩입니다. ATL은 baseband와 audio codec을 동기화할 clock을 생성합니다. 하나의 ATL IP가 같은 functional clock을 공유하는 ATL clock instance 네 개를 제공하지만 각 instance는 서로 다른 output을 만들 수 있습니다.
ATL은 `bws`와 `aws` signal을 기준으로 원하는 평균 frequency를 유지하여 두 word-select signal 사이의 drift를 보상할 수 있습니다.
SoC 내부 또는 외부 component가 사용할 output clock을 지원하려면 clock-tree 바인딩과 IP-driver 바인딩 두 세트가 필요합니다. Clock-tree node는 CCF 수준에서 ATL clock을 표현하고 실제 IP 설정은 별도 IP driver가 처리합니다.
공유 functional clock과 word-select feedback으로 네 tracking clock을 구성합니다.
Clock-tree node와 IP node 속성
21-38Clock-tree provider의 `compatible`은 `ti,dra7-atl-clock`, `#clock-cells`는 0이며 `clocks`에는 ATL functional clock phandle을 연결합니다.
IP driver node의 `compatible`은 `ti,dra7-atl`, `reg`는 ATL IP base address입니다. `ti,provided-clocks`에는 네 ATL output clock phandle을, `clocks`에는 functional clock을, `clock-names`에는 `fck`를, `ti,hwmods`에는 `atl`을 지정합니다.
Clock tree 표현과 hardware IP 설정의 책임을 분리합니다.
ATL instance 설정
39-48선택적인 `atl0`, `atl1`, `atl2`, `atl3` child가 각 instance를 설정합니다. `bws`는 baseband word-select signal을, `aws`는 audio word-select signal을 선택합니다.
유효한 word-select 상수는 `dt-bindings/clock/ti-dra7-atl.h` include file에 정의되어 있습니다.
네 output과 ATL2 tracking 예제
49-94첫 예제는 `atl_gfclk_mux`를 공유 parent로 쓰는 네 0-cell ATL clock node를 만들고, IP node의 `ti,provided-clocks`에 네 phandle을 모두 연결합니다.
/* clock bindings for atl provided clocks */
atl_clkin0_ck: atl_clkin0_ck {
#clock-cells = <0>;
compatible = "ti,dra7-atl-clock";
clocks = <&atl_gfclk_mux>;
};
atl_clkin1_ck: atl_clkin1_ck {
#clock-cells = <0>;
compatible = "ti,dra7-atl-clock";
clocks = <&atl_gfclk_mux>;
};
atl_clkin2_ck: atl_clkin2_ck {
#clock-cells = <0>;
compatible = "ti,dra7-atl-clock";
clocks = <&atl_gfclk_mux>;
};
atl_clkin3_ck: atl_clkin3_ck {
#clock-cells = <0>;
compatible = "ti,dra7-atl-clock";
clocks = <&atl_gfclk_mux>;
};
/* binding for the IP */
atl: atl@4843c000 {
compatible = "ti,dra7-atl";
reg = <0x4843c000 0x3ff>;
ti,hwmods = "atl";
ti,provided-clocks = <&atl_clkin0_ck>, <&atl_clkin1_ck>,
<&atl_clkin2_ck>, <&atl_clkin3_ck>;
clocks = <&atl_gfclk_mux>;
clock-names = "fck";
};
두 번째 예제는 header를 include한 뒤 ATL2의 `bws`를 `DRA7_ATL_WS_MCASP2_FSX`, `aws`를 `DRA7_ATL_WS_MCASP3_FSX`로 선택합니다.
#include <dt-bindings/clock/ti-dra7-atl.h>
&atl {
atl2 {
bws = <DRA7_ATL_WS_MCASP2_FSX>;
aws = <DRA7_ATL_WS_MCASP3_FSX>;
};
};
요약과 해설
dra7-atl.txt:1-94Clock-tree provider, ATL IP driver와 instance별 bws/aws 설정을 설명합니다.