Skip to content

Instantly share code, notes, and snippets.

@Embedded-linux
Created November 18, 2013 13:42
Show Gist options
  • Select an option

  • Save Embedded-linux/7527946 to your computer and use it in GitHub Desktop.

Select an option

Save Embedded-linux/7527946 to your computer and use it in GitHub Desktop.
Adding 7" LCD support
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