日韩性视频-久久久蜜桃-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的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 妺妺窝人体色www在线下载 | 日本草逼视频 | 91成人在线观看喷潮蘑菇 | 97se在线视频 | 伊人久久大香线蕉成人综合网 | 亚洲男人的天堂在线视频 | 麻豆网站在线 | 又黄又刺激的视频 | 国产绿帽刺激高潮对白 | 国产精品亚洲а∨天堂免在线 | 亚洲一区二区三区在线 | 99re免费视频 | 色婷婷亚洲综合 | 日韩在线观看视频免费 | 国产一级久久久 | 五月天婷婷社区 | 天堂在线视频免费 | 久久精品国产亚洲av麻豆蜜芽 | 亚洲精选在线 | 男人的天堂狠狠干 | 成人自拍视频在线观看 | 成人激情在线观看 | 一区二区三区爱爱 | 偷拍青青草 | 一个人看的毛片 | 农村少妇久久久久久久 | 欧美激情综合五月色丁香 | 国产精品综合视频 | 日韩黄色三级视频 | 天天色亚洲| 三上悠亚痴汉电车 | 伊人网综合视频 | 日本伦理中文字幕 | 黄色片网站在线看 | 国产欧美精品一区二区色综合朱莉 | 欧美专区日韩专区 | 国产欧美视频在线播放 | 欧美视频观看 | 狠狠干综合网 | wwwxx日本| 久久亚洲美女 | 嫩草视频在线观看视频 | 欧美色图第一页 | 麻豆精品网站 | 白嫩白嫩国产精品 | 伊人视频| 婷婷色在线观看 | 自拍偷拍视频网 | 欧洲亚洲一区二区 | 污污的视频网站在线观看 | 亚洲精品国产成人无码 | 按摩ⅹxxx性hd中国 | 91视频网址入口 | 丰满放荡岳乱妇91ww | xx69欧美| 中文字幕97| 久久不卡影院 | 日韩欧美视频在线免费观看 | 99热精品久久 | 亚洲视频一区二区三区四区 | 99爱免费视频 | 欧美在线视频网站 | 久热av在线| 亚洲男人的天堂网 | 日韩无砖 | 制服av网| 日韩午夜网站 | 白丝女仆被免费网站 | 午夜视频在线免费播放 | 久久视频网 | 最好看的中文字幕国语电影mv | 国产亚洲精品成人av久久ww | 少女逼逼 | 一本无码aⅴ久久久国产 | 一区二区三区免费在线 | 嫩草社区 | 亚洲天堂成人 | 福利片网址 | 国产伦理av| www五月 | 在线观看欧美亚洲 | a天堂资源在线 | 丰满熟妇乱又伦 | 午夜羞羞影院 | 国产成人精品一区二区三区四区 | 精品一区二区三 | 久久福利免费视频 | 可以直接观看的av | 天天躁夜夜躁 | 亚洲国产日韩一区无码精品久久久 | 国产全肉乱妇杂乱视频 | 一道本一区| 做爰无遮挡三级 | 久草最新视频 | 国产一区二区在线观看视频 | 国产盗摄一区二区三区在线 | 好色999| 一区二区在线观看免费视频 | 日本黄动漫 |