精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

av高清在线免费观看| 麻豆传媒一区二区| 欧美成人一二三区| 欧美国产极品| 欧美日韩国产系列| 久久久性生活视频| 日韩精品黄色| 成人国产在线观看| 国产精品色午夜在线观看| 午夜少妇久久久久久久久| 天堂一区二区三区四区| 91精品婷婷国产综合久久性色 | 欧美成人激情| 亚洲精品一线二线三线| 我要看一级黄色大片| 丰满诱人av在线播放| 欧美国产综合一区二区| 国产欧美日韩伦理| 国产孕妇孕交大片孕| 午夜在线精品| 欧美激情亚洲一区| 国产小视频你懂的| 亚州综合一区| 精品精品国产高清a毛片牛牛| 蜜桃免费在线视频| 欧美巨大丰满猛性社交| 一区二区三区中文字幕在线观看| 日韩在线国产| 欧美亚洲日本| eeuss鲁片一区二区三区在线观看 eeuss影院一区二区三区 | 国产婷婷视频在线 | 欧美久久久久久久| 免费观看黄色av| 国产精品影视天天线| 国产精品久久久久77777| 国产区在线观看视频| 欧美成人综合| 久久综合久久88| av资源在线免费观看| 国产欧美高清视频在线| 亚洲精品一区二区久| 国产免费一区二区三区最新6| 精品国产18久久久久久二百| 欧美日韩和欧美的一区二区| 国产视频一区二区视频| 五月天av在线| 欧美视频在线免费看| 丰满少妇久久久| 国产夫妻在线| 欧美丝袜一区二区| 精品中文字幕av| 蜜桃av在线| 欧美性xxxxx| 超碰网在线观看| 午夜av成人| 欧美三级电影精品| www.se五月| 亚洲欧洲二区| 欧美一区二区视频网站| 中文字幕55页| 伊人春色精品| 中文字幕 久热精品 视频在线 | 青青一区二区| 亚洲美女久久久| 欧美图片第一页| 精品国产一区一区二区三亚瑟| 亚洲天堂第一页| 亚洲毛片亚洲毛片亚洲毛片| 91一区二区| 精品自拍视频在线观看| 国产午夜免费视频| 亚洲激情综合| 国产精品高清在线观看| 国产又粗又猛视频免费| 国内精品国产成人| 动漫一区二区在线| 性感美女一级片| 欧美经典一区二区| 亚洲小视频在线播放| а√天堂资源官网在线资源 | 国产精品尤物视频| 九九国产精品视频| 国产精品日韩高清| 极品美乳网红视频免费在线观看| 国产精品欧美经典| 免费的一级黄色片| 桃子视频成人app| 欧美丰满少妇xxxxx高潮对白| 乳色吐息在线观看| 亚洲视频分类| 精品国产欧美一区二区三区成人| 免费在线观看av网址| 国产亚洲福利| 91精品啪aⅴ在线观看国产| 国产成人三级在线观看视频| 国产视频在线观看一区二区三区| 一区二区三区日韩视频| 免费一二一二在线视频| 欧美日本一道本在线视频| 日本美女视频网站| 日韩av在线播放网址| 久久91亚洲精品中文字幕奶水 | 手机电影在线观看| 色94色欧美sute亚洲线路一ni | 中文字幕在线网址| 国产99久久久国产精品| 天堂精品视频| 蜜桃视频在线观看免费视频| 欧美二区乱c少妇| 国产又粗又猛又爽视频| 欧美午夜国产| 成人福利网站在线观看| 欧美日韩在线精品一区二区三区激情综| 最近日韩中文字幕| 99精品人妻少妇一区二区| 精品国产一区二区三区性色av| 亚洲精品中文字| 久久久国产精品黄毛片| 久久成人av少妇免费| 欧美日韩三区四区| 2001个疯子在线观看| 欧美高清精品3d| av黄色在线免费观看| 亚洲美女毛片| 粉嫩高清一区二区三区精品视频| 调教视频免费在线观看| 一本色道亚洲精品aⅴ| 污污内射在线观看一区二区少妇 | 久久久99精品免费观看不卡| www.亚洲成人网| 亚瑟国产精品| 中文字幕欧美日韩精品| 看黄色一级大片| 26uuu精品一区二区| 国产精彩视频一区二区| 91九色鹿精品国产综合久久香蕉| 久久精品视频免费播放| 91成人在线免费| 国产精品国产成人国产三级| mm1313亚洲国产精品无码试看| 久操精品在线| 国产mv免费观看入口亚洲| 日韩精品系列| 色综合视频在线观看| 日韩片在线观看| 一道本一区二区| 久久日韩精品| 依依综合在线| 亚洲性视频网站| 免费观看日批视频| 国产欧美日韩在线观看| 人妻精品无码一区二区三区 | 国产精品久久久久77777丨| 国产亚洲精品美女久久久| 欧美一级做a爰片免费视频| 国产日韩欧美在线一区| 69久久久久久| 天天做天天爱天天爽综合网| 91亚洲永久免费精品| 婷婷av在线| 亚洲第一av网| 国产专区第一页| 国产人伦精品一区二区| 性欧美1819| 亚洲91中文字幕无线码三区| 99精品99久久久久久宅男| aaa在线播放视频| 亚洲男人天堂网| 国产精品国产精品国产| 亚洲欧美日韩在线| 伦理片一区二区| 视频一区二区欧美| 综合视频免费看| 超碰一区二区三区| 国产精品27p| 黄网站免费在线播放| 日韩精品中文字幕一区二区三区| 日韩久久久久久久久| 国产亚洲婷婷免费| 色网站在线视频| 国产欧美午夜| 亚洲欧美日韩精品综合在线观看| 秋霞一区二区| 国产成人涩涩涩视频在线观看 | 在线免费看v片| 国产精品久久久久毛片大屁完整版| 日本精品二区| 国产午夜亚洲精品一级在线| 97视频网站入口| 91美女视频在线| 欧美sm美女调教| 成年人晚上看的视频| 亚洲精品欧美综合四区| 国产黄片一区二区三区| 国产一区二区三区四区在线观看| 乱妇乱女熟妇熟女网站| 91精品国产自产在线观看永久∴ | 涩涩视频免费看| 欧美日韩一级二级| 国产成人精品一区二三区| 亚洲天天做日日做天天谢日日欢| 免费无码一区二区三区| 国产一区在线观看视频| 人妻无码视频一区二区三区| 狠狠爱成人网| 在线视频不卡一区二区| 日日狠狠久久偷偷综合色| 97人人模人人爽视频一区二区 | 在线视频综合导航| 久青草免费视频| 中文字幕中文字幕中文字幕亚洲无线| 香港三级日本三级| 国产一区视频导航| 日本成人中文字幕在线| 国产亚洲精品久久久久婷婷瑜伽| 在线观看18视频网站| 成人写真视频| 久久久久久一区| 老司机精品视频在线播放| 亚洲自拍小视频| 男人天堂久久| 国产精彩精品视频| 自拍网站在线观看| 久久青草福利网站| 国产偷倩在线播放| 久久中文字幕在线| 欧美高清视频| 中文字幕亚洲第一| 九色网友自拍视频手机在线| 日韩av一区在线| 黄色一级大片在线免费看国产一| 欧美精品xxxxbbbb| 97精品人妻一区二区三区| 在线视频国内一区二区| 国产午夜精品久久久久| 欧美日韩在线视频观看| 三级黄色在线视频| 天天av天天翘天天综合网| 国产精品111| 亚洲一区二区精品视频| 久久精品视频6| 亚洲第一综合色| 国产午夜精品无码一区二区| 亚洲高清免费在线| 日本中文字幕网| 亚洲成人免费在线观看| 日韩美女黄色片| 精品国产成人在线| 在线观看亚洲欧美| 欧美日韩一二三四五区| 无码人妻av一区二区三区波多野| 色综合久久中文综合久久97| 天堂网一区二区| 欧美手机在线视频| 国产精品久久久久久久免费| 在线不卡的av| www黄色网址| 亚洲成年人影院在线| 人操人视频在线观看| 亚洲片在线资源| 日韩av中文| 久久99精品视频一区97| 成年男女免费视频网站不卡| 欧美亚洲另类视频| 久久青草视频| 91九色在线免费视频| 久久久亚洲欧洲日产| 欧美日韩综合精品| 日韩欧美网址| 伊人再见免费在线观看高清版 | 久久乐国产精品| 日韩精品极品| 国产欧亚日韩视频| gogo人体一区| 日韩av在线电影观看| 亚洲成av人片乱码色午夜| 成人一级生活片| 米奇777在线欧美播放| 中文字幕av不卡在线| 国产高清亚洲一区| 亚洲av成人片色在线观看高潮 | 成人免费网站www网站高清| 国产精品一区二区久久精品| 日韩影片在线观看| 欧美日韩亚洲一区二区三区在线观看 | 国产精品第5页| 欧美高清视频不卡网| 色婷婷av一区二区三区之e本道| 国产一区二区动漫| 中文字幕在线观看网站| 秋霞成人午夜鲁丝一区二区三区| 日本免费成人| 久久久综合亚洲91久久98| 91成人看片| 国产麻花豆剧传媒精品mv在线| 寂寞少妇一区二区三区| 日韩成人av一区二区| 国产精品乱码人人做人人爱 | 久久国产日本精品| www.成人黄色| 久久久不卡网国产精品二区| 午夜免费激情视频| 欧洲视频一区二区| 日本免费不卡视频| 久久久精品日本| 日韩网站中文字幕| 国产三区精品| 欧美ab在线视频| 青青草av网站| 99视频一区二区| 久草成人在线视频| 欧美日本韩国一区二区三区视频| 日韩一二三四| 7777免费精品视频| 日本久久伊人| 国产又粗又爽又黄的视频| 久久亚洲美女| 亚洲一区二区三区四区五区六区| 日韩理论在线观看| 国产一级片免费视频| 亚洲美女黄色片| 丰乳肥臀在线| 高清日韩一区| 欧美一区激情| 成人高清在线观看视频| 国产精品视频免费看| 不卡av电影在线| 亚洲美女av在线| 自拍偷拍亚洲视频| 麻豆传媒一区| 先锋a资源在线看亚洲| 亚洲国产精品无码久久久久高潮| 亚洲精品免费在线观看| 国产又粗又大又爽视频| 尤物yw午夜国产精品视频| 性高爱久久久久久久久| 久久亚洲高清| 亚洲欧美春色| 丝袜美腿中文字幕| 日韩欧美国产免费播放| 亚洲欧美日本在线观看| 91福利视频网| 伊人久久大香线蕉无限次| 欧美日韩在线视频一区二区三区| 91亚洲精华国产精华精华液| 香蕉免费毛片视频| 日韩精品视频在线播放| 亚洲最大网站| 婷婷四房综合激情五月| 蜜臀va亚洲va欧美va天堂 | 精人妻一区二区三区| 一区二区三区中文字幕| 亚洲精品一区二区三区不卡| 欧美激情精品久久久久久免费印度| jizz性欧美2| 日本精品一区二区三区四区| 国产三区在线成人av| 夜夜躁很很躁日日躁麻豆| 日韩专区在线播放| 久久伦理中文字幕| 九九热只有这里有精品| 91网站在线观看视频| 日本中文字幕在线观看视频| 一本色道久久综合狠狠躁篇的优点| 香蕉成人在线| 久久国产精品视频在线观看| 26uuu久久天堂性欧美| www.久久网| 久久艳片www.17c.com| theporn国产在线精品| 农村妇女精品一二区| 国产精品美女久久久久aⅴ国产馆| 国产美女免费看| 国语自产精品视频在线看抢先版图片| 台湾亚洲精品一区二区tv| 牛夜精品久久久久久久| 亚洲伦在线观看| 青青视频在线观| 国产视频999| 中日韩男男gay无套| 亚洲女同二女同志奶水| 精品日韩在线观看| 日本免费一区二区三区四区| 中文字幕一区二区三区5566| www.日韩大片| 国产一级精品毛片| 久久乐国产精品| 欧美视频网址| 久久久久亚洲无码| 欧美少妇一区二区| 俺来俺也去www色在线观看| 日韩欧美亚洲日产国| 国产黄色精品网站| 国产成人av免费| 韩国一区二区电影| 国产精品国内免费一区二区三区| 国产一级黄色录像| 91精品欧美福利在线观看| av综合电影网站| 国产精品一线二线三线|