blob: 44e8edb02a22aa28208ee4c926a73eaafb0cc257 [file] [log] [blame]
// SPDX-License-Identifier: GPL-2.0+
/*
* Copyright (C) 2016 Nexell Co., Ltd.
*
* Author: junghyun, kim <jhkim@nexell.co.kr>
*/
#include <config.h>
#include <common.h>
#include <errno.h>
#include <asm/arch/display.h>
#include "soc/s5pxx18_soc_disptop.h"
static int rgb_switch(int module, int input, struct dp_sync_info *sync,
struct dp_rgb_dev *dev)
{
int mpu = dev->lcd_mpu_type;
int rsc = 0, sel = 0;
switch (module) {
case 0:
sel = mpu ? 1 : 0;
break;
case 1:
sel = rsc ? 3 : 2;
break;
default:
printf("Fail, %s nuknown module %d\n", __func__, module);
return -1;
}
nx_disp_top_set_primary_mux(sel);
return 0;
}
void nx_rgb_display(int module,
struct dp_sync_info *sync, struct dp_ctrl_info *ctrl,
struct dp_plane_top *top, struct dp_plane_info *planes,
struct dp_rgb_dev *dev)
{
struct dp_plane_info *plane = planes;
int input = module == 0 ? DP_DEVICE_DP0 : DP_DEVICE_DP1;
int count = top->plane_num;
int i = 0;
printf("RGB: dp.%d\n", module);
dp_control_init(module);
dp_plane_init(module);
/* set plane */
dp_plane_screen_setup(module, top);
for (i = 0; count > i; i++, plane++) {
if (!plane->enable)
continue;
dp_plane_layer_setup(module, plane);
dp_plane_layer_enable(module, plane, 1);
}
dp_plane_screen_enable(module, 1);
rgb_switch(module, input, sync, dev);
dp_control_setup(module, sync, ctrl);
dp_control_enable(module, 1);
}