日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux LCD 驱动实验

發(fā)布時(shí)間:2023/12/10 linux 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux LCD 驱动实验 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

  • Linux 下LCD 驅(qū)動(dòng)簡析
    • 1 Framebuffer 設(shè)備
    • LCD 驅(qū)動(dòng)簡析
  • 硬件原理圖分析
  • LCD 驅(qū)動(dòng)程序編寫
  • 運(yùn)行測試
    • LCD 屏幕基本測試
    • 設(shè)置LCD 作為終端控制臺(tái)
    • LCD 背光調(diào)節(jié)
    • 從LCD自動(dòng)關(guān)閉解決方法

LCD 是很常用的一個(gè)外設(shè),在裸機(jī)篇中我們講解了如何編寫LCD 裸機(jī)驅(qū)動(dòng),在Linux 下LCD 的使用更加廣泛,在搭配QT 這樣的GUI 庫下可以制作出非常精美的UI 界面。本章我們就來學(xué)習(xí)一下如何在Linux 下驅(qū)動(dòng)LCD 屏幕。

Linux 下LCD 驅(qū)動(dòng)簡析

1 Framebuffer 設(shè)備

先來回顧一下裸機(jī)的時(shí)候LCD 驅(qū)動(dòng)是怎么編寫的,裸機(jī)LCD 驅(qū)動(dòng)編寫流程如下:
①、初始化I.MX6U 的eLCDIF 控制器,重點(diǎn)是LCD 屏幕寬(width)、高(height)、hspw、hbp、hfp、vspw、vbp 和vfp 等信息。
②、初始化LCD 像素時(shí)鐘。
③、設(shè)置RGBLCD 顯存。
④、應(yīng)用程序直接通過操作顯存來操作LCD,實(shí)現(xiàn)在LCD 上顯示字符、圖片等信息。

在Linux 中應(yīng)用程序最終也是通過操作RGB LCD 的顯存來實(shí)現(xiàn)在LCD 上顯示字符、圖片等信息。在裸機(jī)中我們可以隨意的分配顯存,但是在Linux 系統(tǒng)中內(nèi)存的管理很嚴(yán)格,顯存是需要申請(qǐng)的,不是你想用就能用的。而且因?yàn)樘摂M內(nèi)存的存在,驅(qū)動(dòng)程序設(shè)置的顯存和應(yīng)用程序訪問的顯存要是同一片物理內(nèi)存。

為了解決上述問題,Framebuffer 誕生了,Framebuffer 翻譯過來就是幀緩沖,簡稱fb,因此大家在以后的Linux 學(xué)習(xí)中見到“Framebuffer”或者“fb”的話第一反應(yīng)應(yīng)該想到RGBLCD或者顯示設(shè)備。fb 是一種機(jī)制,將系統(tǒng)中所有跟顯示有關(guān)的硬件以及軟件集合起來,虛擬出一個(gè)fb 設(shè)備,當(dāng)我們編寫好LCD 驅(qū)動(dòng)以后會(huì)生成一個(gè)名為/dev/fbX(X=0~n)的設(shè)備,應(yīng)用程序通過訪問/dev/fbX 這個(gè)設(shè)備就可以訪問LCD。NXP 官方的Linux 內(nèi)核默認(rèn)已經(jīng)開啟了LCD 驅(qū)動(dòng),因此我們是可以看到/dev/fb0 這樣一個(gè)設(shè)備,如圖59.1.1.1 所示:

圖59.1.1.1 中的/dev/fb0 就是LCD 對(duì)應(yīng)的設(shè)備文件,/dev/fb0 是個(gè)字符設(shè)備,因此肯定有file_operations 操作集,fb 的file_operations 操作集定義在drivers/video/fbdev/core/fbmem.c 文件中,如下所示:

1495 static const struct file_operations fb_fops = { 1496 .owner = THIS_MODULE, 1497 .read = fb_read, 1498 .write = fb_write, 1499 .unlocked_ioctl = fb_ioctl, 1500 #ifdef CONFIG_COMPAT 1501 .compat_ioctl = fb_compat_ioctl, 1502 #endif 1503 .mmap = fb_mmap, 1504 .open = fb_open, 1505 .release = fb_release, 1506 #ifdef HAVE_ARCH_FB_UNMAPPED_AREA 1507 .get_unmapped_area = get_fb_unmapped_area, 1508 #endif 1509 #ifdef CONFIG_FB_DEFERRED_IO 1510 .fsync = fb_deferred_io_fsync, 1511 #endif 1512 .llseek = default_llseek, 1513 };

關(guān)于fb 的詳細(xì)處理過程就不去深究了,本章我們的重點(diǎn)是驅(qū)動(dòng)起來ALPHA 開發(fā)板上的LCD。

LCD 驅(qū)動(dòng)簡析

LCD 裸機(jī)例程主要分兩部分:
①、獲取LCD 的屏幕參數(shù)。
②、根據(jù)屏幕參數(shù)信息來初始化eLCDIF 接口控制器。

不同分辨率的LCD 屏幕其eLCDIF 控制器驅(qū)動(dòng)代碼都是一樣的,只需要修改好對(duì)應(yīng)的屏幕參數(shù)即可。屏幕參數(shù)信息屬于屏幕設(shè)備信息內(nèi)容,這些肯定是要放到設(shè)備樹中的,因此我們本章實(shí)驗(yàn)的主要工作就是修改設(shè)備樹,NXP 官方的設(shè)備樹已經(jīng)添加了LCD 設(shè)備節(jié)點(diǎn),只是此節(jié)點(diǎn)的LCD 屏幕信息是針對(duì)NXP 官方EVK 開發(fā)板所使用的4.3 寸480*272 編寫的,我們需要將其改為我們所使用的屏幕參數(shù)。

我們簡單看一下NXP 官方編寫的Linux 下的LCD 驅(qū)動(dòng),打開imx6ull.dtsi,然后找到lcdif節(jié)點(diǎn)內(nèi)容,如下所示:

1 lcdif: lcdif@021c8000 { 2 compatible = "fsl,imx6ul-lcdif", "fsl,imx28-lcdif"; 3 reg = <0x021c8000 0x4000>; 4 interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>; 5 clocks = <&clks IMX6UL_CLK_LCDIF_PIX>, 6 <&clks IMX6UL_CLK_LCDIF_APB>, 7 <&clks IMX6UL_CLK_DUMMY>; 8 clock-names = "pix", "axi", "disp_axi"; 9 status = "disabled"; 10 };

示例代碼59.1.2.1 中的lcdif 節(jié)點(diǎn)信息是所有使用I.MX6ULL 芯片的板子所共有的,并不是完整的lcdif 節(jié)點(diǎn)信息。像屏幕參數(shù)這些需要根據(jù)不同的硬件平臺(tái)去添加,比如向imx6ull-alientek-emmc.dts 中的lcdif 節(jié)點(diǎn)添加其他的屬性信息。從示例代碼59.1.2.1 可以看出lcdif 節(jié)點(diǎn)的compatible 屬性值為“fsl,imx6ul-lcdif”和“fsl,imx28-lcdif”,因此在Linux 源碼中搜索這兩個(gè)
字符串即可找到I.MX6ULL 的LCD 驅(qū)動(dòng)文件,這個(gè)文件為drivers/video/fbdev/mxsfb.c,mxsfb.c就是I.MX6ULL 的LCD 驅(qū)動(dòng)文件,在此文件中找到如下內(nèi)容:

1362 static const struct of_device_id mxsfb_dt_ids[] = { 1363 { .compatible = "fsl,imx23-lcdif", .data = &mxsfb_devtype[0], }, 1364 { .compatible = "fsl,imx28-lcdif", .data = &mxsfb_devtype[1], }, 1365 { /* sentinel */ } 1366 }; ...... 1625 static struct platform_driver mxsfb_driver = { 1626 .probe = mxsfb_probe, 1627 .remove = mxsfb_remove, 1628 .shutdown = mxsfb_shutdown, 1629 .id_table = mxsfb_devtype, 1630 .driver = { 1631 .name = DRIVER_NAME, 1632 .of_match_table = mxsfb_dt_ids, 1633 .pm = &mxsfb_pm_ops, 1634 }, 1635 }; 1636 1637 module_platform_driver(mxsfb_driver);

從示例代碼59.1.2.2 可以看出,這是一個(gè)標(biāo)準(zhǔn)的platform 驅(qū)動(dòng),當(dāng)驅(qū)動(dòng)和設(shè)備匹配以后mxsfb_probe 函數(shù)就會(huì)執(zhí)行。在看mxsfb_probe 函數(shù)之前我們先簡單了解一下Linux 下Framebuffer 驅(qū)動(dòng)的編寫流程,Linux 內(nèi)核將所有的Framebuffer 抽象為一個(gè)叫做fb_info 的結(jié)構(gòu)體,fb_info 結(jié)構(gòu)體包含了Framebuffer 設(shè)備的完整屬性和操作集合,因此每一個(gè)Framebuffer 設(shè)
備都必須有一個(gè)fb_info。換言之就是,LCD 的驅(qū)動(dòng)就是構(gòu)建fb_info,并且向系統(tǒng)注冊(cè)fb_info的過程。fb_info 結(jié)構(gòu)體定義在include/linux/fb.h 文件里面,內(nèi)容如下(省略掉條件編譯):

448 struct fb_info { 449 atomic_t count; 450 int node; 451 int flags; 452 struct mutex lock; /* 互斥鎖*/ 453 struct mutex mm_lock; /* 互斥鎖,用于fb_mmap和smem_*域*/ 454 struct fb_var_screeninfo var; /* 當(dāng)前可變參數(shù)*/ 455 struct fb_fix_screeninfo fix; /* 當(dāng)前固定參數(shù)*/ 456 struct fb_monspecs monspecs; /* 當(dāng)前顯示器特性*/ 457 struct work_struct queue; /* 幀緩沖事件隊(duì)列*/ 458 struct fb_pixmap pixmap; /* 圖像硬件映射*/ 459 struct fb_pixmap sprite; /* 光標(biāo)硬件映射*/ 460 struct fb_cmap cmap; /* 當(dāng)前調(diào)色板*/ 461 struct list_head modelist; /* 當(dāng)前模式列表*/ 462 struct fb_videomode *mode; /* 當(dāng)前視頻模式*/ 463 464 #ifdef CONFIG_FB_BACKLIGHT /* 如果LCD支持背光的話*/ 465 /* assigned backlight device */ 466 /* set before framebuffer registration, 467 remove after unregister */ 468 struct backlight_device *bl_dev; /* 背光設(shè)備*/ 469 470 /* Backlight level curve */ 471 struct mutex bl_curve_mutex; 472 u8 bl_curve[FB_BACKLIGHT_LEVELS]; 473 #endif ...... 479 struct fb_ops *fbops; /* 幀緩沖操作函數(shù)集*/ 480 struct device *device; /* 父設(shè)備*/ 481 struct device *dev; /* 當(dāng)前fb設(shè)備*/ 482 int class_flag; /* 私有sysfs標(biāo)志*/ ...... 486 char __iomem *screen_base; /* 虛擬內(nèi)存基地址(屏幕顯存) */ 487 unsigned long screen_size; /* 虛擬內(nèi)存大小(屏幕顯存大小) */ 488 void *pseudo_palette; /* 偽16位調(diào)色板*/ ...... 507 };

fb_info 結(jié)構(gòu)體的成員變量很多,我們重點(diǎn)關(guān)注var、fix、fbops、screen_base、screen_size和pseudo_palette。mxsfb_probe 函數(shù)的主要工作內(nèi)容為:
①、申請(qǐng)fb_info。
②、初始化fb_info 結(jié)構(gòu)體中的各個(gè)成員變量。
③、初始化eLCDIF 控制器。
④、使用register_framebuffer 函數(shù)向Linux 內(nèi)核注冊(cè)初始化好的fb_info。register_framebuffer函數(shù)原型如下:

int register_framebuffer(struct fb_info *fb_info)

函數(shù)參數(shù)和返回值含義如下:
fb_info:需要上報(bào)的fb_info。
返回值:0,成功;負(fù)值,失敗。
接下來我們簡單看一下mxsfb_probe 函數(shù),函數(shù)內(nèi)容如下(有縮減):

1369 static int mxsfb_probe(struct platform_device *pdev) 1370 { 1371 const struct of_device_id *of_id = 1372 of_match_device(mxsfb_dt_ids, &pdev->dev); 1373 struct resource *res; 1374 struct mxsfb_info *host; 1375 struct fb_info *fb_info; 1376 struct pinctrl *pinctrl; 1377 int irq = platform_get_irq(pdev, 0); 1378 int gpio, ret; 1379 ...... 1394 1395 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 1396 if (!res) { 1397 dev_err(&pdev->dev, "Cannot get memory IO resource\n"); 1398 return -ENODEV; 1399 }

第1374 行,host 結(jié)構(gòu)體指針變量,表示I.MX6ULL 的LCD 的主控接口,mxsfb_info 結(jié)構(gòu)體是NXP 定義的針對(duì)I.MX 系列SOC 的Framebuffer 設(shè)備結(jié)構(gòu)體。也就是我們前面一直說的設(shè)備結(jié)構(gòu)體,此結(jié)構(gòu)體包含了I.MX 系列SOC 的Framebuffer 設(shè)備詳細(xì)信息,比如時(shí)鐘、eLCDIF控制器寄存器基地址、fb_info 等。
第1395 行,從設(shè)備樹中獲取eLCDIF 接口控制器的寄存器首地址,設(shè)備樹中l(wèi)cdif 節(jié)點(diǎn)已經(jīng)設(shè)置了eLCDIF 寄存器首地址為0X021C8000,因此res=0X021C8000。
第1401 行,給host 申請(qǐng)內(nèi)存,host 為mxsfb_info 類型結(jié)構(gòu)體指針。
第1407 行,給fb_info 申請(qǐng)內(nèi)存,也就是申請(qǐng)fb_info。
第1413~1414 行,設(shè)置host 的fb_info 成員變量為fb_info,設(shè)置fb_info 的par 成員變量為host。通過這一步就將前面申請(qǐng)的host 和fb_info 聯(lián)系在了一起。
第1416 行,申請(qǐng)中斷,中斷服務(wù)函數(shù)為mxsfb_irq_handler。
第1425 行,對(duì)從設(shè)備樹中獲取到的寄存器首地址(res)進(jìn)行內(nèi)存映射,得到虛擬地址,并保存到host 的base 成員變量。因此通過訪問host 的base 成員即可訪問I.MX6ULL 的整個(gè)eLCDIF寄存器。其實(shí)在mxsfb.c 中已經(jīng)定義了eLCDIF 各個(gè)寄存器相比于基地址的偏移值,如下所示:

67 #define LCDC_CTRL 0x00 68 #define LCDC_CTRL1 0x10 69 #define LCDC_V4_CTRL2 0x20 70 #define LCDC_V3_TRANSFER_COUNT 0x20 71 #define LCDC_V4_TRANSFER_COUNT 0x30 ...... 89 #define LCDC_V4_DEBUG0 0x1d0 90 #define LCDC_V3_DEBUG0 0x1f0

大家可以對(duì)比著《I.MX6ULL 參考手冊(cè)》中的eLCDIF 章節(jié)檢查一下示例代碼59.1.2.4 中的這些寄存器有沒有錯(cuò)誤。

繼續(xù)回到示例代碼59.1.2.5 中的mxsfb_probe 函數(shù),第1462 行,給fb_info 中的pseudo_palette申請(qǐng)內(nèi)存。

第1473 行,調(diào)用mxsfb_init_fbinfo 函數(shù)初始化fb_info,重點(diǎn)是fb_info 的var、fix、fbops,screen_base 和screen_size。其中fbops 是Framebuffer 設(shè)備的操作集,NXP 提供的fbops 為mxsfb_ops,內(nèi)容如下:

987 static struct fb_ops mxsfb_ops = { 988 .owner = THIS_MODULE, 989 .fb_check_var = mxsfb_check_var, 990 .fb_set_par = mxsfb_set_par, 991 .fb_setcolreg = mxsfb_setcolreg, 992 .fb_ioctl = mxsfb_ioctl, 993 .fb_blank = mxsfb_blank, 994 .fb_pan_display = mxsfb_pan_display, 995 .fb_mmap = mxsfb_mmap, 996 .fb_fillrect = cfb_fillrect, 997 .fb_copyarea = cfb_copyarea, 998 .fb_imageblit = cfb_imageblit, 999 };

關(guān)于mxsfb_ops 里面的各個(gè)操作函數(shù)這里就不去詳解的介紹了。mxsfb_init_fbinfo 函數(shù)通過調(diào)用mxsfb_init_fbinfo_dt 函數(shù)從設(shè)備樹中獲取到LCD 的各個(gè)參數(shù)信息。最后,mxsfb_init_fbinfo函數(shù)會(huì)調(diào)用mxsfb_map_videomem 函數(shù)申請(qǐng)LCD 的幀緩沖內(nèi)存(也就是顯存)。

第1489~1490 行,設(shè)置eLCDIF 控制器的相應(yīng)寄存器。

第1494 行,最后調(diào)用register_framebuffer 函數(shù)向Linux 內(nèi)核注冊(cè)fb_info。
mxsfb.c 文件很大,還有一些其他的重要函數(shù),比如mxsfb_remove、mxsfb_shutdown 等,這里我們就簡單的介紹了一下mxsfb_probe 函數(shù),至于其他的函數(shù)大家自行查閱。

硬件原理圖分析

本章實(shí)驗(yàn)硬件原理圖參考24.2 小節(jié)即可。

LCD 驅(qū)動(dòng)程序編寫

前面已經(jīng)說了,6ULL 的eLCDIF 接口驅(qū)動(dòng)程序NXP 已經(jīng)編寫好了,因此LCD 驅(qū)動(dòng)部分我們不需要去修改。我們需要做的就是按照所使用的LCD 來修改設(shè)備樹。重點(diǎn)要注意三個(gè)地方:
①、LCD 所使用的IO 配置。
②、LCD 屏幕節(jié)點(diǎn)修改,修改相應(yīng)的屬性值,換成我們所使用的LCD 屏幕參數(shù)。
③、LCD 背光節(jié)點(diǎn)信息修改,要根據(jù)實(shí)際所使用的背光IO 來修改相應(yīng)的設(shè)備節(jié)點(diǎn)信息。
接下來我們依次來看一下上面這兩個(gè)節(jié)點(diǎn)改如何去修改:

1、LCD 屏幕IO 配置
首先要檢查一下設(shè)備樹中LCD 所使用的IO 配置,這個(gè)其實(shí)NXP 都已經(jīng)給我們寫好了,不需要修改,不過我們還是要看一下。打開imx6ull-alientek-emmc.dts 文件,在iomuxc 節(jié)點(diǎn)中找到如下內(nèi)容:

1 pinctrl_lcdif_dat: lcdifdatgrp { 2 fsl,pins = < 3 MX6UL_PAD_LCD_DATA00__LCDIF_DATA00 0x79 4 MX6UL_PAD_LCD_DATA01__LCDIF_DATA01 0x79 5 MX6UL_PAD_LCD_DATA02__LCDIF_DATA02 0x79 6 MX6UL_PAD_LCD_DATA03__LCDIF_DATA03 0x79 7 MX6UL_PAD_LCD_DATA04__LCDIF_DATA04 0x79 8 MX6UL_PAD_LCD_DATA05__LCDIF_DATA05 0x79 9 MX6UL_PAD_LCD_DATA06__LCDIF_DATA06 0x79 10 MX6UL_PAD_LCD_DATA07__LCDIF_DATA07 0x79 11 MX6UL_PAD_LCD_DATA08__LCDIF_DATA08 0x79 12 MX6UL_PAD_LCD_DATA09__LCDIF_DATA09 0x79 13 MX6UL_PAD_LCD_DATA10__LCDIF_DATA10 0x79 14 MX6UL_PAD_LCD_DATA11__LCDIF_DATA11 0x79 15 MX6UL_PAD_LCD_DATA12__LCDIF_DATA12 0x79 16 MX6UL_PAD_LCD_DATA13__LCDIF_DATA13 0x79 17 MX6UL_PAD_LCD_DATA14__LCDIF_DATA14 0x79 18 MX6UL_PAD_LCD_DATA15__LCDIF_DATA15 0x79 19 MX6UL_PAD_LCD_DATA16__LCDIF_DATA16 0x79 20 MX6UL_PAD_LCD_DATA17__LCDIF_DATA17 0x79 21 MX6UL_PAD_LCD_DATA18__LCDIF_DATA18 0x79 22 MX6UL_PAD_LCD_DATA19__LCDIF_DATA19 0x79 23 MX6UL_PAD_LCD_DATA20__LCDIF_DATA20 0x79 24 MX6UL_PAD_LCD_DATA21__LCDIF_DATA21 0x79 25 MX6UL_PAD_LCD_DATA22__LCDIF_DATA22 0x79 26 MX6UL_PAD_LCD_DATA23__LCDIF_DATA23 0x79 27 >; 28 }; 29 30 pinctrl_lcdif_ctrl: lcdifctrlgrp { 31 fsl,pins = < 32 MX6UL_PAD_LCD_CLK__LCDIF_CLK 0x79 33 MX6UL_PAD_LCD_ENABLE__LCDIF_ENABLE 0x79 34 MX6UL_PAD_LCD_HSYNC__LCDIF_HSYNC 0x79 35 MX6UL_PAD_LCD_VSYNC__LCDIF_VSYNC 0x79 36 >; 37 pinctrl_pwm1: pwm1grp { 38 fsl,pins = < 39 MX6UL_PAD_GPIO1_IO08__PWM1_OUT 0x110b0 40 >; 41 };

第2~27 行,子節(jié)點(diǎn)pinctrl_lcdif_dat,為RGB LCD 的24 根數(shù)據(jù)線配置項(xiàng)。
第30~36 行,子節(jié)點(diǎn)pinctrl_lcdif_ctrl,RGB LCD 的4 根控制線配置項(xiàng),包括CLK、ENABLE、VSYNC 和HSYNC。
第37~40 行,子節(jié)點(diǎn)pinctrl_pwm1,LCD 背光PWM 引腳配置項(xiàng)。這個(gè)引腳要根據(jù)實(shí)際情況設(shè)置,這里我們建議大家在以后的學(xué)習(xí)或工作中,LCD 的背光IO 盡量和半導(dǎo)體廠商的官方開發(fā)板一致。

注意示例代碼59.3.1 中默認(rèn)將LCD 的電氣屬性都設(shè)置為0X79,這里將其都改為0X49,也就是將LCD 相關(guān)IO 的驅(qū)動(dòng)能力改為R0/1,也就是降低LCD 相關(guān)IO 的驅(qū)動(dòng)能力。因?yàn)榍懊嬉呀?jīng)說了,正點(diǎn)原子的ALPHA 開發(fā)板上的LCD 接口用了三個(gè)SGM3157 模擬開關(guān),為了防止模擬開關(guān)影響到網(wǎng)絡(luò),因此這里需要降低LCD 數(shù)據(jù)線的驅(qū)動(dòng)能力,如果你所使用的板子沒有用到模擬開關(guān)那么就不需要將0X79 改為0X49。
2、LCD 屏幕參數(shù)節(jié)點(diǎn)信息修改
繼續(xù)在imx6ull-alientek-emmc.dts 文件中找到lcdif 節(jié)點(diǎn),節(jié)點(diǎn)內(nèi)容如下所示:

1 &lcdif { 2 pinctrl-names = "default"; 3 pinctrl-0 = <&pinctrl_lcdif_dat /* 使用到的IO */ 4 &pinctrl_lcdif_ctrl 5 &pinctrl_lcdif_reset>; 6 display = <&display0>; 7 status = "okay"; 8 9 display0: display { /* LCD屬性信息*/ 10 bits-per-pixel = <16>; /* 一個(gè)像素占用幾個(gè)bit */ 11 bus-width = <24>; /* 總線寬度*/ 12 13 display-timings { 14 native-mode = <&timing0>; /* 時(shí)序信息*/ 15 timing0: timing0 { 16 clock-frequency = <9200000>; /* LCD像素時(shí)鐘,單位Hz */ 17 hactive = <480>; /* LCD X軸像素個(gè)數(shù)*/ 18 vactive = <272>; /* LCD Y軸像素個(gè)數(shù)*/ 19 hfront-porch = <8>; /* LCD hfp參數(shù)*/ 20 hback-porch = <4>; /* LCD hbp參數(shù)*/ 21 hsync-len = <41>; /* LCD hspw參數(shù)*/ 22 vback-porch = <2>; /* LCD vbp參數(shù)*/ 23 vfront-porch = <4>; /* LCD vfp參數(shù)*/ 24 vsync-len = <10>; /* LCD vspw參數(shù)*/ 25 26 hsync-active = <0>; /* hsync數(shù)據(jù)線極性*/ 27 vsync-active = <0>; /* vsync數(shù)據(jù)線極性*/ 28 de-active = <1>; /* de數(shù)據(jù)線極性*/ 29 pixelclk-active = <0>; /* clk數(shù)據(jù)線先極性*/ 30 }; 31 }; 32 }; 33 };

示例代碼59.3.2 就是向imx6ull.dtsi 文件中的lcdif 節(jié)點(diǎn)追加的內(nèi)容,我們依次來看一下示例代碼59.3.2 中的這些屬性都是寫什么含義。

第3 行,pinctrl-0 屬性,LCD 所使用的IO 信息,這里用到了pinctrl_lcdif_dat、pinctrl_lcdif_ctrl和pinctrl_lcdif_reset 這三個(gè)IO 相關(guān)的節(jié)點(diǎn),前兩個(gè)在示例代碼59.3.1 中已經(jīng)講解了。
pinctrl_lcdif_reset 是LCD 復(fù)位IO 信息節(jié)點(diǎn),正點(diǎn)原子的I.MX6U-ALPHA 開發(fā)板的LCD 沒有用到復(fù)位IO,因此pinctrl_lcdif_reset 可以刪除掉。

第6 行,display 屬性,指定LCD 屬性信息所在的子節(jié)點(diǎn),這里為display0,下面就是display0子節(jié)點(diǎn)內(nèi)容。

第9~32 行,display0 子節(jié)點(diǎn),描述LCD 的參數(shù)信息,第10 行的bits-per-pixel 屬性用于指明一個(gè)像素占用的bit 數(shù),默認(rèn)為16bit。本教程我們將LCD 配置為RGB888 模式,因此一個(gè)像素點(diǎn)占用24bit,bits-per-pixel 屬性要改為24。第11 行的bus-width 屬性用于設(shè)置數(shù)據(jù)線寬度,因?yàn)橐渲脼镽GB888 模式,因此bus-width 也要設(shè)置為24。

第13~30 行,這幾行非常重要!因?yàn)檫@幾行設(shè)置了LCD 的時(shí)序參數(shù)信息,NXP 官方的EVK開發(fā)板使用了一個(gè)4.3 寸的480*272 屏幕,因此這里默認(rèn)是按照NXP 官方的那個(gè)屏幕參數(shù)設(shè)置的。每一個(gè)屬性的含義后面的注釋已經(jīng)寫的很詳細(xì)了,大家自己去看就行了,這些時(shí)序參數(shù)就是我們重點(diǎn)要修改的,需要根據(jù)自己所使用的屏幕去修改。

