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

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

?? tw2834.c

?? tw2834 linux下的2834驅動程序
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* extdrv/peripheral/vad/tw2834.c
 *
 * Copyright (c) 2006 Hisilicon Co., Ltd.
 *
 * 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 of the License, or
 * (at your option) any later version.
 *
 * 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;
 *
 * History:
 *      10-April-2006 create this file
 *      2006-04-29  add record path half d1 mod
 *      2006-05-13  set the playpath default output mod to full
 *      2006-05-24  add record mod 2cif
 *      2006-06-15  support mod changing between every record mod
 *      2006-08-12  change the filters when record mod change
 */

#include <linux/config.h>
#include <linux/kernel.h>

#include <linux/version.h>
#include <linux/module.h>
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/fcntl.h>
#include <linux/mm.h>
#include <linux/miscdevice.h>
#include <linux/proc_fs.h>

#include <linux/fs.h>
#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/devfs_fs_kernel.h>
#include <linux/init.h>
#include <asm/uaccess.h>
#include <asm/hardware.h>
#include <asm/io.h>
#include <asm/system.h>
#include <linux/interrupt.h>
#include <linux/ioport.h>

#include <linux/string.h>
#include <linux/list.h>
#include <asm/semaphore.h>
#include <asm/delay.h>
#include "tw2834.h"
#include "tw2834_def.h"

/*use the tw2834 serial interface*/
#define _USE_SERIAL_INTERFACE

/*#define _USE_PARALLEL_INTERFACE*/

/*
 * insmod parameter:
 *   mchannel = 0 , videosize = 0, 1 cif
 *   mchannel = 0 , videosize = 1, 1 d1
 *   mchannel = 1 , videosize = 0, 4 cif
 *   mchannel = 1 , videosize = 1, 2 half d1
 *   mchannel = 1 , videosize = 2, 4 d1
 *   mchannel = 1 , videosize = 3, 4 half cif(normal quad)
 *   mchannel = 1 , videosize = 4, 2 cif
 *   norm_mode = 0, PAL  mode
 *   norm_mode = 1, NTSC mode
*/

static int mchannel  = 0;
static int videosize = 0;
static int norm_mode =  VIDEO_NORM_PAL;

#ifdef  _USE_SERIAL_INTERFACE
#include "hi_i2c.h"

/* tw2834 i2c slaver address micro-definition. */
#define TW2834_I2C_ADDR 0x44

/*
 * initialize gpio control routine
 * do nothing
 */
static void init_gpio_control(void)
{
    return;
}

/*
 * release gpio control routine
 * do nothing
 */
static void release_gpio_control(void)
{
    return;
}

/*
 * tw2834 write byte routine via I2C.
 * @param addr: address include page number and register address
 * @param data: the data write to the register
 * @return value:0--success; -1--write over time.
 */
static int  do_2834_write_byte(int addr, unsigned char data)
{
    return hi_i2c_writespecial(TW2834_I2C_ADDR,((0x300&addr)>>8),(addr&0xff),data&0xff);
}

/*
 * tw2834 read byte routine via I2C.
 * @param addr: address include page number and register address
 * @return value:the content of the register.
 */
static unsigned char  do_2834_read_byte(int addr)
{
    return hi_i2c_readspecial(TW2834_I2C_ADDR,((addr&0x300)>>8),(addr&0xff));
}

/*
 * tw2834 write register routine .
 * @param page: page number
 * @param addr: register address
 * @param value: the data write to the register
 * @return value:nothing.
 */
static void tw2834_write_byte(int page, int addr, int value)
{
    if(do_2834_write_byte(((page<<8)|addr), value))
    {
        printk("\tTW2834_ERROR: write failed....\n");
        return;
    }
}

/*
 * tw2834 read register routine .
 * @param page: page number
 * @param addr: register address
 * @return value:the data read from the register.
 */
static unsigned char tw2834_read_byte(int page, int addr)
{
    unsigned char data;

    data = do_2834_read_byte((page<<8)|addr);

    return data;
}

/*
 * tw2834 write a group of register routine .
 * @param page: page number
 * @param addr: start register address
 * @param tbl_ptr: the first data pointer
 * @param tbl_cnt: the number of data
 * @return value:nothing.
 */
