/* * Copyright 2012 Freescale Semiconductor, Inc. * Copyright 2012 Linaro Ltd. * * The code contained herein is licensed under the GNU General Public * License. You may obtain a copy of the GNU General Public License * Version 2 or later at the following locations: * * http://www.opensource.org/licenses/gpl-license.html * http://www.gnu.org/copyleft/gpl.html */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include static struct fb_videomode mx23evk_video_modes[] = { { .name = "Samsung-LMS430HF02", .refresh = 60, .xres = 480, .yres = 272, .pixclock = 108096, /* picosecond (9.2 MHz) */ .left_margin = 15, .right_margin = 8, .upper_margin = 12, .lower_margin = 4, .hsync_len = 1, .vsync_len = 1, .sync = FB_SYNC_DATA_ENABLE_HIGH_ACT | FB_SYNC_DOTCLK_FAILING_ACT, }, }; static struct fb_videomode mx28evk_video_modes[] = { { .name = "Seiko-43WVF1G", .refresh = 60, .xres = 800, .yres = 480, .pixclock = 29851, /* picosecond (33.5 MHz) */ .left_margin = 89, .right_margin = 164, .upper_margin = 23, .lower_margin = 10, .hsync_len = 10, .vsync_len = 10, .sync = FB_SYNC_DATA_ENABLE_HIGH_ACT | FB_SYNC_DOTCLK_FAILING_ACT, }, }; static struct fb_videomode m28evk_video_modes[] = { { .name = "Ampire AM-800480R2TMQW-T01H", .refresh = 60, .xres = 800, .yres = 480, .pixclock = 30066, /* picosecond (33.26 MHz) */ .left_margin = 0, .right_margin = 256, .upper_margin = 0, .lower_margin = 45, .hsync_len = 1, .vsync_len = 1, .sync = FB_SYNC_DATA_ENABLE_HIGH_ACT, }, }; static struct fb_videomode apx4devkit_video_modes[] = { { .name = "HannStar PJ70112A", .refresh = 60, .xres = 800, .yres = 480, .pixclock = 33333, /* picosecond (30.00 MHz) */ .left_margin = 88, .right_margin = 40, .upper_margin = 32, .lower_margin = 13, .hsync_len = 48, .vsync_len = 3, .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT | FB_SYNC_DATA_ENABLE_HIGH_ACT | FB_SYNC_DOTCLK_FAILING_ACT, }, }; static struct fb_videomode apf28dev_video_modes[] = { { .name = "LW700", .refresh = 60, .xres = 800, .yres = 480, .pixclock = 30303, /* picosecond */ .left_margin = 96, .right_margin = 96, /* at least 3 & 1 */ .upper_margin = 0x14, .lower_margin = 0x15, .hsync_len = 64, .vsync_len = 4, .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT | FB_SYNC_DATA_ENABLE_HIGH_ACT | FB_SYNC_DOTCLK_FAILING_ACT, }, }; static struct mxsfb_platform_data mxsfb_pdata __initdata; /* * MX28EVK_FLEXCAN_SWITCH is shared between both flexcan controllers */ #define MX28EVK_FLEXCAN_SWITCH MXS_GPIO_NR(2, 13) static int flexcan0_en, flexcan1_en; static void mx28evk_flexcan_switch(void) { if (flexcan0_en || flexcan1_en) gpio_set_value(MX28EVK_FLEXCAN_SWITCH, 1); else