Created
November 18, 2013 13:42
-
-
Save Embedded-linux/7527946 to your computer and use it in GitHub Desktop.
Adding 7" LCD support
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Files to chnage: arch/arm/mach-omap2/board-am335xevm.c | |
| ------------------------------------------------------------------------ | |
| + bbcape7lcd_init(); | |
| ------------------------------------------------------------------------ | |
| Initilization of bbcape7" lcd function declaration | |
| ------------------------------------------------------------------------ | |
| +static void bbcape7lcd_init(void) | |
| +{ | |
| + setup_pin_mux(bbcape7_pin_mux); | |
| + gpio_request(BEAGLEBONE_LCD_AVDD_EN, "BONE_LCD_AVDD_EN"); | |
| + gpio_direction_output(BEAGLEBONE_LCD_AVDD_EN, 1); | |
| + | |
| + if (conf_disp_pll(300000000)) { | |
| + pr_info("Failed to set pixclock to 300000000, not attempting to" | |
| + "register LCD cape\n"); | |
| + return; | |
| + } | |
| + | |
| + if (am33xx_register_lcdc(&bbcape7_pdata)) | |
| + pr_info("Failed to register Beagleboard LCD cape device\n"); | |
| + | |
| + return; | |
| +} | |
| + | |
| ------------------------------------------------------------------------ | |
| lcd_init definition for 7" LCD of type bbcape7lcd | |
| ------------------------------------------------------------------------ | |
| +/* Module pin mux for Beagleboard 7" LCD cape */ | |
| +static struct pinmux_config bbcape7_pin_mux[] = { | |
| + {"lcd_data0.lcd_data0", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | |
| + | AM33XX_PULL_DISA}, | |
| + {"lcd_data1.lcd_data1", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | |
| + | AM33XX_PULL_DISA}, | |
| + {"lcd_data2.lcd_data2", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | |
| + | AM33XX_PULL_DISA}, | |
| + {"lcd_data3.lcd_data3", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | |
| + | AM33XX_PULL_DISA}, | |
| + {"lcd_data4.lcd_data4", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | |
| + | AM33XX_PULL_DISA}, | |
| + {"lcd_data5.lcd_data5", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | |
| + | AM33XX_PULL_DISA}, | |
| + {"lcd_data6.lcd_data6", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | |
| + | AM33XX_PULL_DISA}, | |
| + {"lcd_data7.lcd_data7", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | |
| + | AM33XX_PULL_DISA}, | |
| + {"lcd_data8.lcd_data8", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | |
| + | AM33XX_PULL_DISA}, | |
| + {"lcd_data9.lcd_data9", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | |
| + | AM33XX_PULL_DISA}, | |
| + {"lcd_data10.lcd_data10", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | |
| + | AM33XX_PULL_DISA}, | |
| + {"lcd_data11.lcd_data11", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | |
| + | AM33XX_PULL_DISA}, | |
| + {"lcd_data12.lcd_data12", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | |
| + | AM33XX_PULL_DISA}, | |
| + {"lcd_data13.lcd_data13", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | |
| + | AM33XX_PULL_DISA}, | |
| + {"lcd_data14.lcd_data14", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | |
| + | AM33XX_PULL_DISA}, | |
| + {"lcd_data15.lcd_data15", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | |
| + | AM33XX_PULL_DISA}, | |
| + {"lcd_vsync.lcd_vsync", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT}, | |
| + {"lcd_hsync.lcd_hsync", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT}, | |
| + {"lcd_pclk.lcd_pclk", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT}, | |
| + {"lcd_ac_bias_en.lcd_ac_bias_en", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT}, | |
| + {"ecap0_in_pwm0_out.gpio0_7", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // AVDD_EN | |
| + {NULL, 0}, | |
| +}; | |
| + | |
| ------------------------------------------------------------------------ | |
| Pinmuxing of bbcape7_lcd | |
| ------------------------------------------------------------------------ | |
| +/* Initialize and register lcdc device */ | |
| +#define BEAGLEBONE_LCD_AVDD_EN GPIO_TO_PIN(0, 7) | |
| + | |
| ------------------------------------------------------------------------ | |
| Intilizing and registering the device bbcape7lcd | |
| ------------------------------------------------------------------------ | |
| +/* Configure display pll */ | |
| +static int __init conf_disp_pll(int rate) | |
| +{ | |
| + struct clk *disp_pll; | |
| + int ret = -EINVAL; | |
| + | |
| + disp_pll = clk_get(NULL, "dpll_disp_ck"); | |
| + if (IS_ERR(disp_pll)) { | |
| + pr_err("Cannot clk_get disp_pll\n"); | |
| + goto out; | |
| + } | |
| + | |
| ------------------------------------------------------------------------ | |
| Definig the display pll [Phase Locked Loop] function for getting the clock | |
| functionality to ge the power. | |
| ------------------------------------------------------------------------ | |
| +/* ThreeFive LCD panel timings are defined in da8xx-fb display driver */ | |
| +struct da8xx_lcdc_platform_data bbcape7_pdata = { | |
| + .manu_name = "ThreeFive", | |
| + .controller_data = &bbcape7_cfg, | |
| + .type = "TFC_S9700RTWV35TR_01B", | |
| +}; | |
| + | |
| ------------------------------------------------------------------------ | |
| platform data of bbcape7_lcd | |
| ------------------------------------------------------------------------ | |
| +/* Define display configuration */ | |
| +static struct lcd_ctrl_config bbcape7_cfg = { | |
| + &bbcape7_panel, | |
| + .ac_bias = 255, | |
| + .ac_bias_intrpt = 0, | |
| + .dma_burst_sz = 16, | |
| + .bpp = 16, | |
| + .fdd = 0x80, | |
| + .tft_alt_mode = 0, | |
| + .stn_565_mode = 0, | |
| + .mono_8bit_mode = 0, | |
| + .invert_line_clock = 1, | |
| + .invert_frm_clock = 1, | |
| + .sync_edge = 0, | |
| + .sync_ctrl = 1, | |
| + .raster_order = 0, | |
| +}; | |
| ------------------------------------------------------------------------ | |
| Configuration data of bbcape7 | |
| ------------------------------------------------------------------------ | |
| +/* Beaglebone 7" Cape is 800x480 resolution/16bpp */ | |
| +static const struct display_panel bbcape7_panel = { | |
| + WVGA, | |
| + 16, | |
| + 16, | |
| + COLOR_ACTIVE, | |
| +}; | |
| ------------------------------------------------------------------------ | |
| Panel info which is used in bbcape7_cfg | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment