mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-21 11:44:01 +08:00
ARM: mxs/mx28evk: add framebuffer device
Signed-off-by: Shawn Guo <shawn.guo@freescale.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
parent
12b90f8a2c
commit
0590a79031
@ -35,6 +35,7 @@ config MACH_MX28EVK
|
|||||||
select MXS_HAVE_PLATFORM_AUART
|
select MXS_HAVE_PLATFORM_AUART
|
||||||
select MXS_HAVE_PLATFORM_FEC
|
select MXS_HAVE_PLATFORM_FEC
|
||||||
select MXS_HAVE_PLATFORM_FLEXCAN
|
select MXS_HAVE_PLATFORM_FLEXCAN
|
||||||
|
select MXS_HAVE_PLATFORM_MXSFB
|
||||||
select MXS_OCOTP
|
select MXS_OCOTP
|
||||||
default y
|
default y
|
||||||
help
|
help
|
||||||
|
@ -30,6 +30,8 @@
|
|||||||
|
|
||||||
#define MX28EVK_FLEXCAN_SWITCH MXS_GPIO_NR(2, 13)
|
#define MX28EVK_FLEXCAN_SWITCH MXS_GPIO_NR(2, 13)
|
||||||
#define MX28EVK_FEC_PHY_POWER MXS_GPIO_NR(2, 15)
|
#define MX28EVK_FEC_PHY_POWER MXS_GPIO_NR(2, 15)
|
||||||
|
#define MX28EVK_BL_ENABLE MXS_GPIO_NR(3, 18)
|
||||||
|
#define MX28EVK_LCD_ENABLE MXS_GPIO_NR(3, 30)
|
||||||
#define MX28EVK_FEC_PHY_RESET MXS_GPIO_NR(4, 13)
|
#define MX28EVK_FEC_PHY_RESET MXS_GPIO_NR(4, 13)
|
||||||
|
|
||||||
static const iomux_cfg_t mx28evk_pads[] __initconst = {
|
static const iomux_cfg_t mx28evk_pads[] __initconst = {
|
||||||
@ -79,6 +81,40 @@ static const iomux_cfg_t mx28evk_pads[] __initconst = {
|
|||||||
MX28_PAD_GPMI_CE3N__CAN1_RX,
|
MX28_PAD_GPMI_CE3N__CAN1_RX,
|
||||||
/* transceiver power control */
|
/* transceiver power control */
|
||||||
MX28_PAD_SSP1_CMD__GPIO_2_13,
|
MX28_PAD_SSP1_CMD__GPIO_2_13,
|
||||||
|
|
||||||
|
/* mxsfb (lcdif) */
|
||||||
|
MX28_PAD_LCD_D00__LCD_D0 | MXS_PAD_CTRL,
|
||||||
|
MX28_PAD_LCD_D01__LCD_D1 | MXS_PAD_CTRL,
|
||||||
|
MX28_PAD_LCD_D02__LCD_D2 | MXS_PAD_CTRL,
|
||||||
|
MX28_PAD_LCD_D03__LCD_D3 | MXS_PAD_CTRL,
|
||||||
|
MX28_PAD_LCD_D04__LCD_D4 | MXS_PAD_CTRL,
|
||||||
|
MX28_PAD_LCD_D05__LCD_D5 | MXS_PAD_CTRL,
|
||||||
|
MX28_PAD_LCD_D06__LCD_D6 | MXS_PAD_CTRL,
|
||||||
|
MX28_PAD_LCD_D07__LCD_D7 | MXS_PAD_CTRL,
|
||||||
|
MX28_PAD_LCD_D08__LCD_D8 | MXS_PAD_CTRL,
|
||||||
|
MX28_PAD_LCD_D09__LCD_D9 | MXS_PAD_CTRL,
|
||||||
|
MX28_PAD_LCD_D10__LCD_D10 | MXS_PAD_CTRL,
|
||||||
|
MX28_PAD_LCD_D11__LCD_D11 | MXS_PAD_CTRL,
|
||||||
|
MX28_PAD_LCD_D12__LCD_D12 | MXS_PAD_CTRL,
|
||||||
|
MX28_PAD_LCD_D13__LCD_D13 | MXS_PAD_CTRL,
|
||||||
|
MX28_PAD_LCD_D14__LCD_D14 | MXS_PAD_CTRL,
|
||||||
|
MX28_PAD_LCD_D15__LCD_D15 | MXS_PAD_CTRL,
|
||||||
|
MX28_PAD_LCD_D16__LCD_D16 | MXS_PAD_CTRL,
|
||||||
|
MX28_PAD_LCD_D17__LCD_D17 | MXS_PAD_CTRL,
|
||||||
|
MX28_PAD_LCD_D18__LCD_D18 | MXS_PAD_CTRL,
|
||||||
|
MX28_PAD_LCD_D19__LCD_D19 | MXS_PAD_CTRL,
|
||||||
|
MX28_PAD_LCD_D20__LCD_D20 | MXS_PAD_CTRL,
|
||||||
|
MX28_PAD_LCD_D21__LCD_D21 | MXS_PAD_CTRL,
|
||||||
|
MX28_PAD_LCD_D22__LCD_D22 | MXS_PAD_CTRL,
|
||||||
|
MX28_PAD_LCD_D23__LCD_D23 | MXS_PAD_CTRL,
|
||||||
|
MX28_PAD_LCD_RD_E__LCD_VSYNC | MXS_PAD_CTRL,
|
||||||
|
MX28_PAD_LCD_WR_RWN__LCD_HSYNC | MXS_PAD_CTRL,
|
||||||
|
MX28_PAD_LCD_RS__LCD_DOTCLK | MXS_PAD_CTRL,
|
||||||
|
MX28_PAD_LCD_CS__LCD_ENABLE | MXS_PAD_CTRL,
|
||||||
|
/* LCD panel enable */
|
||||||
|
MX28_PAD_LCD_RESET__GPIO_3_30 | MXS_PAD_CTRL,
|
||||||
|
/* backlight control */
|
||||||
|
MX28_PAD_PWM2__GPIO_3_18 | MXS_PAD_CTRL,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* fec */
|
/* fec */
|
||||||
@ -196,6 +232,32 @@ static const struct flexcan_platform_data
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* mxsfb (lcdif) */
|
||||||
|
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 const struct mxsfb_platform_data mx28evk_mxsfb_pdata __initconst = {
|
||||||
|
.mode_list = mx28evk_video_modes,
|
||||||
|
.mode_count = ARRAY_SIZE(mx28evk_video_modes),
|
||||||
|
.default_bpp = 32,
|
||||||
|
.ld_intf_width = STMLCDIF_24BIT,
|
||||||
|
};
|
||||||
|
|
||||||
static void __init mx28evk_init(void)
|
static void __init mx28evk_init(void)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
@ -221,6 +283,20 @@ static void __init mx28evk_init(void)
|
|||||||
mx28_add_flexcan(0, &mx28evk_flexcan_pdata[0]);
|
mx28_add_flexcan(0, &mx28evk_flexcan_pdata[0]);
|
||||||
mx28_add_flexcan(1, &mx28evk_flexcan_pdata[1]);
|
mx28_add_flexcan(1, &mx28evk_flexcan_pdata[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ret = gpio_request_one(MX28EVK_LCD_ENABLE, GPIOF_DIR_OUT, "lcd-enable");
|
||||||
|
if (ret)
|
||||||
|
pr_warn("failed to request gpio lcd-enable: %d\n", ret);
|
||||||
|
else
|
||||||
|
gpio_set_value(MX28EVK_LCD_ENABLE, 1);
|
||||||
|
|
||||||
|
ret = gpio_request_one(MX28EVK_BL_ENABLE, GPIOF_DIR_OUT, "bl-enable");
|
||||||
|
if (ret)
|
||||||
|
pr_warn("failed to request gpio bl-enable: %d\n", ret);
|
||||||
|
else
|
||||||
|
gpio_set_value(MX28EVK_BL_ENABLE, 1);
|
||||||
|
|
||||||
|
mx28_add_mxsfb(&mx28evk_mxsfb_pdata);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __init mx28evk_timer_init(void)
|
static void __init mx28evk_timer_init(void)
|
||||||
|
Loading…
Reference in New Issue
Block a user