這里以正點(diǎn)原子的ATK7016(7 寸1024*600)屏幕為例,將imx6ull-alientek-emmc.dts 文件中的lcdif 節(jié)點(diǎn)改為如下內(nèi)容:

1 &lcdif { 2 pinctrl-names = "default"; 3 pinctrl-0 = <&pinctrl_lcdif_dat /* 使用到的IO */ 4 &pinctrl_lcdif_ctrl>; 5 display = <&display0>; 6 status = "okay"; 7 8 display0: display { /* LCD屬性信息*/ 9 bits-per-pixel = <24>; /* 一個(gè)像素占用24bit */ 10 bus-width = <24>; /* 總線寬度*/ 11 12 display-timings { 13 native-mode = <&timing0>; /* 時(shí)序信息*/ 14 timing0: timing0 { 15 clock-frequency = <51200000>; /* LCD像素時(shí)鐘,單位Hz */ 16 hactive = <1024>; /* LCD X軸像素個(gè)數(shù)*/ 17 vactive = <600>; /* LCD Y軸像素個(gè)數(shù)*/ 18 hfront-porch = <160>; /* LCD hfp參數(shù)*/ 19 hback-porch = <140>; /* LCD hbp參數(shù)*/ 20 hsync-len = <20>; /* LCD hspw參數(shù)*/ 21 vback-porch = <20>; /* LCD vbp參數(shù)*/ 22 vfront-porch = <12>; /* LCD vfp參數(shù)*/ 23 vsync-len = <3>; /* LCD vspw參數(shù)*/ 24 25 hsync-active = <0>; /* hsync數(shù)據(jù)線極性*/ 26 vsync-active = <0>; /* vsync數(shù)據(jù)線極性*/ 27 de-active = <1>; /* de數(shù)據(jù)線極性*/ 28 pixelclk-active = <0>; /* clk數(shù)據(jù)線先極性*/ 29 }; 30 }; 31 }; 32 };