static void tw2834_write_table(int page,int addr,unsigned char *tbl_ptr,int tbl_cnt)
{
    int i;
    unsigned int value;
    int  temp;

    for ( i=0;i<tbl_cnt;i++)
    {
        value = *tbl_ptr;
        temp = addr+i;
        if(do_2834_write_byte(((page<<8)|temp), value))
        {
            printk("\tTW2834_ERROR: write failed....\n");
            return;
        }
        tbl_ptr++;
    }
}

#else  /* _USE_PARALLEL_INTERFACE */
    /*parallel interface is not available now.*/
#endif

/************************** video input control *******************************/
/*
 * Scaling Function of horizontal for video input of display path and record path.
 * @param path: TW2834_PATH_X display path; TW2834_PATH_Y record path
 * @param ch: channel number
 * @param ratio_x: scaleing ratio
 * @return value: null.
 */
static void tw2834_setvin_scale_ratiox(unsigned char path,unsigned char ch,unsigned short ratio_x)
{
    if(CHKBIT_SET(path, TW2834_PATH_X))
    {
        tw2834_write_byte(PAGE0, (0x40 * ch) + 0x1c, (ratio_x & 0xff00) >> 8);
        tw2834_write_byte(PAGE0, (0x40 * ch) + 0x1d, (ratio_x & 0xff));

    }
    if(CHKBIT_SET(path, TW2834_PATH_Y))
    {
        tw2834_write_byte(PAGE0, (0x40 * ch) + 0x1e, (ratio_x & 0xff00) >> 8);
        tw2834_write_byte(PAGE0, (0x40 * ch) + 0x1f, (ratio_x & 0xff));
    }
}

/*
 * Scaling Function of vertical for video input of display path and record path.
 * @param path: TW2834_PATH_X display path; TW2834_PATH_Y record path
 * @param ch: channel number
 * @param ratio_y: scaleing ratio
 * @return value: null.
 */
static void tw2834_setvin_scale_ratioy(unsigned char path,unsigned char ch,unsigned short ratio_y)
{
    if(CHKBIT_SET(path, TW2834_PATH_X))
    {
        tw2834_write_byte(PAGE0, (0x40 * ch) + 0x18, (ratio_y & 0xff00) >> 8);
        tw2834_write_byte(PAGE0, (0x40 * ch) + 0x19, (ratio_y & 0xff));

    }
    if(CHKBIT_SET(path, TW2834_PATH_Y))
    {
        tw2834_write_byte(PAGE0, (0x40 * ch) + 0x1a, (ratio_y & 0xff00) >> 8);
        tw2834_write_byte(PAGE0, (0x40 * ch) + 0x1b, (ratio_y & 0xff));
    }
}

/*
 * Scaling Function of vertical and horizontal for video input of display path and record path.
 * @param path: TW2834_PATH_X display path; TW2834_PATH_Y record path
 * @param ch: channel number
 * @param ratio_y: scaleing ratio of vertical
 * @param ratio_x: scaleing ratio of horizontal
 * @return value: null.
 */
