精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Linux驅動 | 手寫一個設備樹使用的實例

系統(tǒng) Linux
設備樹是每一個Linux驅動工程師都必須掌握的一個知識點,有很多之前做單片機的朋友剛接觸Linux驅動時,會一臉懵!

一、前言

設備樹是每一個Linux驅動工程師都必須掌握的一個知識點,有很多之前做單片機的朋友剛接觸Linux驅動時,會一臉懵!

其實設備樹的使用并沒有大家想像的那么復雜,對于大部分工程師來說,只要會修改即可。

很多粉絲留言說,希望彭老師提供一個設備樹到驅動解析的實例。

必須安排!

在學習設備樹之前,大家一定要搞清楚什么是platform總線,請詳細學習下面這篇文章:

《手把手教Linux驅動10-platform總線詳解》

關于設備樹理論部分內容請學習下面這篇文章:

《手把手教linux驅動11-linux設備驅動統(tǒng)一模型》

關于驅動基礎文章,可以去B站學習一口君的入門視頻:

《從學Linux驅動入門視頻》

https://www.bilibili.com/video/BV1d5411A7VJ?spm_id_from=333.999.0.0

有了這些基礎知識后,我們就可以來編寫一個設備樹的實例,

下面彭老師就給大家講解如何自己添加一個設備樹節(jié)點,并如何在驅動中提取出設備樹的信息。

老規(guī)矩,代碼從0開始編寫,并且全部驗證通過,并分享給大家。

二、測試平臺

本次測試在開發(fā)板上操作,操作環(huán)境如下:

1. 編譯環(huán)境

  1. ubuntu 16.04 

2. 交叉編譯工具

  1. root@ubuntu:/home/peng/linux-3.14# arm-none-linux-gnueabi-gcc -v 
  2. Using built-in specs. 
  3. COLLECT_GCC=arm-none-linux-gnueabi-gcc 
  4. COLLECT_LTO_WRAPPER=/home/peng/toolchain/gcc-4.6.4/bin/../libexec/gcc/arm-arm1176jzfssf-linux-gnueabi/4.6.4/lto-wrapper 
  5. Target: arm-arm1176jzfssf-linux-gnueabi 
  6. ……………… 
  7. gcc version 4.6.4 (crosstool-NG hg+default-2685dfa9de14 - tc0002) 

3. 開發(fā)板

  1. 開發(fā)板:fs4412 
  2. soc:exynos4412 

4. 內核版本

  1. Linux kernel 3.14.0 

三、內核解析設備樹一般過程

系統(tǒng)啟動后,uboot會從網絡或者flash、sd卡中讀取設備樹文件(具體由uboot命令給出),

引導linux內核啟動后,會把設備樹鏡像保存到的內存地址傳遞給Linux內核,Linux內核會解析設備樹鏡像,從設備樹中提取硬件信息并逐一初始化。

其中設備樹信息會被轉換成struct platform_device類型變量。

而驅動要解析設備樹,必須定義 struct platform_driver類型結構體變量,并通過函數platform_driver_register()注冊。

這兩者都會注冊到platform總線,當驅動和設備樹節(jié)點匹配成功后,就調用 struct platform_driver中.probe方法。

其中設備樹節(jié)點會封裝在struct device_node結構體變量中 各個屬性信息會封裝在 struct property結構體變量中, 他們與struct platform_device結構體之間關系如下:

四、驅動架構

以下是一口君編寫的驅動架構,

我們只需要將測試代碼填充到hello_probe()中即可:

  1. static int hello_probe(struct platform_device *pdev) 
  2.  printk("match ok \n"); 
  3.   
  4. //解析代碼編寫 
  5.  return 0; 
  6. static  int hello_remove(struct platform_device *pdev) 
  7.  printk("hello_remove \n"); 
  8.  return 0; 
  9. static struct of_device_id beep_table[] = { 
  10.   {.compatible = "yikoulinux"}, 
  11. }; 
  12. static struct platform_driver hello_driver = 
  13.  .probe = hello_probe, 
  14.  .driver.name = "duang"
  15.  .remove = hello_remove, 
  16.  .driver = { 
  17.   .name = "yikoupeng"
  18.   .of_match_table = beep_table, 
  19.  }, 
  20. }; 
  21. static int hello_init(void) 
  22.  printk("hello_init \n"); 
  23.  return platform_driver_register(&hello_driver); 
  24. static void hello_exit(void) 
  25.  printk("hello_exit \n"); 
  26.  platform_driver_unregister(&hello_driver); 
  27.  return
  28. MODULE_LICENSE("GPL"); 
  29. module_init(hello_init); 
  30. module_exit(hello_exit); 