第3 行,設(shè)置LCD 屏幕所使用的IO,刪除掉原來的pinctrl_lcdif_reset,因?yàn)闆]有用到屏幕復(fù)位IO,其他的IO 不變。
第9 行,使用RGB888 模式,所以一個(gè)像素點(diǎn)是24bit。
第15~23 行,ATK7016 屏幕時(shí)序參數(shù),根據(jù)自己所使用的屏幕修改即可。

3、LCD 屏幕背光節(jié)點(diǎn)信息
正點(diǎn)原子的LCD 接口背光控制IO 連接到了I.MX6U 的GPIO1_IO08 引腳上,GPIO1_IO08復(fù)用為PWM1_OUT,通過PWM 信號(hào)來控制LCD 屏幕背光的亮度,這個(gè)我們已經(jīng)在第二十九章詳細(xì)的講解過了。正點(diǎn)原子I.MX6U-ALPHA 開發(fā)板的LCD 背光引腳和NXP 官方EVK 開發(fā)板的背光引腳一樣,因此背光的設(shè)備樹節(jié)點(diǎn)是不需要修改的,但是考慮到其他同學(xué)可能使用別的開發(fā)板或者屏幕,LCD 背光引腳和NXP 官方EVK 開發(fā)板可能不同,因此我們還是來看一下如何在設(shè)備樹中添加背光節(jié)點(diǎn)信息。

首先是GPIO1_IO08 這個(gè)IO 的配置,在imx6ull-alientek-emmc.dts 中找到如下內(nèi)容:

1 pinctrl_pwm1: pwm1grp { 2 fsl,pins = < 3 MX6UL_PAD_GPIO1_IO08__PWM1_OUT 0x110b0 4 >; 5 };

pinctrl_pwm1 節(jié)點(diǎn)就是GPIO1_IO08 的配置節(jié)點(diǎn),從第3 行可以看出,設(shè)置GPIO1_IO08這個(gè)IO 復(fù)用為PWM1_OUT,并且設(shè)置電氣屬性值為0x110b0。

LCD 背光要用到PWM1,因此也要設(shè)置PWM1 節(jié)點(diǎn),在imx6ull.dtsi 文件中找到如下內(nèi)容:

1 pwm1: pwm@02080000 { 2 compatible = "fsl,imx6ul-pwm", "fsl,imx27-pwm"; 3 reg = <0x02080000 0x4000>; 4 interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>; 5 clocks = <&clks IMX6UL_CLK_PWM1>, 6 <&clks IMX6UL_CLK_PWM1>; 7 clock-names = "ipg", "per"; 8 #pwm-cells = <2>; 9 };

imx6ull.dtsi 文件中的pwm1 節(jié)點(diǎn)信息大家不要修改,如果要修改pwm1 節(jié)點(diǎn)內(nèi)容的話請(qǐng)?jiān)趇mx6ull-alientek-emmc.dts 文件中修改。在整個(gè)Linux 源碼文件中搜索compatible 屬性的這兩個(gè)值即可找到imx6ull 的pwm 驅(qū)動(dòng)文件,imx6ull 的PWM 驅(qū)動(dòng)文件為drivers/pwm/pwm-imx.c,這里我們就不詳細(xì)的去分析這個(gè)文件了。繼續(xù)在imx6ull-alientek-emmc.dts 文件中找到向pwm1
追加的內(nèi)容,如下所示:

1 &pwm1 { 2 pinctrl-names = "default"; 3 pinctrl-0 = <&pinctrl_pwm1>; 4 status = "okay"; 5 };

第3 行,設(shè)置pwm1 所使用的IO 為pinctrl_pwm1,也就是示例代碼59.3.4 所定義的GPIO1_IO08 這個(gè)IO。
第4 行,將status 設(shè)置為okay。

如果背光用的其他pwm 通道,比如pwm2,那么就需要仿照示例代碼59.3.6 的內(nèi)容,向pwm2 節(jié)點(diǎn)追加相應(yīng)的內(nèi)容。pwm 和相關(guān)的IO 已經(jīng)準(zhǔn)備好了,但是Linux 系統(tǒng)怎么知道PWM1_OUT 就是控制LCD 背光的呢?因此我們還需要一個(gè)節(jié)點(diǎn)來將LCD 背光和PWM1_OUT連接起來。這個(gè)節(jié)點(diǎn)就是backlight ,backlight 節(jié)點(diǎn)描述可以參考
Documentation/devicetree/indings/video/backlight/pwm-backlight.txt 這個(gè)文檔,此文檔詳細(xì)講解了backlight 節(jié)點(diǎn)該如何去創(chuàng)建,這里大概總結(jié)一下:
①、節(jié)點(diǎn)名稱要為“backlight”。
②、節(jié)點(diǎn)的compatible 屬性值要為“pwm-backlight”,因此可以通過在Linux 內(nèi)核中搜索“pwm-backlight ”來查找PWM 背光控制驅(qū)動(dòng)程序,這個(gè)驅(qū)動(dòng)程序文件為drivers/video/backlight/pwm_bl.c,感興趣的可以去看一下這個(gè)驅(qū)動(dòng)程序。
③、pwms 屬性用于描述背光所使用的PWM 以及PWM 頻率,比如本章我們要使用的pwm1,pwm 頻率設(shè)置為5KHz(NXP 官方推薦設(shè)置)。
④、brightness-levels 屬性描述亮度級(jí)別,范圍為0~255,0 表示PWM 占空比為0%,也就是亮度最低,255 表示100%占空比,也就是亮度最高。至于設(shè)置幾級(jí)亮度,大家可以自行填寫此屬性。
⑤、default-brightness-level 屬性為默認(rèn)亮度級(jí)別。
根據(jù)上述5 點(diǎn)設(shè)置backlight 節(jié)點(diǎn),這個(gè)NXP 已經(jīng)給我們?cè)O(shè)置好了,大家在imx6ull-alientek-emmc.dts 文件中找到如下內(nèi)容:

1 backlight { 2 compatible = "pwm-backlight"; 3 pwms = <&pwm1 0 5000000>; 4 brightness-levels = <0 4 8 16 32 64 128 255>; 5 default-brightness-level = <6>; 6 status = "okay"; 7 };

第3 行,設(shè)置背光使用pwm1,PWM 頻率為5KHz。
第4 行,設(shè)置背8 級(jí)背光(0~7),分別為0、4、8、16、32、64、128、255,對(duì)應(yīng)占空比為0%、1.57%、3.13%、6.27%、12.55%、25.1%、50.19%、100%,如果嫌少的話可以自行添加一些其他的背光等級(jí)值。
第5 行,設(shè)置默認(rèn)背光等級(jí)為6,也就是50.19%的亮度。

關(guān)于背光的設(shè)備樹節(jié)點(diǎn)信息就講到這里,整個(gè)的LCD 設(shè)備樹節(jié)點(diǎn)內(nèi)容我們就講完了,按照這些節(jié)點(diǎn)內(nèi)容配置自己的開發(fā)板即可。

運(yùn)行測試

LCD 屏幕基本測試

1、編譯新的設(shè)備樹
上一小節(jié)我們已經(jīng)配置好了設(shè)備樹,所以需要輸入如下命令重新編譯一下設(shè)備樹:

make dtbs

等待編譯生成新的imx6ull-alientek-emmc.dtb 設(shè)備樹文件,一會(huì)要使用新的設(shè)備樹啟動(dòng)Linux 內(nèi)核。
2、使能Linux logo 顯示
Linux 內(nèi)核啟動(dòng)的時(shí)候可以選擇顯示小企鵝logo,只要這個(gè)小企鵝logo 顯示沒問題那么我們的LCD 驅(qū)動(dòng)基本就工作正常了。這個(gè)logo 顯示是要配置的,不過Linux 內(nèi)核一般都會(huì)默認(rèn)開啟logo 顯示,但是奔著學(xué)習(xí)的目的,我們還是來看一下如何使能Linux logo 顯示。打開Linux內(nèi)核圖形化配置界面,按下路徑找到對(duì)應(yīng)的配置項(xiàng):

-> Device Drivers-> Graphics support-> Bootup logo (LOGO [=y])-> Standard black and white Linux logo-> Standard 16-color Linux logo-> Standard 224-color Linux logo

如圖59.4.1.1 所示:

圖59.4.1.1 中這三個(gè)選項(xiàng)分別對(duì)應(yīng)黑白、16 位、24 位色彩格式的logo,我們把這三個(gè)都選中,都編譯進(jìn)Linux 內(nèi)核里面。設(shè)置好以后保存退出,重新編譯Linux 內(nèi)核,編譯完成以后使用新編譯出來的imx6ull-alientek-emmc.dtb 和zImage 鏡像啟動(dòng)系統(tǒng),如果LCD 驅(qū)動(dòng)工作正常的話就會(huì)在LCD 屏幕左上角出現(xiàn)一個(gè)彩色的小企鵝logo,屏幕背景色為黑色,如圖59.4.1.2 所示:

