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

手把手教你中斷喚醒系統

系統 Linux
中斷喚醒系統和普通的驅動區別在于,多了兩個函數:suspend 和 resume,在 suspend 函數中,調用 enable_irq_wake,表示該中斷號在系統休眠時也是 enable 狀態,可以觸發中斷。

[[442463]]

在消費類電子中,功耗是很重要的,甚至項目后期一直在調功耗,看看哪里還可以再省電。由此就有了 Linux 電源管理子系統,該子系統包含很多方面:什么時候可以降幀、什么時候可以關掉其他 CPU core、系統運行時如果某外設很少用需要讓它運行時休眠、系統休眠時要保證哪些外設可以喚醒系統。

博主今天要討論的,就是一個按鍵如何喚醒系統,類似于手機的電源鍵。

這個功能并不是新功能,所以 Linux 內部有一個 demo 可以使用,先教大家如何使用該 demo,然后較大家如何撰寫中斷喚醒系統驅動。

官方 demo

demo 目錄:/kernel4.14/drivers/input/keyboard/gpio_keys.c

該驅動是專門為按鍵準備的,是一個身經百戰的驅動,任何時候測試按鍵中斷或者中斷喚醒系統都可以用它,很多時候比自己寫的驅動靠譜。

要想使用該驅動,首先在該目錄的 Makefile 中增加:

  1. obj-y  += gpio_keys.o 

設備樹中增加:

  1. gpio-keys { 
  2.   compatible = "gpio-keys"
  3.   #address-cells = <1>; 
  4.   #size-cells = <0>; 
  5.   autorepeat; 
  6.   key0 { 
  7.    label = "GPIO Key Enter"
  8.    linux,code = <KEY_ENTER>; 
  9.    gpios = <&gpio1 18 GPIO_ACTIVE_LOW>; 
  10.    gpio-key,wakeup; 
  11.   }; 
  12. }; 

compatible 屬性是 “gpio-keys”,gpio_keys.c 文件的674行會匹配這個屬性,匹配到了該驅動就會運行。

linux,code 屬性是按鍵值,Linux 對所有按鍵事件都有編號,所以KEY_ENTER 實際是一個數字,是驅動向上層報告的一個按鍵值。

gpios 屬性是標明哪一個 GPIO 口,低電平觸發,大家可以自己選一個 GPIO。

gpio-key,wakeup 是代表此GPIO支持中斷喚醒,你也可以寫成:wakeup-source。新老版本而已。

修改就是這么簡單,不過語法要符合各位手中的開發板平臺。然后編譯出內核和設備樹文件,下載到板子中。(Linux 內核根目錄會有 .config 文件,確保 CONFIG_PM_SLEEP=y 有打開)

如果驅動加載成功,在 /proc/interrupts 中可以看到:

從左往右第一列是軟件中斷號(唯一)。

第二列是 CPU,表示該中斷在該CPU上觸發了多少次,多核會有多列。

第三列是中斷控制器,imx6ull開發板根中斷控制器是GPC,外部中斷控制器是gpio-mxc,兩者是級聯關系。

第四列是硬件中斷號,也就是GPIO口編號。

第五列表示該中斷是邊沿觸發還是電平觸發。

第六列是中斷名稱,可以找到一個 GPIO Key Enter,如果驅動加載成功就能看到,如果失敗就看不到。

驗證方法

在內核中,休眠方式有很多種,可以通過下面命令查看

  1. # cat /sys/power/state 

常用的休眠方式有freeze、standby、mem、disk

freeze:凍結I/O設備,將它們置于低功耗狀態,使處理器進入空閑狀態,喚醒最快,耗電比其它standby, mem, disk方式高

standby:除了凍結I/O設備外,還會暫停系統,喚醒較快,耗電比其它 mem, disk方式高

mem:將運行狀態數據存到內存,并關閉外設,進入等待模式,喚醒較慢,耗電比disk方式高

disk:將運行狀態數據存到硬盤,然后關機,喚醒最慢

示例:

  1. # echo mem > /sys/power/state 

系統進入睡眠后,基本都會停掉UI、停掉串口,串口無法操作,如圖:

按下按鍵,系統恢復:

當然這里的 log 并不完整,輸入 dmesg 可以看到完整 log:

PM:power manager