五、設備樹節(jié)點

下面是給出的設備樹信息:

  1. yikou_node{ 
  2.        compatible = "yikoulinux"
  3.        reg = <0x114000a0 0x4 0x139D0000 0x20>; 
  4.        reg-names = "peng"
  5.        interrupt-parent=<&gpx1>; 
  6.        interrupts =<1 2>,<2  2>; 
  7.     
  8.        csm_gpios=<&gpx2 3 0 &gpx2 4 0 &gpx2 5 0 &gpx2 6 0>; 
  9.         
  10.        crl0_gpio=<&gpx0 5 0>; 
  11.        crl1_gpio=<&gpx0 6 0>; 
  12.        rst_gpio=<&gpx0 7 0>; 
  13.        cfg_gpio=<&gpx0 4 0>; 
  14.   
  15.  phy_ref_freq = <26000>;  /* kHz */   
  16.  suspend_poweroff; 
  17.   
  18.  clock-names = "xusbxti"
  19.   "otg"
  20.  yikou_node { 
  21.   compatible = "leadcore,dsi-panel"
  22.   panel_name = "lcd_rd_rm67295"
  23.   refresh_en = <1>; 
  24.   bits-per-pixel = <32>;  
  25.  }; 
  26.    }; 

其中包括常見reg、中斷、整型值、bool值、字符串、子節(jié)點、時鐘等屬性。

一定要注意,很多屬性的給出會因為使用的SOC平臺的不同有所差異, 下面介紹下GPIO和中斷編寫原理:

1. GPIO

gpio信息的給出有以下兩種方法:

  1. csm_gpios=<&gpx2 3 0 &gpx2 4 0 &gpx2 5 0 &gpx2 6 0>; 
  1. crl0_gpio=<&gpx0 5 0>; 
  2. crl1_gpio=<&gpx0 6 0>; 
  3. rst_gpio=<&gpx0 7 0>; 
  4. cfg_gpio=<&gpx0 4 0>; 

第1種是公用同一個名字,第2種是每一個gpio單獨使用1個名字。

gpio需要指明父節(jié)點,關于gpio父節(jié)點的說明下說明文檔(通常linux-3.14\Documentation下有關于該內核版本的一些模塊說明,很重要):

  1. linux-3.14\Documentation\devicetree\bindings\gpio.txt 
  1. For example, the following could be used to describe gpios pins to use 
  2. as chip select lines; with chip selects 0, 1 and 3 populated, and chip 
  3. select 2 left empty: 
  4.  
  5.  gpio1: gpio1 { 
  6.   gpio-controller 
  7.    #gpio-cells = <2>; 
  8.  }; 
  9.  gpio2: gpio2 { 
  10.   gpio-controller 
  11.    #gpio-cells = <1>; 
  12.  }; 
  13.  [...] 
  14.   chipsel-gpios = <&gpio1 12 0>, 
  15.     <&gpio1 13 0>, 
  16.     <0>, /* holes are permitted, means no GPIO 2 */ 
  17.     <&gpio2 2>; 
  18. Note that gpio-specifier length is controller dependent.  In the 
  19. above example, &gpio1 uses 2 cells to specify a gpio, while &gpio2 
  20. only uses one. 
  21.  
  22. gpio-specifier may encode: bank, pin position inside the bank, 
  23. whether pin is open-drain and whether pin is logically inverted. 
  24. Exact meaning of each specifier cell is controller specific, and must 
  25. be documented in the device tree binding for the device. 
  26.  
  27. Example of the node using GPIOs: 
  28.  
  29.  node { 
  30.   gpios = <&qe_pio_e 18 0>; 
  31.  }; 
  32.  
  33. In this example gpio-specifier is "18 0" and encodes GPIO pin number, 
  34. and empty GPIO flags as accepted by the "qe_pio_e" gpio-controller. 

翻譯總結成如下幾點:

gpio父節(jié)點需要包含屬性

  1. gpio-controller、    表示是gpi控制器 
  2. #gpio-cells = <2>;    表示子節(jié)點包括2個屬性 

對于子節(jié)點是2個屬性的函數 比如:

  1. gpios = <&qe_pio_e 18 0>; 

父節(jié)點是qe_pio_e 其中18表示GPIO pin值,就是gpio下面管理的pin腳序號,該pin值一般就需要查詢用戶手冊&電路圖。

2. 中斷

中斷屬性節(jié)點如下:

  1. interrupt-parent=<&gpx1>; 
  2.   interrupts =<1 2>,<2  2>; 

其中

  1. interrupt-parent=<&gpx1>;: 該中斷信號所述的中斷控制器 
  2. interrupts =<1 2>,<2  2>;  :描述中斷屬性,其中<>中第一個值表示該中斷所述中斷控制器index,第二個值表示中斷觸發(fā)方式 

中斷子節(jié)點格式如下:

  1. linux-3.14\Documentation\devicetree\bindings\gpio.txt 
  1. Example of a peripheral using the GPIO module as an IRQ controller: 
  2.  
  3.  funkyfpga@0 { 
  4.   compatible = "funky-fpga"
  5.   ... 
  6.   interrupt-parent = <&gpio1>;   #父節(jié)點 
  7.   interrupts = <4 3>;     #節(jié)點屬性 
  8.  }; 

中斷子節(jié)點說明文檔如下:

  1. linux-3.14\Documentation\devicetree\bindings\interrupt-controller\interrupts.txt 
  1. b) two cells 
  2. ------------ 
  3. The #interrupt-cells property is set to 2 and the first cell defines the 
  4. index of the interrupt within the controller, while the second cell is used 
  5. to specify any of the following flags: 
  6.   - bits[3:0] trigger type and level flags 
  7.       1 = low-to-high edge triggered          上升沿 
  8.       2 = high-to-low edge triggered    下降沿 
  9.       4 = active high level-sensitive      高電平有效 
  10.       8 = active low level-sensitive          低電平有效 

我們所填寫的中斷父節(jié)點gpx1定義如下(該文件由三星廠家出廠定制好):

  1. linux-3.14\arch\arm\boot\dts\exynos4x12-pinctrl.dtsi 
  1. gpx1: gpx1 { 
  2.  gpio-controller;        #gpio控制器 
  3.  #gpio-cells = <2>;      #子節(jié)點有2個屬性 
  4.  
  5.  interrupt-controller;  #中斷控制器 
  6.  interrupt-parent = <&gic>;    #父節(jié)點gic 
  7.  interrupts = <0 24 0>, <0 25 0>, <0 26 0>, <0 27 0>,   #子節(jié)點屬性約束 
  8.        <0 28 0>, <0 29 0>, <0 30 0>, <0 31 0>; 
  9.  #interrupt-cells = <2>; 
  10. }; 

可見三星的exynos4412平臺中gpx1,既可以做gpio控制器又可以做中斷控制器,而gpx1作為中斷控制器則路由到gic上。其中interrupts屬性說明如下:

  1. linux-3.14\Documentation\devicetree\bindings\arm\gic.txt 

  1. Main node required properties: 
  2.  
  3. - compatible : should be one of
  4.  "arm,gic-400" 
  5.  "arm,cortex-a15-gic" 
  6.  "arm,cortex-a9-gic" 
  7.  "arm,cortex-a7-gic" 
  8.  "arm,arm11mp-gic" 
  9. - interrupt-controller : Identifies the node as an interrupt controller 
  10. - #interrupt-cells : Specifies the number of cells needed to encode an 
  11.   interrupt source.  The type shall be a <u32> and the value shall be 3. 
  12.  
  13.   The 1st cell is the interrupt type; 0 for SPI interrupts, 1 for PPI 
  14.   interrupts. 
  15.  
  16.   The 2nd cell contains the interrupt number for the interrupt type. 
  17.   SPI interrupts are in the range [0-987].  PPI interrupts are in the 
  18.   range [0-15]. 
  19.  
  20.   The 3rd cell is the flags, encoded as follows: 
  21.  bits[3:0] trigger type and level flags. 
  22.   1 = low-to-high edge triggered 
  23.   2 = high-to-low edge triggered 
  24.   4 = active high level-sensitive 
  25.   8 = active low level-sensitive 
  26.  bits[15:8] PPI interrupt cpu mask.  Each bit corresponds to each of 
  27.  the 8 possible cpus attached to the GIC.  A bit set to '1' indicated 
  28.  the interrupt is wired to that CPU.  Only valid for PPI interrupts. 

翻譯總結:

  1. interrupts = <0 24 0> 

第1個0 表示該中斷是SPI類型中斷,如果是1表示PPI類型中斷

24表示中斷號(通過查詢電路圖和datasheet獲得)

第三個0表示中斷觸發(fā)方式

再強調一遍 不同的平臺gpio、中斷控制器管理可能不一樣,所以填寫方法可能會有差異,不可教條

六、驅動提取設備樹信息方法

驅動解析代碼與設備樹節(jié)點之間關系如下,代碼與屬性用相同顏色框出:

of開頭的函數請參考《手把手教linux驅動11-linux設備驅動統(tǒng)一模型》

七、編譯(ubuntu中操作)

驅動編譯:

注意,內核必須提前編譯好

設備樹編譯:

編譯設備樹命令,各個廠家的SDK都不盡相同,本例制作參考。

除此之外驅動模塊文件、設備樹文件如何導入給開發(fā)板,差別也比較大,本文不再給出步驟。

八、加載模塊(開發(fā)板上操作)

加載模塊后執(zhí)行結果如下:

  1. [root@peng test]# insmod driver.ko  
  2. [   26.880000] hello_init  
  3. [   26.880000] match ok  
  4. [   26.880000] mem_res1 : [0x114000a0]  mem_res2:[0x139d0000]  
  5. [   26.885000] irq_res1 : [168]  irq_res2:[169]  
  6. [   26.890000] mem_resp:[114000a0] 
  7. [   26.890000]  
  8. [   26.895000] phy_ref_freq:26000 
  9. [   26.900000] suspend_poweroff [true
  10. [   26.900000] suspend_poweroff_test [false
  11. [   26.900000]  
  12. [   26.905000] csm_gpios :[231][232][233][234] 
  13. [   26.910000] CTL0:[217] CTL1:[218] RST:[219] CFG:[216] 
  14. [   26.915000] bits_per_pixel:32 
  15. [   26.920000] panel_name:lcd_rd_rm67295 
  16. [   26.925000] refresh_en [true

其中打印的信息就是最終我們解析出的設備樹里的硬件信息, 我們就可以根據這些信息進行相關資源申請、初始化。

同時設備樹中的信息,會以文件節(jié)點形式創(chuàng)建在一下目錄中:

本文轉載自微信公眾號「一口Linux」

 

責任編輯:姜華 來源: 一口Linux
相關推薦

2022-05-10 08:49:46

設備驅動Linux

2022-03-09 09:43:01

工具類線程項目

2021-02-22 17:17:38

Proxy緩存代碼

2022-10-31 08:27:53

Database數據數據庫

2021-10-25 16:01:01

Linux設備樹字符串

2020-12-03 08:59:06

Linux設備驅動

2021-12-07 06:55:17

節(jié)流函數Throttle

2021-03-18 08:04:54

AQS工具CAS

2020-11-02 08:19:18

RPC框架Java

2017-10-24 17:03:48

Linux驅動程序編譯

2021-07-30 14:55:06

Linuxkernel設備樹

2022-01-26 15:20:00

配置微服務架構

2009-07-15 13:41:00

JDBC實例

2017-02-10 15:32:47

2017-11-06 17:16:55

Linux設備驅動并發(fā)控制

2023-05-15 08:58:41

塊設備驅動Linux

2021-04-12 12:00:13

Linux運維Linux系統(tǒng)

2018-01-22 09:56:24

2017-03-02 13:31:02

監(jiān)控系統(tǒng)

2021-12-09 10:57:19

防抖函數 Debounce
點贊
收藏

51CTO技術棧公眾號

久久精品国产第一区二区三区| 77成人影视| 中文字幕一区二区不卡| 亚洲精品免费在线视频| 久久久久久久久毛片| 91午夜精品| 色视频成人在线观看免| 一区二区三区av在线| 亚洲风情第一页| 麻豆成人在线| 欧美成aaa人片免费看| 中文字幕乱码在线人视频| 国内精彩免费自拍视频在线观看网址| av在线这里只有精品| 国产日韩在线观看av| 日韩精品在线不卡| 欧美激情电影| 日韩av影院在线观看| 午夜视频在线网站| 亚洲免费福利| 亚洲精品日日夜夜| 日韩精品一区二区三区外面| 亚洲第一视频在线播放| 青青草91视频| 欧美亚洲视频在线观看| 中文字幕人妻一区二| 免费一区二区三区视频导航| 欧美xxxxxxxxx| 日本中文字幕观看| 国产一区二区主播在线| 婷婷成人综合网| 7777在线视频| 美女写真理伦片在线看| 久久久99久久| 欧美日韩大片一区二区三区| 99久久一区二区| 久久国产三级精品| 国产精品久久久久久久久粉嫩av| 五月婷婷激情网| 欧美日本三区| 欧美另类暴力丝袜| 中文乱码字幕高清一区二区| 欧洲三级视频| 一本一本久久a久久精品综合小说 一本一本久久a久久精品牛牛影视 | 国产视频第二页| 久久精品99国产精品| 国产精品老女人精品视频| 久久精品视频1| 国产精品一二| 欧美伊久线香蕉线新在线| 日本五十路女优| 99热精品在线| 51色欧美片视频在线观看| 国产精品美女毛片真酒店| 欧美久久一级| 久久久久久国产三级电影| 久久久久久久极品内射| 欧美片第1页综合| 久久久免费电影| 精品国产乱码一区二区| 国产一区成人| 日韩免费观看视频| 综合久久中文字幕| 六月丁香婷婷色狠狠久久| 国产欧美一区二区三区在线看| 亚洲国产无线乱码在线观看| 老司机免费视频一区二区三区| 国产美女高潮久久白浆| 国产精品主播一区二区| 国产精品99久久久久久有的能看| 亚洲伊人一本大道中文字幕| 亚洲国产视频一区二区三区| 本田岬高潮一区二区三区| 国产九色精品| 久久99久久| 国产精品不卡一区二区三区| 国产奶头好大揉着好爽视频| 丁香花电影在线观看完整版| 天天综合日日夜夜精品| 久久久久久久久久福利| а√天堂资源国产精品| 91精品国产色综合久久不卡电影| 又黄又色的网站| 香蕉久久精品| 日日噜噜噜夜夜爽亚洲精品 | 在线成人免费av| 极品一区美女高清| 在线观看国产成人av片| 亚洲av鲁丝一区二区三区| 99热精品在线| 国产色视频一区| 亚洲精品久久久蜜桃动漫| 2020国产精品| 91免费视频黄| av日韩亚洲| 欧美一三区三区四区免费在线看| 日韩一区二区三| 最新国产精品亚洲| 免费一级做a爰片久久毛片潮| 91视频久久| 777777777亚洲妇女| 中文字幕久久熟女蜜桃| 成人午夜在线免费| 亚洲精品国产精品久久| 成人av影院在线观看| 在线精品视频一区二区| 日本一级大毛片a一| 国产一区二区三区天码| 欧美国产极速在线| 亚洲午夜精品久久久| caoporn国产精品| 小说区视频区图片区| 成人教育av| 亚洲成人久久久久| 日韩一级片大全| 免费成人在线观看视频| 九九九九精品九九九九| 国产高清一区二区三区视频 | 99热国产在线观看| 精彩视频一区二区三区| 日韩激情久久| 最新欧美色图| 亚洲国产免费av| 久久久久久久久精| 狠狠色丁香九九婷婷综合五月| 欧美久久久久久一卡四| 91超碰国产在线| 91精品国产一区二区三区| 在线视频这里只有精品| 老司机免费视频久久| 激情小说网站亚洲综合网| 一区二区三区伦理| 在线91免费看| 手机看片国产日韩| 日韩不卡在线观看日韩不卡视频| 久久大片网站| 岛国av在线播放| 亚洲国产精品成人精品| 国产无精乱码一区二区三区| 国产91丝袜在线18| 国风产精品一区二区| 国产精品3区| 美女久久久久久久| 999久久久久| 亚洲欧美偷拍三级| 九九热视频免费| 欧美在线二区| www.成人三级视频| 9999在线视频| 亚洲精品美女久久久| www.国产高清| 久久久久国产精品人| 999在线免费视频| 日韩精品诱惑一区?区三区| 国产精品久久久久久久久久99| 成人影视在线播放| 欧美日韩五月天| 东方av正在进入| 国产成人免费av在线| 国产亚洲黄色片| 日韩大胆成人| 日韩美女在线观看| 啊v在线视频| 欧美电影一区二区| 精品无码久久久久久久久| 成人免费高清在线| 久久久噜噜噜www成人网| 国产真实有声精品录音| 91精品国产综合久久久久久蜜臀| 国产网站在线免费观看| 精品国精品国产| 日韩精品一区二区亚洲av| 国产欧美精品在线观看| 99精品视频国产| 亚洲精品孕妇| 亚洲高清资源综合久久精品| 粉嫩av国产一区二区三区| 久久久久久久一区二区| 九色在线观看| 欧美一级片免费看| 天天操天天干视频| 国产精品久久久久婷婷| 精品国产一二区| 久久一区中文字幕| 国产一二三四五| 中国av一区| 2020国产精品久久精品不卡| 理论片午夜视频在线观看| 一区二区欧美激情| 国产91久久久| 欧美午夜视频网站| 免费观看一级视频| 国产精品美女久久久久久久久久久| 丰满饥渴老女人hd| 日韩精品福利网| 日韩亚洲欧美一区二区| 九九亚洲精品| 91中文字精品一区二区| 日韩三级影视| 久久免费视频网| 麻豆视频在线免费观看| 亚洲毛茸茸少妇高潮呻吟| 国产视频手机在线| 欧美主播一区二区三区| 国产精品 欧美 日韩| 亚洲欧洲av在线| 短视频在线观看| 高清不卡一区二区在线| www.99r| 视频一区二区中文字幕| 日韩激情视频一区二区| 99久久精品费精品国产风间由美| 久久99国产精品99久久| 日本在线一区二区三区| 国产精品偷伦视频免费观看国产 | 91免费综合在线| 欧美1级2级| 97精品在线视频| 少女频道在线观看免费播放电视剧| 亚洲新声在线观看| 三级在线电影| 亚洲国产成人一区| 亚洲国产欧美另类| 91精品国产综合久久精品app| 黄色网址中文字幕| 日韩欧美在线看| 午夜精品久久久久久久久久久久久蜜桃| 亚洲人成人一区二区在线观看| 亚洲精品国产一区黑色丝袜| 91亚洲精品久久久蜜桃网站| 肉丝美足丝袜一区二区三区四| 久久国产精品99精品国产 | 亚洲一区不卡在线| 精品99在线| 日韩久久久久久久| 亚洲调教一区| 欧美精品一区二区三区久久| 欧美天堂社区| 美女精品国产| 美女精品一区最新中文字幕一区二区三区| 国产精品久久久久久久久婷婷| 日韩中文字幕一区二区高清99| 成人免费淫片视频软件| 成人污污www网站免费丝瓜| 成人国产精品一区| 一区二区三区日本视频| 成人春色激情网| 国产精品欧美一区二区三区不卡 | 777精品视频| 精品三级久久| 热久久免费视频精品| 欧美日韩美女| 国产精品爽爽爽爽爽爽在线观看| 黄色成人在线视频| 国产美女直播视频一区| 亚洲电影二区| 高清国产在线一区| 久久精品66| 免费日韩电影在线观看| 国产影视一区| 熟妇熟女乱妇乱女网站| 欧美日韩网址| 丰满爆乳一区二区三区| 日韩综合小视频| 亚洲欧美日韩精品一区| 国产传媒一区在线| 午夜剧场免费看| 久久久五月婷婷| 91ts人妖另类精品系列| 亚洲一区精品在线| 中文字幕第四页| 欧美中文字幕一区二区三区| 一区二区久久精品66国产精品| 欧美一级夜夜爽| 性xxxxbbbb| 一区二区三区四区在线观看视频| 欧美尤物美女在线| 久久琪琪电影院| 成人国产精品一区二区免费麻豆 | 99国产在线播放| 亚洲精品国产suv| av在线之家电影网站| 欧美成人免费大片| 黄色综合网址| 成人黄色激情网| 欧美黑人巨大videos精品| 色女人综合av| 伊人影院久久| 自拍偷拍一区二区三区四区| 成人免费毛片高清视频| 影音先锋男人在线| 亚洲一区二区中文在线| 国产精品第六页| 精品国偷自产国产一区| 在线观看黄色av| 97人人做人人爱| 国产999精品在线观看| 久久综合毛片| 欧美黄污视频| 15—17女人毛片| 99视频一区二区| 黄视频网站免费看| 日本大香伊一区二区三区| 成人毛片在线免费观看| 色噜噜狠狠狠综合曰曰曰88av| 55av亚洲| 不卡视频一区| 午夜影院欧美| 国产aaaaa毛片| 99久久99久久精品国产片果冻| 希岛爱理中文字幕| 欧美性色黄大片手机版| 欧洲毛片在线| 97国产精品视频| 精品视频一区二区三区| 新呦u视频一区二区| 国产精品视频久久一区| 亚洲区 欧美区| 成人欧美一区二区三区视频网页| 欧美精品韩国精品| 亚洲成人激情在线观看| 毛片在线导航| 91在线观看免费高清| 色天天久久综合婷婷女18| 久久精品99国产| 91亚洲午夜精品久久久久久| 国产精品第一页在线观看| 日韩精品中文字幕在线一区| 免费av不卡| 成人免费网站在线| 亚洲综合小说| 99国产精品久久久久久| 国产精品传媒入口麻豆| 高潮无码精品色欲av午夜福利| 亚洲视频电影图片偷拍一区| 涩涩视频网站在线观看| 国模一区二区三区私拍视频| 在线看片成人| 2一3sex性hd| 亚洲第一主播视频| 天堂在线观看视频| 性视频1819p久久| 精品视频在线你懂得| 久久久久久久中文| 91老师国产黑色丝袜在线| 日日噜噜噜噜人人爽亚洲精品| 日韩精品在线观看网站| 波多野结衣亚洲| 欧美一区视久久| 日本成人在线一区| 情侣偷拍对白清晰饥渴难耐| 欧美日韩国产区一| 大片免费在线观看| 999视频在线观看| 合欧美一区二区三区| 国产麻豆xxxvideo实拍| 午夜成人在线视频| 国产在线一在线二| 国产精品一区av| 欧美黄污视频| aaaaa一级片| 在线观看亚洲成人| 黄色视屏免费在线观看| 1卡2卡3卡精品视频| 中文精品视频| 人人爽人人爽人人片| 欧美精品久久久久久久多人混战 | 美女欧美视频在线观看免费 | 91免费版在线看| av首页在线观看| 久久国产加勒比精品无码| 爱高潮www亚洲精品| 欧美日韩国产精品激情在线播放| 国产午夜亚洲精品午夜鲁丝片| 91尤物国产福利在线观看| 欧美人在线观看| 女厕嘘嘘一区二区在线播放 | 小说区图片区亚洲| 99er在线视频| 国产三级一区二区三区| 国产高清在线免费| 清纯唯美日韩制服另类| 亚洲九九视频| 免费在线观看成年人视频| 欧美日韩不卡一区二区| av中文在线资源库| 亚洲午夜精品一区二区三区| 懂色av中文一区二区三区| 无码任你躁久久久久久久| 久久高清视频免费| 精品黄色一级片| 色哟哟视频在线| 欧美日韩精品欧美日韩精品一综合| 日本在线视频网址| 日本一区二区三区四区高清视频| 国产传媒一区在线| 在线观看国产精品入口男同| 午夜精品一区二区三区在线视| 日本电影一区二区| 精品国产人妻一区二区三区|