1 /* 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 #ifndef _S5PXX18_SOC_LVDS_H_
9 #define _S5PXX18_SOC_LVDS_H_
10 
11 /*
12  * refter to s5pxx18_soc_disptop.h
13  *
14  * #define NUMBER_OF_LVDS_MODULE 1
15  * #define PHY_BASEADDR_LVDS_MODULE	0xC010A000
16  */
17 #define	PHY_BASEADDR_LVDS_LIST	\
18 		{ PHY_BASEADDR_LVDS_MODULE }
19 
20 struct nx_lvds_register_set {
21 	u32 lvdsctrl0;
22 	u32 lvdsctrl1;
23 	u32 lvdsctrl2;
24 	u32 lvdsctrl3;
25 	u32 lvdsctrl4;
26 	u32 _reserved0[3];
27 	u32 lvdsloc0;
28 	u32 lvdsloc1;
29 	u32 lvdsloc2;
30 	u32 lvdsloc3;
31 	u32 lvdsloc4;
32 	u32 lvdsloc5;
33 	u32 lvdsloc6;
34 	u32 _reserved1;
35 	u32 lvdslocmask0;
36 	u32 lvdslocmask1;
37 	u32 lvdslocpol0;
38 	u32 lvdslocpol1;
39 	u32 lvdstmode0;
40 	u32 lvdstmode1;
41 	u32 _reserved2[2];
42 };
43 
44 int nx_lvds_initialize(void);
45 u32 nx_lvds_get_number_of_module(void);
46 u32 nx_lvds_get_size_of_register_set(void);
47 void nx_lvds_set_base_address(u32 module_index, void *base_address);
48 void *nx_lvds_get_base_address(u32 module_index);
49 u32 nx_lvds_get_physical_address(u32 module_index);
50 int nx_lvds_open_module(u32 module_index);
51 int nx_lvds_close_module(u32 module_index);
52 int nx_lvds_check_busy(u32 module_index);
53 
54 void nx_lvds_set_lvdsctrl0(u32 module_index, u32 regvalue);
55 void nx_lvds_set_lvdsctrl1(u32 module_index, u32 regvalue);
56 void nx_lvds_set_lvdsctrl2(u32 module_index, u32 regvalue);
57 void nx_lvds_set_lvdsctrl3(u32 module_index, u32 regvalue);
58 void nx_lvds_set_lvdsctrl4(u32 module_index, u32 regvalue);
59 u32 nx_lvds_get_lvdsctrl0(u32 module_index);
60 u32 nx_lvds_get_lvdsctrl1(u32 module_index);
61 u32 nx_lvds_get_lvdsctrl2(u32 module_index);
62 u32 nx_lvds_get_lvdsctrl3(u32 module_index);
63 u32 nx_lvds_get_lvdsctrl4(u32 module_index);
64 
65 void nx_lvds_set_lvdstmode0(u32 module_index, u32 regvalue);
66 void nx_lvds_set_lvdsloc0(u32 module_index, u32 regvalue);
67 void nx_lvds_set_lvdsloc1(u32 module_index, u32 regvalue);
68 void nx_lvds_set_lvdsloc2(u32 module_index, u32 regvalue);
69 void nx_lvds_set_lvdsloc3(u32 module_index, u32 regvalue);
70 void nx_lvds_set_lvdsloc4(u32 module_index, u32 regvalue);
71 void nx_lvds_set_lvdsloc5(u32 module_index, u32 regvalue);
72 void nx_lvds_set_lvdsloc6(u32 module_index, u32 regvalue);
73 void nx_lvds_set_lvdslocmask0(u32 module_index, u32 regvalue);
74 void nx_lvds_set_lvdslocmask1(u32 module_index, u32 regvalue);
75 void nx_lvds_set_lvdslocpol0(u32 module_index, u32 regvalue);
76 void nx_lvds_set_lvdslocpol1(u32 module_index, u32 regvalue);
77 
78 void nx_lvds_set_lvdslocpol1(u32 module_index, u32 regvalue);
79 
80 void nx_lvds_set_lvdsdummy(u32 module_index, u32 regvalue);
81 u32 nx_lvds_get_lvdsdummy(u32 module_index);
82 
83 #endif
84