static void tw2834_setvin_scale_ratio(unsigned char path,unsigned char ch,
                unsigned short ratio_x,unsigned short ratio_y)
{
    if (ch > 3)
    {
        printk("\tTW2834_ERROR: Channel number input error\n");
        return;
    }

    tw2834_setvin_scale_ratiox(path, ch, ratio_x);
    tw2834_setvin_scale_ratioy(path, ch, ratio_y);

    if ((0xffff == ratio_x) && (0xffff == ratio_y))
    {
        if (VIDEO_NORM_PAL == norm_mode)
        {
            tw2834_write_byte(PAGE0, (0x40 * ch) + 0x14, 0x00);
            tw2834_write_byte(PAGE0, (0x40 * ch) + 0x15, 0x00);
            tw2834_write_byte(PAGE0, (0x40 * ch) + 0x16, 0x00);
            tw2834_write_byte(PAGE0, (0x40 * ch) + 0x17, 0x00);
            if(CHKBIT_SET(path, TW2834_PATH_X))
            {
                 tw2834_write_byte(PAGE0, (0x40 * ch) + 0x20, 0x0f);
            }
            if(CHKBIT_SET(path, TW2834_PATH_Y))
            {
                 tw2834_write_byte(PAGE0, (0x40 * ch) + 0x21, 0x0f);
            }
        }
        else
        {
            tw2834_write_byte(PAGE0, (0x40 * ch) + 0x14, 0x00);
            tw2834_write_byte(PAGE0, (0x40 * ch) + 0x15, 0x00);
            tw2834_write_byte(PAGE0, (0x40 * ch) + 0x16, 0x00);
            tw2834_write_byte(PAGE0, (0x40 * ch) + 0x17, 0x00);
            if(CHKBIT_SET(path, TW2834_PATH_X))
            {
                 tw2834_write_byte(PAGE0, (0x40 * ch) + 0x20, 0x07);
            }
            if(CHKBIT_SET(path, TW2834_PATH_Y))
            {
                 tw2834_write_byte(PAGE0, (0x40 * ch) + 0x21, 0x07);
            }
        }
    }
    if ((0x7fff == ratio_x) && (0xffff == ratio_y))
    {
        if (VIDEO_NORM_PAL == norm_mode)
        {
            tw2834_write_byte(PAGE0, (0x40 * ch) + 0x14, 0x00);
            tw2834_write_byte(PAGE0, (0x40 * ch) + 0x15, 0x05);
            tw2834_write_byte(PAGE0, (0x40 * ch) + 0x16, 0x10);
            tw2834_write_byte(PAGE0, (0x40 * ch) + 0x17, 0x10);
            if(CHKBIT_SET(path, TW2834_PATH_X))
            {
                 tw2834_write_byte(PAGE0, (0x40 * ch) + 0x20, 0x0f);
            }
            if(CHKBIT_SET(path, TW2834_PATH_Y))
            {
                 tw2834_write_byte(PAGE0, (0x40 * ch) + 0x21, 0x0f);
            }
        }
        else
        {
            tw2834_write_byte(PAGE0, (0x40 * ch) + 0x14, 0x00);
            tw2834_write_byte(PAGE0, (0x40 * ch) + 0x15, 0x05);
            tw2834_write_byte(PAGE0, (0x40 * ch) + 0x16, 0x10);
            tw2834_write_byte(PAGE0, (0x40 * ch) + 0x17, 0x10);
            if(CHKBIT_SET(path, TW2834_PATH_X))
            {
                 tw2834_write_byte(PAGE0, (0x40 * ch) + 0x20, 0x07);
            }
            if(CHKBIT_SET(path, TW2834_PATH_Y))
            {
                 tw2834_write_byte(PAGE0, (0x40 * ch) + 0x21, 0x07);
            }
        }
    }
    if ((0xffff == ratio_x) && (0x7fff == ratio_y))
    {
        if (VIDEO_NORM_PAL == norm_mode)
        {
            tw2834_write_byte(PAGE0, (0x40 * ch) + 0x14, 0x00);
            tw2834_write_byte(PAGE0, (0x40 * ch) + 0x15, 0xa0);
            tw2834_write_byte(PAGE0, (0x40 * ch) + 0x16, 0x00);
            tw2834_write_byte(PAGE0, (0x40 * ch) + 0x17, 0x00);
            if(CHKBIT_SET(path, TW2834_PATH_X))
            {
                 tw2834_write_byte(PAGE0, (0x40 * ch) + 0x20, 0x07);
            }
            if(CHKBIT_SET(path, TW2834_PATH_Y))
            {
                 tw2834_write_byte(PAGE0, (0x40 * ch) + 0x21, 0x07);
            }
        }
        else
        {
            tw2834_write_byte(PAGE0, (0x40 * ch) + 0x14, 0x00);
            tw2834_write_byte(PAGE0, (0x40 * ch) + 0x15, 0xa0);
            tw2834_write_byte(PAGE0, (0x40 * ch) + 0x16, 0x00);
            tw2834_write_byte(PAGE0, (0x40 * ch) + 0x17, 0x00);
            if(CHKBIT_SET(path, TW2834_PATH_X))
            {
                 tw2834_write_byte(PAGE0, (0x40 * ch) + 0x20, 0x07);
            }
            if(CHKBIT_SET(path, TW2834_PATH_Y))
            {
                 tw2834_write_byte(PAGE0, (0x40 * ch) + 0x21, 0x07);
            }
        }
    }
    if ((0x7fff == ratio_x) && (0x7fff == ratio_y))
    {
        if (VIDEO_NORM_PAL == norm_mode)
        {
            tw2834_write_byte(PAGE0, (0x40 * ch) + 0x14, 0x00);
            tw2834_write_byte(PAGE0, (0x40 * ch) + 0x15, 0xa5);
            tw2834_write_byte(PAGE0, (0x40 * ch) + 0x16, 0x00);
            tw2834_write_byte(PAGE0, (0x40 * ch) + 0x17, 0x00);
            if(CHKBIT_SET(path, TW2834_PATH_X))
            {
                 tw2834_write_byte(PAGE0, (0x40 * ch) + 0x20, 0x07);
            }
            if(CHKBIT_SET(path, TW2834_PATH_Y))
            {
                 tw2834_write_byte(PAGE0, (0x40 * ch) + 0x21, 0x07);
            }
        }
        else
        {
            tw2834_write_byte(PAGE0, (0x40 * ch) + 0x14, 0x50);
            tw2834_write_byte(PAGE0, (0x40 * ch) + 0x15, 0xa0);
            tw2834_write_byte(PAGE0, (0x40 * ch) + 0x16, 0xc0);
            tw2834_write_byte(PAGE0, (0x40 * ch) + 0x17, 0xc0);
            if(CHKBIT_SET(path, TW2834_PATH_X))
            {
                 tw2834_write_byte(PAGE0, (0x40 * ch) + 0x20, 0x07);
            }
            if(CHKBIT_SET(path, TW2834_PATH_Y))
            {
                 tw2834_write_byte(PAGE0, (0x40 * ch) + 0x21, 0x07);
            }
        }
    }
}

