<Android> 开发板部分总结

Android开发板

Android开发板主要有Qualcomm, MTK, HiSilicon, Samsung SOC平台.

96boards开发板
开发板DragonBoard 410CMediatek X20Hikey 960
SOC平台Snapdragon 410C, MSM8916Helio X20, MT6797Hisi Kirin 960
KernelLinux 3.18Linux 3.18Linux 4.4
AndroidLollipop/MarshmallowMarshmallowOreo

详情请见:

Intrinsyc开发板
开发板Open Q820 Development Kit
SOCSnapdragon 820, MSM8996, APQ8096
KernelLinux 3.18
AndroidOreo

详情请见:

https://www.intrinsyc.com/snapdragon-embedded-development-kits/snapdragon-820-development-kit/

FriendlyARM友善之臂开发板
开发板Tiny4412
SOCSamsung Exynos 4412
KernelLinux 3.0
AndroidLollipop

详情请见:

http://www.arm9.net/tiny4412.asp

主要文件路径
开发板Dragonboard 410C
LKbootable\bootloader\lk\target\msm8916
DSIkernel\drivers\video\msm\mdss
DTSkernel\arch\arm64\boot\dts\qcom\apq8016-sbc.dtsi
TPkernel\drivers\input\touchscreen
开发板Mediatek X20
LKvendor\mediatek\proprietary\bootable\bootloader\lk\dev\lcm
vendor\mediatek\proprietary\bootable\bootloader\lk\project\amt6797_64_open.mk
LCMkernel-3.18\drivers\misc\mediatek\lcm
kernel-3.18\drivers\misc\mediatek\video\mt6797
DTSkernel-3.18\arch\arm64\boot\dts\amt6797_64_open.dts
kernel-3.18\drivers\misc\mediatek\dws\mt6797\amt6797_64_open.dws
TPkernel-3.18\drivers\input\touchscreen\mediatek
开发板Open Q820 Development Kit
LKLOCKED!
DSIkernel\msm-3.18\drivers\video\msm\mdss
DTSkernel\msm-3.18\arch\arm64\boot\dts\qcom\apq8096-dragonboard.dtsi
TPkernel\msm-3.18\drivers\input\touchscreen
开发板Hikey 960
DTShikey-linaro\arch\arm64\boot\dts\hisilicon\hi3660.dtsi
TPhikey-linaro\drivers\input\touchscreen
Android LCD点亮
开机: LK点亮 LCD
  • 如果失败, Kernel点亮LCD
  • 成功,则直到下一次灭屏
开机后灭亮屏: Kernel点亮


LCD手动亮灭屏
1.Qualcomm手动亮灭屏

mdss_fb.c:

void mdss_fb_my_blank(void)
{
    struct fb_info *fbi = fbi_list[0];
    pr_info("[FB]%s called\n", __func__);
    mdss_fb_blank_sub(FB_BLANK_POWERDOWN, fbi, 1);
}

void mdss_fb_my_unblank(void) 
{
    struct fb_info *fbi = fbi_list[0];
    pr_info("[FB]%s called\n", __func__);
    mdss_fb_blank_sub(FB_BLANK_UNBLANK, fbi, 1);
}

mdss_dsi_panel.c:

void mdss_fb_my_blank(void);
void mdss_fb_my_unblank(void);

int mdss_dsi_panel_my_init_(void *dir)
{
    mdelay(1000);
    while (1) {
        if (!mdss_fb_panel_registered(0)) {
            mdelay(500);
            continue;
        }
        mdss_fb_my_blank();
        mdelay(100);
        mdss_fb_my_unblank();
        return 0;
    }
    return 0;
}

void mdss_dsi_panel_my_init(void)
{

    struct task_struct *thread = NULL;
    thread = kthread_run(mdss_dsi_panel_my_init_, (void*)NULL, "my_init");
    if (IS_ERR(thread)) {
        pr_err("failed to create thread for my_init init\n");
        return;
    }    
}

mdss_mdp_intf_video.c

void mdss_dsi_panel_my_init(void);
int mdss_mdp_video_reconfigure_splash_done(struct mdss_mdp_ctl *ctl,
    bool handoff)
{
    //...
    mdss_dsi_panel_my_init();
}
2. MTK开机kernel点屏

disp_lcm.c:

int disp_lcm_init(disp_lcm_handle *plcm, int force)
{
    LCM_DRIVER *lcm_drv = NULL;

    DISPFUNC();
    if (_is_lcm_inited(plcm)) {
        lcm_drv = plcm->drv;

        if (lcm_drv->init_power) {
            if (!disp_lcm_is_inited(plcm) || force) {
                pr_debug("lcm init power()\n");
                lcm_drv->init_power();
            }
        }

        if (lcm_drv->init) {
            if (!disp_lcm_is_inited(plcm) || force) {
                pr_debug("lcm init()\n");
                lcm_drv->init();
            }
        } else {
            DISPERR("FATAL ERROR, lcm_drv->init is null\n");
            return -1;
        }
    }
    //...
}

lk LCM驱动 lcm_driver.c

LCM_DRIVER my_lcm_drv = {
    //.init = lcm_init,
    //.init_power = lcm_init_power,
};

kernel primary_display.c:

force: 0 -> 1

int primary_display_init(char *lcm_name, unsigned int lcm_fps, int is_lcm_inited)
{
    // ...
    if (is_lcm_inited) {
        ret = disp_lcm_init(pgc->plcm, /*0*/1); /* no need lcm power on,because lk power on lcm */
    } else {
        ret = disp_lcm_init(pgc->plcm, 1);

        if (primary_display_is_video_mode())
            dpmgr_path_trigger(pgc->dpmgr_handle, NULL, 0);
    }
    // ...
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值