日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux qcom LCD framwork

發布時間:2025/4/16 linux 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux qcom LCD framwork 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點擊打開鏈接

0.關鍵字

MDSS?: Multimedia Display sub system?
DSI: Display Serial Interface

qcom,mdss-dsi-force-clock-lane-hs; // faulse :clock每幀回lp11 ture: clock不回 qcom,mdss-dsi-hfp-power-mode; // data 每行回lp11,對應的hfp要修改成300以上
  • 1
  • 2

1.涉及文件

(1) drivers\video\fbmem.c (核心層)

register_framebuffer(struct fb_info *fb_info) //對外暴露核心函數
  • 1

(2)drivers\video\msm\mdss\mdss_fb.c (mdss 核心層 fbx平臺設備驅動)

// 調用 fbmem.c的 register_framebuffer注冊 fbx
  • 1

(4)msm8610-mdss.dtsi (文件名通常為?msmxxx-mdss.dtsi?指定了mdss 的?mdp?和?dsi

mdss_mdp: qcom,mdss_mdp@fd900000 {compatible = "qcom,mdss_mdp3"; // 對應mdss驅動 mdss_mdp.c----------mdss_dsi0: qcom,mdss_dsi@fdd00000 {compatible = "qcom,msm-dsi-v2"; // 對應dsi解析驅動 dsi_host_v2.c或者mdss_dsi0: qcom,mdss_dsi_ctrl0@1a94000 {compatible = "qcom,mdss-dsi-ctrl"; // 對應dsi解析驅動 mdss_dsi.c
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

(3)drivers\video\msm\mdss\dsi_host_v2.c (lcd驅動 dsi)

// 通過下面函數向 mdss_fb.c 注冊了fb_info結構 (包含在mdss_dsi_ctrl_pdata結構中) dsi_panel_device_register_v2(struct platform_device *dev,struct mdss_dsi_ctrl_pdata *ctrl_pdata)static const struct of_device_id msm_dsi_v2_dt_match[] = {{.compatible = "qcom,msm-dsi-v2"},{} };
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

或者?
drivers\video\msm\mdss\mdss_dsi.c


(5)drivers\video\msm\mdss\mdp3.c (mdp)

.compatible = "qcom,mdss_mdp3",
  • 1
  • 2
  • 3

(6)msm8610-asus.dts (指定mdp中的哪一個配置)?
通常在dts文件的 mdss_dsi0 lab里面通過?qcom,dsi-pref-prim-pan?屬性 指定使用哪一個lcd配置

&mdss_dsi0 {qcom,dsi-pref-prim-pan = <&dsi_fl10802_fwvga_vid>; };
  • 1
  • 2
  • 3

(7)dsi-panel-fl10802-fwvga-video.dtsi

&mdss_mdp {dsi_fl10802_fwvga_vid: qcom,mdss_dsi_fl10802_fwvga_video {qcom,mdss-dsi-panel-name = "fl10802 fwvga video mode dsi panel";qcom,mdss-dsi-drive-ic = "fl10802";qcom,mdss-dsi-panel-controller = <&mdss_dsi0>;qcom,mdss-dsi-panel-type = "dsi_video_mode";qcom,mdss-dsi-panel-destination = "display_1";...}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

2. mdss_mdp 和 mdss_dsi0 的關系

mdss_mdp?相當于一個數組,里面定義了很多不同lcd顯示屏的配置項包括分辨率等等


mdss_dsi0?的 “qcom,dsi-pref-prim-pan?” 屬性指定了使用mdss_mdp中哪一個lcd配置選項?


3.時序圖

http://download.csdn.net/detail/u012719256/9603691?
畫的有點渣,湊活看吧,不要在意細節??


4. 重要結構


結構關系

backLight 關鍵字:qcom,mdss-dsi-bl-pmic-control-type
  • 1
  • 2
  • 3
struct mdss_dsi_ctrl_pdata {int ndx; /* panel_num */int (*on) (struct mdss_panel_data *pdata); // ★ onint (*off) (struct mdss_panel_data *pdata); // ★ offint (*partial_update_fnc) (struct mdss_panel_data *pdata);int (*check_status) (struct mdss_dsi_ctrl_pdata *pdata);int (*cmdlist_commit)(struct mdss_dsi_ctrl_pdata *ctrl, int from_mdp);void (*switch_mode) (struct mdss_panel_data *pdata, int mode);struct mdss_panel_data panel_data; //★ panel_data.set_backlight 設置背光亮度函數//★ panel_data.panel_info = struct mdss_panel_info ①unsigned char *ctrl_base;struct dss_io_data ctrl_io;struct dss_io_data mmss_misc_io;struct dss_io_data phy_io;int reg_size;u32 bus_clk_cnt;u32 link_clk_cnt;u32 flags;struct clk *mdp_core_clk;struct clk *ahb_clk;struct clk *axi_clk;struct clk *mmss_misc_ahb_clk;struct clk *byte_clk;struct clk *esc_clk;struct clk *pixel_clk;u8 ctrl_state;int panel_mode; int irq_cnt;int rst_gpio; // ★ gpio qcom,platform-reset-gpio: Specifies the panel reset gpio.int disp_en_gpio; // qcom,platform-enable-gpio: Specifies the panel lcd/display enable gpio.int disp_te_gpio; // qcom,platform-te-gpio: Specifies the gpio used for TE.int mode_gpio; // qcom,platform-mode-gpio: Select video/command mode of panel through gpio when it supports both modes.int disp_te_gpio_requested;int bklt_ctrl; /* backlight ctrl 背光類型*/ int pwm_period;int pwm_pmic_gpio;int pwm_lpg_chan;int bklt_max;int new_fps;int pwm_enabled;bool dmap_iommu_map;struct pwm_device *pwm_bl;struct dsi_drv_cm_data shared_pdata;u32 pclk_rate;u32 byte_clk_rate;struct dss_module_power power_data; // ★ clock & regulatoru32 dsi_irq_mask;struct mdss_hw *dsi_hw;struct mdss_panel_recovery *recovery;struct dsi_panel_cmds on_cmds; // light on cmd ★ qcom,mdss-dsi-on-commandstruct dsi_panel_cmds off_cmds; // off cmd ★ qcom,mdss-dsi-off-commandstruct dsi_panel_cmds status_cmds;u32 status_value;struct dsi_panel_cmds video2cmd;struct dsi_panel_cmds cmd2video;struct dcs_cmd_list cmdlist;struct completion dma_comp;struct completion mdp_comp;struct completion video_comp;struct completion bta_comp;spinlock_t irq_lock;spinlock_t mdp_lock;int mdp_busy;struct mutex mutex;struct mutex cmd_mutex;bool ulps;struct dsi_buf tx_buf;struct dsi_buf rx_buf;struct dsi_buf status_buf;int status_mode; };
  • 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
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80


① struct mdss_panel_info

struct mdss_panel_info {u32 xres; // x 分辨率 qcom,mdss-dsi-panel-widthu32 yres; // y 分辨率 qcom,mdss-dsi-panel-heightu32 physical_width; // x 物理大小 qcom,mdss-pan-physical-width-dimensionu32 physical_height; // y 物理大小 qcom,mdss-pan-physical-height-dimensionstruct lcd_panel_info lcdc; // 邊界 (1.1)邊界u32 bpp; // bpp qcom,mdss-dsi-bppstruct mipi_panel_info mipi; // mipi顯示模式 video or cmd (1.2)mipiu32 type;u32 wait_cycle;u32 pdest; // 第幾個fb設備 qcom,mdss-dsi-panel-destination = "display_1";u32 brightness_max;u32 bl_max;u32 bl_min;u32 fb_num;u32 clk_rate;u32 clk_min;u32 clk_max;u32 frame_count;u32 is_3d_panel;u32 out_format;u32 rst_seq[MDSS_DSI_RST_SEQ_LEN];...}
  • 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


(1.1)邊界

struct lcd_panel_info {u32 h_back_porch;u32 h_front_porch;u32 h_pulse_width;u32 v_back_porch;u32 v_front_porch;u32 v_pulse_width;u32 border_clr;u32 underflow_clr;u32 hsync_skew;/* Pad width */u32 xres_pad; // qcom,mdss-dsi-h-left-border/* Pad height */u32 yres_pad; // qcom,mdss-dsi-h-right-border };
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

(1.2)mipi

struct mipi_panel_info {char mode; /* video/cmd */ // 顯示模式 qcom,mdss-dsi-panel-type = "dsi_video_mode";char interleave_mode;char crc_check;char ecc_check;char dst_format; /* shared by video and command */char data_lane0;char data_lane1;char data_lane2;char data_lane3;char dlane_swap; /* data lane swap */char rgb_swap;char b_sel;char g_sel;char r_sel;char rx_eot_ignore;char tx_eot_append;char t_clk_post; /* 0xc0, DSI_CLKOUT_TIMING_CTRL */char t_clk_pre; /* 0xc0, DSI_CLKOUT_TIMING_CTRL */char vc; /* virtual channel */struct mdss_dsi_phy_ctrl dsi_phy_db;/* video mode */char pulse_mode_hsa_he;char hfp_power_stop;char hbp_power_stop;char hsa_power_stop;char eof_bllp_power_stop;char last_line_interleave_en;char bllp_power_stop;char traffic_mode;char frame_rate;/* command mode */char interleave_max;char insert_dcs_cmd;char wr_mem_continue;char wr_mem_start;char te_sel;char stream; /* 0 or 1 */char mdp_trigger;char dma_trigger;/*Dynamic Switch Support*/bool dynamic_switch_enabled;u32 pixel_packing;u32 dsi_pclk_rate;/* The packet-size should not bet changed */char no_max_pkt_size;/* Clock required during LP commands */char force_clk_lane_hs; //強制DSI_CLK始終處于HS,因我們用DSI CLK as 參考時鐘char vsync_enable;char hw_vsync_mode;char lp11_init;u32 init_delay; };
  • 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
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55


5.結構賦值

//結構從設備數中獲取數據賦值 mdss_dsi_panel.cint mdss_dsi_panel_init(struct device_node *node,struct mdss_dsi_ctrl_pdata *ctrl_pdata, int ndx)// use Dsi_host_v2.c (drivers\video\msm\mdss): rc = mdss_dsi_panel_init(dsi_pan_node, ctrl_pdata, cmd_cfg_cont_splash); Mdss_dsi.c (drivers\video\msm\mdss): rc = mdss_dsi_panel_init(dsi_pan_node, ctrl_pdata, ndx);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

6.lk中傳遞lcm使用的dsi配置名字給kernel

aboot_init // lk\app\aboot\aboot.ctarget_display_init // lk\target\msm8953\target_display.cgcdb_display_init // lk\dev\gcdb\display\gcdb_display.cmsm_display_init // display.cdisplay_image_on_screen //aboot_init // lk\app\aboot\aboot.ctarget_display_init // lk\target\msm8953\target_display.cgcdb_display_init // lk\dev\gcdb\display\gcdb_display.coem_panel_select // lk\target\msm8953\oem_panel.cpanel_id = NT51021B_INX_WUXGA_VIDEO_PANEL; // ☆ panel_id 賦值,使用哪個lcd配置init_panel_data switch (panel_id) {case NT51021B_INX_WUXGA_VIDEO_PANEL:panelstruct->paneldata = &nt51021b_inx_wuxga_video_panel_data; // 根據 panel_id 指定傳給kernel使用的lcm配置----------// lk\dev\gcdb\display\include\panel_nt51021b_inx_wuxga_video.h (lcm配置文件)static struct panel_config nt51021b_inx_wuxga_video_panel_data = {"qcom,mdss_dsi_nt51021b_inx_wuxga_video", // ☆ panel_node_id 對應dtsi中 panel使用的名字 "dsi:0:", "qcom,mdss-dsi-panel",10, 0, "DISPLAY_1", 0, 0, 60, 0, 0, 0, 1, 10000, 0, 0, 0, 0, 0, 0, NULL }; ----------// arch\arm64\boot\dts\qcom\dsi-panel-nt51021b-inx-wuxga-video.dtsi &mdss_mdp {dsi_nt51021b_inx_wuxga_vid: qcom,mdss_dsi_nt51021b_inx_wuxga_video {//dts中的 panel名字qcom,mdss-dsi-panel-name = "nt51021b inx wuxga video mode dsi panel"; // 對應 sys/class/graphic/fb0/panl_info 中的信息
  • 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
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

6.dts中command格式解析

qcom,mdss-dsi-on-command = [// 延時 reg data 29 01 00 00 01 00 02 8F A529 01 00 00 14 00 02 01 0029 01 00 00 01 00 02 8F A529 01 00 00 00 00 02 8C 8029 01 00 00 00 00 02 C7 5029 01 00 00 00 00 02 C5 5029 01 00 00 00 00 02 85 0429 01 00 00 00 00 02 86 0829 01 00 00 00 00 02 83 AA29 01 00 00 00 00 02 84 1129 01 00 00 00 00 02 A0 3629 01 00 00 00 00 02 A1 3629 01 00 00 00 00 02 9C 1029 01 00 00 00 00 02 A9 4B29 01 00 00 00 00 02 8F 00];
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

7.fb旋轉參數配置

(1) 方法1

fb_info->var->rotate // 是否旋轉
  • 1

(2) 方法2

msm_fb_data_type->panel_orientation //是否旋轉fb (mdss_fb.h)// 通過dsi中的 qcom,mdss-dsi-panel-orientation 關鍵字控制 (mdss_dsi_panel.c) data = of_get_property(np, "qcom,mdss-dsi-panel-orientation", NULL);if (data) {pr_debug("panel orientation is %s\n", data);if (!strcmp(data, "180"))pinfo->panel_orientation = MDP_ROT_180;else if (!strcmp(data, "hflip"))pinfo->panel_orientation = MDP_FLIP_LR;else if (!strcmp(data, "vflip"))pinfo->panel_orientation = MDP_FLIP_UD;}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

(3)方法三?
system/build.prop?
+ ro.panel.mountflip=3

frameworks/native/services/surfaceflinger/DisplayDevice.cpp DisplayDevice::DisplayDevice// 1: H-Flip, 2: V-Flip, 3: 180 (HV Flip)property_get("ro.panel.mountflip", property, "0");mPanelMountFlip = atoi(property);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

8.展頻

mdss-pll.c展頻開關:arch/arm/boot/dts/qcom/msm8953-mdss-pll.dtsi qcom,dsi-pll-ssc-en;mode:qcom,dsi-pll-ssc-mode = "down-spread";two parameters to program SSC :clk/msm/mdss/mdss-dsi-pll-8996.c:ssc_ppm_default & ssc_freq_default展頻范圍:down mode : freq - freq * (ssc_ppm/1000,000)center mode : freq ± freq * (ssc_ppm/1000,000) / 2up mode : freq + freq * (ssc_ppm/1000,000)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

9.bklt_en_gpio、 disp_en_gpio、 rst_gpio相關gpio口


// (msm8917-pmi8937-qrd-sku5.dtsi board.dtsi ) mdss_dsi_active mdss_dsi_suspend qcom,platform-reset-gpio qcom,platform-enable-gpio &mdss_dsi0 { qcom,dsi-pref-prim-pan = <&dsi_hx8394f_720p_video>;pinctrl-names = "mdss_default", "mdss_sleep";pinctrl-0 = <&mdss_dsi_active>;pinctrl-1 = <&mdss_dsi_suspend>;qcom,platform-reset-gpio = <&tlmm 60 0>; // rstqcom,platform-enable-gpio= <&tlmm 46 0>; //供電引腳 };//(mdss_dsi.c) disp_en_gpio bklt_en_gpio rst_gpio// mdss_dsi_parse_gpio_params ctrl_pdata->disp_en_gpio = of_get_named_gpio(ctrl_pdev->dev.of_node,"qcom,platform-enable-gpio", 0);ctrl_pdata->disp_te_gpio = of_get_named_gpio(ctrl_pdev->dev.of_node,"qcom,platform-te-gpio", 0);ctrl_pdata->bklt_en_gpio = of_get_named_gpio(ctrl_pdev->dev.of_node,"qcom,platform-bklight-en-gpio", 0);ctrl_pdata->rst_gpio = of_get_named_gpio(ctrl_pdev->dev.of_node,"qcom,platform-reset-gpio", 0);ctrl_pdata->mode_gpio = of_get_named_gpio(ctrl_pdev->dev.of_node,"qcom,platform-mode-gpio", 0);// mdss_dsi_panel_power_onmdss_dsi_panel_reset(pdata, 1); // (mdss_dsi_panel.c)gpio_set_value((ctrl_pdata->bklt_en_gpio), 0);gpio_set_value((ctrl_pdata->disp_en_gpio), 0);gpio_set_value((ctrl_pdata->rst_gpio), 0);// mdss_dsi_panel_power_offmdss_dsi_panel_reset(pdata, 0); // (mdss_dsi_panel.c)gpio_set_value((ctrl_pdata->bklt_en_gpio), 0);gpio_set_value((ctrl_pdata->disp_en_gpio), 0);gpio_set_value((ctrl_pdata->rst_gpio), 0);// (msm8917-pinctrl.dtsi)pmx_mdss: pmx_mdss {mdss_dsi_active: mdss_dsi_active {mux {pins = "gpio60", "gpio46";function = "gpio";};config {pins = "gpio60", "gpio46";drive-strength = <8>; /* 8 mA */bias-disable = <0>; /* no pull */ // output-high;};};mdss_dsi_suspend: mdss_dsi_suspend {mux {pins = "gpio60", "gpio46";function = "gpio";};config {pins = "gpio60", "gpio46";drive-strength = <2>; /* 2 mA */bias-pull-down; /* pull down */};};
  • 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
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69

10.esd功能

qcom,esd-check-enabled // 是否使用esd check 功能 qcom,mdss-dsi-panel-status-check-mode // esd check的方式 te_signal_check (只能在cmd模式下用)or reg_read
  • 1
  • 2
  • 3

10.1 cmd mode demo

qcom,mdss-dsi-te-pin-select = <1>;qcom,mdss-dsi-te-v-sync-rd-ptr-irq-line = <0x2c>;qcom,mdss-dsi-te-v-sync-continue-lines = <0x3c>;qcom,mdss-dsi-te-dcs-command = <1>;qcom,esd-check-enabled; // enable esd checkqcom,mdss-dsi-panel-status-check-mode = "te_signal_check"; // esd check mode te模式 (只能用作cmd模式)qcom,mdss-dsi-te-check-enable; // teqcom,mdss-dsi-te-using-te-pin; // use te pin
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

10.2 video mode demo

qcom,esd-check-enabled;qcom,mdss-dsi-panel-status-check-mode = "reg_read";qcom,mdss-dsi-panel-status-command = [06 01 00 01 05 00 02 0A 08];qcom,mdss-dsi-panel-status-command-state = "dsi_lp_mode";qcom,mdss-dsi-panel-status-read-length = <1>;qcom,mdss-dsi-panel-max-error-count = <2>;qcom,mdss-dsi-panel-status-value = <0x9c>;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

總結

以上是生活随笔為你收集整理的linux qcom LCD framwork的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美污污视频 | 国产精品一区二区视频 | 欧美成人精品一区二区男人小说 | 久久久久久久久久综合 | 欧美hdse| 久久久久久中文 | 精品乱子伦一区二区三区 | 国产成人精品影院 | 欧美黑人欧美精品刺激 | 国产高清视频 | 国产91精品久久久久久久 | 中国男人操女人 | 亚洲欧美在线免费 | 杨幂一区二区三区免费看视频 | 欧美国产日韩一区 | 国产精品一区二区视频 | 久久精品女人 | 欧美乱轮| 日本孕妇孕交 | 久久人人爽人人爽人人片亚洲 | av综合网站 | 一起操17c | 免费成年人视频 | 黄色大片儿. | 午夜精品久久久久久久96蜜桃 | 在线a毛片 | 黄色aa毛片| 亚洲人人精品 | 男人的天堂一区二区 | 午夜在线免费视频 | 久久99亚洲精品 | 国产白浆在线 | 亚洲AV蜜桃永久无码精品性色 | 免费观看nba乐趣影院 | 99精品亚洲 | 波多野结衣视频观看 | 一区二区三区视频网站 | 欧美性猛交xxxx黑人猛交 | 极品丰满少妇 | 中国免费观看的视频 | 牛牛影视一区二区三区 | 综合色99 | 激情国产精品 | yellow免费在线观看 | 国产精品成人国产乱 | 可以直接观看的av | 欧美做受喷浆在线观看 | 日本调教电影 | 亚洲欧美v | 四虎黄色网址 | 在线免费日本 | 免费观看黄色网址 | 欧美成人久久久免费播放 | 久久久久中文 | 国产+日韩+欧美 | 男女做激情爱呻吟口述全过程 | 国产视频二区 | 国产人妻大战黑人20p | 色翁荡息又大又硬又粗又爽 | 尤物av无码色av无码 | 中文字幕日本在线观看 | 成人免费在线观看网站 | 好吊视频一区二区三区四区 | youjizz.com国产 | 99色在线视频 | 在办公室被c到呻吟的动态图 | 欧美xxxx中国 | 夜夜春很很躁夜夜躁 | 国产精品久久午夜夜伦鲁鲁 | 国产激情四射 | 最新黄色av网站 | 超碰av人人 | 大地资源影视在线播放观看高清视频 | 精品中文字幕在线播放 | 国产专区精品 | www,99| com国产 | 鲁一鲁在线 | 国精产品一区一区三区mba下载 | 五月婷婷综合在线 | ww久久| 在线a| 中文字幕在线观看第二页 | 欧美视频中文字幕 | 五月天激情四射 | 成人黄色一级 | 在线免费黄网 | 国产精品jizz在线观看老狼 | 亚洲欧美另类综合 | 视频在线观看一区二区三区 | 国产精品二区一区二区aⅴ污介绍 | 色中文网| 草久在线| 亚洲综合色吧 | 欧美日韩中文在线视频 | 亚洲女人被黑人巨大进入 | 午夜亚洲aⅴ无码高潮片苍井空 | 一级黄在线观看 | av成人精品 |