設(shè)置LCD 作為終端控制臺(tái)

我們一直使用SecureCRT 作為Linux 開發(fā)板終端,開發(fā)板通過串口和SecureCRT 進(jìn)行通信。現(xiàn)在我們已經(jīng)驅(qū)動(dòng)起來LCD 了,所以可以設(shè)置LCD 作為終端,也就是開發(fā)板使用自己的顯示設(shè)備作為自己的終端,然后接上鍵盤就可以直接在開發(fā)板上敲命令了,將LCD 設(shè)置為終端控制臺(tái)的方法如下:

1、設(shè)置uboot 中的bootargs
重啟開發(fā)板,進(jìn)入Linux 命令行,重新設(shè)置bootargs 參數(shù)的console 內(nèi)容,命令如下所示:

setenv bootargs 'console=tty1 console=ttymxc0,115200 root=/dev/nfs rw nfsroot=192.168.1.250: /home/zuozhongkai/linux/nfs/rootfs ip=192.168.1.251:192.168.1.250:192.168.1.1:255.255.255.0::eth0: off'

注意紅色字體部分設(shè)置console,這里我們?cè)O(shè)置了兩遍console,第一次設(shè)置console=tty1,也就是設(shè)置LCD 屏幕為控制臺(tái),第二遍又設(shè)置console=ttymxc0,115200,也就是設(shè)置串口也作為控制臺(tái)。相當(dāng)于我們打開了兩個(gè)console,一個(gè)是LCD,一個(gè)是串口,大家重啟開發(fā)板就會(huì)發(fā)
現(xiàn)LCD 和串口都會(huì)顯示Linux 啟動(dòng)log 信息。但是此時(shí)我們還不能使用LCD 作為終端進(jìn)行交互,因?yàn)槲覀兊脑O(shè)置還未完成。

2、修改/etc/inittab 文件
打開開發(fā)板根文件系統(tǒng)中的/etc/inittab 文件,在里面加入下面這一行:

tty1::askfirst:-/bin/sh

添加完成以后的/etc/inittab 文件內(nèi)容如圖59.4.2.1 所示:

修改完成以后保存/etc/inittab 并退出,然后重啟開發(fā)板,重啟以后開發(fā)板LCD 屏幕最后一
行會(huì)顯示下面一行語句:

Please press Enter to activate this console.

上述提示語句說的是:按下回車鍵使能當(dāng)前終端,我們?cè)诘谖迨苏乱呀?jīng)將I.MX6U-ALPHA 開發(fā)板上的KEY 按鍵注冊(cè)為了回車鍵,因此按下開發(fā)板上的KEY 按鍵即可使能LCD這個(gè)終端。當(dāng)然了,大家也可以接上一個(gè)USB 鍵盤,Linux 內(nèi)核默認(rèn)已經(jīng)使能了USB 鍵盤驅(qū)動(dòng)了,因此可以直接使用USB 鍵盤。
至此,我們就擁有了兩套終端,一個(gè)是基于串口的SecureCRT,一個(gè)就是我們開發(fā)板的LCD屏幕,但是為了方便調(diào)試,我們以后還是以SecureCRT 為主。我們可以通過下面這一行命令向LCD 屏幕輸出“hello linux!”

echo hello linux > /dev/tty1

LCD 背光調(diào)節(jié)

59.3 小節(jié)已經(jīng)講過了,背光設(shè)備樹節(jié)點(diǎn)設(shè)置了8 個(gè)等級(jí)的背光調(diào)節(jié),可以設(shè)置為0~7,我們可以通過設(shè)置背光等級(jí)來實(shí)現(xiàn)LCD 背光亮度的調(diào)節(jié),進(jìn)入如下目錄:

/sys/devices/platform/backlight/backlight/backlight

此目錄下的文件如圖59.4.3.1 所示:

圖59.4.3.1 中的brightness 表示當(dāng)前亮度等級(jí),max_bgigntness 表示最大亮度等級(jí)。當(dāng)前這兩個(gè)文件內(nèi)容如圖59.4.3.2 所示:

從圖59.4.3.2 可以看出,當(dāng)前屏幕亮度等級(jí)為6,根據(jù)前面的分析可以,這個(gè)是50%亮度。屏幕最大亮度等級(jí)為7。如果我們要修改屏幕亮度,只需要向brightness 寫入需要設(shè)置的屏幕亮度等級(jí)即可。比如設(shè)置屏幕亮度等級(jí)為7,那么可以使用如下命令:

echo 7 > brightness

輸入上述命令以后就會(huì)發(fā)現(xiàn)屏幕亮度增大了,如果設(shè)置brightness 為0 的話就會(huì)關(guān)閉LCD背光,屏幕就會(huì)熄滅。

從LCD自動(dòng)關(guān)閉解決方法

默認(rèn)情況下10 分鐘以后LCD 就會(huì)熄屏,這個(gè)并不是代碼有問題,而是Linux 內(nèi)核設(shè)置的,就和我們用手機(jī)或者電腦一樣,一段時(shí)間不操作的話屏幕就會(huì)熄滅,以節(jié)省電能。解決這個(gè)問題有多種方法,我們依次來看一下:

1、按鍵盤喚醒
最簡單的就是按下回車鍵喚醒屏幕,我們?cè)诘?8 章將I.MX6U-ALPHA 開發(fā)板上的KEY按鍵注冊(cè)為了回車鍵,因此按下開發(fā)板上的KEY 按鍵即可喚醒屏幕。如果開發(fā)板上沒有按鍵的話可以外接USB 鍵盤,然后按下USB 鍵盤上的回車鍵喚醒屏幕。

2、關(guān)閉10 分鐘熄屏功能
在Linux 源碼中找到drivers/tty/vt/vt.c 這個(gè)文件,在此文件中找到blankinterval 變量,如下所示:

179 static int vesa_blank_mode; 180 static int vesa_off_interval; 181 static int blankinterval = 10*60;

blankinterval 變量控制著LCD 關(guān)閉時(shí)間,默認(rèn)是10*60,也就是10 分鐘。將blankinterval的值改為0 即可關(guān)閉10 分鐘熄屏的功能,修改完成以后需要重新編譯Linux 內(nèi)核,得到新的zImage,然后用新的zImage 啟動(dòng)開發(fā)板。

3、編寫一個(gè)APP 來關(guān)閉熄屏功能
在ubuntu 中新建一個(gè)名為lcd_always_on.c 的文件,然后在里面輸入如下所示內(nèi)容:

1 #include <fcntl.h> 2 #include <stdio.h> 3 #include <sys/ioctl.h> 4 5 6 int main(int argc, char *argv[]) 7 { 8 int fd; 9 fd = open("/dev/tty1", O_RDWR); 10 write(fd, "\033[9;0]", 8); 11 close(fd); 12 return 0; 13 }

使用如下命令編譯lcd_always_on.c 這個(gè)文件:

arm-linux-gnueabihf-gcc lcd_always_on.c -o lcd_always_on

編譯生成lcd_always_on 以后將此可執(zhí)行文件拷貝到開發(fā)板根文件系統(tǒng)的/usr/bin 目錄中,然后給予可執(zhí)行權(quán)限。設(shè)置lcd_always_on 這個(gè)軟件為開機(jī)自啟動(dòng),打開/etc/init.d/rcS,在此文件最后面加入如下內(nèi)容:

1 cd /usr/bin 2 ./lcd_always_on 3 cd ..

修改完成以后保存/etc/init.d/rcS 文件,然后重啟開發(fā)板即可。關(guān)于Linux 下的LCD 驅(qū)動(dòng)我們就講到這里。

總結(jié)

以上是生活随笔為你收集整理的Linux LCD 驱动实验的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

亚洲国产成人av网 | 国产精品美女久久久久久久久 | 婷婷网五月天 | 一区二区三区免费 | 一区二区三区免费网站 | 91视频 - 114av| 亚洲影院色 | 亚州精品在线视频 | 亚洲一级片在线看 | 成人中文字幕在线 | 奇米影视8888在线观看大全免费 | 亚洲精品视频免费观看 | 午夜少妇| 91看成人 | 最新超碰| 天天干国产 | 一级精品视频在线观看宜春院 | 日韩精品无| 久久99精品国产麻豆宅宅 | 日韩a在线 | 人人爽人人爽人人爽学生一级 | 93久久精品日日躁夜夜躁欧美 | 最新av中文字幕 | 国产成人久久精品77777综合 | 久久综合亚洲鲁鲁五月久久 | 久久激情视频 久久 | 日韩欧美在线观看一区二区三区 | 国产色在线视频 | 日韩在线播放av | 天天干,天天操 | 久久精品国产免费 | 免费a视频在线 | 中文国产在线观看 | 国产精品一区二区在线 | 91桃色在线观看视频 | 一区久久久 | 国产亚洲精品久久久久秋 | 91国内产香蕉 | 欧美激情精品久久 | 日韩中文字幕视频在线观看 | 国产精品自在线拍国产 | 蜜臀精品久久久久久蜜臀 | 人人干网站 | 欧美a√大片 | 久久精品国产一区二区三区 | 国产资源中文字幕 | 日韩欧美综合在线视频 | 色停停五月天 | 激情自拍av| www.狠狠干| 中文字幕在线视频国产 | 97在线观看| 国外av在线| 久久三级视频 | 在线国产黄色 | 9ⅰ精品久久久久久久久中文字幕 | 草免费视频| 国产一区在线免费观看 | 热久久这里只有精品 | 91精彩视频在线观看 | 国产一级在线播放 | 国产1区在线观看 | 手机av电影在线观看 | 国产一级淫片免费看 | 黄色1级大片 | 黄色一区三区 | 国产资源网| 一本色道久久综合亚洲二区三区 | 国产又黄又爽又猛视频日本 | 五月导航| 夜夜夜夜猛噜噜噜噜噜初音未来 | 久久精品国产一区二区电影 | 人人爽人人插 | 日本高清中文字幕有码在线 | 色99在线| 亚洲精品乱码久久 | 国内精品久久天天躁人人爽 | 国产一区二区不卡视频 | 狠狠操夜夜操 | 六月色丁香 | 亚洲一区二区精品 | 97精品国产97久久久久久久久久久久 | 国产精品18久久久久久不卡孕妇 | 中文字幕视频一区二区 | 97精品在线视频 | 亚洲国产丝袜在线观看 | 天天天天天天天操 | 国产精品一区二区三区免费视频 | 日韩欧美精品在线视频 | 免费在线电影网址大全 | 婷婷深爱五月 | 狠狠的日 | 操操操日日日 | 免费黄av | 亚洲一级在线观看 | 精品色综合 | 狠狠操狠狠干天天操 | 99精品热视频 | 亚洲日本成人网 | 超碰在线观看97 | 成年人三级网站 | 久久久精品电影 | 综合婷婷| 日韩成人精品一区二区三区 | 国产高清绿奴videos | 国产喷水在线 | 九九久久婷婷 | 91成人免费 | 久久一区二区免费视频 | 久久亚洲综合色 | 在线播放国产一区二区三区 | 久久婷婷网| 国产日本三级 | 成人午夜电影在线 | 欧美男同网站 | 黄色片免费电影 | 奇米影视在线99精品 | 九色91av | 国偷自产视频一区二区久 | 成人羞羞视频在线观看免费 | 高清国产午夜精品久久久久久 | 不卡的av在线| 中文在线字幕免费观 | 精品国产诱惑 | 欧美日韩不卡在线观看 | 五月天色婷婷丁香 | 中文字幕中文字幕中文字幕 | 香蕉视频网站在线观看 | www.com操| 人人狠狠综合久久亚洲婷 | 免费av成人在线 | 亚洲电影院 | 久久天天躁狠狠躁亚洲综合公司 | 国产免费叼嘿网站免费 | 国产精品va视频 | 欧美天堂久久 | 亚洲精品视频在线观看免费 | 免费看片网址 | 国产va饥渴难耐女保洁员在线观看 | 超碰久热| 999国内精品永久免费视频 | 中文字幕一区二区三区在线观看 | 国产成人av网站 | 免费看国产曰批40分钟 | 亚洲视频,欧洲视频 | 草久在线观看 | 欧美在线观看视频 | 国产在线a | 在线免费三级 | 国产精久久久久久久 | 91禁在线观看 | 亚洲国产精品va在线看黑人动漫 | 婷婷5月色 | 五月婷婷色 | 欧美精品久久久久久 | 美女av在线免费 | 国产精品成人一区 | 欧美日韩久久不卡 | 欧美日韩精品在线一区二区 | 69xx视频 | 在线观看成人国产 | 久久综合九色综合97_ 久久久 | 婷婷久久精品 | 日日夜夜噜 | 天天狠狠| 不卡av在线免费观看 | 丁香六月婷婷开心婷婷网 | 三级视频片 | 日韩在线观看一区 | 91av网站在线观看 | 在线视频麻豆 | 欧美精品中文 | 精品一二三四视频 | 久久久久久国产精品免费 | 国产在线观看xxx | 97国产在线播放 | 97电影在线 | 国产喷水在线 | 亚洲精品国产精品国自产在线 | 1024手机基地在线观看 | 久久国产美女 | 亚洲国产免费看 | 福利一区在线视频 | 欧美日本三级 | 国产91成人在在线播放 | 国产精品video | 国产黄色a | av在线精品 | 色婷婷欧美 | 亚洲黄色app | 黄色av影视 | 黄色软件在线观看免费 | 欧美日韩视频一区二区 | 日韩成人在线免费观看 | 国产精品视频免费看 | 97超碰人人澡人人 | 国产99久久久久久免费看 | 日本最新高清不卡中文字幕 | www亚洲国产| 在线免费观看视频一区 | 国产精品自产拍在线观看 | 久久免费视频这里只有精品 | 日本爱爱片 | 国产精品久久久久久一区二区三区 | 天天操操 | 精品美女在线视频 | 99日精品| 国产专区在线看 | 射射射综合网 | 91精品对白一区国产伦 | 干干操操 | 97视频在线观看成人 | 免费毛片aaaaaa| 日韩视频在线观看视频 | 97精品欧美91久久久久久 | 久久久精品一区二区三区 | 中文字幕在线观看日本 | 欧美aa一级 | 激情网婷婷 | 91综合久久一区二区 | 久久久久久久久久久网站 | 日韩高清在线不卡 | 91视频 - 88av | 91看片黄色| 日本最大色倩网站www | 国产精品久久久久久久久久直播 | 欧美a在线免费观看 | 香蕉久久久久久久 | 国产麻豆果冻传媒在线观看 | 日韩区欠美精品av视频 | 国产成人精品一区在线 | 国产成人三级在线 | 97国产精品 | 一级免费黄视频 | 91成人免费在线视频 | 天天做日日做天天爽视频免费 | 最近中文字幕完整视频高清1 | 日韩黄色大片在线观看 | 欧美精品做受xxx性少妇 | 久久免费国产 | 久久精品1区2区 | 高清日韩一区二区 | 国产高清精品在线观看 | 日韩中文字幕免费视频 | 久操伊人 | 久久久久久高清 | 婷婷视频 | 欧美色综合 | 久久激情网站 | 韩国在线视频一区 | 曰韩在线 | 成年人在线电影 | 免费色黄 | 日本黄色大片儿 | 91热爆在线观看 | 天天操天天干天天操天天干 | 国产在线观看99 | 中文字幕乱视频 | 欧美动漫一区二区三区 | 夜夜操天天摸 | 中文字幕麻豆 | 国产一级片网站 | 精品久久久久久久久久 | 久要激情网 | 成人a免费看 | 99久久久久| 在线观看免费国产小视频 | 日批视频在线观看免费 | 亚洲视频一 | 久久国产网 | 国模一区二区三区四区 | 婷婷色综合网 | 久久国产精品一区二区三区四区 | 久久国产精品99久久人人澡 | av大全在线看 | 99精品国产免费久久久久久下载 | 日韩欧美专区 | 探花视频在线观看+在线播放 | 美女网站黄免费 | 国产精品99久久久精品免费观看 | 91香蕉国产在线观看软件 | 日韩网站在线免费观看 | 欧美三级高清 | 在线综合 亚洲 欧美在线视频 | 亚洲国产一区二区精品专区 | 成人av久久 | 欧美日产在线观看 | 色丁香婷婷 | 黄色三级网站在线观看 | 一区二区三区四区影院 | 免费色视频在线 | 国产第一页在线观看 | 四虎成人精品永久免费av | 国产手机视频在线 | 亚洲婷婷伊人 | 色久五月| 8x成人在线| 国产精品 中文在线 | 激情婷婷综合 | 日韩精品一区电影 | 黄色一级在线免费观看 | 婷婷六月综合网 | 天天操天天色天天 | 国产色在线| 色婷婷丁香 | 特黄免费av| 999久久久久| 免费91在线观看 | 成人高清av在线 | 久久久久久久久久久黄色 | 97色se | 在线观看理论 | 久久精品第一页 | 二区三区中文字幕 | 国内外成人在线 | 国产精品久久久久久久久久新婚 | 日韩三级视频在线看 | 免费在线观看成人 | 91精品国产综合久久婷婷香蕉 | 狠狠色丁香久久婷婷综合五月 | 一区二区三区在线不卡 | 亚洲午夜不卡 | 97人人模人人爽人人少妇 | 伊色综合久久之综合久久 | 久草视频一区 | 狠狠色伊人亚洲综合网站色 | 婷婷综合在线 | 成人免费视频在线观看 | 久久网页| 成人久久国产 | 久久成人国产精品 | 日韩理论片在线观看 | 99精品久久久 | 性色va | 欧美不卡视频在线 | 女女av在线 | 日韩在观看线 | 一区二区三区在线电影 | 五月婷社区 | 亚洲最新av | www91在线观看 | 狠狠色2019综合网 | 精品亚洲va在线va天堂资源站 | 麻豆视频成人 | av蜜桃在线 | 亚洲成av人影片在线观看 | 亚洲精品黄色在线观看 | 天天干天天玩天天操 | 深爱激情五月网 | 狠狠色丁香婷婷综合视频 | 免费一级片在线观看 | 99久久精品国产免费看不卡 | 亚洲天天在线日亚洲洲精 | 欧美激情视频一区二区三区免费 | 国产高清视频在线播放一区 | 久久精品国产免费 | 成年人毛片在线观看 | 天海翼一区二区三区免费 | 丁五月婷婷 | 中文字幕文字幕一区二区 | 我要色综合天天 | 日日麻批40分钟视频免费观看 | 伊在线视频 | 国产精品免费人成网站 | 少妇av片 | 国产精品高潮久久av | 91视频一8mav | 免费日韩 精品中文字幕视频在线 | 国内精品久久久久影院男同志 | 日韩在线视频精品 | 国产精品私人影院 | 又湿又紧又大又爽a视频国产 | 国产色资源 | 四虎影视国产精品免费久久 | 在线观看亚洲免费视频 | 久久久久国产精品一区二区 | 久久久久五月天 | 一区二区视频在线观看免费 | 麻豆极品 | av爱干| 国产手机视频精品 | 国产精品久久av | av福利电影 | 色在线中文字幕 | 成 人 黄 色 视频免费播放 | 福利网在线 | 国产精品99久久久久久宅男 | 亚洲精品黄色在线观看 | 女人18片| 日日操日日操 | 色中色综合 | 免费福利在线视频 | 91视频免费看网站 | 超薄丝袜一二三区 | 97电影手机版 | 精品久久久久久亚洲综合网 | 天天射天天干 | 国产手机在线播放 | 久久综合色婷婷 | 99热 精品在线 | 日韩一区在线播放 | 久热只有精品 | 69xxxx欧美| 狠狠狠色丁香综合久久天下网 | 91人人澡人人爽人人精品 | 欧美另类tv | 五月婷在线观看 | 中文字幕亚洲精品日韩 | 色5月婷婷 | 狠狠狠色丁香婷婷综合久久88 | 深爱开心激情 | 国产精品h在线观看 | www免费视频com━ | 在线看中文字幕 | av久久在线| 久久久在线观看 | 久久99免费观看 | 中文字幕在线资源 | 91激情视频在线播放 | av不卡中文字幕 | 日韩色爱| 色香蕉在线 | 1区2区3区在线观看 三级动图 | 超碰国产在线播放 | 国产黄色看片 | 四虎在线观看 | 在线观看免费成人av | 九九在线免费视频 | 狠狠色丁香婷婷综合久小说久 | 99精品色| 久久久精品国产一区二区 | 久久久99精品免费观看 | 黄色一二级片 | 亚洲更新最快 | 黄色一级免费 | 五月天婷婷狠狠 | 亚洲国产精品激情在线观看 | 99久久久国产精品免费99 | 久操久 | 女人18精品一区二区三区 | 一级黄色大片 | 久草在线国产 | 国产又粗又猛又爽又黄的视频先 | 欧美精品一级视频 | 一级黄毛片 | 91精品视频免费看 | 国产视频第二页 | 国产综合福利在线 | 黄色软件在线观看免费 | 在线观看黄网站 | 91精品毛片 | 亚洲精选在线观看 | 91精品国产92久久久久 | 日日日天天天 | 91精品久久久久久 | 最新av免费在线观看 | 深爱激情五月综合 | 久久久蜜桃一区二区 | 国产日韩欧美视频在线观看 | 亚洲精品久久久久久中文传媒 | 黄色一级大片在线免费看国产一 | 天天av天天 | av软件在线观看 | 亚洲成人精品久久久 | 日韩精品久久久久久久电影竹菊 | 久久免费毛片视频 | 天天操网站 | 高清一区二区三区 | 人人狠狠综合久久亚洲 | 中文有码在线 | 欧美不卡视频在线 | 天天操 夜夜操 | 又黄又爽又湿又无遮挡的在线视频 | 国产黄色片久久久 | 亚洲精品视频免费观看 | www亚洲一区| 成人av电影在线 | 久久久久久久久亚洲精品 | 婷婷激情5月天 | 粉嫩高清一区二区三区 | 99精品国产99久久久久久97 | 美女久久久 | 天天干天天射天天插 | 久久久久亚洲国产 | 91人人澡人人爽 | 国产91小视频 | 天天综合色天天综合 | 精品国产人成亚洲区 | 久久精品99北条麻妃 | 欧美另类亚洲 | 国产精品久久久久久久久久免费 | 免费国产亚洲视频 | 就要干b| 国产日韩中文字幕 | av电影免费在线 | 男女靠逼app | 久久欧美视频 | 色姑娘综合天天 | 国产精品高清av | 国产最新视频在线 | 国产免费观看高清完整版 | 六月丁香六月婷婷 | 国产精品乱看 | 亚洲少妇自拍 | 91精品国产三级a在线观看 | 国内精品视频在线 | 狠狠色丁香婷婷综合基地 | 久久这里有精品 | 国产久草在线 | 国产九九在线 | 天海冀一区二区三区 | av免费在线免费观看 | 91视频在线观看下载 | 又爽又黄又无遮挡网站动态图 | 欧美天天综合网 | 日韩一区二区三区高清在线观看 | 久久亚洲视频 | 97在线免费| 久久天堂精品视频 | 欧美在线观看视频免费 | 91人人人| 国产精品国产自产拍高清av | 中文字幕日韩在线播放 | 免费视频色 | 成人a免费视频 | 丝袜av一区| 成年人视频在线观看免费 | 四虎影视www | 高清不卡免费视频 | 国产精品乱码在线 | 日韩在线观看电影 | 亚洲欧美乱综合图片区小说区 | 色播99 | 91亚洲欧美 | 干狠狠| 国产不卡网站 | 色综合天天视频在线观看 | 国产第一页福利影院 | 欧美精品一区二区免费 | 视频在线一区 | 中文字幕.av.在线 | 中文字幕在线影院 | 亚洲资源片| 99精品国产高清在线观看 | 日韩网站视频 | 免费毛片一区二区三区久久久 | 综合网伊人 | 成年人视频在线免费播放 | 色天天综合网 | 天天干.com| 日韩视频免费在线 | 亚洲成人一二三 | 在线观看中文字幕亚洲 | 中文字幕资源网 国产 | 日韩在线三级 | 91手机电影 | 丁香婷婷激情五月 | av色综合网 | 不卡av在线播放 | 中文字幕在线免费观看 | 99视频 | 日韩在线免费观看视频 | 久久这里精品视频 | 国产一区二区高清视频 | 国内精品二区 | 99热精品视 | 九九久久精品 | 91午夜精品 | 热久久国产精品 | 超碰成人免费电影 | www.久久久久 | 久久久麻豆精品一区二区 | 亚洲区另类春色综合小说 | 国产高清在线精品 | 91一区二区三区在线观看 | 亚洲美女精品区人人人人 | 国产精品欧美久久 | 久久嗨 | 亚州成人av在线 | 日日夜夜天天干 | 亚洲高清视频在线观看 | 激情文学综合丁香 | 日本 在线 视频 中文 有码 | 久av在线 | 亚洲综合情 | 国产一区二区高清视频 | 午夜精品区 | 中文字幕日韩伦理 | 国产五月色婷婷六月丁香视频 | 欧美最猛性xxxxx(亚洲精品) | 亚洲日日射 | 日韩高清 一区 | 免费精品视频 | 99久久精品网| 91视频电影 | 91精品婷婷国产综合久久蝌蚪 | 成人在线免费看视频 | 91看片黄色 | 国产999精品久久久影片官网 | 人人爽人人爽人人爽学生一级 | 中文字幕婷婷 | 国产97在线观看 | 夜夜嗨av色一区二区不卡 | 国产 视频 久久 | 国产高清视频免费观看 | 亚洲精品视频免费在线观看 | 欧美男同视频网站 | 在线亚洲成人 | 国产96在线| 人人舔人人 | 国内视频在线 | 亚洲理论在线观看电影 | 91一区二区三区在线观看 | 国产黑丝袜在线 | 九九热只有这里有精品 | 在线观看黄av | 久久免费在线观看 | 欧美最新大片在线看 | 特及黄色片 | 久久亚洲免费 | 色狠狠操| 亚洲国产精品电影在线观看 | 国产资源免费 | 久久精品欧美日韩精品 | 欧美日韩超碰 | 丁香视频在线观看 | 久久精品国产v日韩v亚洲 | 久青草视频 | 91麻豆精品国产91久久久久久 | 91九色综合| 97色婷婷 | 日韩网站在线免费观看 | 国产九色在线播放九色 | 亚洲欧美国产精品18p | 在线看不卡av | 日日日天天天 | 国产91大片 | 999成人国产| 91精品国产91 | 成片人卡1卡2卡3手机免费看 | 91在线公开视频 | 国产成人亚洲精品自产在线 | 国产又粗又猛又黄又爽 | 91视频久久久久久 | 精品国产a| 欧美激情视频一区 | 99在线观看精品 | 深爱婷婷网 | 久久国产精品视频免费看 | 日韩视频免费播放 | 天天综合天天做天天综合 | 国产中文字幕在线播放 | 日本狠狠干| 国产成人在线观看 | 免费中文字幕在线观看 | 国产高清日韩 | 精品国自产在线观看 | 六月丁香久久 | 亚洲最大av在线播放 | 香蕉久草 | 亚洲精品视频免费 | 久久久国产一区二区 | 国产成人333kkk| 欧美日韩久久不卡 | 欧美一区,二区 | 国产高清免费av | 国内外成人免费在线视频 | 中文字幕在线观看三区 | 97天天综合网 | 日韩免费在线观看网站 | 国产精品日韩久久久久 | 青青草国产精品 | 91九色蝌蚪视频在线 | 中文字幕色播 | 特黄特色特刺激视频免费播放 | 国产69精品久久99不卡的观看体验 | 日韩专区在线 | 韩日三级在线 | 免费午夜视频在线观看 | 国产一级片视频 | 黄网站a | 天天干,夜夜操 | 婷婷久久综合九色综合 | 9在线观看免费高清完整 | 久久久久国产精品免费 | 国内精品久久久久影院一蜜桃 | 在线国产视频一区 | 中文字幕在线观看免费高清电影 | 久久男女视频 | 国产精品无 | 日韩电影在线观看一区二区三区 | 国产黄色电影 | 免费在线电影网址大全 | 最近中文字幕高清字幕在线视频 | 欧美日在线 | 国产亚洲情侣一区二区无 | 成年人免费观看国产 | 成人影音在线 | 偷拍区另类综合在线 | 国产成人无码AⅤ片在线观 日韩av不卡在线 | 日韩剧| 日韩在线欧美在线 | 日韩视频a| 精品免费观看视频 | 九九久久久久久久久激情 | 日韩一级片大全 | 国产精品刺激对白麻豆99 | 中午字幕在线观看 | 亚洲一级性 | 波多野结衣在线观看一区 | 久久小视频 | 久久黄色影院 | 成人免费 在线播放 | 日韩大片在线观看 | 成人一级电影在线观看 | 一区在线观看 | www.香蕉视频在线观看 | 日日精品 | 韩国三级在线一区 | 国产一级一级国产 | 激情图片久久 | 国产成人久| 欧美激情一区不卡 | 国产精品中文字幕在线播放 | 亚洲精品视频偷拍 | av中文在线观看 | 色综合中文字幕 | 免费在线观看不卡av | 国产精品18久久久久久vr | 超碰97免费观看 | 97品白浆高清久久久久久 | www免费 | 成人国产精品免费 | 日韩免费成人 | 日日夜夜草 | 91精品国产综合久久福利不卡 | 欧美福利在线播放 | 日韩r级在线| 精品一区三区 | 欧美激情精品久久久 | 一级欧美日韩 | 伊人五月在线 | 精品国内| 97av在线 | www.97视频| 中文字幕色在线视频 | 色综合夜色一区 | 黄色av成人在线 | 在线激情av电影 | 国产精品精品久久久久久 | 六月婷色 | 免费在线观看视频a | 国产精品免费观看网站 | 一区二区三区动漫 | 久草视频2 | 久久精品国产免费看久久精品 | 天天操天天是 | 免费网站v| 日日弄天天弄美女bbbb | 在线免费黄色片 | 日韩精品免费在线观看视频 | 亚洲专区视频在线观看 | 日本黄色大片儿 | 久久久www免费电影网 | 色婷婷综合久色 | 人人干干人人 | 天天操天天操天天操天天操天天操天天操 | 日韩欧美成人网 | 99久久婷婷 | 色视频网站在线观看一=区 a视频免费在线观看 | 免费看黄的视频 | 精品国产一区二区三区在线 | 97在线观看免费 | 中文字幕一区二区三区精华液 | 婷婷在线网站 | 国产亚洲精品久久网站 | 亚洲人成免费 | 亚洲精品中文在线资源 | 国产精品1区2区3区 久久免费视频7 | 九九亚洲精品 | 九九九九热精品免费视频点播观看 | 日本69hd| 天天干天天干天天色 | 久久久久久久久久久国产精品 | 国产久草在线观看 | 国产精品专区h在线观看 | 亚洲精品视频网站在线观看 | 久久久影院官网 | 久久精品人人做人人综合老师 | 一区二区三区久久精品 | 久久在草 | 在线观看成人毛片 | 午夜三级大片 | 午夜精品视频一区二区三区在线看 | 蜜桃视频日韩 | 天天久久夜夜 | 亚洲国产wwwccc36天堂 | 97在线观看免费高清完整版在线观看 | 国产在线观看国语版免费 | 欧美 日韩 成人 | 9ⅰ精品久久久久久久久中文字幕 | 久久久这里有精品 | 天天爱天天| 亚洲 欧美 变态 国产 另类 | 美女黄频免费 | 最新av在线网址 | 丁香午夜| 久草在线中文视频 | 久久免费视频网 | 日韩高清免费观看 | 青青久草在线视频 | 91精品在线视频 | 亚洲国产一区在线观看 | 色香天天| 这里有精品在线视频 | 亚洲国产网站 | 久久久麻豆 | 成人午夜网址 | 午夜影视剧场 | 97在线观看免费 | 久久99国产一区二区三区 | 欧美综合久久 | av大片网址 | 国产精品欧美激情在线观看 | 六月丁香婷婷在线 | 国产黄色一级大片 | 国产精品99久久久久久久久 | 国产成人一区二区三区电影 | 不卡的av在线 | 国内精品毛片 | 久久99精品久久久久久 | 狠狠地操 | 国产精品6 | 欧美少妇xx | 免费观看全黄做爰大片国产 | 99视频久 | 日韩欧美高清免费 | 天天色天天操综合网 | 9ⅰ精品久久久久久久久中文字幕 | 天天曰天天曰 | 亚洲黄色小说网址 | 99久久精品免费看国产一区二区三区 | 日本免费久久高清视频 | 狠狠综合久久 | 91精品一区二区三区久久久久久 | 四虎国产精品免费观看视频优播 | 自拍超碰在线 | 黄色一区三区 | 国产伦理久久精品久久久久_ | 日韩区在线观看 | 成人欧美在线 | 中文字幕有码在线观看 | 国产精品免费在线观看视频 | 亚洲成年片 | 亚洲国产欧美在线看片xxoo | japanesefreesexvideo高潮 | 精品国产精品久久一区免费式 | 97精品国产97久久久久久久久久久久 | 国产精品 视频 | 人人涩| 新版资源中文在线观看 | 久久久久国产精品一区二区 | 天天爱天天草 | 天天爽人人爽夜夜爽 | 日韩乱色精品一区二区 | 日韩久久久久久久久久 | 香蕉久草在线 | 亚洲一本视频 | 亚洲精品视频在线观看视频 | 国产一级片不卡 | 伊色综合久久之综合久久 | 成人午夜网址 | 人人添人人澡 | 国产精品嫩草影视久久久 | 天天射天天干天天插 | 免费看一级特黄a大片 | 中文字幕在线观看网 | 久草视频中文 | 91mv.cool在线观看 | 国产高清久久久久 | 久久全国免费视频 | 97国产大学生情侣白嫩酒店 | 久久精品欧美 | 精品国产伦一区二区三区观看体验 | 精品国产123 | 91九色在线视频观看 | 久久视频这里有精品 | 西西444www大胆高清视频 | 一本—道久久a久久精品蜜桃 | 久久福利小视频 | 福利视频一区二区 | 日本中文一级片 | 天天干夜夜爱 | 日韩视频免费观看高清 | 天天天天天天天操 | 久久免费精品国产 | 久久精品一区二区国产 | 国产精品成人免费一区久久羞羞 | 日韩欧美在线高清 | 中文字幕观看av | 波多野结衣在线观看一区二区三区 | 国产91亚洲精品 | 国产成人精品午夜在线播放 | 视频精品一区二区三区 | 91麻豆视频网站 | 激情av五月婷婷 | 久久久久视| 国产黄色一级大片 | 国产精品一区在线观看 | 国产精品久久久久久久久久久久 | 天天性天天草 | 天天干天天干天天射 | 亚洲精品动漫久久久久 | 欧美久草在线 | 国产成人免费观看 | 欧美精品一级视频 | 欧美成天堂网地址 | 久久久久免费电影 | 成 人 a v天堂 | 国产片免费在线观看视频 | 欧美美女视频在线观看 | 在线观看中文字幕 | 91大神电影 | 综合网天天色 | 久久综合久久久久88 | 中国成人一区 | 麻豆免费视频观看 | 黄色免费在线视频 | 激情动态 | 人人爱人人射 | 亚洲综合欧美日韩狠狠色 | 91漂亮少妇露脸在线播放 | 国产高清在线永久 | 婷婷在线视频 | 国产精品欧美久久 | 91插插影库 | 米奇狠狠狠888 | 亚洲va韩国va欧美va精四季 | 免费视频一区 | 日韩成人欧美 | av中文字幕网 | 伊人国产在线观看 | 久久久久久草 | 国产一二三区在线观看 | 亚洲天堂网视频在线观看 | 欧美一级看片 | 久久久久久久18 | 天堂av在线免费观看 | 国产精品精品久久久久久 | 狠狠色丁香婷婷综合久小说久 | 久久久视频在线 | 99热在线看 | av黄色影院| 91在线看 | 波多野结衣视频一区二区三区 | 国产精品免费一区二区 | 亚洲成人免费在线观看 | 中文字幕一区二 | 一级大片在线观看 | 亚洲码国产日韩欧美高潮在线播放 | 在线黄色免费 | 欧美日韩国产二区三区 | 色综合中文字幕 | 美女视频黄色免费 | 国内精品一区二区 | 在线日韩中文 | 欧美性生活一级片 | 日韩三级成人 | 国产精品久久电影网 | 婷婷综合久久 | 成人一级免费电影 | a极黄色片 | 久久不射电影网 | 777视频在线观看 | 久草在线资源网 | 国产午夜视频在线观看 | 亚洲免费精彩视频 | 97精品国产aⅴ | 丁香综合网 | 国产超碰在线 | 91精品久久香蕉国产线看观看 | 欧美精品免费在线观看 | 91精品国产乱码 | 国产精品乱码久久久 | 婷婷伊人综合亚洲综合网 | 日本精品视频一区二区 | 亚洲精品视频网址 | 国产第一页在线观看 | 日韩av一区二区三区在线观看 | 国产日韩精品在线 | 日韩久久久久久久久久 | av免费黄色 | 日韩国产精品一区 | 亚洲精品www久久久久久 | 狠狠色丁香婷婷综合 | 免费人成在线观看网站 | 99免费在线视频 | 久久超级碰视频 |