blob: 44e8edb02a22aa28208ee4c926a73eaafb0cc257 [file] [log] [blame]
Stefan Bosch5ed5ad42020-07-10 19:07:36 +02001// SPDX-License-Identifier: GPL-2.0+
2/*
3 * Copyright (C) 2016 Nexell Co., Ltd.
4 *
5 * Author: junghyun, kim <jhkim@nexell.co.kr>
6 */
7
8#include <config.h>
9#include <common.h>
10#include <errno.h>
11
12#include <asm/arch/display.h>
13
14#include "soc/s5pxx18_soc_disptop.h"
15
16static int rgb_switch(int module, int input, struct dp_sync_info *sync,
17 struct dp_rgb_dev *dev)
18{
19 int mpu = dev->lcd_mpu_type;
20 int rsc = 0, sel = 0;
21
22 switch (module) {
23 case 0:
24 sel = mpu ? 1 : 0;
25 break;
26 case 1:
27 sel = rsc ? 3 : 2;
28 break;
29 default:
30 printf("Fail, %s nuknown module %d\n", __func__, module);
31 return -1;
32 }
33
34 nx_disp_top_set_primary_mux(sel);
35 return 0;
36}
37
38void nx_rgb_display(int module,
39 struct dp_sync_info *sync, struct dp_ctrl_info *ctrl,
40 struct dp_plane_top *top, struct dp_plane_info *planes,
41 struct dp_rgb_dev *dev)
42{
43 struct dp_plane_info *plane = planes;
44 int input = module == 0 ? DP_DEVICE_DP0 : DP_DEVICE_DP1;
45 int count = top->plane_num;
46 int i = 0;
47
48 printf("RGB: dp.%d\n", module);
49
50 dp_control_init(module);
51 dp_plane_init(module);
52
53 /* set plane */
54 dp_plane_screen_setup(module, top);
55
56 for (i = 0; count > i; i++, plane++) {
57 if (!plane->enable)
58 continue;
59 dp_plane_layer_setup(module, plane);
60 dp_plane_layer_enable(module, plane, 1);
61 }
62
63 dp_plane_screen_enable(module, 1);
64
65 rgb_switch(module, input, sync, dev);
66
67 dp_control_setup(module, sync, ctrl);
68 dp_control_enable(module, 1);
69}