免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3832 | 回复: 3
打印 上一主题 下一主题

机子启动时白屏一下 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-09-19 10:55 |只看该作者 |倒序浏览
我在android下弄个lcd的驱动
但是我驱动的时候白屏了一下,但是我的时序也对的
请谁遇到过这样的问题帮忙说下,一下就是我的代码
#include <debug.h>
#include <stdlib.h>
#include <string.h>
#include <tcc_lcd.h>

#ifdef TD070RDH11
#include <dev/gpio.h>



static int tm070rdh11_panel_init(struct lcd_panel *panel)
{
        struct lcd_platform_data *pdata = &(panel->dev);

        printf("%s : %d  \n", __func__, 0);
        tcclcd_gpio_config(pdata->display_on, 1);
        tcclcd_gpio_config(pdata->power_on, 1);
        tcclcd_gpio_config(pdata->bl_on, 1);
        tcclcd_gpio_config(pdata->reset, 1);

       
        tcclcd_gpio_set_value(pdata->display_on, 0);
        tcclcd_gpio_set_value(pdata->power_on, 0);

        tcclcd_gpio_set_value(pdata->bl_on, 0);
        tcclcd_gpio_set_value(pdata->reset, 0);
        return 0;
}

static int tm070rdh11_set_power(struct lcd_panel *panel, int on)
{
        struct lcd_platform_data *pdata = &(panel->dev);

        printf("%s : %d ~ \n", __func__, on);

        //VSYNC option
#if !defined(_M801_88_)
        BITCSET(HwGPIOF->GPFN1, HwPORTCFG_GPFN6_MASK ,HwPORTCFG_GPFN6(0));
        BITCSET(HwGPIOF->GPEN, Hw13 ,0);
#endif

        if (on) {
                tcclcd_gpio_set_value(pdata->reset, 1);
                lcd_delay_us(1000);

                tcclcd_gpio_set_value(pdata->power_on, 1);
                lcd_delay_us(1000);
                tcclcd_gpio_set_value(pdata->reset, 0);
                lcd_delay_us(1000);
                tcclcd_gpio_set_value(pdata->reset, 1);

                mdelay(10);

                lcdc_initialize(1, panel);

                LCDC_IO_Set(1, panel->bus_width);

                // lcd port current
                BITCSET(HwGPIOC->GPCD0,0xFFFFFFFF, 0xAAAAAAAA);               
                BITCSET(HwGPIOC->GPCD1,0x00FFFFFF, 0x00FFAAAA);

                BITCSET(HwGPIOC->GPFN3, HwPORTCFG_GPFN0_MASK , HwPORTCFG_GPFN0(0));
                BITCSET(HwGPIOC->GPEN, Hw24 ,Hw24);
                BITCSET(HwGPIOC->GPDAT, Hw24 ,0);

                mdelay(16);

        }
        else
        {
                tcclcd_gpio_set_value(pdata->display_on, 0);
                mdelay(10);
                tcclcd_gpio_set_value(pdata->reset, 0);
                tcclcd_gpio_set_value(pdata->power_on, 0);
                LCDC_IO_Disable(0, panel->bus_width);
        }

        return 0;
}


static int tm070rdh11_set_backlight_level(struct lcd_panel *panel, int level)
{
        struct lcd_platform_data *pdata = &(panel->dev);

        printf("%s : %d\n", __func__, level);

        if (level == 0) {
                tcclcd_gpio_set_value(pdata->bl_on, 0);
        } else {
                tcclcd_gpio_set_value(pdata->bl_on, 1);
        }
       
        return 0;
}


static struct lcd_panel tm070rdh11_panel = {
        .name                = "TD070RDH11",
        .manufacturer        = "OPTOELECTRONICS",
        .id                = PANEL_ID_TD070RDH11,
        .xres                = 800,
        .yres                = 480,
        .width                = 154,
        .height                = 85,
        .bpp                = 24,
        .clk_freq        = 300000,
        .clk_div        = 2,
        .bus_width        = 24,

        .lpw                = 47,
        .lpc                = 800,
        .lswc                = 39,
        .lewc                = 39,

        .vdb                = 0,
        .vdf                = 0,
       
        .fpw1                = 2,
        .flc1                = 480,
        .fswc1                = 28,
        .fewc1                = 12,
       
        .fpw2                = 2,
        .flc2                = 480,
        .fswc2                = 28,
        .fewc2                = 12,
//烙矫        .sync_invert        = IV_INVERT | IH_INVERT | IP_INVERT,
        .sync_invert        = IV_INVERT | IH_INVERT,

        .init                = tm070rdh11_panel_init,
        .set_power        = tm070rdh11_set_power,
        .set_backlight_level = tm070rdh11_set_backlight_level,
};

struct lcd_panel *tccfb_get_panel(void)
{
        return &tm070rdh11_panel;
}
#endif//TD070RDH11

论坛徽章:
0
2 [报告]
发表于 2011-09-28 16:28 |只看该作者
{:3_199:} 围观,求解。。。

论坛徽章:
0
3 [报告]
发表于 2012-09-23 13:54 |只看该作者
高人在哪里?:wink:

论坛徽章:
0
4 [报告]
发表于 2012-11-09 11:53 |只看该作者
先开lcd,再开背光
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP