MIPI长包短包

接芯片长包,短包的命令不一样,这点最容易忽略,导致平初始化失败。
主要看这几种,问清楚是哪种,或自己试:
          DCS   GEN
#define LPDT_LPK        0x39  //0x29
#define LPDT_SPK       0x15  //0x23
#define Norm_SPK  0x05  //0x13   
/* dcs read/write */
#define DTYPE_DCS_WRITE  0X05  /* short wirte, 0 parameter */
#define DTYPE_DCS_WRITE1  0X15  /* short wirte, 1 parameter */
#define DTYPE_DCS_READ  0X06  /* read */
#define DTYPE_DCS_LWRITE  0X39  /* long write */
在读/写指令时,Generic指令 是不区分 Index 和 parameter 的,而 DCS 会默认把 data0 作为Index 然后计算 parameter 数目。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/* dcs read/write */
#define DTYPE_DCS_WRITE     0x05    /* short write, 0 parameter */
#define DTYPE_DCS_WRITE1    0x15    /* short write, 1 parameter */
#define DTYPE_DCS_LWRITE    0x39    /* long write/write LUT command packet */
#define DTYPE_DCS_READ      0x06    /* read, 0 parameter */

/* generic read/write */
#define DTYPE_GEN_WRITE     0x03    /* short write, 0 parameter */
#define DTYPE_GEN_WRITE1    0x13    /* short write, 1 parameter */
#define DTYPE_GEN_WRITE2    0x23    /* short write, 2 parameters */
#define DTYPE_GEN_LWRITE    0x29    /* long write */
#define DTYPE_GEN_READ      0x04    /* long read, 0 parameter */
#define DTYPE_GEN_READ1     0x14    /* long read, 1 parameter */
#define DTYPE_GEN_READ2     0x24    /* long read, 2 parameters */

#define DTYPE_TEAR_ON       0x35    /* set tear on */
#define DTYPE_MAX_PKTSIZE   0x37    /* set max packet size */
#define DTYPE_NULL_PKT      0x09    /* null packet, no data */
#define DTYPE_BLANK_PKT     0x19    /* blanking packet, no data */

#define DTYPE_CM_ON         0x02    /* color mode off */
#define DTYPE_CM_OFF        0x12    /* color mode on */
#define DTYPE_PERIPHERAL_OFF    0x22
#define DTYPE_PERIPHERAL_ON     0x32

/* Video mode */
0x0E    /* Packed Pixel Stream, 16-bit RGB, 5-6-5 Format */
0x1E    /* Packed Pixel Stream, 18-bit RGB, 6-6-6 Format */
0x2E    /* Loosely Packed Pixel Stream, 16-bit RGB, 5-6-5 Format */
0x3E    /* Packed Pixel Stream, 24-bit RGB, 8-8-8 Format */

0xx0h and 0xxFh /*DO NOT USE, All unspecified codes are reserved */
/device/sprd/sharkl3/s9863a1h10_go_32b/s9863a1h10_go_32b_Base.mk(10.0)
#Display/Graphic config
PRODUCT_PROPERTY_OVERRIDES += \
      ro.sf.lcd_density=160 \
      ro.sf.lcd_width=54 \
      ro.sf.lcd_height=96 \
      ro.opengles.version=196610
/device/sprd/sharkl3/s9863a1h10_go_32b/s9863a1h10_go_32b_2g.mk(10.0)
PRODUCT_AAPT_CONFIG := normal large xlarge mdpi 420dpi xxhdpi
PRODUCT_AAPT_PREF_CONFIG := xhdpi
PRODUCT_AAPT_PREBUILT_DPI := hdpi xhdpi  
Z610\device\sprd\sharkl5Pro\ums512_1h10\module\display\md.mk(11.0)
#Display/Graphic config
PRODUCT_PROPERTY_OVERRIDES += \
      ro.sf.lcd_density=240 \
      ro.sf.lcd_width=54 \
      ro.sf.lcd_height=96