具體干了什么,圖中有解釋,分為 suspend 過程和 resume 過程。

其實一個中斷讓它支持喚醒系統,最主要是多了兩個函數:suspend、resume。

suspend 函數在系統整體 suspend 的時候,會調用每個外設注冊的 suspend,我們在這個函數中調用 enable_irq_wake,表示該中斷在系統休眠時是 enable 狀態。

resume 函數在系統整體 resume 的時候,會調用每個外設注冊的 resume 函數,在 resume 函數中調用 disable_irq_wake ,表示該中斷在系統運行時不需要。兩者成對使用。

具體參看下面文章,寫的很好:

http://www.wowotech.net/irq_subsystem/irq_handle_procedure.html

大家也可以研究一下 gpio_keys.c,該驅動看起來比較復雜,但是很完善,畢竟身經百戰,什么因素都考慮到了,測試就用它!

博主寫的 demo

博主下面給的是簡化版,并且自測OK,分享給大家,以后如果需要可以copy

xxx.c

  1. #include <linux/module.h> 
  2. #include <linux/i2c.h> 
  3. #include <linux/interrupt.h> 
  4. #include <linux/delay.h> 
  5. #include <linux/uaccess.h> 
  6. #include <linux/pm.h> 
  7. #include <linux/slab.h> 
  8. #include <linux/sysctl.h> 
  9. #include <linux/proc_fs.h> 
  10. #include <linux/delay.h> 
  11. #include <linux/platform_device.h> 
  12. #include <linux/input.h> 
  13. #include <linux/gpio_keys.h> 
  14. #include <linux/workqueue.h> 
  15. #include <linux/gpio.h> 
  16. #include <linux/of.h> 
  17. #include <linux/of_platform.h> 
  18. #include <linux/of_gpio.h> 
  19. #include <linux/of_irq.h> 
  20. #include <linux/spinlock.h> 
  21. #include <linux/cdev.h> 
  22.  
  23. static int gpionum = 0; 
  24. static int irqnum = 0; 
  25.  
  26. static irqreturn_t my_handler(int irq, void *dev_id) 
  27.  printk("%s\r\n",__FUNCTION__); 
  28.  return IRQ_HANDLED; 
  29.  
  30. static int gpio_keys_probe(struct platform_device *pdev) 
  31.  int ret = 0; 
  32.  struct device_node *node = NULL;; /* 設備節點*/ 
  33.   
  34.  node = of_find_compatible_node(NULL,NULL,"atkalpha-key"); 
  35.  if (node == NULL){ 
  36.   printk("%s:atkalpha-key node not find!\r\n",__FUNCTION__); 
  37.   return -EINVAL; 
  38.  } 
  39.   
  40.  /* 提取 GPIO */ 
  41.  gpionum = of_get_named_gpio(node,"key-gpio", 0); 
  42.  if (gpionum < 0) { 
  43.    printk("of_get_named_gpio can't get key\r\n"); 
  44.  } 
  45.   
  46.  /* 初始化 key 所使用的 IO,并且設置成中斷模式 */ 
  47.  gpio_request(gpionum, "key-gpio"); 
  48.  gpio_direction_input(gpionum);  
  49.   
  50.  irqnum = gpio_to_irq(gpionum); 
  51.   
  52.  ret = request_irq(irqnum,my_handler, IRQF_TRIGGER_FALLING|IRQF_TRIGGER_RISING, "my-key"NULL); 
  53.  if(ret < 0){ 
  54.   printk("irq %d request failed!\r\n", irqnum); 
  55.   return -EFAULT; 
  56.  } 
  57.  return 0; 
  58.  
  59.  
  60. static const struct of_device_id gpio_keys_of_match[] = { 
  61.  { .compatible = "atkalpha-key", }, 
  62.  { }, 
  63. }; 
  64. MODULE_DEVICE_TABLE(of, gpio_keys_of_match); 
  65.  
  66. static int gpio_keys_remove(struct platform_device *pdev) 
  67.  return 0; 
  68.  
  69. static int gpio_keys_suspend(struct device *dev) 
  70.  printk("%s\r\n",__FUNCTION__); 
  71.  enable_irq_wake(irqnum); 
  72.  return 0; 
  73.  
  74. static int gpio_keys_resume(struct device *dev) 
  75.  printk("%s\r\n",__FUNCTION__); 
  76.  disable_irq_wake(irqnum); 
  77.  return 0; 
  78.  
  79. static SIMPLE_DEV_PM_OPS(gpio_keys_pm_ops, gpio_keys_suspend, gpio_keys_resume); 
  80.  
  81. static struct platform_driver gpio_keys_device_driver = { 
  82.  .probe  = gpio_keys_probe, 
  83.  .remove  = gpio_keys_remove, 
  84.  .driver  = { 
  85.   .name = "my-key"
  86.   .pm = &gpio_keys_pm_ops, 
  87.   .of_match_table = of_match_ptr(gpio_keys_of_match), 
  88.  } 
  89. }; 
  90.  
  91. static int __init gpio_keys_init(void) 
  92.  return platform_driver_register(&gpio_keys_device_driver); 
  93.  
  94. static void __exit gpio_keys_exit(void) 
  95.  platform_driver_unregister(&gpio_keys_device_driver); 
  96.  
  97. module_init(gpio_keys_init); 
  98. module_exit(gpio_keys_exit); 
  99.  
  100. MODULE_LICENSE("GPL"); 
  101. MODULE_AUTHOR("Jason"); 
  102. MODULE_DESCRIPTION("Keyboard driver for GPIOs"); 
  103. MODULE_ALIAS("platform:gpio-keys"); 