/*************************record path control**********************************/
/*
 * Set the mode of the record path.
 * @param frame: frame mode or not (0,normal mod; 1,frame mod)
 * @param dis_mode: DVR mod or not (0,normal mod; 1,DVR mod)
 * @return value: null.
 */
static void tw2834_set_record_mod(unsigned char frame_op, unsigned char dis_mode)
{
    unsigned char byte_tmp;

    byte_tmp = tw2834_read_byte(PAGE1, REG_RECORD_MOD);

    CLEAR_BIT(byte_tmp, 0x40);
    SET_BIT(byte_tmp, ((frame_op & 0x01) << 6));
    CLEAR_BIT(byte_tmp, 0x10);
    SET_BIT(byte_tmp, ((dis_mode & 0x01) << 4));

    tw2834_write_byte(PAGE1, REG_RECORD_MOD, byte_tmp);
}

/*
 * Set the position of the channel for record path.
 * @param ch: channel number
 * @param pos: the position of the channel (can be 0 1 2 3)
 * @return value: null.
 */
static void tw2834_set_record_pic_pos(unsigned char ch, unsigned char pos)
{
    unsigned char byte_tmp;

    if(ch > 3 || pos > 3)
    {
        printk("\tTW2834_ERROR: Channel number or position input error\n");
        return;
    }

    byte_tmp = tw2834_read_byte(PAGE1, REG_PIC_POS);

    CLEAR_BIT(byte_tmp, (3 << (ch << 1)));
    SET_BIT(byte_tmp, (pos << (ch << 1)));

    tw2834_write_byte(PAGE1, REG_PIC_POS, byte_tmp);
}

/*
 * Set the pic size of each channel for the record path.
 * @param ch: channel number
 * @param pos: the size of the channel (can be 0 1 2 3)
 * @return value: null.
 */
static void tw2834_set_record_pic_size(unsigned char ch, unsigned char size)
{
    unsigned char byte_tmp;

    if(ch > 3 || size > 3)
    {
        printk("\tTW2834_ERROR: Channel number or size input error\n");
        return;
    }

    byte_tmp = tw2834_read_byte(PAGE1, REG_PIC_SIZE);

    CLEAR_BIT(byte_tmp, (3 << (ch << 1)));
    SET_BIT(byte_tmp, (size << (ch << 1)));

    tw2834_write_byte(PAGE1, REG_PIC_SIZE, byte_tmp);
}

/*
 * Set the operation mode of each channel for the record path.
 * @param op_mod: operation mode (can be FUNC_MODE_LIVE/STROBE/SWITCH )
 * @return value: null.
 */
