나는 Duovero Parlor 보드에 DTS 파일을 사용하고 있습니다. 보드에 일부 SPI 장치를 추가했습니다. 내 첫 번째 모니터(모니터)는 잘 작동하므로 내 항목은 최소한 정확합니다. NXP SC16IS752 UART 컨트롤러에 대한 SPI 연결을 지원하는 항목을 추가하고 싶습니다. (최근 lml에 시도해보고 싶은 패치가 있습니다.)
이것은 내 항목입니다.
clocks {
clk14m: oscillator {
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <14745600>;
};
};
&mcspi4 {
sc16is752: sc16is752@0 {
compatible = "nxp,sc16is752";
reg = <0>;
spi-max-frequency = <4000000>;
clocks = <&clk14m>;
interrupt-parent = <&gpio4>;
interrupt = <15 IRQ_TYPE_EDGE_FALLING>;
gpio-controller;
#gpio-cells = <2>;
};
};
어느 정도 맞는 것 같습니다. SPI 버스는 4MHz, 모드 0입니다. 인터럽트는 GPIO 111, 즉 <&GPIO 4 15>입니다. 내 문제는 시계를 지정하는 것입니다. 칩에 직접 연결된 독립형 수정 발진기입니다. 그럼 이 시계가 맞나요?
시계가 따로 있어서 어디에 둬야할지 모르겠어서 '시계'라는 말이 듣기 좋은데 완전 추측이에요. dts를 컴파일할 때 구문 오류로 인해 실패하므로 어딘가에 문제가 있습니다.
#gpio-cells가 올바른지 확실하지 않습니다. 이는 GPIO 번호가 200에서 시작하여 증가한다는 의미입니까?
답변1
시계의 문제는 TI 시계 도메인 외부에 선언된 시계가 3.17에서 구문 분석되지 않고 올바르게 설정되지 않는다는 것입니다. 이 문제는 커널 버전 4.0.5에서 해결되었습니다.
필요한 변경 사항은 /arch/arm/mach-omap2/io.c 끝에 있는 omap_clk_init 함수에서 발생합니다. 이 함수에는 3.17에 존재하지 않는 of_clk_init(NULL)에 대한 추가 호출이 있습니다.
여기에 관련된 토론이 있습니다.http://patchwork.ozlabs.org/patch/375753/