xxx.dts

  1. key { 
  2.   #address-cells = <1>; 
  3.   #size-cells = <1>; 
  4.   compatible = "atkalpha-key"
  5.   key-gpio = <&gpio1 18 GPIO_ACTIVE_LOW>; /* KEY0 */ 
  6.   interrupt-parent = <&gpio1>; 
  7.   interrupts = <18 IRQ_TYPE_EDGE_BOTH>; /* FALLING RISING */ 
  8.   gpio-key,wakeup; 
  9.   status = "okay"
  10. }; 

最后再總結一下:中斷喚醒系統和普通的驅動區別在于,多了兩個函數:suspend 和 resume,在 suspend 函數中,調用 enable_irq_wake,表示該中斷號在系統休眠時也是 enable 狀態,可以觸發中斷。在 resume 函數中,調用 disable_irq_wake ,恢復原始的中斷觸發路徑。

然后使用 SIMPLE_DEV_PM_OPS 宏將 suspend 和 resume 函數注冊到 gpio_keys_pm_ops 操作集,最終由 platform 注冊到系統中。這樣完成后,系統休眠過程中就會調用到設備注冊的 suspend,系統喚醒過程中就會調用設備注冊的 resume 函數。

至于 probe 函數的書寫,我在 GPIO 子系統和中斷子系統系列文章都講過這些函數的使用,大家可以去我的網站查看:

http://www.linuxer.vip

note:該 demo 只用來喚醒系統,如果你的中斷是在 I2C 等設備驅動中,喚醒系統后要立刻在中斷處理函數中進行 I2C 通信,寫法不太一樣,但是框架相同。

另外,該驅動的中斷處理函數中沒做什么東西,因此喚醒后執行完中斷處理函數后又會睡過去。如果你想要該中斷喚醒系統后讓系統一直處于喚醒狀態,請在中斷處理函數中使用 __pm_stay_awake() 和 __pm_relax()函數。

 

責任編輯:姜華 來源: 嵌入式Linux系統開發
相關推薦

2022-01-08 20:04:20

攔截系統調用

2021-07-14 09:00:00

JavaFX開發應用

2011-05-03 15:59:00

黑盒打印機

2025-05-07 00:31:30

2011-01-10 14:41:26

2021-12-15 08:49:21

gpio 子系統pinctrl 子系統API

2023-04-26 12:46:43

DockerSpringKubernetes

2022-12-07 08:42:35

2022-03-14 14:47:21

HarmonyOS操作系統鴻蒙

2022-07-27 08:16:22

搜索引擎Lucene

2021-02-26 11:54:38

MyBatis 插件接口

2011-02-22 13:46:27

微軟SQL.NET

2009-07-19 15:02:56

2021-09-22 08:51:34

Android

2024-04-02 08:58:13

2024-03-05 18:27:43

2010-09-16 14:08:13

無線雙網

2021-08-02 07:35:19

Nacos配置中心namespace

2021-09-18 14:26:49

Linux Linux 啟動流程Linux 系統