static void tw2834_set_op_mode(unsigned char op_mod)
{
    unsigned char byte_tmp;
    unsigned char byte_op_mod;

    byte_op_mod = op_mod << 4;

    /*set switch mod for record path channel 0*/
    byte_tmp = tw2834_read_byte(PAGE1, 0x60);
    CLEAR_BIT(byte_tmp, 0x30);
    SET_BIT(byte_tmp, byte_op_mod);
    tw2834_write_byte(PAGE1, 0x60, byte_tmp);

    /*set switch mod for record path channel 1*/
    byte_tmp = tw2834_read_byte(PAGE1, 0x63);
    CLEAR_BIT(byte_tmp, 0x30);
    SET_BIT(byte_tmp, byte_op_mod);
    tw2834_write_byte(PAGE1, 0x63, byte_tmp);

    /*set switch mod for record path channel 2*/
    byte_tmp = tw2834_read_byte(PAGE1, 0x66);
    CLEAR_BIT(byte_tmp, 0x30);
    SET_BIT(byte_tmp, byte_op_mod);
    tw2834_write_byte(PAGE1, 0x66, byte_tmp);

    /*set switch mod for record path channel 3*/
    byte_tmp = tw2834_read_byte(PAGE1, 0x69);
    CLEAR_BIT(byte_tmp, 0x30);
    SET_BIT(byte_tmp, byte_op_mod);
    tw2834_write_byte(PAGE1, 0x69, byte_tmp);
}

/******************************************************************************/
/*
 * Set the record path to frame quad mod.
 * @return value: null.
 */
