]>
Commit | Line | Data |
---|---|---|
5d71bd21 VN |
1 | /* |
2 | * Copyright (C) 2012 Freescale Semiconductor, Inc. | |
3 | * Fabio Estevam <[email protected]> | |
4 | * | |
5 | * See file CREDITS for list of people who contributed to this | |
6 | * project. | |
7 | * | |
8 | * This program is free software; you can redistribute it and/or | |
9 | * modify it under the terms of the GNU General Public License as | |
10 | * published by the Free Software Foundation; either version 2 of | |
11 | * the License, or (at your option) any later version. | |
12 | * | |
13 | * This program is distributed in the hope that it will be useful, | |
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | * GNU General Public License for more details. | |
17 | * | |
18 | * You should have received a copy of the GNU General Public License | |
19 | * along with this program; if not, write to the Free Software | |
20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | |
21 | * MA 02111-1307 USA | |
22 | */ | |
23 | ||
24 | #include <common.h> | |
25 | #include <linux/list.h> | |
26 | #include <asm/gpio.h> | |
27 | #include <asm/arch/iomux.h> | |
28 | #include <linux/fb.h> | |
29 | #include <ipu_pixfmt.h> | |
30 | ||
31 | #define MX51EVK_LCD_3V3 IMX_GPIO_NR(4, 9) | |
32 | #define MX51EVK_LCD_5V IMX_GPIO_NR(4, 10) | |
33 | #define MX51EVK_LCD_BACKLIGHT IMX_GPIO_NR(3, 4) | |
34 | ||
35 | static struct fb_videomode const claa_wvga = { | |
36 | .name = "CLAA07LC0ACW", | |
37 | .refresh = 57, | |
38 | .xres = 800, | |
39 | .yres = 480, | |
40 | .pixclock = 37037, | |
41 | .left_margin = 40, | |
42 | .right_margin = 60, | |
43 | .upper_margin = 10, | |
44 | .lower_margin = 10, | |
45 | .hsync_len = 20, | |
46 | .vsync_len = 10, | |
47 | .sync = 0, | |
48 | .vmode = FB_VMODE_NONINTERLACED | |
49 | }; | |
50 | ||
11d80af4 FE |
51 | static struct fb_videomode const dvi = { |
52 | .name = "DVI panel", | |
53 | .refresh = 60, | |
54 | .xres = 1024, | |
55 | .yres = 768, | |
56 | .pixclock = 15385, | |
57 | .left_margin = 220, | |
58 | .right_margin = 40, | |
59 | .upper_margin = 21, | |
60 | .lower_margin = 7, | |
61 | .hsync_len = 60, | |
62 | .vsync_len = 10, | |
63 | .sync = 0, | |
64 | .vmode = FB_VMODE_NONINTERLACED | |
65 | }; | |
66 | ||
5d71bd21 VN |
67 | void setup_iomux_lcd(void) |
68 | { | |
69 | /* DI2_PIN15 */ | |
70 | mxc_request_iomux(MX51_PIN_DI_GP4, IOMUX_CONFIG_ALT4); | |
71 | ||
72 | /* Pad settings for MX51_PIN_DI2_DISP_CLK */ | |
73 | mxc_iomux_set_pad(MX51_PIN_DI2_DISP_CLK, PAD_CTL_HYS_NONE | | |
74 | PAD_CTL_PKE_ENABLE | PAD_CTL_PUE_KEEPER | | |
75 | PAD_CTL_DRV_MAX | PAD_CTL_SRE_SLOW); | |
76 | ||
77 | /* Turn on 3.3V voltage for LCD */ | |
78 | mxc_request_iomux(MX51_PIN_CSI2_D12, IOMUX_CONFIG_ALT3); | |
79 | gpio_direction_output(MX51EVK_LCD_3V3, 1); | |
80 | ||
81 | /* Turn on 5V voltage for LCD */ | |
82 | mxc_request_iomux(MX51_PIN_CSI2_D13, IOMUX_CONFIG_ALT3); | |
83 | gpio_direction_output(MX51EVK_LCD_5V, 1); | |
84 | ||
85 | /* Turn on GPIO backlight */ | |
86 | mxc_request_iomux(MX51_PIN_DI1_D1_CS, IOMUX_CONFIG_ALT4); | |
87 | mxc_iomux_set_input(MX51_GPIO3_IPP_IND_G_IN_4_SELECT_INPUT, | |
88 | INPUT_CTL_PATH1); | |
89 | gpio_direction_output(MX51EVK_LCD_BACKLIGHT, 1); | |
90 | } | |
91 | ||
11d80af4 | 92 | int board_video_skip(void) |
5d71bd21 | 93 | { |
11d80af4 FE |
94 | int ret; |
95 | char const *e = getenv("panel"); | |
96 | ||
97 | if (e) { | |
98 | if (strcmp(e, "claa") == 0) { | |
99 | ret = ipuv3_fb_init(&claa_wvga, 1, IPU_PIX_FMT_RGB565); | |
100 | if (ret) | |
101 | printf("claa cannot be configured: %d\n", ret); | |
102 | return ret; | |
103 | } | |
104 | } | |
105 | ||
106 | /* | |
107 | * 'panel' env variable not found or has different value than 'claa' | |
108 | * Defaulting to dvi output. | |
109 | */ | |
110 | ret = ipuv3_fb_init(&dvi, 0, IPU_PIX_FMT_RGB24); | |
5d71bd21 | 111 | if (ret) |
11d80af4 FE |
112 | printf("dvi cannot be configured: %d\n", ret); |
113 | return ret; | |
5d71bd21 | 114 | } |