@@ -39,6 +39,117 @@ static const u8 visionox_rm69299_1080x2248_60hz_init_seq[][2] = {
3939 { 0xfe , 0x00 }, { 0xc2 , 0x08 }, { 0x35 , 0x00 }, { 0x51 , 0xff },
4040};
4141
42+ static const u8 visionox_rm69299_1080x2160_60hz_init_seq [][2 ] = {
43+ { 0xfe , 0x40 }, { 0x05 , 0x04 }, { 0x06 , 0x08 }, { 0x08 , 0x04 },
44+ { 0x09 , 0x08 }, { 0x0a , 0x07 }, { 0x0b , 0xcc }, { 0x0c , 0x07 },
45+ { 0x0d , 0x90 }, { 0x0f , 0x87 }, { 0x20 , 0x8d }, { 0x21 , 0x8d },
46+ { 0x24 , 0x05 }, { 0x26 , 0x05 }, { 0x28 , 0x05 }, { 0x2a , 0x05 },
47+ { 0x2d , 0x28 }, { 0x2f , 0x28 }, { 0x30 , 0x32 }, { 0x31 , 0x32 },
48+ { 0x37 , 0x80 }, { 0x38 , 0x30 }, { 0x39 , 0xa8 }, { 0x46 , 0x48 },
49+ { 0x47 , 0x48 }, { 0x6b , 0x10 }, { 0x6f , 0x02 }, { 0x74 , 0x2b },
50+ { 0x80 , 0x1a }, { 0xfe , 0x40 }, { 0x93 , 0x10 }, { 0x16 , 0x00 },
51+ { 0x85 , 0x07 }, { 0x84 , 0x01 }, { 0x86 , 0x0f }, { 0x87 , 0x05 },
52+ { 0x8c , 0x00 }, { 0x88 , 0x2e }, { 0x89 , 0x2e }, { 0x8b , 0x09 },
53+ { 0x95 , 0x00 }, { 0x91 , 0x00 }, { 0x90 , 0x00 }, { 0x8d , 0xd0 },
54+ { 0x8a , 0x03 }, { 0xfe , 0xa0 }, { 0x13 , 0x00 }, { 0x33 , 0x00 },
55+ { 0x0b , 0x33 }, { 0x36 , 0x1e }, { 0x31 , 0x88 }, { 0x32 , 0x88 },
56+ { 0x37 , 0xf1 }, { 0xfe , 0x50 }, { 0x00 , 0x00 }, { 0x01 , 0x00 },
57+ { 0x02 , 0x00 }, { 0x03 , 0xe9 }, { 0x04 , 0x00 }, { 0x05 , 0xf6 },
58+ { 0x06 , 0x01 }, { 0x07 , 0x2c }, { 0x08 , 0x01 }, { 0x09 , 0x62 },
59+ { 0x0a , 0x01 }, { 0x0b , 0x98 }, { 0x0c , 0x01 }, { 0x0d , 0xbf },
60+ { 0x0e , 0x01 }, { 0x0f , 0xf6 }, { 0x10 , 0x02 }, { 0x11 , 0x24 },
61+ { 0x12 , 0x02 }, { 0x13 , 0x4e }, { 0x14 , 0x02 }, { 0x15 , 0x70 },
62+ { 0x16 , 0x02 }, { 0x17 , 0xaf }, { 0x18 , 0x02 }, { 0x19 , 0xe2 },
63+ { 0x1a , 0x03 }, { 0x1b , 0x1f }, { 0x1c , 0x03 }, { 0x1d , 0x52 },
64+ { 0x1e , 0x03 }, { 0x1f , 0x82 }, { 0x20 , 0x03 }, { 0x21 , 0xb6 },
65+ { 0x22 , 0x03 }, { 0x23 , 0xf0 }, { 0x24 , 0x04 }, { 0x25 , 0x1f },
66+ { 0x26 , 0x04 }, { 0x27 , 0x37 }, { 0x28 , 0x04 }, { 0x29 , 0x59 },
67+ { 0x2a , 0x04 }, { 0x2b , 0x68 }, { 0x30 , 0x04 }, { 0x31 , 0x85 },
68+ { 0x32 , 0x04 }, { 0x33 , 0xa2 }, { 0x34 , 0x04 }, { 0x35 , 0xbc },
69+ { 0x36 , 0x04 }, { 0x37 , 0xd8 }, { 0x38 , 0x04 }, { 0x39 , 0xf4 },
70+ { 0x3a , 0x05 }, { 0x3b , 0x0e }, { 0x40 , 0x05 }, { 0x41 , 0x13 },
71+ { 0x42 , 0x05 }, { 0x43 , 0x1f }, { 0x44 , 0x05 }, { 0x45 , 0x1f },
72+ { 0x46 , 0x00 }, { 0x47 , 0x00 }, { 0x48 , 0x01 }, { 0x49 , 0x43 },
73+ { 0x4a , 0x01 }, { 0x4b , 0x4c }, { 0x4c , 0x01 }, { 0x4d , 0x6f },
74+ { 0x4e , 0x01 }, { 0x4f , 0x92 }, { 0x50 , 0x01 }, { 0x51 , 0xb5 },
75+ { 0x52 , 0x01 }, { 0x53 , 0xd4 }, { 0x58 , 0x02 }, { 0x59 , 0x06 },
76+ { 0x5a , 0x02 }, { 0x5b , 0x33 }, { 0x5c , 0x02 }, { 0x5d , 0x59 },
77+ { 0x5e , 0x02 }, { 0x5f , 0x7d }, { 0x60 , 0x02 }, { 0x61 , 0xbd },
78+ { 0x62 , 0x02 }, { 0x63 , 0xf7 }, { 0x64 , 0x03 }, { 0x65 , 0x31 },
79+ { 0x66 , 0x03 }, { 0x67 , 0x63 }, { 0x68 , 0x03 }, { 0x69 , 0x9d },
80+ { 0x6a , 0x03 }, { 0x6b , 0xd2 }, { 0x6c , 0x04 }, { 0x6d , 0x05 },
81+ { 0x6e , 0x04 }, { 0x6f , 0x38 }, { 0x70 , 0x04 }, { 0x71 , 0x51 },
82+ { 0x72 , 0x04 }, { 0x73 , 0x70 }, { 0x74 , 0x04 }, { 0x75 , 0x85 },
83+ { 0x76 , 0x04 }, { 0x77 , 0xa1 }, { 0x78 , 0x04 }, { 0x79 , 0xc0 },
84+ { 0x7a , 0x04 }, { 0x7b , 0xd8 }, { 0x7c , 0x04 }, { 0x7d , 0xf2 },
85+ { 0x7e , 0x05 }, { 0x7f , 0x10 }, { 0x80 , 0x05 }, { 0x81 , 0x21 },
86+ { 0x82 , 0x05 }, { 0x83 , 0x2e }, { 0x84 , 0x05 }, { 0x85 , 0x3a },
87+ { 0x86 , 0x05 }, { 0x87 , 0x3e }, { 0x88 , 0x00 }, { 0x89 , 0x00 },
88+ { 0x8a , 0x01 }, { 0x8b , 0x86 }, { 0x8c , 0x01 }, { 0x8d , 0x8f },
89+ { 0x8e , 0x01 }, { 0x8f , 0xb3 }, { 0x90 , 0x01 }, { 0x91 , 0xd7 },
90+ { 0x92 , 0x01 }, { 0x93 , 0xfb }, { 0x94 , 0x02 }, { 0x95 , 0x18 },
91+ { 0x96 , 0x02 }, { 0x97 , 0x4f }, { 0x98 , 0x02 }, { 0x99 , 0x7e },
92+ { 0x9a , 0x02 }, { 0x9b , 0xa6 }, { 0x9c , 0x02 }, { 0x9d , 0xcf },
93+ { 0x9e , 0x03 }, { 0x9f , 0x14 }, { 0xa4 , 0x03 }, { 0xa5 , 0x52 },
94+ { 0xa6 , 0x03 }, { 0xa7 , 0x93 }, { 0xac , 0x03 }, { 0xad , 0xcf },
95+ { 0xae , 0x04 }, { 0xaf , 0x08 }, { 0xb0 , 0x04 }, { 0xb1 , 0x42 },
96+ { 0xb2 , 0x04 }, { 0xb3 , 0x7f }, { 0xb4 , 0x04 }, { 0xb5 , 0xb4 },
97+ { 0xb6 , 0x04 }, { 0xb7 , 0xcc }, { 0xb8 , 0x04 }, { 0xb9 , 0xf2 },
98+ { 0xba , 0x05 }, { 0xbb , 0x0c }, { 0xbc , 0x05 }, { 0xbd , 0x26 },
99+ { 0xbe , 0x05 }, { 0xbf , 0x4b }, { 0xc0 , 0x05 }, { 0xc1 , 0x64 },
100+ { 0xc2 , 0x05 }, { 0xc3 , 0x83 }, { 0xc4 , 0x05 }, { 0xc5 , 0xa1 },
101+ { 0xc6 , 0x05 }, { 0xc7 , 0xba }, { 0xc8 , 0x05 }, { 0xc9 , 0xc4 },
102+ { 0xca , 0x05 }, { 0xcb , 0xd5 }, { 0xcc , 0x05 }, { 0xcd , 0xd5 },
103+ { 0xce , 0x00 }, { 0xcf , 0xce }, { 0xd0 , 0x00 }, { 0xd1 , 0xdb },
104+ { 0xd2 , 0x01 }, { 0xd3 , 0x32 }, { 0xd4 , 0x01 }, { 0xd5 , 0x3b },
105+ { 0xd6 , 0x01 }, { 0xd7 , 0x74 }, { 0xd8 , 0x01 }, { 0xd9 , 0x7d },
106+ { 0xfe , 0x60 }, { 0x00 , 0xcc }, { 0x01 , 0x0f }, { 0x02 , 0xff },
107+ { 0x03 , 0x01 }, { 0x04 , 0x00 }, { 0x05 , 0x02 }, { 0x06 , 0x00 },
108+ { 0x07 , 0x00 }, { 0x09 , 0xc4 }, { 0x0a , 0x00 }, { 0x0b , 0x04 },
109+ { 0x0c , 0x01 }, { 0x0d , 0x00 }, { 0x0e , 0x04 }, { 0x0f , 0x00 },
110+ { 0x10 , 0x71 }, { 0x12 , 0xc4 }, { 0x13 , 0x00 }, { 0x14 , 0x04 },
111+ { 0x15 , 0x01 }, { 0x16 , 0x00 }, { 0x17 , 0x06 }, { 0x18 , 0x00 },
112+ { 0x19 , 0x71 }, { 0x1b , 0xc4 }, { 0x1c , 0x00 }, { 0x1d , 0x02 },
113+ { 0x1e , 0x00 }, { 0x1f , 0x00 }, { 0x20 , 0x08 }, { 0x21 , 0x66 },
114+ { 0x22 , 0xb4 }, { 0x24 , 0xc4 }, { 0x25 , 0x00 }, { 0x26 , 0x02 },
115+ { 0x27 , 0x00 }, { 0x28 , 0x00 }, { 0x29 , 0x07 }, { 0x2a , 0x66 },
116+ { 0x2b , 0xb4 }, { 0x2f , 0xc4 }, { 0x30 , 0x00 }, { 0x31 , 0x04 },
117+ { 0x32 , 0x01 }, { 0x33 , 0x00 }, { 0x34 , 0x03 }, { 0x35 , 0x00 },
118+ { 0x36 , 0x71 }, { 0x38 , 0xc4 }, { 0x39 , 0x00 }, { 0x3a , 0x04 },
119+ { 0x3b , 0x01 }, { 0x3d , 0x00 }, { 0x3f , 0x05 }, { 0x40 , 0x00 },
120+ { 0x41 , 0x71 }, { 0x83 , 0xce }, { 0x84 , 0x02 }, { 0x85 , 0x20 },
121+ { 0x86 , 0xdc }, { 0x87 , 0x00 }, { 0x88 , 0x04 }, { 0x89 , 0x00 },
122+ { 0x8a , 0xbb }, { 0x8b , 0x80 }, { 0xc7 , 0x0e }, { 0xc8 , 0x05 },
123+ { 0xc9 , 0x1f }, { 0xca , 0x06 }, { 0xcb , 0x00 }, { 0xcc , 0x03 },
124+ { 0xcd , 0x04 }, { 0xce , 0x1f }, { 0xcf , 0x1f }, { 0xd0 , 0x1f },
125+ { 0xd1 , 0x1f }, { 0xd2 , 0x1f }, { 0xd3 , 0x1f }, { 0xd4 , 0x1f },
126+ { 0xd5 , 0x1f }, { 0xd6 , 0x1f }, { 0xd7 , 0x17 }, { 0xd8 , 0x1f },
127+ { 0xd9 , 0x16 }, { 0xda , 0x1f }, { 0xdb , 0x0e }, { 0xdc , 0x01 },
128+ { 0xdd , 0x1f }, { 0xde , 0x02 }, { 0xdf , 0x00 }, { 0xe0 , 0x03 },
129+ { 0xe1 , 0x04 }, { 0xe2 , 0x1f }, { 0xe3 , 0x1f }, { 0xe4 , 0x1f },
130+ { 0xe5 , 0x1f }, { 0xe6 , 0x1f }, { 0xe7 , 0x1f }, { 0xe8 , 0x1f },
131+ { 0xe9 , 0x1f }, { 0xea , 0x1f }, { 0xeb , 0x17 }, { 0xec , 0x1f },
132+ { 0xed , 0x16 }, { 0xee , 0x1f }, { 0xef , 0x03 }, { 0xfe , 0x70 },
133+ { 0x5a , 0x0b }, { 0x5b , 0x0b }, { 0x5c , 0x55 }, { 0x5d , 0x24 },
134+ { 0xfe , 0x90 }, { 0x12 , 0x24 }, { 0x13 , 0x49 }, { 0x14 , 0x92 },
135+ { 0x15 , 0x86 }, { 0x16 , 0x61 }, { 0x17 , 0x18 }, { 0x18 , 0x24 },
136+ { 0x19 , 0x49 }, { 0x1a , 0x92 }, { 0x1b , 0x86 }, { 0x1c , 0x61 },
137+ { 0x1d , 0x18 }, { 0x1e , 0x24 }, { 0x1f , 0x49 }, { 0x20 , 0x92 },
138+ { 0x21 , 0x86 }, { 0x22 , 0x61 }, { 0x23 , 0x18 }, { 0xfe , 0x40 },
139+ { 0x0e , 0x10 }, { 0xfe , 0xa0 }, { 0x04 , 0x80 }, { 0x16 , 0x00 },
140+ { 0x26 , 0x10 }, { 0x2f , 0x37 }, { 0xfe , 0xd0 }, { 0x06 , 0x0f },
141+ { 0x4b , 0x00 }, { 0x56 , 0x4a }, { 0xfe , 0x00 }, { 0xc2 , 0x09 },
142+ { 0x35 , 0x00 }, { 0xfe , 0x70 }, { 0x7d , 0x61 }, { 0x7f , 0x00 },
143+ { 0x7e , 0x4e }, { 0x52 , 0x2c }, { 0x49 , 0x00 }, { 0x4a , 0x00 },
144+ { 0x4b , 0x00 }, { 0x4c , 0x00 }, { 0x4d , 0xe8 }, { 0x4e , 0x25 },
145+ { 0x4f , 0x6e }, { 0x50 , 0xae }, { 0x51 , 0x2f }, { 0xad , 0xf4 },
146+ { 0xae , 0x8f }, { 0xaf , 0x00 }, { 0xb0 , 0x54 }, { 0xb1 , 0x3a },
147+ { 0xb2 , 0x00 }, { 0xb3 , 0x00 }, { 0xb4 , 0x00 }, { 0xb5 , 0x00 },
148+ { 0xb6 , 0x18 }, { 0xb7 , 0x30 }, { 0xb8 , 0x4a }, { 0xb9 , 0x98 },
149+ { 0xba , 0x30 }, { 0xbb , 0x60 }, { 0xbc , 0x50 }, { 0xbd , 0x00 },
150+ { 0xbe , 0x00 }, { 0xbf , 0x39 }, { 0xfe , 0x00 }, { 0x51 , 0x66 },
151+ };
152+
42153static inline struct visionox_rm69299 * panel_to_ctx (struct drm_panel * panel )
43154{
44155 return container_of (panel , struct visionox_rm69299 , panel );
@@ -135,6 +246,19 @@ static const struct drm_display_mode visionox_rm69299_1080x2248_60hz = {
135246 .flags = 0 ,
136247};
137248
249+ static const struct drm_display_mode visionox_rm69299_1080x2160_60hz = {
250+ .clock = 158695 ,
251+ .hdisplay = 1080 ,
252+ .hsync_start = 1080 + 26 ,
253+ .hsync_end = 1080 + 26 + 2 ,
254+ .htotal = 1080 + 26 + 2 + 36 ,
255+ .vdisplay = 2160 ,
256+ .vsync_start = 2160 + 8 ,
257+ .vsync_end = 2160 + 8 + 4 ,
258+ .vtotal = 2160 + 8 + 4 + 4 ,
259+ .flags = 0 ,
260+ };
261+
138262static int visionox_rm69299_get_modes (struct drm_panel * panel ,
139263 struct drm_connector * connector )
140264{
@@ -225,9 +349,17 @@ const struct visionox_rm69299_panel_desc visionox_rm69299_1080p_display_desc = {
225349 .init_seq_len = ARRAY_SIZE (visionox_rm69299_1080x2248_60hz_init_seq ),
226350};
227351
352+ const struct visionox_rm69299_panel_desc visionox_rm69299_shift_desc = {
353+ .mode = & visionox_rm69299_1080x2160_60hz ,
354+ .init_seq = (const u8 * )visionox_rm69299_1080x2160_60hz_init_seq ,
355+ .init_seq_len = ARRAY_SIZE (visionox_rm69299_1080x2160_60hz_init_seq ),
356+ };
357+
228358static const struct of_device_id visionox_rm69299_of_match [] = {
229359 { .compatible = "visionox,rm69299-1080p-display" ,
230360 .data = & visionox_rm69299_1080p_display_desc },
361+ { .compatible = "visionox,rm69299-shift" ,
362+ .data = & visionox_rm69299_shift_desc },
231363 { /* sentinel */ }
232364};
233365MODULE_DEVICE_TABLE (of , visionox_rm69299_of_match );
0 commit comments