한국어
Embedded
 

드라이버 Rockchip VOP

makersweb 2024.04.22 21:59 조회 수 : 1013

VOP(Visual Output Processor) 는 비디오 메모리 버퍼의 이미지 데이터를 외부 디스플레이 인터페이스(LVDS, MIPI, eDP, HDMI 등)로 전송하는 Rockchip SoC 시리즈용 디스플레이 컨트롤러이다.

VOP는 AHB 슬레이브를 통해 AHB 버스에 연결되고 AXI 마스터를 통해 AXI 버스에 연결된다. 레지스터 설정은 AHB 슬레이브 인터페이스를 통해 구성되며 디스플레이 프레임 데이터는 AXI 마스터 인터페이스를 통해 읽혀진다. 또한 IEP와 VOP 사이에는 IEP에서 VOP로 프레임 데이터를 제공할 수 있는 데이터 경로가 있다. (VOP 호환 SoC에서는 커널 빌드 시 이 기능을 활성화해야 한다.)

 

VOP2 는 RK3566/RK3568 부터 사용된다. 이 드라이버는 Rockchip의 커널에서 제공되는 기존 다운스트림 드라이버에서 파생되었다. 이 업스트림 드라이버는 비표준 DRM 속성, 엉성한 코드 및 다운스트림 드라이버 상태의 기타 변경 사항을 제거하기 위해 큰 변경 사항을 확인해야 했다.

dtsi 파일에 필요한 디스플레이 하위 시스템 노드 및 iommu 노드와 함께 해당 노드를 추가해야한다.

 

Example:

...
    vop: vop@fdd90000 {
        compatible = "rockchip,rk3588-vop";
        reg = <0x0 0xfdd90000 0x0 0x4200>, <0x0 0xfdd95000 0x0 0x1000>;
        reg-names = "regs", "gamma_lut";
        interrupts = <GIC_SPI 156 IRQ_TYPE_LEVEL_HIGH>;
...
        iommus = <&vop_mmu>;
        power-domains = <&power RK3588_PD_VOP>;
        rockchip,grf = <&sys_grf>;
        rockchip,vop-grf = <&vop_grf>;
        rockchip,vo1-grf = <&vo1_grf>;
        rockchip,pmu = <&pmu>;

        status = "disabled";

        vop_out: ports {
            #address-cells = <1>;
            #size-cells = <0>;

            vp0: port@0 {
                #address-cells = <1>;
                #size-cells = <0>;
                reg = <0>;

                vp0_out_dp0: endpoint@0 {
                    reg = <0>;
                    remote-endpoint = <&dp0_in_vp0>;
                };

                vp0_out_edp0: endpoint@1 {
                    reg = <1>;
                    remote-endpoint = <&edp0_in_vp0>;
                };

                vp0_out_hdmi0: endpoint@2 {
                    reg = <2>;
                    remote-endpoint = <&hdmi0_in_vp0>;
                };
            };

            vp1: port@1 {
                #address-cells = <1>;
                #size-cells = <0>;
                reg = <1>;

                vp1_out_dp0: endpoint@0 {
                    reg = <0>;
                    remote-endpoint = <&dp0_in_vp1>;
                };

                vp1_out_edp0: endpoint@1 {
                    reg = <1>;
                    remote-endpoint = <&edp0_in_vp1>;
                };

                vp1_out_hdmi0: endpoint@2 {
                    reg = <2>;
                    remote-endpoint = <&hdmi0_in_vp1>;
                };
            };
...
        };
    };
...

 

번호 제목 글쓴이 날짜 조회 수
53 OpenAMP 간단한 소개 file makersweb 2024.09.21 670
» Rockchip VOP makersweb 2024.04.22 1013
51 Raspberry Pi에서 I²C 그리고 Bit-bang (비트뱅) makersweb 2023.08.27 1663
50 Yocto 프로젝트 3.4 릴리스(honister) 이상 버전으로 마이그레이션 시 참고 사항 makersweb 2023.03.21 1989
49 Raspberry Pi 와 ATtiny85 간 I²C 통신 file makersweb 2023.03.18 1408
48 로직분석기와 함께 PulseView 를 사용해서 CAN 신호 캡쳐 file makersweb 2023.03.16 1524
47 임베디드 개발자를 위한 Hex,Bin,Dec 변환기 유틸 file makersweb 2023.02.27 1983
46 ATtiny85 개발보드(HW-260) file makersweb 2023.01.02 1426
45 플랫폼 디바이스 및 디바이스 트리 makersweb 2021.03.20 5039
44 Android 기기를 사용하여 Raspberry Pi SD 카드 작성 방법 file makersweb 2020.08.01 1915
43 Raspberry Pi 의 프레임버퍼(Framebuffer)구성 makersweb 2020.05.15 2823
42 라즈베리파이2에서 RTOS기반 GPIO제어(LED) file makersweb 2020.04.21 2579
41 POSIX를 지원하는 오픈소스 RTOS, RTEMS file makersweb 2020.04.15 2672
40 라즈베리파이 부팅 가능한 sd카드 파티션 생성 makersweb 2020.04.15 2720
39 플랫폼 디바이스 및 드라이버에 대해서 makersweb 2020.02.01 7891
38 디바이스 트리(Device Tree, DT) makersweb 2020.01.12 6965
37 RISC-V : 자유롭고 개방 된 RISC 명령어 세트 아키텍처 [2] file makersweb 2020.01.01 1999
36 임베디드 비대칭 멀티 프로세싱(asymmetric multiprocessing) 시스템 file makersweb 2019.12.31 1555
35 임베디드 시스템에서 베어메탈(Bare metal) 이란? makersweb 2019.12.11 4314
34 HelloWorld 커널 모듈과 yocto 레시피 추가 방법 file makersweb 2019.12.09 6446