한국어
Embedded
 

드라이버 Rockchip VOP

makersweb 2024.04.22 21:59 조회 수 : 167

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>;
                };
            };
...
        };
    };
...

 

번호 제목 글쓴이 날짜 조회 수
52 윈도우10에서 Prolific USB to Serial 드라이버 인식문제 file makersweb 2016.01.24 22793
51 USB OTG 기술의 개념 file pjk 2014.11.03 15255
50 yocto project, 라즈베리파이를 위한 Qt + 임베디드리눅스 빌드 file makersweb 2019.02.01 11018
49 [Uboot 명령어 및 환경 변수 요약]U-Boot에 Command 및 Parameter에 대한 설명 pjk 2014.01.09 10388
48 ESP-IDF 의 A2DP리뷰 (ESP32) file makersweb 2019.10.28 9530
47 ST, STM32 MCU용 ‘통합 개발 환경(IDE)’ 무료 제공 makersweb 2015.03.04 8859
46 이클립스에서 IAR프로젝트 사용방법 file makersweb 2015.07.09 8779
45 USB 핀아웃 file pjk 2014.10.11 8432
44 AVRISP mkII 펌웨어 업그레이드 file makersweb 2015.07.22 6936
43 라즈베리파이3와 PC간 Serial 통신 테스트 [1] file makersweb 2019.05.20 6387
42 플랫폼 디바이스 및 드라이버에 대해서 makersweb 2020.02.01 6332
41 임베디드 리눅스 부팅 절차 file makersweb 2019.10.21 6183
40 폴링(Polling), 인터럽트(Interrupt), DMA(Direct Memory Access) file pjk 2014.10.24 6012
39 실시간 운영 체제 또는 RTOS(Real Time Operating System) pjk 2014.12.02 5847
38 HelloWorld 커널 모듈과 yocto 레시피 추가 방법 file makersweb 2019.12.09 5645
37 디바이스 트리(Device Tree, DT) makersweb 2020.01.12 5619
36 STM32와 CAN(Controller Area Network) Loop Back file makersweb 2017.01.23 5417
35 printk() makersweb 2014.02.27 5154
34 블루투스(Bluetooth) 기초 file makersweb 2019.08.02 4931
33 AVR(AT90USB162)을 USB to Serial 로 이용하기 file makersweb 2015.02.14 4821