2021-07-01 09:31:50

MySQL SQL 語句數據庫
點贊
收藏

51CTO技術棧公眾號

来吧亚洲综合网| 日本在线xxx| 国产欧美久久久| 亚洲久久在线| 国产丝袜一区二区| 国产色视频在线播放| 日本在线视频网址| 久久综合久久久久88| 国产综合视频在线观看| 久久午夜鲁丝片午夜精品| 亚洲盗摄视频| 欧美日韩激情一区| 我的公把我弄高潮了视频| 高h视频在线| 成人中文字幕合集| 国产精品男人的天堂| 免费三片在线播放| 色喇叭免费久久综合网| 亚洲电影天堂av| 小明看看成人免费视频| av漫画网站在线观看| 国产精品入口麻豆原神| 久久一区免费| 精品国产亚洲AV| 秋霞成人午夜伦在线观看| 久久久久这里只有精品| 免费观看特级毛片| 免费观看不卡av| 欧美mv日韩mv国产网站| 日本人69视频| 欧美7777| 午夜av一区二区三区| 91手机视频在线| 国内av一区二区三区| 成人午夜激情影院| www国产亚洲精品| 在线观看色网站| 久久午夜电影| 98视频在线噜噜噜国产| 九九热精品免费视频| 国产欧美高清视频在线| 亚洲精品福利在线| 天天躁日日躁狠狠躁免费麻豆| 精品国产三级| 欧美片在线播放| 宅男噜噜噜66国产免费观看| 伊伊综合在线| 色伊人久久综合中文字幕| 久激情内射婷内射蜜桃| 2020国产在线| 亚洲成av人片一区二区| 全黄性性激高免费视频| 国产盗摄一区二区| 亚洲永久免费av| 日韩一二区视频| 在线观看免费黄视频| 久久精品视频一区| 欧美日韩国产不卡在线看| 秋霞av在线| 久久亚洲欧美国产精品乐播| 看高清中日韩色视频| 深夜影院在线观看| 91麻豆国产香蕉久久精品| 美媛馆国产精品一区二区| 日韩国产福利| 国产午夜精品美女毛片视频| 日韩妆和欧美的一区二区| 精品99又大又爽又硬少妇毛片 | 亚洲美女免费在线| 爱爱爱视频网站| 国产一区久久精品| 一区二区三区中文免费| 香港三级日本三级a视频| 精精国产xxxx视频在线中文版| 亚洲精品国产高清久久伦理二区| 欧美交换配乱吟粗大25p| free性m.freesex欧美| 懂色av中文一区二区三区天美| 伊人成色综合网| 亚洲伦乱视频| 337p亚洲精品色噜噜噜| 国产精品91av| 天堂俺去俺来也www久久婷婷| 亚洲性无码av在线| 男人av资源站| 18成人免费观看视频| 国产成人福利网站| jizz中国少妇| 972aa.com艺术欧美| 日韩精品久久一区| 中文字幕中文字幕在线十八区 | 精品免费囯产一区二区三区| 日韩精品一级中文字幕精品视频免费观看 | 国产精品国产精品国产专区不卡| 视频福利在线| 国产精品成人在线观看| av日韩一区二区三区| 欧美极品免费| 日韩美女一区二区三区四区| 18禁裸乳无遮挡啪啪无码免费| 日韩黄色大片网站| 97国产一区二区精品久久呦| 国产精品xxxxxx| 国产91色综合久久免费分享| 日本午夜精品电影| 超碰97国产精品人人cao| 在线日韩一区二区| 天天躁日日躁狠狠躁av麻豆男男 | 日本少妇一区| 亚洲成人av片在线观看| 超碰97av在线| 91久久夜色精品国产九色| 国产精品视频区1| www.黄色片| 国产精品青草综合久久久久99| 激情五月六月婷婷| 欧美日韩视频免费看| 日韩av在线网| 久久久久久久久精| 久久精品国产一区二区| 久久一区二区三区av| 欧美bbbxxxxx| 91精品国产综合久久久久久久 | 成人免费在线视频| 日韩a在线播放| 视频精品一区| www.亚洲男人天堂| 中文字幕丰满人伦在线| 久久这里只有精品视频网| 中文字幕人妻熟女人妻洋洋| 婷婷激情成人| 中文字幕日韩视频| www.com国产| 成人福利在线看| 香港三级日本三级a视频| 疯狂欧洲av久久成人av电影| 日韩中文字幕国产| 国产日韩久久久| www日韩大片| 大j8黑人w巨大888a片| 成人高潮a毛片免费观看网站| 超薄丝袜一区二区| 91久久久久久久久久久久| 国产精品午夜在线| 亚洲 欧美 另类人妖| 成人精品中文字幕| 国产精品久久久久久久久粉嫩av| 欧美日韩免费做爰大片| 欧美午夜视频一区二区| 亚洲观看黄色网| 国产精品一区亚洲| 精品免费国产| 在线天堂资源www在线污| 亚洲男人天堂视频| 无码人妻av免费一区二区三区| 国产日韩亚洲欧美综合| 欧美黑人又粗又大又爽免费| 国产亚洲一区| 国产精品一区二区在线| 日本a在线播放| 91精品国产色综合久久不卡蜜臀 | 国产99久久精品一区二区 夜夜躁日日躁| 熟妇高潮一区二区三区| 狠狠做深爱婷婷久久综合一区| 日本一区二区三区网站| 日本特黄久久久高潮| 一区二区三区av| 国产精品日本一区二区不卡视频| 欧美精品在线免费观看| 亚洲精品国产手机| 欧美日韩精品国产| 第一次破处视频| 老司机精品视频导航| 中文字幕乱码免费| 大香伊人久久精品一区二区| 欧美中文字幕视频在线观看| 黄色av网站在线| 7799精品视频| 精品无码久久久久久久久| 91亚洲精品久久久蜜桃| 校园春色 亚洲色图| 一区二区日韩欧美| 精品日本一区二区三区在线观看| 免费欧美电影| 成人97在线观看视频| 五月婷婷六月色| 精品视频一区三区九区| 国产一级片免费看| 国产日韩欧美综合一区| 91香蕉视频免费看| 99亚洲伊人久久精品影院红桃| 婷婷亚洲婷婷综合色香五月| 欧美午夜网站| 国产成人拍精品视频午夜网站| 国产精品久久麻豆| 亚洲欧美激情视频| av天堂一区二区三区| 色中色一区二区| 日本一级二级视频| 久久精品一区二区三区不卡| www.夜夜爽| 一区二区国产精品| 异国色恋浪漫潭| 伊人成综合网yiren22| 亚洲伊人第一页| 欧美va在线观看| 久久久久久中文字幕| 日本中文字幕在线视频| 日韩精品在线影院| 精品二区在线观看| 欧美日韩在线播放三区四区| 亚洲免费在线观看av| 亚洲精品免费视频| 无码人中文字幕| 91麻豆精品一区二区三区| www.黄色网| 激情文学综合丁香| 亚洲性生活网站| 国产日韩欧美三级| 欧美大黑帍在线播放| 欧美国产偷国产精品三区| 欧洲精品国产| 日韩av资源网| 国产精品成人观看视频免费| 亚洲精品tv| 国产一区二区在线免费视频| 刘亦菲一区二区三区免费看| 91国产精品电影| 黄网站在线观| 久久久久久久久久久av| 久草中文在线观看| 日韩有码在线视频| 超碰国产在线| 亚洲欧美日韩区| 色鬼7777久久| 亚洲韩国日本中文字幕| 男人天堂av网| 欧美mv和日韩mv的网站| www.好吊色| 精品欧美乱码久久久久久1区2区| 国产三级小视频| 欧美一区二区精品久久911| 一本色道久久综合精品婷婷 | 99久久婷婷国产一区二区三区| 欧美日韩视频在线观看一区二区三区 | 日本v片在线免费观看| 日韩av在线网址| 视频一区二区三区国产| 日韩电影免费观看在线观看| 午夜激情在线视频| 精品视频在线播放| 天堂√在线中文官网在线| 日韩电影免费在线观看中文字幕| 天天躁日日躁狠狠躁伊人| 亚洲精品第一页| 国产在线观看网站| 中文字幕日韩欧美在线| 含羞草www国产在线视频| 久久久国产成人精品| 成人免费高清| 久久久最新网址| 欧美少妇网站| 国产精品久久久久久av| 色综合视频一区二区三区44| 成人情趣片在线观看免费| 日韩精品成人在线观看| 国产精品日韩一区二区免费视频| 老司机精品在线| 日本精品二区| 亚洲午夜精品一区 二区 三区| 久久久久福利视频| 国产精品久久久久久久免费软件| 欧美成人免费高清视频| 久久成人精品无人区| 曰本三级日本三级日本三级| www.久久久久久久久| 国产亚洲精品熟女国产成人| 亚洲欧洲美洲综合色网| 日本一二三区不卡| 91久久一区二区| 国产老女人乱淫免费| 亚洲精品在线三区| 国产美女性感在线观看懂色av| 日韩视频永久免费观看| 污视频网站免费在线观看| 日韩美女视频在线观看| 国产精品日本一区二区不卡视频| 含羞草久久爱69一区| 清纯唯美亚洲综合一区| 国产精品无码免费专区午夜| 久久免费黄色| 丰满熟女人妻一区二区三区| 久久精品综合网| 久操视频免费在线观看| 日韩欧美在线视频免费观看| av手机免费看| 在线播放精品一区二区三区 | 日本黄大片一区二区三区| 国产a久久麻豆| 在线观看亚洲大片短视频| 亚洲成av人片在www色猫咪| 亚洲一区二区视频在线播放| 亚洲成人中文字幕| 黄色免费在线网站| 欧洲亚洲免费视频| 国产精品极品在线观看| 一区二区在线中文字幕电影视频| 99精品福利视频| 亚洲妇熟xx妇色黄蜜桃| 国产亚洲欧美一级| www.天天色| 欧美一区二区成人6969| 国产三级在线免费观看| 97精品国产97久久久久久免费 | 在线国产视频一区| 亚洲成人一二三| 国产精品乱码久久久| 亚洲欧洲在线视频| av免费不卡国产观看| 亚洲xxxxx| 99久久这里只有精品| 日本成人在线免费视频| 99精品视频一区| 18精品爽视频在线观看| 337p亚洲精品色噜噜噜| 日本天堂在线观看| 国产精品久久久久久久app| 天美av一区二区三区久久| 免费看欧美黑人毛片| 国产精品一区二区不卡| 日本黄色片免费观看| 欧美午夜寂寞影院| 国产福利小视频在线| 奇门遁甲1982国语版免费观看高清| caoporn成人免费视频在线| 第九区2中文字幕| 国产精品69毛片高清亚洲| 午夜激情福利电影| 欧美色网站导航| a√在线中文网新版址在线| 日韩av片免费在线观看| 五月激激激综合网色播| 欧美一级在线看| 久久亚洲一区二区三区明星换脸 | 亚洲经典三级| 欧美在线一级片| 精品久久久国产| 日本韩国在线观看| 午夜精品久久久久久久久久久久| 亚洲国产视频二区| 每日在线观看av| 91在线视频官网| 国产精品自拍99| 亚洲日本中文字幕| 日韩制服一区| 手机福利在线视频| 国产成人免费视频网站| 久久精品久久国产| 亚洲精品wwwww| 小黄鸭精品aⅴ导航网站入口| 日本不卡二区| 久久99国产精品久久99| 国产一区二区三区在线视频观看| 日韩一级片在线播放| 国产盗摄一区二区| 欧美日韩国产综合在线| 久久精品国产精品青草| 国产一区二区视频在线观看免费| 精品国产乱码久久久久久影片| 精品人人视频| 视频一区三区| 极品少妇一区二区| 国产在线观看99| 亚洲人成在线播放| 96sao精品免费视频观看| 拔插拔插海外华人免费| 国产三级三级三级精品8ⅰ区| 亚洲综合精品视频| 久久久久久成人精品| 伊人成综合网yiren22| 制服丝袜中文字幕第一页| 亚洲国产综合色| 成人午夜电影在线观看| www.久久久| 日韩av一级电影| 免看一级a毛片一片成人不卡| 亚洲精品久久久久久久久久久久| 精品欧美日韩精品| 日韩激情视频一区二区| 久久精品视频免费观看| 国产视频手机在线| 欧美中文字幕视频| 欧美精品大片| 91激情视频在线观看| 欧美mv和日韩mv国产网站| 四虎成人在线| 高清欧美精品xxxxx| 国产精品天天摸av网| 日韩中文字幕综合| 成人精品网站在线观看|