亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? lm832x.c

?? xen虛擬機源代碼安裝包
?? C
字號:
/* * National Semiconductor LM8322/8323 GPIO keyboard & PWM chips. * * Copyright (C) 2008 Nokia Corporation * Written by Andrzej Zaborowski <andrew@openedhand.com> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 or * (at your option) version 3 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA */#include "hw.h"#include "i2c.h"#include "qemu-timer.h"#include "console.h"struct lm_kbd_s {    i2c_slave i2c;    int i2c_dir;    int i2c_cycle;    int reg;    qemu_irq nirq;    uint16_t model;    struct {        qemu_irq out[2];        int in[2][2];    } mux;    uint8_t config;    uint8_t status;    uint8_t acttime;    uint8_t error;    uint8_t clock;    struct {        uint16_t pull;        uint16_t mask;        uint16_t dir;        uint16_t level;        qemu_irq out[16];    } gpio;    struct {        uint8_t dbnctime;        uint8_t size;        int start;        int len;        uint8_t fifo[16];    } kbd;    struct {        uint16_t file[256];	uint8_t faddr;        uint8_t addr[3];        QEMUTimer *tm[3];    } pwm;};#define INT_KEYPAD		(1 << 0)#define INT_ERROR		(1 << 3)#define INT_NOINIT		(1 << 4)#define INT_PWMEND(n)		(1 << (5 + n))#define ERR_BADPAR		(1 << 0)#define ERR_CMDUNK		(1 << 1)#define ERR_KEYOVR		(1 << 2)#define ERR_FIFOOVR		(1 << 6)static void lm_kbd_irq_update(struct lm_kbd_s *s){    qemu_set_irq(s->nirq, !s->status);}static void lm_kbd_gpio_update(struct lm_kbd_s *s){}static void lm_kbd_reset(struct lm_kbd_s *s){    s->config = 0x80;    s->status = INT_NOINIT;    s->acttime = 125;    s->kbd.dbnctime = 3;    s->kbd.size = 0x33;    s->clock = 0x08;    lm_kbd_irq_update(s);    lm_kbd_gpio_update(s);}static void lm_kbd_error(struct lm_kbd_s *s, int err){    s->error |= err;    s->status |= INT_ERROR;    lm_kbd_irq_update(s);}static void lm_kbd_pwm_tick(struct lm_kbd_s *s, int line){}static void lm_kbd_pwm_start(struct lm_kbd_s *s, int line){    lm_kbd_pwm_tick(s, line);}static void lm_kbd_pwm0_tick(void *opaque){    lm_kbd_pwm_tick(opaque, 0);}static void lm_kbd_pwm1_tick(void *opaque){    lm_kbd_pwm_tick(opaque, 1);}static void lm_kbd_pwm2_tick(void *opaque){    lm_kbd_pwm_tick(opaque, 2);}enum {    LM832x_CMD_READ_ID		= 0x80, /* Read chip ID. */    LM832x_CMD_WRITE_CFG	= 0x81, /* Set configuration item. */    LM832x_CMD_READ_INT		= 0x82, /* Get interrupt status. */    LM832x_CMD_RESET		= 0x83, /* Reset, same as external one */    LM823x_CMD_WRITE_PULL_DOWN	= 0x84, /* Select GPIO pull-up/down. */    LM832x_CMD_WRITE_PORT_SEL	= 0x85, /* Select GPIO in/out. */    LM832x_CMD_WRITE_PORT_STATE	= 0x86, /* Set GPIO pull-up/down. */    LM832x_CMD_READ_PORT_SEL	= 0x87, /* Get GPIO in/out. */    LM832x_CMD_READ_PORT_STATE	= 0x88, /* Get GPIO pull-up/down. */    LM832x_CMD_READ_FIFO	= 0x89, /* Read byte from FIFO. */    LM832x_CMD_RPT_READ_FIFO	= 0x8a, /* Read FIFO (no increment). */    LM832x_CMD_SET_ACTIVE	= 0x8b, /* Set active time. */    LM832x_CMD_READ_ERROR	= 0x8c, /* Get error status. */    LM832x_CMD_READ_ROTATOR	= 0x8e, /* Read rotator status. */    LM832x_CMD_SET_DEBOUNCE	= 0x8f, /* Set debouncing time. */    LM832x_CMD_SET_KEY_SIZE	= 0x90, /* Set keypad size. */    LM832x_CMD_READ_KEY_SIZE	= 0x91, /* Get keypad size. */    LM832x_CMD_READ_CFG		= 0x92, /* Get configuration item. */    LM832x_CMD_WRITE_CLOCK	= 0x93, /* Set clock config. */    LM832x_CMD_READ_CLOCK	= 0x94, /* Get clock config. */    LM832x_CMD_PWM_WRITE	= 0x95, /* Write PWM script. */    LM832x_CMD_PWM_START	= 0x96, /* Start PWM engine. */    LM832x_CMD_PWM_STOP		= 0x97, /* Stop PWM engine. */};#define LM832x_MAX_KPX		8#define LM832x_MAX_KPY		12static uint8_t lm_kbd_read(struct lm_kbd_s *s, int reg, int byte){    int ret;    switch (reg) {    case LM832x_CMD_READ_ID:        ret = 0x0400;        break;    case LM832x_CMD_READ_INT:        ret = s->status;        if (!(s->status & INT_NOINIT)) {            s->status = 0;            lm_kbd_irq_update(s);        }        break;    case LM832x_CMD_READ_PORT_SEL:        ret = s->gpio.dir;        break;    case LM832x_CMD_READ_PORT_STATE:        ret = s->gpio.mask;        break;    case LM832x_CMD_READ_FIFO:        if (s->kbd.len <= 1)            return 0x00;        /* Example response from the two commands after a INT_KEYPAD         * interrupt caused by the key 0x3c being pressed:         * RPT_READ_FIFO: 55 bc 00 4e ff 0a 50 08 00 29 d9 08 01 c9 01         *     READ_FIFO: bc 00 00 4e ff 0a 50 08 00 29 d9 08 01 c9 01         * RPT_READ_FIFO: bc 00 00 4e ff 0a 50 08 00 29 d9 08 01 c9 01         *         * 55 is the code of the key release event serviced in the previous         * interrupt handling.         *         * TODO: find out whether the FIFO is advanced a single character         * before reading every byte or the whole size of the FIFO at the         * last LM832x_CMD_READ_FIFO.  This affects LM832x_CMD_RPT_READ_FIFO         * output in cases where there are more than one event in the FIFO.         * Assume 0xbc and 0x3c events are in the FIFO:         * RPT_READ_FIFO: 55 bc 3c 00 4e ff 0a 50 08 00 29 d9 08 01 c9         *     READ_FIFO: bc 3c 00 00 4e ff 0a 50 08 00 29 d9 08 01 c9         * Does RPT_READ_FIFO now return 0xbc and 0x3c or only 0x3c?         */        s->kbd.start ++;        s->kbd.start &= sizeof(s->kbd.fifo) - 1;        s->kbd.len --;        return s->kbd.fifo[s->kbd.start];    case LM832x_CMD_RPT_READ_FIFO:        if (byte >= s->kbd.len)            return 0x00;        return s->kbd.fifo[(s->kbd.start + byte) & (sizeof(s->kbd.fifo) - 1)];    case LM832x_CMD_READ_ERROR:        return s->error;    case LM832x_CMD_READ_ROTATOR:        return 0;    case LM832x_CMD_READ_KEY_SIZE:        return s->kbd.size;    case LM832x_CMD_READ_CFG:        return s->config & 0xf;    case LM832x_CMD_READ_CLOCK:        return (s->clock & 0xfc) | 2;    default:        lm_kbd_error(s, ERR_CMDUNK);        fprintf(stderr, "%s: unknown command %02x\n", __FUNCTION__, reg);        return 0x00;    }    return ret >> (byte << 3);}static void lm_kbd_write(struct lm_kbd_s *s, int reg, int byte, uint8_t value){    switch (reg) {    case LM832x_CMD_WRITE_CFG:        s->config = value;        /* This must be done whenever s->mux.in is updated (never).  */        if ((s->config >> 1) & 1)			/* MUX1EN */            qemu_set_irq(s->mux.out[0], s->mux.in[0][(s->config >> 0) & 1]);        if ((s->config >> 3) & 1)			/* MUX2EN */            qemu_set_irq(s->mux.out[0], s->mux.in[0][(s->config >> 2) & 1]);        /* TODO: check that this is issued only following the chip reset         * and not in the middle of operation and that it is followed by         * the GPIO ports re-resablishing through WRITE_PORT_SEL and         * WRITE_PORT_STATE (using a timer perhaps) and otherwise output         * warnings.  */        s->status = 0;        lm_kbd_irq_update(s);        s->kbd.len = 0;        s->kbd.start = 0;        s->reg = -1;        break;    case LM832x_CMD_RESET:        if (value == 0xaa)            lm_kbd_reset(s);        else            lm_kbd_error(s, ERR_BADPAR);        s->reg = -1;        break;    case LM823x_CMD_WRITE_PULL_DOWN:        if (!byte)            s->gpio.pull = value;        else {            s->gpio.pull |= value << 8;            lm_kbd_gpio_update(s);            s->reg = -1;        }        break;    case LM832x_CMD_WRITE_PORT_SEL:        if (!byte)            s->gpio.dir = value;        else {            s->gpio.dir |= value << 8;            lm_kbd_gpio_update(s);            s->reg = -1;        }        break;    case LM832x_CMD_WRITE_PORT_STATE:        if (!byte)            s->gpio.mask = value;        else {            s->gpio.mask |= value << 8;            lm_kbd_gpio_update(s);            s->reg = -1;        }        break;    case LM832x_CMD_SET_ACTIVE:        s->acttime = value;        s->reg = -1;        break;    case LM832x_CMD_SET_DEBOUNCE:        s->kbd.dbnctime = value;        s->reg = -1;        if (!value)            lm_kbd_error(s, ERR_BADPAR);        break;    case LM832x_CMD_SET_KEY_SIZE:        s->kbd.size = value;        s->reg = -1;        if (                        (value & 0xf) < 3 || (value & 0xf) > LM832x_MAX_KPY ||                        (value >> 4) < 3 || (value >> 4) > LM832x_MAX_KPX)            lm_kbd_error(s, ERR_BADPAR);        break;    case LM832x_CMD_WRITE_CLOCK:        s->clock = value;        s->reg = -1;        if ((value & 3) && (value & 3) != 3) {            lm_kbd_error(s, ERR_BADPAR);            fprintf(stderr, "%s: invalid clock setting in RCPWM\n",                            __FUNCTION__);        }        /* TODO: Validate that the command is only issued once */        break;    case LM832x_CMD_PWM_WRITE:        if (byte == 0) {            if (!(value & 3) || (value >> 2) > 59) {                lm_kbd_error(s, ERR_BADPAR);                s->reg = -1;                break;            }            s->pwm.faddr = value;            s->pwm.file[s->pwm.faddr] = 0;        } else if (byte == 1) {            s->pwm.file[s->pwm.faddr] |= value << 8;        } else if (byte == 2) {            s->pwm.file[s->pwm.faddr] |= value << 0;            s->reg = -1;        }        break;    case LM832x_CMD_PWM_START:        s->reg = -1;        if (!(value & 3) || (value >> 2) > 59) {            lm_kbd_error(s, ERR_BADPAR);            break;        }        s->pwm.addr[(value & 3) - 1] = value >> 2;        lm_kbd_pwm_start(s, (value & 3) - 1);        break;    case LM832x_CMD_PWM_STOP:        s->reg = -1;        if (!(value & 3)) {            lm_kbd_error(s, ERR_BADPAR);            break;        }        qemu_del_timer(s->pwm.tm[(value & 3) - 1]);        break;    case -1:        lm_kbd_error(s, ERR_BADPAR);        break;    default:        lm_kbd_error(s, ERR_CMDUNK);        fprintf(stderr, "%s: unknown command %02x\n", __FUNCTION__, reg);        break;    }}static void lm_i2c_event(i2c_slave *i2c, enum i2c_event event){    struct lm_kbd_s *s = (struct lm_kbd_s *) i2c;    switch (event) {    case I2C_START_RECV:    case I2C_START_SEND:        s->i2c_cycle = 0;        s->i2c_dir = (event == I2C_START_SEND);        break;    default:        break;    }}static int lm_i2c_rx(i2c_slave *i2c){    struct lm_kbd_s *s = (struct lm_kbd_s *) i2c;    return lm_kbd_read(s, s->reg, s->i2c_cycle ++);}static int lm_i2c_tx(i2c_slave *i2c, uint8_t data){    struct lm_kbd_s *s = (struct lm_kbd_s *) i2c;    if (!s->i2c_cycle)        s->reg = data;    else        lm_kbd_write(s, s->reg, s->i2c_cycle - 1, data);    s->i2c_cycle ++;    return 0;}static void lm_kbd_save(QEMUFile *f, void *opaque){    struct lm_kbd_s *s = (struct lm_kbd_s *) opaque;    int i;    i2c_slave_save(f, &s->i2c);    qemu_put_byte(f, s->i2c_dir);    qemu_put_byte(f, s->i2c_cycle);    qemu_put_byte(f, (uint8_t) s->reg);    qemu_put_8s(f, &s->config);    qemu_put_8s(f, &s->status);    qemu_put_8s(f, &s->acttime);    qemu_put_8s(f, &s->error);    qemu_put_8s(f, &s->clock);    qemu_put_be16s(f, &s->gpio.pull);    qemu_put_be16s(f, &s->gpio.mask);    qemu_put_be16s(f, &s->gpio.dir);    qemu_put_be16s(f, &s->gpio.level);    qemu_put_byte(f, s->kbd.dbnctime);    qemu_put_byte(f, s->kbd.size);    qemu_put_byte(f, s->kbd.start);    qemu_put_byte(f, s->kbd.len);    qemu_put_buffer(f, s->kbd.fifo, sizeof(s->kbd.fifo));    for (i = 0; i < sizeof(s->pwm.file); i ++)        qemu_put_be16s(f, &s->pwm.file[i]);    qemu_put_8s(f, &s->pwm.faddr);    qemu_put_buffer(f, s->pwm.addr, sizeof(s->pwm.addr));    qemu_put_timer(f, s->pwm.tm[0]);    qemu_put_timer(f, s->pwm.tm[1]);    qemu_put_timer(f, s->pwm.tm[2]);}static int lm_kbd_load(QEMUFile *f, void *opaque, int version_id){    struct lm_kbd_s *s = (struct lm_kbd_s *) opaque;    int i;    i2c_slave_load(f, &s->i2c);    s->i2c_dir = qemu_get_byte(f);    s->i2c_cycle = qemu_get_byte(f);    s->reg = (int8_t) qemu_get_byte(f);    qemu_get_8s(f, &s->config);    qemu_get_8s(f, &s->status);    qemu_get_8s(f, &s->acttime);    qemu_get_8s(f, &s->error);    qemu_get_8s(f, &s->clock);    qemu_get_be16s(f, &s->gpio.pull);    qemu_get_be16s(f, &s->gpio.mask);    qemu_get_be16s(f, &s->gpio.dir);    qemu_get_be16s(f, &s->gpio.level);    s->kbd.dbnctime = qemu_get_byte(f);    s->kbd.size = qemu_get_byte(f);    s->kbd.start = qemu_get_byte(f);    s->kbd.len = qemu_get_byte(f);    qemu_get_buffer(f, s->kbd.fifo, sizeof(s->kbd.fifo));    for (i = 0; i < sizeof(s->pwm.file); i ++)        qemu_get_be16s(f, &s->pwm.file[i]);    qemu_get_8s(f, &s->pwm.faddr);    qemu_get_buffer(f, s->pwm.addr, sizeof(s->pwm.addr));    qemu_get_timer(f, s->pwm.tm[0]);    qemu_get_timer(f, s->pwm.tm[1]);    qemu_get_timer(f, s->pwm.tm[2]);    lm_kbd_irq_update(s);    lm_kbd_gpio_update(s);    return 0;}static int lm_kbd_iid = 0;struct i2c_slave *lm8323_init(i2c_bus *bus, qemu_irq nirq){    struct lm_kbd_s *s;    s = (struct lm_kbd_s *) i2c_slave_init(bus, 0, sizeof(struct lm_kbd_s));    s->model = 0x8323;    s->pwm.tm[0] = qemu_new_timer(vm_clock, lm_kbd_pwm0_tick, s);    s->pwm.tm[1] = qemu_new_timer(vm_clock, lm_kbd_pwm1_tick, s);    s->pwm.tm[2] = qemu_new_timer(vm_clock, lm_kbd_pwm2_tick, s);    s->nirq = nirq;    s->i2c.event = lm_i2c_event;    s->i2c.recv = lm_i2c_rx;    s->i2c.send = lm_i2c_tx;    lm_kbd_reset(s);    qemu_register_reset((void *) lm_kbd_reset, s);    register_savevm("LM8323", lm_kbd_iid ++, 0,                    lm_kbd_save, lm_kbd_load, s);    return &s->i2c;}void lm832x_key_event(struct i2c_slave *i2c, int key, int state){    struct lm_kbd_s *s = (struct lm_kbd_s *) i2c;    if ((s->status & INT_ERROR) && (s->error & ERR_FIFOOVR))        return;    if (s->kbd.len >= sizeof(s->kbd.fifo))        return lm_kbd_error(s, ERR_FIFOOVR);    s->kbd.fifo[(s->kbd.start + s->kbd.len ++) & (sizeof(s->kbd.fifo) - 1)] =            key | (state << 7);    /* We never set ERR_KEYOVR because we support multiple keys fine.  */    s->status |= INT_KEYPAD;    lm_kbd_irq_update(s);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲影视在线播放| 午夜婷婷国产麻豆精品| 午夜精品aaa| 欧洲一区二区av| 综合在线观看色| 99精品视频免费在线观看| 精品国产一区a| 激情综合色综合久久综合| 555www色欧美视频| 久久99精品国产麻豆婷婷洗澡| 欧美精品国产精品| 亚洲色欲色欲www| 99麻豆久久久国产精品免费| 久久婷婷成人综合色| 国产福利一区二区三区在线视频| 久久精品日产第一区二区三区高清版| 久久99久久99精品免视看婷婷| 精品国产一区久久| 春色校园综合激情亚洲| 亚洲精选一二三| 亚洲第一会所有码转帖| 欧美亚洲动漫制服丝袜| 亚洲一区二区三区视频在线播放| 欧美亚洲图片小说| 国产一区二区三区在线观看精品 | 欧美videossexotv100| 激情综合网天天干| 亚洲女人****多毛耸耸8| 91麻豆精品国产自产在线观看一区| 久久99精品国产麻豆婷婷洗澡| 中文字幕乱码亚洲精品一区| 色狠狠色狠狠综合| 国产一区二区福利视频| 亚洲一区二区三区四区五区中文 | 成人网在线免费视频| 三级亚洲高清视频| 中文字幕国产一区二区| 日韩一区二区视频| 91成人在线精品| 91热门视频在线观看| 狠狠狠色丁香婷婷综合久久五月| 亚洲一区二区中文在线| 国产日韩精品一区二区三区| 91精品午夜视频| 欧美丰满嫩嫩电影| 欧美视频一区二区三区在线观看| 波多野结衣的一区二区三区| 韩国v欧美v亚洲v日本v| 午夜欧美2019年伦理| 亚洲精品乱码久久久久久久久 | 最近中文字幕一区二区三区| 久久亚洲免费视频| 久久嫩草精品久久久精品| 精品国产一区二区亚洲人成毛片| 日韩欧美综合一区| 欧美不卡在线视频| 欧美极品xxx| 中文字幕佐山爱一区二区免费| 国产精品第13页| 一区二区三区四区视频精品免费| 亚洲欧美激情在线| 亚洲aⅴ怡春院| 美美哒免费高清在线观看视频一区二区 | 日韩精品一二三四| 美女免费视频一区| 国产成人8x视频一区二区 | 水蜜桃久久夜色精品一区的特点| 亚洲线精品一区二区三区八戒| 五月婷婷综合网| 精品亚洲国内自在自线福利| 精品在线视频一区| 一本一道久久a久久精品综合蜜臀| 欧美色视频在线观看| 欧美成人性福生活免费看| 国产精品丝袜一区| 亚洲影院在线观看| 国产成人精品www牛牛影视| 99精品视频在线观看| 日韩一区二区电影网| 国产精品白丝在线| 韩国精品主播一区二区在线观看| 97久久精品人人澡人人爽| 制服丝袜亚洲网站| 亚洲美女屁股眼交3| 久久99国产精品免费网站| 91在线porny国产在线看| 久久一区二区视频| 日本在线不卡视频| 7777精品伊人久久久大香线蕉经典版下载 | 欧美视频在线一区二区三区 | 图片区小说区国产精品视频| 丁香激情综合五月| 欧美α欧美αv大片| 日日摸夜夜添夜夜添亚洲女人| av不卡在线播放| 国产精品久久看| 国产成人av福利| 久久久久97国产精华液好用吗| 亚洲va欧美va天堂v国产综合| 色综合激情久久| 伊人性伊人情综合网| 色中色一区二区| 一区二区三区不卡在线观看| 91蜜桃婷婷狠狠久久综合9色| 国产精品伦理在线| 91丝袜美女网| 亚洲综合无码一区二区| 欧美性猛交xxxx乱大交退制版| 一级女性全黄久久生活片免费| 91久久精品网| 肉丝袜脚交视频一区二区| 日韩欧美色综合网站| 国内成+人亚洲+欧美+综合在线| 精品成人一区二区三区| 成人中文字幕电影| 亚洲人成网站精品片在线观看| 在线欧美一区二区| 青青草原综合久久大伊人精品| 国产亚洲一区二区三区在线观看| 99久久国产综合色|国产精品| 一区二区三区在线视频播放| 日韩免费高清av| 成人免费视频一区| 亚洲成a人片在线不卡一二三区| 日韩欧美一区二区视频| www.综合网.com| 久99久精品视频免费观看| 亚洲日本中文字幕区| 日韩欧美自拍偷拍| 在线免费视频一区二区| 国产iv一区二区三区| 亚洲国产婷婷综合在线精品| 久久一区二区三区四区| 欧美亚洲国产bt| 99久久免费视频.com| 国产一区二区视频在线| 日韩国产在线观看| 亚洲男人电影天堂| 国产精品欧美久久久久无广告| 日韩欧美国产wwwww| 欧美日韩国产综合一区二区三区| 99免费精品视频| 99久久er热在这里只有精品15| 国产一区二区久久| 国产麻豆成人精品| 激情六月婷婷综合| 精品一区二区三区久久| 免费看日韩a级影片| 日本不卡在线视频| 秋霞国产午夜精品免费视频| 调教+趴+乳夹+国产+精品| 亚洲亚洲精品在线观看| 天堂av在线一区| 日本亚洲电影天堂| 另类小说一区二区三区| 老鸭窝一区二区久久精品| 精品在线免费视频| 国产成人鲁色资源国产91色综| 粉嫩aⅴ一区二区三区四区五区| 国产福利视频一区二区三区| 国产精品1区二区.| 91色在线porny| 欧美日韩精品福利| 欧美xxxxxxxx| 18欧美亚洲精品| 亚洲一区二区三区四区在线观看 | www.亚洲在线| 在线观看一区日韩| 精品三级在线观看| 成人欧美一区二区三区1314| 亚洲成人一二三| 国产精品香蕉一区二区三区| 91小视频在线| xfplay精品久久| 亚洲最快最全在线视频| 激情文学综合插| 欧美精品xxxxbbbb| 国产精品久久久久毛片软件| 亚洲成人777| 91国偷自产一区二区开放时间 | 日本欧美加勒比视频| 成人听书哪个软件好| 欧美videos大乳护士334| 一区二区三区日韩精品| 丁香激情综合国产| 精品少妇一区二区三区 | 亚洲欧美另类综合偷拍| 99国产精品久久久久久久久久久 | 欧美疯狂性受xxxxx喷水图片| 高潮精品一区videoshd| 国产98色在线|日韩| 国产成都精品91一区二区三| 成人激情开心网| 欧美精品一区二区三区四区 | 亚洲婷婷综合久久一本伊一区| 肉肉av福利一精品导航| 欧美在线你懂的| 亚洲最新在线观看| 在线影院国内精品| 亚洲欧洲精品天堂一级|