# For GMS Express 2.0, do not trimming resources
PRODUCT_AAPT_CONFIG := normal large xlarge mdpi 420dpi xxhdpi
#PRODUCT_AAPT_PREF_CONFIG := xxhdpi
PRODUCT_AAPT_PREBUILT_DPI := mdpi
TARGET_SCREEN_DENSITY := 240
PRODUCT_COPY_FILES += $(call md-overlayrsb,module/display/enhance/flash.xml):vendor/etc/enhance/flash.xml
#Display PQ 3dlut config parameters
PRODUCT_COPY_FILES += \
    $(call md-overlayrsb,module/display/enhance/3d_lut.xml):vendor/etc/enhance/3d_lut.xml  
The parameters are defined as:

  +----------+-------------------------------------+----------+-------+
  |          |        ↑                            |          |       |
  |          |        |vback_porch                 |          |       |
  |          |        ↓                            |          |       |
  +----------#######################################----------+-------+
  |          ##          |       |
  |          #        |                            #          |       |
  |  hback   #        |                            #  hfront  | hsync |
  |   porch  #        |       hactive              #  porch   |  len  |
  |<-------->#<-------+--------------------------->#<-------->|<----->|
  |          #        |                            #          |       |
  |          #        |vactive                     #          |       |
  |          #        |                            #          |       |
  |          ##          |       |
  +----------#######################################----------+-------+
  |          |        ↑                            |          |       |
  |          |        |vfront_porch                |          |       |
  |          |        ↓                            |          |       |
  +----------+-------------------------------------+----------+-------+
  |          |        ↑                            |          |       |
  |          |        |vsync_len                   |          |       |
  |          |        ↓                            |          |       |
  +----------+-------------------------------------+----------+-------+
typedef enum
{
    CMD_MODE = 0,
    SYNC_PULSE_VDO_MODE = 1,
    SYNC_EVENT_VDO_MODE = 2,
    BURST_VDO_MODE = 3
} LCM_DSI_MODE_CON;
adb设置dpi:
adb shell getprop ro.sf.lcd_density
adb shell wm density 240
clk=(width + W total porch)x(height + H total porch)x (18bit《RGB666》或者x24bit《RGB888》)x fps/ lane nubmer/2
一帧画面需要的数据量为(单位bit):FRAME_BIT = (屏幕有效显示宽度+hsync+hfp+hbp) x ( 屏幕有效显示高度+vsync+vfp+vbp) x(RGB显示数据宽度24)
一秒钟内需要传输的数据量为(单位bps):FRAME_BIT  x  fps(帧率)。
那为何要除以lane_num----因为mipi通讯协议中,一个CLOCK几个lane是可以同时传输数据的。
为何又要除以2----因为根据mipi通讯协议,CLK_N、CLK_P这两根时钟线的上升沿/下降沿可以获取到数据。
RGB PCLK须满足下列条件:
PCLK>= (width + W total porch)x(height + H total porch)x fps
adb shell cat sys/class/leds/lcd-backlight/brightness
adb shell settings get system screen_brightness
adb shell settings put system screen_brightness 30
[FAQ07302] [LED]如何配置LCD背光和LED,调试方法
https://onlinesso.mediatek.com/FAQ#/SW/FAQ07302
修改clock极性:
params->dpi.clk_pol = LCM_POLARITY_FALLING;       //LCM_POLARITY_RISING  
TFT屏分很多种的: VA(PVA, SVA), S-IPS, TN等等
大多数笔记本和电脑显示器用屏都是TN的,视角比较差.
电视用的TFT液晶屏多采用VA和IPS技术, IPS的视角和颜色表现方面最好,VA的对比度高.
也有高端的笔记本用S-IPS屏,比如:IBM T60-P种15.1寸某些高端型号,还有SONY 17寸的也有用S-IPS屏.一般电脑显示器, NEC的 1990SXI/1980/1970都是S-IPS屏,还有就是apple和Dell的大尺寸液晶显示器都是S-IPS的.
S-IPS只有LG.Philips-LCD公司大规模生产(日本也有小部分,不过都是自用的)
TN屏是TFT种最便宜的,工艺较简单.
展频是指扩展频谱(Spread Spectrum)技术,它是一种常用的无线通讯技术。
主板上的时钟发生器工作时,脉冲的峰值会产生电磁干扰(EMI (Electron-Magnetic Interference)),展频技术可以降低脉冲发生器所产生的电磁干扰。
在没有遇到电磁干扰问题时,应将此类项目的值全部设为“Disabled”,这样可以优化系统性能,提高系统稳定性;
如果遇到电磁干扰问题,则应将该项设为“Enabled”以便减少电磁干扰。
在将处理器超频时,最好将该项设置为“Disabled”,因为即使是微小的峰值飘移也会引起时钟的短暂突发,这样会导致超频后的处理器被锁死。
如果MIPI Clock对RF/WCN产生干扰,并且在尝试寻找相应的频点依然无法解除EMI,可以尝试做Frequency Hopping;
82平台默认打开展频开关,例:
params->dsi.ssc_range =4;  // ssc range control (1:min, 8:max, default: 4)
params->dsi.ssc_disable = 0;  //ssc disable control (1: disable, 0: enable, default: 0)
代表:展频打开,ssc_range = 4%

