Hi,every one
My hardware is flashboard ,DM3730. Source is TI_Android_GingerBread_2_3_4Sources.tar ( linux2.6.37 ).
I port a lcd drive from linux2.6.32 to linux2.6.37. the lcd drive can display in linux2.6.32. but linux2.6.37 can't.
Could you tell me how to config the menuconfig or port device ?
************************************************************
board-omap3evm.c
static void __init omap3_evm_display_init(void)
{
printk("[yuzx]omap3_evm_display_init\n");
int r;
r = gpio_request(OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO, \
"lcd_panel_bklight_gpio");
if (r) {
printk(KERN_ERR "failed to get lcd_panel_bklight_gpio\n");
return;
}
gpio_direction_output(OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO, 0);
r = gpio_request(OMAP3EVM_LCD_PANEL_DISP_MODE, "lcd_panel_disp_mode");
if (r) {
printk(KERN_ERR "failed to get lcd_panel_disp_mode\n");
goto err_1;
}
gpio_direction_output(OMAP3EVM_LCD_PANEL_DISP_MODE, 0);
r = gpio_request(OMAP3EVM_LCD_PANEL_PWR_CTRL, "lcd_panel_pwr_ctrl");
if (r) {
printk(KERN_ERR "failed to get lcd_panel_pwr_ctrl\n");
goto err_2;
}
gpio_direction_output(OMAP3EVM_LCD_PANEL_PWR_CTRL, 1);
return;
err_2:
gpio_free(OMAP3EVM_LCD_PANEL_DISP_MODE);
err_1:
gpio_free(OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO);
}
static int omap3_evm_enable_lcd(struct omap_dss_device *dssdev)
{
printk("[yuzx]omap3_evm_enable_lcd\n");
if (dvi_enabled) {
printk(KERN_ERR "cannot enable LCD, DVI is enabled\n");
return -EINVAL;
}
gpio_set_value(OMAP3EVM_LCD_PANEL_PWR_CTRL, 0);
if (get_omap3_evm_rev() >= OMAP3EVM_BOARD_GEN_2) {
gpio_set_value(OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO, 1);
gpio_set_value(OMAP3EVM_LCD_PANEL_DISP_MODE, 1);
} else {
gpio_set_value(OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO, 0);
gpio_set_value(OMAP3EVM_LCD_PANEL_DISP_MODE, 0);
}
//omap_pm_set_min_bus_tput(&dssdev->dev, OCP_INITIATOR_AGENT, 400000);
lcd_enabled = 1;
return 0;
}
static void omap3_evm_disable_lcd(struct omap_dss_device *dssdev)
{
printk("[yuzx]omap3_evm_disable_lcd\n");
//omap_pm_set_min_bus_tput(&dssdev->dev, OCP_INITIATOR_AGENT, 0);
gpio_set_value(OMAP3EVM_LCD_PANEL_PWR_CTRL, 1);
if (get_omap3_evm_rev() >= OMAP3EVM_BOARD_GEN_2)
{
gpio_set_value(OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO, 0);
gpio_set_value(OMAP3EVM_LCD_PANEL_DISP_MODE, 0);
}
else
{
gpio_set_value(OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO, 1);
gpio_set_value(OMAP3EVM_LCD_PANEL_DISP_MODE, 1);
}
lcd_enabled = 0;
-----
static struct omap_dss_device omap3_evm_lcd_device = {
.name = "lcd",
#ifdef CONFIG_MACH_FLASHBOARD
.driver_name = "amdm_ls_panel",
#else
.driver_name = "sharp_ls_panel",
#endif
.type = OMAP_DISPLAY_TYPE_DPI,
#ifdef CONFIG_MACH_FLASHBOARD
.phy.dpi.data_lines = 24,
#else
.phy.dpi.data_lines = 18,
#endif
.max_backlight_level = 100,
.platform_enable = omap3_evm_enable_lcd,
.platform_disable = omap3_evm_disable_lcd,
#ifndef CONFIG_MACH_FLASHBOARD
.set_backlight = omap3evm_set_bl_intensity,
#endif
};
--------
static struct omap_dss_device *omap3_evm_dss_devices[] = {
&omap3_evm_lcd_device,
&omap3_evm_tv_device,
&omap3_evm_dvi_device,
};
static struct omap_dss_board_info omap3_evm_dss_data = {
.num_devices = ARRAY_SIZE(omap3_evm_dss_devices),
.devices = omap3_evm_dss_devices,
.default_device = &omap3_evm_lcd_device,
};
******************************************
panel-amdm-clap08.c
static struct omap_video_timings amdm_ls_timings = {
.x_res = 800,//480
.y_res = 600, //640
.pixel_clock = 33000 ,//27000,//51200,//19200,
.hsw = 30,//2,
.hfp = 210,//1,
.hbp = 16,//28,
.vsw = 13,//1,
.vfp = 22,//1,
.vbp = 10,//1,
};