static void set_record_frame_quad(void)
{
    /*set vin scaling*/
    tw2834_setvin_scale_ratio(TW2834_PATH_Y, 0, 0x7fff, 0xffff);
    tw2834_setvin_scale_ratio(TW2834_PATH_Y, 1, 0x7fff, 0xffff);
    tw2834_setvin_scale_ratio(TW2834_PATH_Y, 2, 0x7fff, 0xffff);
    tw2834_setvin_scale_ratio(TW2834_PATH_Y, 3, 0x7fff, 0xffff);

    /*set live mod for record path */
    tw2834_set_op_mode(FUNC_MODE_LIVE);

    /*set record mod frame*/
    tw2834_set_record_mod(1, 0);

    /*set pic_size for each channel*/
    tw2834_set_record_pic_size(0, 0);
    tw2834_set_record_pic_size(1, 0);
    tw2834_set_record_pic_size(2, 0);
    tw2834_set_record_pic_size(3, 0);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
伊人夜夜躁av伊人久久| 欧美精品日韩精品| 国产免费观看久久| 成人免费视频caoporn| 中文子幕无线码一区tr| 91丨porny丨最新| 亚洲高清视频在线| 日韩亚洲欧美综合| 国产酒店精品激情| 亚洲人精品一区| 91精品国产综合久久久久久久 | 成人av网站在线观看免费| 中文字幕精品三区| 在线观看亚洲一区| 久久97超碰色| 国产精品久久久一区麻豆最新章节| 91丨九色丨国产丨porny| 首页国产欧美日韩丝袜| 久久婷婷一区二区三区| 99久精品国产| 日韩高清一区二区| 中文字幕不卡的av| 欧美日韩精品系列| 国产盗摄女厕一区二区三区| 亚洲精品乱码久久久久久日本蜜臀| 欧美日韩国产经典色站一区二区三区 | 激情综合色播激情啊| 538prom精品视频线放| 国产一区不卡精品| 一个色在线综合| 久久久国产精华| 欧美在线制服丝袜| 国产乱人伦偷精品视频不卡| 亚洲最大成人综合| 国产拍揄自揄精品视频麻豆| 欧美日本高清视频在线观看| 国产精一品亚洲二区在线视频| 一级精品视频在线观看宜春院| 欧美精品一区二区在线观看| 欧美亚一区二区| 国产精品 欧美精品| 午夜欧美视频在线观看| 亚洲欧美怡红院| 精品国产髙清在线看国产毛片 | 91老师片黄在线观看| 美女一区二区视频| 亚洲午夜视频在线观看| 中文字幕不卡三区| 精品国内片67194| 欧美日韩国产精品成人| 91麻豆蜜桃一区二区三区| 国产精品影视天天线| 麻豆高清免费国产一区| 亚洲一区二区精品视频| 国产精品久久久久7777按摩| 久久综合色综合88| 日韩欧美久久久| 欧美猛男gaygay网站| 色婷婷激情久久| 99精品视频在线播放观看| 国产福利一区在线| 国产精品小仙女| 国内欧美视频一区二区| 精品一区二区国语对白| 久久国产生活片100| 日韩精品一区第一页| 日韩影院精彩在线| 青青草原综合久久大伊人精品优势 | 亚洲成人第一页| 亚洲猫色日本管| 久久精品视频在线免费观看| 精品国产一区a| 精品成人一区二区三区四区| 日韩欧美中文字幕制服| 日韩手机在线导航| 欧美xxxxx牲另类人与| 精品免费国产二区三区| 精品福利一区二区三区免费视频| 日韩一区二区三| 欧美成人vr18sexvr| 精品91自产拍在线观看一区| 日韩午夜在线观看| 久久综合精品国产一区二区三区| 久久综合色播五月| 国产欧美精品国产国产专区| 欧美国产激情一区二区三区蜜月| 日韩三级.com| 久久人人爽爽爽人久久久| 777xxx欧美| 久久精品国产免费看久久精品| 亚洲成人激情综合网| 亚洲高清视频的网址| 午夜激情久久久| 日日夜夜精品免费视频| 激情久久五月天| 福利一区二区在线观看| 91麻豆.com| 制服丝袜av成人在线看| 久久久久免费观看| 亚洲人成亚洲人成在线观看图片| 亚洲综合丝袜美腿| 久久福利资源站| va亚洲va日韩不卡在线观看| 在线观看日韩电影| 亚洲精品一区二区三区福利| 国产精品九色蝌蚪自拍| 日日夜夜免费精品| 成人福利视频在线看| 欧美日韩国产精选| 久久精品人人做人人综合 | 91黄色在线观看| 色天使色偷偷av一区二区| 欧美人牲a欧美精品| 久久亚洲二区三区| 亚洲激情图片一区| 蜜臀av性久久久久av蜜臀妖精 | 色先锋资源久久综合| 日韩一区二区三区免费看 | 国产亚洲一区二区三区四区 | 欧美一区二区日韩| 国产精品美女视频| 青青草国产成人99久久| 99精品国产视频| 精品国产一区二区三区不卡| 亚洲精品一卡二卡| 国产一区二区成人久久免费影院| 在线免费观看成人短视频| 精品精品国产高清a毛片牛牛| 亚洲色图欧美激情| 国产精品99久久久久久久女警| 91国偷自产一区二区开放时间 | 国产精品一色哟哟哟| 欧美午夜视频网站| 欧美激情综合在线| 免费精品视频在线| 欧美午夜宅男影院| 国产精品视频第一区| 久色婷婷小香蕉久久| 欧美丝袜自拍制服另类| 中文字幕在线观看不卡| 国内精品免费**视频| 欧美日韩国产大片| 亚洲美女一区二区三区| 成人免费毛片a| 久久久久久影视| 久久福利视频一区二区| 欧美一区二区三区四区五区| 亚洲综合图片区| 99视频精品在线| 国产农村妇女毛片精品久久麻豆 | 久久久不卡网国产精品二区| 亚洲午夜精品网| 91福利在线导航| 亚洲欧美色图小说| 不卡视频一二三四| 国产精品你懂的在线| 国产成人免费在线观看不卡| 精品国产1区二区| 国产资源在线一区| 久久看人人爽人人| 国产激情一区二区三区| 久久久国产精华| 国产精品白丝av| 国产精品全国免费观看高清| 粉嫩一区二区三区性色av| 国产欧美一区二区在线| 国产suv一区二区三区88区| 久久精品在线观看| 成人黄动漫网站免费app| 国产精品麻豆欧美日韩ww| av电影在线观看一区| 亚洲欧美一区二区三区国产精品| 91麻豆精品视频| 亚洲18色成人| 日韩亚洲欧美一区二区三区| 老司机一区二区| 国产亚洲人成网站| 成人免费毛片嘿嘿连载视频| 亚洲人成影院在线观看| 欧美日韩国产在线观看| 日韩电影在线看| 久久久亚洲欧洲日产国码αv| 高潮精品一区videoshd| 亚洲精品欧美二区三区中文字幕| 91传媒视频在线播放| 日本视频免费一区| 久久精品亚洲一区二区三区浴池| 风间由美一区二区av101| 一区二区三区在线看| 欧美久久久影院| 国产在线播放一区二区三区| 国产精品伦一区二区三级视频| 色中色一区二区| 蜜臀久久99精品久久久画质超高清| 精品美女在线播放| 91在线视频官网| 日本中文字幕一区| 久久久久久久免费视频了| 93久久精品日日躁夜夜躁欧美| 五月天丁香久久|