1 /* 2 * disp_board_config.c 3 * 4 * Copyright (c) 2007-2020 Allwinnertech Co., Ltd. 5 * Author: zhengxiaobin <zhengxiaobin@allwinnertech.com> 6 * 7 * This software is licensed under the terms of the GNU General Public 8 * License version 2, as published by the Free Software Foundation, and 9 * may be copied, distributed, and modified under those terms. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 */ 17 18 #include <stdio.h> 19 #include <stdint.h> 20 #include <stdlib.h> 21 #include <hal_clk.h> 22 #include <hal_gpio.h> 23 #include "../disp/disp_sys_intf.h" 24 #include "disp_board_config.h" 25 26 struct property_t g_lcd0_config[] = { 27 { 28 .name = "lcd_used", 29 .type = PROPERTY_INTGER, 30 .v.value = 1, 31 }, 32 { 33 .name = "lcd_driver_name", 34 .type = PROPERTY_STRING, 35 .v.str = "default_lcd", 36 }, 37 { 38 .name = "lcd_backlight", 39 .type = PROPERTY_INTGER, 40 .v.value = 150, 41 }, 42 { 43 .name = "lcd_if", 44 .type = PROPERTY_INTGER, 45 .v.value = 0, 46 }, 47 { 48 .name = "lcd_x", 49 .type = PROPERTY_INTGER, 50 .v.value = 800, 51 }, 52 { 53 .name = "lcd_y", 54 .type = PROPERTY_INTGER, 55 .v.value = 480, 56 }, 57 { 58 .name = "lcd_width", 59 .type = PROPERTY_INTGER, 60 .v.value = 150, 61 }, 62 { 63 .name = "lcd_height", 64 .type = PROPERTY_INTGER, 65 .v.value = 94, 66 }, 67 { 68 .name = "lcd_dclk_freq", 69 .type = PROPERTY_INTGER, 70 .v.value = 33, 71 }, 72 { 73 .name = "lcd_rb_swap", 74 .type = PROPERTY_INTGER, 75 .v.value = 0, 76 }, 77 { 78 .name = "lcd_pwm_used", 79 .type = PROPERTY_INTGER, 80 .v.value = 1, 81 }, 82 { 83 .name = "lcd_pwm_ch", 84 .type = PROPERTY_INTGER, 85 .v.value = 7, 86 }, 87 { 88 .name = "lcd_pwm_freq", 89 .type = PROPERTY_INTGER, 90 .v.value = 50000, 91 }, 92 { 93 .name = "lcd_pwm_pol", 94 .type = PROPERTY_INTGER, 95 .v.value = 1, 96 }, 97 { 98 .name = "lcd_pwm_max_limit", 99 .type = PROPERTY_INTGER, 100 .v.value = 255, 101 }, 102 { 103 .name = "lcd_hbp", 104 .type = PROPERTY_INTGER, 105 .v.value = 46, 106 }, 107 { 108 .name = "lcd_ht", 109 .type = PROPERTY_INTGER, 110 .v.value = 1055, 111 }, 112 { 113 .name = "lcd_hspw", 114 .type = PROPERTY_INTGER, 115 .v.value = 0, 116 }, 117 { 118 .name = "lcd_vbp", 119 .type = PROPERTY_INTGER, 120 .v.value = 23, 121 }, 122 { 123 .name = "lcd_vt", 124 .type = PROPERTY_INTGER, 125 .v.value = 525, 126 }, 127 { 128 .name = "lcd_vspw", 129 .type = PROPERTY_INTGER, 130 .v.value = 0, 131 }, 132 { 133 .name = "lcd_frm", 134 .type = PROPERTY_INTGER, 135 .v.value = 0, 136 }, 137 { 138 .name = "lcd_io_phase", 139 .type = PROPERTY_INTGER, 140 .v.value = 0, 141 }, 142 { 143 .name = "lcd_gamma_en", 144 .type = PROPERTY_INTGER, 145 .v.value = 0, 146 }, 147 { 148 .name = "lcd_bright_curve_en", 149 .type = PROPERTY_INTGER, 150 .v.value = 0, 151 }, 152 { 153 .name = "lcd_cmap_en", 154 .type = PROPERTY_INTGER, 155 .v.value = 0, 156 }, 157 { 158 .name = "deu_mode", 159 .type = PROPERTY_INTGER, 160 .v.value = 0, 161 }, 162 { 163 .name = "lcdgamma4iep", 164 .type = PROPERTY_INTGER, 165 .v.value = 22, 166 }, 167 { 168 .name = "smart_color", 169 .type = PROPERTY_INTGER, 170 .v.value = 90, 171 }, 172 173 174 //gpio 175 { 176 .name = "LCD0_D2", 177 .type = PROPERTY_PIN, 178 .v.gpio_list = { 179 .gpio = GPIOD(0), 180 .mul_sel = 2, 181 .pull = 0, 182 .drv_level = 3, 183 }, 184 }, 185 { 186 .name = "LCD0_D3", 187 .type = PROPERTY_PIN, 188 .v.gpio_list = { 189 .gpio = GPIOD(1), 190 .mul_sel = 2, 191 .pull = 0, 192 .drv_level = 3, 193 }, 194 }, 195 { 196 .name = "LCD0_D4", 197 .type = PROPERTY_PIN, 198 .v.gpio_list = { 199 .gpio = GPIOD(2), 200 .mul_sel = 2, 201 .pull = 0, 202 .drv_level = 3, 203 }, 204 }, 205 { 206 .name = "LCD0_D5", 207 .type = PROPERTY_PIN, 208 .v.gpio_list = { 209 .gpio = GPIOD(3), 210 .mul_sel = 2, 211 .pull = 0, 212 .drv_level = 3, 213 }, 214 }, 215 { 216 .name = "LCD0_D6", 217 .type = PROPERTY_PIN, 218 .v.gpio_list = { 219 .gpio = GPIOD(4), 220 .mul_sel = 2, 221 .pull = 0, 222 .drv_level = 3, 223 }, 224 }, 225 { 226 .name = "LCD0_D7", 227 .type = PROPERTY_PIN, 228 .v.gpio_list = { 229 .gpio = GPIOD(5), 230 .mul_sel = 2, 231 .pull = 0, 232 .drv_level = 3, 233 }, 234 }, 235 { 236 .name = "LCD0_D10", 237 .type = PROPERTY_PIN, 238 .v.gpio_list = { 239 .gpio = GPIOD(6), 240 .mul_sel = 2, 241 .pull = 0, 242 .drv_level = 3, 243 }, 244 }, 245 { 246 .name = "LCD0_D11", 247 .type = PROPERTY_PIN, 248 .v.gpio_list = { 249 .gpio = GPIOD(7), 250 .mul_sel = 2, 251 .pull = 0, 252 .drv_level = 3, 253 }, 254 }, 255 { 256 .name = "LCD0_D12", 257 .type = PROPERTY_PIN, 258 .v.gpio_list = { 259 .gpio = GPIOD(8), 260 .mul_sel = 2, 261 .pull = 0, 262 .drv_level = 3, 263 }, 264 }, 265 { 266 .name = "LCD0_D13", 267 .type = PROPERTY_PIN, 268 .v.gpio_list = { 269 .gpio = GPIOD(9), 270 .mul_sel = 2, 271 .pull = 0, 272 .drv_level = 3, 273 }, 274 }, 275 { 276 .name = "LCD0_D14", 277 .type = PROPERTY_PIN, 278 .v.gpio_list = { 279 .gpio = GPIOD(10), 280 .mul_sel = 2, 281 .pull = 0, 282 .drv_level = 3, 283 }, 284 }, 285 { 286 .name = "LCD0_D15", 287 .type = PROPERTY_PIN, 288 .v.gpio_list = { 289 .gpio = GPIOD(11), 290 .mul_sel = 2, 291 .pull = 0, 292 .drv_level = 3, 293 }, 294 }, 295 { 296 .name = "LCD0_D18", 297 .type = PROPERTY_PIN, 298 .v.gpio_list = { 299 .gpio = GPIOD(12), 300 .mul_sel = 2, 301 .pull = 0, 302 .drv_level = 3, 303 }, 304 }, 305 { 306 .name = "LCD0_D19", 307 .type = PROPERTY_PIN, 308 .v.gpio_list = { 309 .gpio = GPIOD(13), 310 .mul_sel = 2, 311 .pull = 0, 312 .drv_level = 3, 313 }, 314 }, 315 { 316 .name = "LCD0_D20", 317 .type = PROPERTY_PIN, 318 .v.gpio_list = { 319 .gpio = GPIOD(14), 320 .mul_sel = 2, 321 .pull = 0, 322 .drv_level = 3, 323 }, 324 }, 325 { 326 .name = "LCD0_D21", 327 .type = PROPERTY_PIN, 328 .v.gpio_list = { 329 .gpio = GPIOD(15), 330 .mul_sel = 2, 331 .pull = 0, 332 .drv_level = 3, 333 }, 334 }, 335 { 336 .name = "LCD0_D22", 337 .type = PROPERTY_PIN, 338 .v.gpio_list = { 339 .gpio = GPIOD(16), 340 .mul_sel = 2, 341 .pull = 0, 342 .drv_level = 3, 343 }, 344 }, 345 { 346 .name = "LCD0_D23", 347 .type = PROPERTY_PIN, 348 .v.gpio_list = { 349 .gpio = GPIOD(17), 350 .mul_sel = 2, 351 .pull = 0, 352 .drv_level = 3, 353 }, 354 }, 355 { 356 .name = "LCD0_CLK", 357 .type = PROPERTY_PIN, 358 .v.gpio_list = { 359 .gpio = GPIOD(18), 360 .mul_sel = 2, 361 .pull = 0, 362 .drv_level = 3, 363 }, 364 }, 365 { 366 .name = "LCD0_DE", 367 .type = PROPERTY_PIN, 368 .v.gpio_list = { 369 .gpio = GPIOD(19), 370 .mul_sel = 2, 371 .pull = 0, 372 .drv_level = 3, 373 }, 374 }, 375 { 376 .name = "LCD0_HSYNC", 377 .type = PROPERTY_PIN, 378 .v.gpio_list = { 379 .gpio = GPIOD(20), 380 .mul_sel = 2, 381 .pull = 0, 382 .drv_level = 3, 383 }, 384 }, 385 { 386 .name = "LCD0_VSYNC", 387 .type = PROPERTY_PIN, 388 .v.gpio_list = { 389 .gpio = GPIOD(21), 390 .mul_sel = 2, 391 .pull = 0, 392 .drv_level = 3, 393 }, 394 }, 395 396 }; 397 398 struct property_t g_lcd1_config[] = { 399 { 400 .name = "lcd_used", 401 .type = PROPERTY_INTGER, 402 .v.value = 0, 403 }, 404 }; 405 406 struct property_t g_disp_config[] = { 407 { 408 .name = "disp_init_enable", 409 .type = PROPERTY_INTGER, 410 .v.value = 1, 411 }, 412 { 413 .name = "disp_mode", 414 .type = PROPERTY_INTGER, 415 .v.value = 0, 416 }, 417 { 418 .name = "screen0_output_type", 419 .type = PROPERTY_INTGER, 420 .v.value = 1, 421 }, 422 { 423 .name = "screen0_output_mode", 424 .type = PROPERTY_INTGER, 425 .v.value = 4, 426 }, 427 { 428 .name = "screen1_output_type", 429 .type = PROPERTY_INTGER, 430 .v.value = 1, 431 }, 432 { 433 .name = "screen1_output_mode", 434 .type = PROPERTY_INTGER, 435 .v.value = 4, 436 }, 437 }; 438 439 u32 g_lcd0_config_len = sizeof(g_lcd0_config) / sizeof(struct property_t); 440 u32 g_lcd1_config_len = sizeof(g_lcd1_config) / sizeof(struct property_t); 441 u32 g_disp_config_len = sizeof(g_disp_config) / sizeof(struct property_t); 442