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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? dvb-ttusb-budget.c

?? trident tm5600的linux驅(qū)動(dòng)
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
/* * TTUSB DVB driver * * Copyright (c) 2002 Holger Waechtler <holger@convergence.de> * Copyright (c) 2003 Felix Domke <tmbinc@elitedvb.net> * *	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. */#include <linux/init.h>#include <linux/slab.h>#include <linux/wait.h>#include <linux/fs.h>#include <linux/module.h>#include <linux/usb.h>#include <linux/delay.h>#include <linux/time.h>#include <linux/errno.h>#include <linux/jiffies.h>#include "compat.h"#include <linux/mutex.h>#ifdef TTUSB_KERNEL#include <linux/firmware.h>#endif#include "dvb_frontend.h"#include "dmxdev.h"#include "dvb_demux.h"#include "dvb_net.h"#include "ves1820.h"#include "cx22700.h"#include "tda1004x.h"#include "stv0299.h"#include "tda8083.h"#include "stv0297.h"#include "lnbp21.h"#include <linux/dvb/frontend.h>#include <linux/dvb/dmx.h>#include <linux/pci.h>/*  TTUSB_HWSECTIONS:    the DSP supports filtering in hardware, however, since the "muxstream"    is a bit braindead (no matching channel masks or no matching filter mask),    we won't support this - yet. it doesn't event support negative filters,    so the best way is maybe to keep TTUSB_HWSECTIONS undef'd and just    parse TS data. USB bandwidth will be a problem when having large    datastreams, especially for dvb-net, but hey, that's not my problem.  TTUSB_DISEQC, TTUSB_TONE:    let the STC do the diseqc/tone stuff. this isn't supported at least with    my TTUSB, so let it undef'd unless you want to implement another    frontend. never tested.  DEBUG:    define it to > 3 for really hardcore debugging. you probably don't want    this unless the device doesn't load at all. > 2 for bandwidth statistics.*/static int debug;module_param(debug, int, 0644);MODULE_PARM_DESC(debug, "Turn on/off debugging (default:off).");DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);#define dprintk(x...) do { if (debug) printk(KERN_DEBUG x); } while (0)#define ISO_BUF_COUNT      4#define FRAMES_PER_ISO_BUF 4#define ISO_FRAME_SIZE     912#define TTUSB_MAXCHANNEL   32#ifdef TTUSB_HWSECTIONS#define TTUSB_MAXFILTER    16	/* ??? */#endif#define TTUSB_REV_2_2	0x22#define TTUSB_BUDGET_NAME "ttusb_stc_fw"/** *  since we're casting (struct ttusb*) <-> (struct dvb_demux*) around *  the dvb_demux field must be the first in struct!! */struct ttusb {	struct dvb_demux dvb_demux;	struct dmxdev dmxdev;	struct dvb_net dvbnet;	/* and one for USB access. */	struct mutex semi2c;	struct mutex semusb;	struct dvb_adapter adapter;	struct usb_device *dev;	struct i2c_adapter i2c_adap;	int disconnecting;	int iso_streaming;	unsigned int bulk_out_pipe;	unsigned int bulk_in_pipe;	unsigned int isoc_in_pipe;	void *iso_buffer;	dma_addr_t iso_dma_handle;	struct urb *iso_urb[ISO_BUF_COUNT];	int running_feed_count;	int last_channel;	int last_filter;	u8 c;			/* transaction counter, wraps around...  */	fe_sec_tone_mode_t tone;	fe_sec_voltage_t voltage;	int mux_state;		// 0..2 - MuxSyncWord, 3 - nMuxPacks,    4 - muxpack	u8 mux_npacks;	u8 muxpack[256 + 8];	int muxpack_ptr, muxpack_len;	int insync;	int cc;			/* MuxCounter - will increment on EVERY MUX PACKET */	/* (including stuffing. yes. really.) */	u8 last_result[32];	int revision;	struct dvb_frontend* fe;};/* ugly workaround ... don't know why it's necessary to read *//* all result codes. */#define DEBUG 0static int ttusb_cmd(struct ttusb *ttusb,	      const u8 * data, int len, int needresult){	int actual_len;	int err;#if DEBUG >= 3	int i;	printk(">");	for (i = 0; i < len; ++i)		printk(" %02x", data[i]);	printk("\n");#endif	if (mutex_lock_interruptible(&ttusb->semusb) < 0)		return -EAGAIN;	err = usb_bulk_msg(ttusb->dev, ttusb->bulk_out_pipe,			   (u8 *) data, len, &actual_len, 1000);	if (err != 0) {		dprintk("%s: usb_bulk_msg(send) failed, err == %i!\n",			__func__, err);		mutex_unlock(&ttusb->semusb);		return err;	}	if (actual_len != len) {		dprintk("%s: only wrote %d of %d bytes\n", __func__,			actual_len, len);		mutex_unlock(&ttusb->semusb);		return -1;	}	err = usb_bulk_msg(ttusb->dev, ttusb->bulk_in_pipe,			   ttusb->last_result, 32, &actual_len, 1000);	if (err != 0) {		printk("%s: failed, receive error %d\n", __func__,		       err);		mutex_unlock(&ttusb->semusb);		return err;	}#if DEBUG >= 3	actual_len = ttusb->last_result[3] + 4;	printk("<");	for (i = 0; i < actual_len; ++i)		printk(" %02x", ttusb->last_result[i]);	printk("\n");#endif	if (!needresult)		mutex_unlock(&ttusb->semusb);	return 0;}static int ttusb_result(struct ttusb *ttusb, u8 * data, int len){	memcpy(data, ttusb->last_result, len);	mutex_unlock(&ttusb->semusb);	return 0;}static int ttusb_i2c_msg(struct ttusb *ttusb,		  u8 addr, u8 * snd_buf, u8 snd_len, u8 * rcv_buf,		  u8 rcv_len){	u8 b[0x28];	u8 id = ++ttusb->c;	int i, err;	if (snd_len > 0x28 - 7 || rcv_len > 0x20 - 7)		return -EINVAL;	b[0] = 0xaa;	b[1] = id;	b[2] = 0x31;	b[3] = snd_len + 3;	b[4] = addr << 1;	b[5] = snd_len;	b[6] = rcv_len;	for (i = 0; i < snd_len; i++)		b[7 + i] = snd_buf[i];	err = ttusb_cmd(ttusb, b, snd_len + 7, 1);	if (err)		return -EREMOTEIO;	err = ttusb_result(ttusb, b, 0x20);	/* check if the i2c transaction was successful */	if ((snd_len != b[5]) || (rcv_len != b[6])) return -EREMOTEIO;	if (rcv_len > 0) {		if (err || b[0] != 0x55 || b[1] != id) {			dprintk			    ("%s: usb_bulk_msg(recv) failed, err == %i, id == %02x, b == ",			     __func__, err, id);			return -EREMOTEIO;		}		for (i = 0; i < rcv_len; i++)			rcv_buf[i] = b[7 + i];	}	return rcv_len;}static int master_xfer(struct i2c_adapter* adapter, struct i2c_msg *msg, int num){	struct ttusb *ttusb = i2c_get_adapdata(adapter);	int i = 0;	int inc;	if (mutex_lock_interruptible(&ttusb->semi2c) < 0)		return -EAGAIN;	while (i < num) {		u8 addr, snd_len, rcv_len, *snd_buf, *rcv_buf;		int err;		if (num > i + 1 && (msg[i + 1].flags & I2C_M_RD)) {			addr = msg[i].addr;			snd_buf = msg[i].buf;			snd_len = msg[i].len;			rcv_buf = msg[i + 1].buf;			rcv_len = msg[i + 1].len;			inc = 2;		} else {			addr = msg[i].addr;			snd_buf = msg[i].buf;			snd_len = msg[i].len;			rcv_buf = NULL;			rcv_len = 0;			inc = 1;		}		err = ttusb_i2c_msg(ttusb, addr,				    snd_buf, snd_len, rcv_buf, rcv_len);		if (err < rcv_len) {			dprintk("%s: i == %i\n", __func__, i);			break;		}		i += inc;	}	mutex_unlock(&ttusb->semi2c);	return i;}#ifndef TTUSB_KERNEL#include "dvb-ttusb-dspbootcode.h"#endifstatic int ttusb_boot_dsp(struct ttusb *ttusb){#ifdef TTUSB_KERNEL	const struct firmware *fw;#endif	int i, err;	u8 b[40];#ifdef TTUSB_KERNEL	err = request_firmware(&fw, "ttusb-budget/dspbootcode.bin",			       &ttusb->dev->dev);	if (err) {		printk(KERN_ERR "ttusb-budget: failed to request firmware\n");		return err;	}#endif	/* BootBlock */	b[0] = 0xaa;	b[2] = 0x13;	b[3] = 28;	/* upload dsp code in 32 byte steps (36 didn't work for me ...) */	/* 32 is max packet size, no messages should be splitted. */#ifndef TTUSB_KERNEL	for (i = 0; i < sizeof(dsp_bootcode); i += 28) {		memcpy(&b[4], &dsp_bootcode[i], 28);#else	for (i = 0; i < fw->size; i += 28) {		memcpy(&b[4], &fw->data[i], 28);#endif		b[1] = ++ttusb->c;		err = ttusb_cmd(ttusb, b, 32, 0);		if (err)			goto done;	}	/* last block ... */	b[1] = ++ttusb->c;	b[2] = 0x13;	b[3] = 0;	err = ttusb_cmd(ttusb, b, 4, 0);	if (err)		goto done;	/* BootEnd */	b[1] = ++ttusb->c;	b[2] = 0x14;	b[3] = 0;	err = ttusb_cmd(ttusb, b, 4, 0);      done:	if (err) {		dprintk("%s: usb_bulk_msg() failed, return value %i!\n",			__func__, err);	}	return err;}static int ttusb_set_channel(struct ttusb *ttusb, int chan_id, int filter_type,		      int pid){	int err;	/* SetChannel */	u8 b[] = { 0xaa, ++ttusb->c, 0x22, 4, chan_id, filter_type,		(pid >> 8) & 0xff, pid & 0xff	};	err = ttusb_cmd(ttusb, b, sizeof(b), 0);	return err;}static int ttusb_del_channel(struct ttusb *ttusb, int channel_id){	int err;	/* DelChannel */	u8 b[] = { 0xaa, ++ttusb->c, 0x23, 1, channel_id };	err = ttusb_cmd(ttusb, b, sizeof(b), 0);	return err;}#ifdef TTUSB_HWSECTIONSstatic int ttusb_set_filter(struct ttusb *ttusb, int filter_id,		     int associated_chan, u8 filter[8], u8 mask[8]){	int err;	/* SetFilter */	u8 b[] = { 0xaa, 0, 0x24, 0x1a, filter_id, associated_chan,		filter[0], filter[1], filter[2], filter[3],		filter[4], filter[5], filter[6], filter[7],		filter[8], filter[9], filter[10], filter[11],		mask[0], mask[1], mask[2], mask[3],		mask[4], mask[5], mask[6], mask[7],		mask[8], mask[9], mask[10], mask[11]	};	err = ttusb_cmd(ttusb, b, sizeof(b), 0);	return err;}static int ttusb_del_filter(struct ttusb *ttusb, int filter_id){	int err;	/* DelFilter */	u8 b[] = { 0xaa, ++ttusb->c, 0x25, 1, filter_id };	err = ttusb_cmd(ttusb, b, sizeof(b), 0);	return err;}#endifstatic int ttusb_init_controller(struct ttusb *ttusb){	u8 b0[] = { 0xaa, ++ttusb->c, 0x15, 1, 0 };	u8 b1[] = { 0xaa, ++ttusb->c, 0x15, 1, 1 };	u8 b2[] = { 0xaa, ++ttusb->c, 0x32, 1, 0 };	/* i2c write read: 5 bytes, addr 0x10, 0x02 bytes write, 1 bytes read. */	u8 b3[] =	    { 0xaa, ++ttusb->c, 0x31, 5, 0x10, 0x02, 0x01, 0x00, 0x1e };	u8 b4[] =	    { 0x55, ttusb->c, 0x31, 4, 0x10, 0x02, 0x01, 0x00, 0x1e };	u8 get_version[] = { 0xaa, ++ttusb->c, 0x17, 5, 0, 0, 0, 0, 0 };	u8 get_dsp_version[0x20] =	    { 0xaa, ++ttusb->c, 0x26, 28, 0, 0, 0, 0, 0 };	int err;	/* reset board */	if ((err = ttusb_cmd(ttusb, b0, sizeof(b0), 0)))		return err;	/* reset board (again?) */	if ((err = ttusb_cmd(ttusb, b1, sizeof(b1), 0)))		return err;	ttusb_boot_dsp(ttusb);	/* set i2c bit rate */	if ((err = ttusb_cmd(ttusb, b2, sizeof(b2), 0)))		return err;	if ((err = ttusb_cmd(ttusb, b3, sizeof(b3), 1)))		return err;	err = ttusb_result(ttusb, b4, sizeof(b4));	if ((err = ttusb_cmd(ttusb, get_version, sizeof(get_version), 1)))		return err;	if ((err = ttusb_result(ttusb, get_version, sizeof(get_version))))		return err;	dprintk("%s: stc-version: %c%c%c%c%c\n", __func__,		get_version[4], get_version[5], get_version[6],		get_version[7], get_version[8]);	if (memcmp(get_version + 4, "V 0.0", 5) &&	    memcmp(get_version + 4, "V 1.1", 5) &&	    memcmp(get_version + 4, "V 2.1", 5) &&	    memcmp(get_version + 4, "V 2.2", 5)) {		printk		    ("%s: unknown STC version %c%c%c%c%c, please report!\n",		     __func__, get_version[4], get_version[5],		     get_version[6], get_version[7], get_version[8]);	}	ttusb->revision = ((get_version[6] - '0') << 4) |			   (get_version[8] - '0');	err =	    ttusb_cmd(ttusb, get_dsp_version, sizeof(get_dsp_version), 1);	if (err)		return err;	err =	    ttusb_result(ttusb, get_dsp_version, sizeof(get_dsp_version));	if (err)		return err;	printk("%s: dsp-version: %c%c%c\n", __func__,	       get_dsp_version[4], get_dsp_version[5], get_dsp_version[6]);	return 0;}#ifdef TTUSB_DISEQCstatic int ttusb_send_diseqc(struct dvb_frontend* fe,			     const struct dvb_diseqc_master_cmd *cmd){	struct ttusb* ttusb = (struct ttusb*) fe->dvb->priv;	u8 b[12] = { 0xaa, ++ttusb->c, 0x18 };	int err;	b[3] = 4 + 2 + cmd->msg_len;	b[4] = 0xFF;		/* send diseqc master, not burst */	b[5] = cmd->msg_len;	memcpy(b + 5, cmd->msg, cmd->msg_len);	/* Diseqc */	if ((err = ttusb_cmd(ttusb, b, 4 + b[3], 0))) {		dprintk("%s: usb_bulk_msg() failed, return value %i!\n",			__func__, err);	}	return err;}#endifstatic int ttusb_update_lnb(struct ttusb *ttusb){	u8 b[] = { 0xaa, ++ttusb->c, 0x16, 5, /*power: */ 1,		ttusb->voltage == SEC_VOLTAGE_18 ? 0 : 1,		ttusb->tone == SEC_TONE_ON ? 1 : 0, 1, 1	};	int err;	/* SetLNB */	if ((err = ttusb_cmd(ttusb, b, sizeof(b), 0))) {		dprintk("%s: usb_bulk_msg() failed, return value %i!\n",			__func__, err);	}	return err;}static int ttusb_set_voltage(struct dvb_frontend* fe, fe_sec_voltage_t voltage){	struct ttusb* ttusb = (struct ttusb*) fe->dvb->priv;	ttusb->voltage = voltage;	return ttusb_update_lnb(ttusb);}#ifdef TTUSB_TONEstatic int ttusb_set_tone(struct dvb_frontend* fe, fe_sec_tone_mode_t tone){	struct ttusb* ttusb = (struct ttusb*) fe->dvb->priv;	ttusb->tone = tone;	return ttusb_update_lnb(ttusb);}#endif#if 0 /* keep */static void ttusb_set_led_freq(struct ttusb *ttusb, u8 freq){	u8 b[] = { 0xaa, ++ttusb->c, 0x19, 1, freq };	int err, actual_len;	err = ttusb_cmd(ttusb, b, sizeof(b), 0);	if (err) {		dprintk("%s: usb_bulk_msg() failed, return value %i!\n",			__func__, err);	}}#endif/*****************************************************************************/#ifdef TTUSB_HWSECTIONSstatic void ttusb_handle_ts_data(struct ttusb_channel *channel,				 const u8 * data, int len);static void ttusb_handle_sec_data(struct ttusb_channel *channel,				  const u8 * data, int len);#endifstatic int numpkt, numts, numstuff, numsec, numinvalid;static unsigned long lastj;static void ttusb_process_muxpack(struct ttusb *ttusb, const u8 * muxpack,			   int len){	u16 csum = 0, cc;	int i;	for (i = 0; i < len; i += 2)		csum ^= le16_to_cpup((__le16 *) (muxpack + i));	if (csum) {		printk("%s: muxpack with incorrect checksum, ignoring\n",		       __func__);		numinvalid++;		return;	}	cc = (muxpack[len - 4] << 8) | muxpack[len - 3];	cc &= 0x7FFF;	if ((cc != ttusb->cc) && (ttusb->cc != -1))		printk("%s: cc discontinuity (%d frames missing)\n",		       __func__, (cc - ttusb->cc) & 0x7FFF);	ttusb->cc = (cc + 1) & 0x7FFF;	if (muxpack[0] & 0x80) {#ifdef TTUSB_HWSECTIONS		/* section data */		int pusi = muxpack[0] & 0x40;		int channel = muxpack[0] & 0x1F;		int payload = muxpack[1];		const u8 *data = muxpack + 2;		/* check offset flag */		if (muxpack[0] & 0x20)			data++;		ttusb_handle_sec_data(ttusb->channel + channel, data,				      payload);		data += payload;		if ((!!(ttusb->muxpack[0] & 0x20)) ^		    !!(ttusb->muxpack[1] & 1))			data++;#warning TODO: pusi		printk("cc: %04x\n", (data[0] << 8) | data[1]);#endif

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区2区| 亚洲影院久久精品| 成人网在线播放| 国产精品天美传媒| 蜜桃久久久久久久| 91成人免费网站| 中文字幕av一区二区三区| 亚洲免费av高清| 国产麻豆日韩欧美久久| 大胆亚洲人体视频| 精品国产一区二区亚洲人成毛片| 99久久99久久久精品齐齐| 欧美成人免费网站| 免费高清在线视频一区·| 日本高清不卡在线观看| 国产日韩欧美一区二区三区综合| 国产丶欧美丶日本不卡视频| 精品噜噜噜噜久久久久久久久试看| 亚洲妇熟xx妇色黄| 99麻豆久久久国产精品免费优播| 国产一区二区不卡| 久久久.com| 久久99日本精品| 欧美成人福利视频| 国产成人免费av在线| 日韩久久精品一区| 香蕉av福利精品导航| 一区二区三区在线高清| 在线观看一区二区视频| 亚洲精品一二三| 在线精品视频一区二区三四| 国产一区二区主播在线| 欧美国产精品v| 成人av影视在线观看| 国产丝袜美腿一区二区三区| 国产一区二区三区高清播放| 国产欧美一区二区三区在线老狼| 国产一区二区三区在线观看精品| 久久综合中文字幕| 国产精品一区二区黑丝| 亚洲欧美视频一区| 欧美日韩国产在线观看| 午夜精品123| 欧美电影在线免费观看| 亚洲最大成人综合| 欧美日韩中文国产| 日韩av一区二区三区四区| 精品久久一区二区三区| 加勒比av一区二区| 国产精品久99| 欧美色视频在线观看| 蜜臀av性久久久久蜜臀aⅴ四虎 | 精品精品欲导航| 极品销魂美女一区二区三区| 欧美激情在线观看视频免费| 99久久亚洲一区二区三区青草| 欧美一级生活片| 99国产精品久久久久久久久久| 中文字幕在线不卡国产视频| 8v天堂国产在线一区二区| 在线亚洲免费视频| 99精品视频在线观看| 国产成人av电影在线| 麻豆成人久久精品二区三区小说| 亚洲国产精品麻豆| 亚洲欧洲制服丝袜| 国产精品视频免费| ww久久中文字幕| 精品嫩草影院久久| 91.xcao| 国产精品一区二区在线播放| 午夜精品久久久久久久 | 91国产视频在线观看| 久久99精品久久久久婷婷| 日韩av网站免费在线| 日韩精品电影在线观看| 亚洲一区二区三区小说| 亚洲精品视频自拍| 一区二区三区欧美日韩| 一区二区三区美女视频| 亚洲丝袜精品丝袜在线| 久久久久久久久一| 精品电影一区二区三区| 日韩欧美一级在线播放| 337p亚洲精品色噜噜狠狠| 欧美这里有精品| 色吧成人激情小说| 91国偷自产一区二区三区成为亚洲经典 | 中文字幕在线观看不卡视频| 国产校园另类小说区| 国产日韩成人精品| 国产欧美久久久精品影院| 亚洲国产精品精华液2区45| 国产精品久久久久影院色老大| 国产精品亲子乱子伦xxxx裸| 国产精品久久久久久户外露出 | 精品美女在线播放| 久久久精品综合| 久久精品亚洲精品国产欧美 | 欧美性大战久久久| 7777精品伊人久久久大香线蕉经典版下载 | 91麻豆产精品久久久久久| 色成年激情久久综合| 777色狠狠一区二区三区| 日韩欧美亚洲国产另类| 国产校园另类小说区| 一区二区三区在线视频免费观看| 性做久久久久久久免费看| 免费高清不卡av| 成人久久18免费网站麻豆| 91亚洲资源网| 欧美一区二区三区思思人| 日韩一区二区电影| 亚洲国产成人一区二区三区| 一区二区三区日韩精品视频| 欧美aⅴ一区二区三区视频| 国产精品一区二区久激情瑜伽| 91美女片黄在线观看91美女| 欧美午夜精品免费| 26uuu欧美日本| 一个色综合av| 国产精品一级二级三级| 日本国产一区二区| 欧美精品一区二区久久久| 亚洲欧洲99久久| 美女性感视频久久| 91久久久免费一区二区| 精品国产一区二区精华| 一区二区三区中文字幕在线观看| 麻豆成人久久精品二区三区小说| 91网上在线视频| 精品国产乱码久久久久久影片| 亚洲精品视频免费看| 激情成人综合网| 欧美制服丝袜第一页| 国产精品麻豆网站| 久久成人综合网| 欧美日韩综合一区| 中文幕一区二区三区久久蜜桃| 亚洲一区二区视频在线观看| 国产成a人亚洲精品| 精品日韩99亚洲| 日韩va亚洲va欧美va久久| 色综合色综合色综合色综合色综合 | 久久精品国产亚洲aⅴ| 91丨porny丨最新| 国产欧美精品一区二区三区四区 | 午夜电影网一区| 色综合视频在线观看| 欧美韩国日本一区| 韩国欧美国产1区| 欧美一级片在线| 丝袜美腿一区二区三区| 色婷婷av久久久久久久| 精品国产一区二区三区av性色 | 精品一区二区在线观看| 欧美日韩成人综合| 亚洲夂夂婷婷色拍ww47| 99久久国产免费看| 久久亚洲精精品中文字幕早川悠里| 亚洲午夜精品17c| 欧美中文字幕亚洲一区二区va在线 | 激情深爱一区二区| 欧美大度的电影原声| 日韩精品视频网| 欧美精品黑人性xxxx| 亚洲mv大片欧洲mv大片精品| 在线中文字幕不卡| 亚洲精品国产视频| 欧美三级中文字幕在线观看| 尤物在线观看一区| 欧美网站大全在线观看| 亚洲黄色av一区| 欧美伊人久久久久久久久影院 | 久久久久9999亚洲精品| 国产精品综合二区| 国产欧美日韩视频在线观看| 国产露脸91国语对白| 久久精品免视看| av电影在线观看不卡| 亚洲精选视频在线| 欧美久久久久久久久久| 毛片av一区二区| 久久久久久97三级| 9i看片成人免费高清| 亚洲精品第一国产综合野| 欧美三级资源在线| 捆绑调教一区二区三区| 久久久久久久久蜜桃| 成人99免费视频| 成人欧美一区二区三区视频网页| 色先锋资源久久综合| 亚洲福利一二三区| 欧美xxxxx裸体时装秀| 国产成人综合亚洲91猫咪| 69堂成人精品免费视频| 国产一区二区三区免费在线观看| 日本一区二区三级电影在线观看| 成人爽a毛片一区二区免费| 欧美精品一区二区蜜臀亚洲|