Enable/disable glitch detection:params->dsi.compatibility_for_nvk

For非NVT Driver IC,params->dsi.compatibility_for_nvk=0

For NVT Driver IC,params->dsi.compatibility_for_nvk=1

MTK Android Driver知识大全:http://blog.csdn.net/cbk861110/article/details/40931835
如果屏幕边沿出现彩条,可以把展频关掉试试。
-------------------------------------------------------------------
/kernel-4.14/arch/arm64/configs/tb8168p1_64_bsp_debug_defconfig
CONFIG_MTK_LCM=y
CONFIG_CUSTOM_KERNEL_LCM="jd936x_wxga_dsi_vdo"
 /kernel-4.14/drivers/misc/mediatek/lcm/Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
obj-$(CONFIG_MTK_LCM) += mt65xx_lcm_list.o        \
                         lcm_common.o             \
                         lcm_gpio.o               \
                         lcm_i2c.o                \
                         lcm_pmic.o               \
                         lcm_util.o

LCM_LISTS := $(subst ",,$(CONFIG_CUSTOM_KERNEL_LCM))
obj-$(CONFIG_MTK_LCM) += $(foreach LCM,$(LCM_LISTS),$(LCM)/)

subdir-ccflags-$(CONFIG_MTK_LCM) += -I$(srctree)/drivers/misc/mediatek/lcm/inc
subdir-ccflags-$(CONFIG_MTK_FB) += -I$(srctree)/drivers/misc/mediatek/video/$(MTK_PLATFORM)/dispsys \
                                       -I$(srctree)/drivers/misc/mediatek/video/$(MTK_PLATFORM)/dispsys/mt6735 \
                                       -I$(srctree)/drivers/misc/mediatek/video/$(MTK_PLATFORM)/videox \
                                       -I$(srctree)/drivers/misc/mediatek/video/include

LCM_DEFINES := $(shell echo $(CONFIG_CUSTOM_KERNEL_LCM) | tr a-z A-Z)
DEFINES += $(foreach LCM,$(LCM_DEFINES),$(LCM))
DEFINES += MTK_LCM_PHYSICAL_ROTATION=\"$(MTK_LCM_PHYSICAL_ROTATION)\"
ccflags-$(CONFIG_MTK_LCM) += $(addprefix -D, $(DEFINES))
ccflags-$(CONFIG_MTK_LCM_DEVICE_TREE_SUPPORT) += -DMTK_LCM_DEVICE_TREE_SUPPORT
/kernel-4.14/drivers/misc/mediatek/lcm/mt65xx_lcm_list.c
#include "mt65xx_lcm_list.h"
struct LCM_DRIVER *lcm_driver_list[] = {
#if defined(JD936X_WXGA_DSI_VDO)
        &jd9366_wxga_dsi_vdo_fiti_kd_lcm_drv,
#endif
};
/kernel-4.14/drivers/misc/mediatek/lcm/mt65xx_lcm_list.h
extern struct LCM_DRIVER jd9366_wxga_dsi_vdo_fiti_kd_lcm_drv;

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值