Commit ca9d817ab54077d5b8a814a7af9c8342a0641051
Committed by
Stefano Babic
1 parent
f91c09acf5
Exists in
v2017.01-smarct4x
and in
40 other branches
mx6sabresd: Add Seiko WVGA panel support
Add support for the 4.3'' Seiko WVGA parallel display. In order to direct the splash screen to the Seiko display: => setenv panel SEIKO-WVGA => save => reset Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> Acked-by: Stefano Babic <sbabic@denx.de>
Showing 1 changed file with 61 additions and 0 deletions Side-by-side Diff
board/freescale/mx6sabresd/mx6sabresd.c
| ... | ... | @@ -51,6 +51,8 @@ |
| 51 | 51 | |
| 52 | 52 | #define I2C_PAD MUX_PAD_CTRL(I2C_PAD_CTRL) |
| 53 | 53 | |
| 54 | +#define DISP0_PWR_EN IMX_GPIO_NR(1, 21) | |
| 55 | + | |
| 54 | 56 | int dram_init(void) |
| 55 | 57 | { |
| 56 | 58 | gd->ram_size = get_ram_size((void *)PHYS_SDRAM, PHYS_SDRAM_SIZE); |
| ... | ... | @@ -141,6 +143,45 @@ |
| 141 | 143 | MX6_PAD_KEY_ROW1__GPIO4_IO09 | MUX_PAD_CTRL(NO_PAD_CTRL), |
| 142 | 144 | }; |
| 143 | 145 | |
| 146 | +static iomux_v3_cfg_t const rgb_pads[] = { | |
| 147 | + MX6_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK | MUX_PAD_CTRL(NO_PAD_CTRL), | |
| 148 | + MX6_PAD_DI0_PIN15__IPU1_DI0_PIN15 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
| 149 | + MX6_PAD_DI0_PIN2__IPU1_DI0_PIN02 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
| 150 | + MX6_PAD_DI0_PIN3__IPU1_DI0_PIN03 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
| 151 | + MX6_PAD_DI0_PIN4__IPU1_DI0_PIN04 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
| 152 | + MX6_PAD_DISP0_DAT0__IPU1_DISP0_DATA00 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
| 153 | + MX6_PAD_DISP0_DAT1__IPU1_DISP0_DATA01 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
| 154 | + MX6_PAD_DISP0_DAT2__IPU1_DISP0_DATA02 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
| 155 | + MX6_PAD_DISP0_DAT3__IPU1_DISP0_DATA03 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
| 156 | + MX6_PAD_DISP0_DAT4__IPU1_DISP0_DATA04 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
| 157 | + MX6_PAD_DISP0_DAT5__IPU1_DISP0_DATA05 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
| 158 | + MX6_PAD_DISP0_DAT6__IPU1_DISP0_DATA06 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
| 159 | + MX6_PAD_DISP0_DAT7__IPU1_DISP0_DATA07 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
| 160 | + MX6_PAD_DISP0_DAT8__IPU1_DISP0_DATA08 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
| 161 | + MX6_PAD_DISP0_DAT9__IPU1_DISP0_DATA09 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
| 162 | + MX6_PAD_DISP0_DAT10__IPU1_DISP0_DATA10 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
| 163 | + MX6_PAD_DISP0_DAT11__IPU1_DISP0_DATA11 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
| 164 | + MX6_PAD_DISP0_DAT12__IPU1_DISP0_DATA12 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
| 165 | + MX6_PAD_DISP0_DAT13__IPU1_DISP0_DATA13 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
| 166 | + MX6_PAD_DISP0_DAT14__IPU1_DISP0_DATA14 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
| 167 | + MX6_PAD_DISP0_DAT15__IPU1_DISP0_DATA15 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
| 168 | + MX6_PAD_DISP0_DAT16__IPU1_DISP0_DATA16 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
| 169 | + MX6_PAD_DISP0_DAT17__IPU1_DISP0_DATA17 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
| 170 | + MX6_PAD_DISP0_DAT18__IPU1_DISP0_DATA18 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
| 171 | + MX6_PAD_DISP0_DAT19__IPU1_DISP0_DATA19 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
| 172 | + MX6_PAD_DISP0_DAT20__IPU1_DISP0_DATA20 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
| 173 | + MX6_PAD_DISP0_DAT21__IPU1_DISP0_DATA21 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
| 174 | + MX6_PAD_DISP0_DAT22__IPU1_DISP0_DATA22 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
| 175 | + MX6_PAD_DISP0_DAT23__IPU1_DISP0_DATA23 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
| 176 | + MX6_PAD_SD1_DAT3__GPIO1_IO21 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
| 177 | +}; | |
| 178 | + | |
| 179 | +static void enable_rgb(struct display_info_t const *dev) | |
| 180 | +{ | |
| 181 | + imx_iomux_v3_setup_multiple_pads(rgb_pads, ARRAY_SIZE(rgb_pads)); | |
| 182 | + gpio_direction_output(DISP0_PWR_EN, 1); | |
| 183 | +} | |
| 184 | + | |
| 144 | 185 | static struct i2c_pads_info i2c_pad_info1 = { |
| 145 | 186 | .scl = { |
| 146 | 187 | .i2c_mode = MX6_PAD_KEY_COL3__I2C2_SCL | I2C_PAD, |
| ... | ... | @@ -356,6 +397,26 @@ |
| 356 | 397 | .hsync_len = 60, |
| 357 | 398 | .vsync_len = 10, |
| 358 | 399 | .sync = FB_SYNC_EXT, |
| 400 | + .vmode = FB_VMODE_NONINTERLACED | |
| 401 | +} }, { | |
| 402 | + .bus = 0, | |
| 403 | + .addr = 0, | |
| 404 | + .pixfmt = IPU_PIX_FMT_RGB24, | |
| 405 | + .detect = NULL, | |
| 406 | + .enable = enable_rgb, | |
| 407 | + .mode = { | |
| 408 | + .name = "SEIKO-WVGA", | |
| 409 | + .refresh = 60, | |
| 410 | + .xres = 800, | |
| 411 | + .yres = 480, | |
| 412 | + .pixclock = 29850, | |
| 413 | + .left_margin = 89, | |
| 414 | + .right_margin = 164, | |
| 415 | + .upper_margin = 23, | |
| 416 | + .lower_margin = 10, | |
| 417 | + .hsync_len = 10, | |
| 418 | + .vsync_len = 10, | |
| 419 | + .sync = 0, | |
| 359 | 420 | .vmode = FB_VMODE_NONINTERLACED |
| 360 | 421 | } } }; |
| 361 | 422 | size_t display_count = ARRAY_SIZE(displays); |