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

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

?? sound_soc_codecs_wm9712.c

?? Wolfson9712和Wolfson9705的驅動
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * wm9712.c  --  ALSA Soc WM9712 codec support * * Copyright 2006 Wolfson Microelectronics PLC. * Author: Liam Girdwood <lrg@slimlogic.co.uk> * *  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/module.h>#include <linux/kernel.h>#include <linux/device.h>#include <sound/core.h>#include <sound/pcm.h>#include <sound/ac97_codec.h>#include <sound/initval.h>#include <sound/soc.h>#include <sound/soc-dapm.h>#include "wm9712.h"#define WM9712_VERSION "0.4"static unsigned int ac97_read(struct snd_soc_codec *codec,	unsigned int reg);static int ac97_write(struct snd_soc_codec *codec,	unsigned int reg, unsigned int val);/* * WM9712 register cache */static const u16 wm9712_reg[] = {	0x6174, 0x8000, 0x8000, 0x8000, /*  6 */	0x0f0f, 0xaaa0, 0xc008, 0x6808, /*  e */	0xe808, 0xaaa0, 0xad00, 0x8000, /* 16 */	0xe808, 0x3000, 0x8000, 0x0000, /* 1e */	0x0000, 0x0000, 0x0000, 0x000f, /* 26 */	0x0405, 0x0410, 0xbb80, 0xbb80, /* 2e */	0x0000, 0xbb80, 0x0000, 0x0000, /* 36 */	0x0000, 0x2000, 0x0000, 0x0000, /* 3e */	0x0000, 0x0000, 0x0000, 0x0000, /* 46 */	0x0000, 0x0000, 0xf83e, 0xffff, /* 4e */	0x0000, 0x0000, 0x0000, 0xf83e, /* 56 */	0x0008, 0x0000, 0x0000, 0x0000, /* 5e */	0xb032, 0x3e00, 0x0000, 0x0000, /* 66 */	0x0000, 0x0000, 0x0000, 0x0000, /* 6e */	0x0000, 0x0000, 0x0000, 0x0006, /* 76 */	0x0001, 0x0000, 0x574d, 0x4c12, /* 7e */	0x0000, 0x0000 /* virtual hp mixers */};/* virtual HP mixers regs */#define HPL_MIXER	0x80#define HPR_MIXER	0x82static const char *wm9712_alc_select[] = {"None", "Left", "Right", "Stereo"};static const char *wm9712_alc_mux[] = {"Stereo", "Left", "Right", "None"};static const char *wm9712_out3_src[] = {"Left", "VREF", "Left + Right",	"Mono"};static const char *wm9712_spk_src[] = {"Speaker Mix", "Headphone Mix"};static const char *wm9712_rec_adc[] = {"Stereo", "Left", "Right", "Mute"};static const char *wm9712_base[] = {"Linear Control", "Adaptive Boost"};static const char *wm9712_rec_gain[] = {"+1.5dB Steps", "+0.75dB Steps"};static const char *wm9712_mic[] = {"Mic 1", "Differential", "Mic 2",	"Stereo"};static const char *wm9712_rec_sel[] = {"Mic", "NC", "NC", "Speaker Mixer",	"Line", "Headphone Mixer", "Phone Mixer", "Phone"};static const char *wm9712_ng_type[] = {"Constant Gain", "Mute"};static const char *wm9712_diff_sel[] = {"Mic", "Line"};static const struct soc_enum wm9712_enum[] = {SOC_ENUM_SINGLE(AC97_PCI_SVID, 14, 4, wm9712_alc_select),SOC_ENUM_SINGLE(AC97_VIDEO, 12, 4, wm9712_alc_mux),SOC_ENUM_SINGLE(AC97_AUX, 9, 4, wm9712_out3_src),SOC_ENUM_SINGLE(AC97_AUX, 8, 2, wm9712_spk_src),SOC_ENUM_SINGLE(AC97_REC_SEL, 12, 4, wm9712_rec_adc),SOC_ENUM_SINGLE(AC97_MASTER_TONE, 15, 2, wm9712_base),SOC_ENUM_DOUBLE(AC97_REC_GAIN, 14, 6, 2, wm9712_rec_gain),SOC_ENUM_SINGLE(AC97_MIC, 5, 4, wm9712_mic),SOC_ENUM_SINGLE(AC97_REC_SEL, 8, 8, wm9712_rec_sel),SOC_ENUM_SINGLE(AC97_REC_SEL, 0, 8, wm9712_rec_sel),SOC_ENUM_SINGLE(AC97_PCI_SVID, 5, 2, wm9712_ng_type),SOC_ENUM_SINGLE(0x5c, 8, 2, wm9712_diff_sel),};static const struct snd_kcontrol_new wm9712_snd_ac97_controls[] = {SOC_DOUBLE("Speaker Playback Volume", AC97_MASTER, 8, 0, 31, 1),SOC_SINGLE("Speaker Playback Switch", AC97_MASTER, 15, 1, 1),SOC_DOUBLE("Headphone Playback Volume", AC97_HEADPHONE, 8, 0, 31, 1),SOC_SINGLE("Headphone Playback Switch", AC97_HEADPHONE, 15, 1, 1),SOC_DOUBLE("PCM Playback Volume", AC97_PCM, 8, 0, 31, 1),SOC_SINGLE("Speaker Playback ZC Switch", AC97_MASTER, 7, 1, 0),SOC_SINGLE("Speaker Playback Invert Switch", AC97_MASTER, 6, 1, 0),SOC_SINGLE("Headphone Playback ZC Switch", AC97_HEADPHONE, 7, 1, 0),SOC_SINGLE("Mono Playback ZC Switch", AC97_MASTER_MONO, 7, 1, 0),SOC_SINGLE("Mono Playback Volume", AC97_MASTER_MONO, 0, 31, 1),SOC_SINGLE("Mono Playback Switch", AC97_MASTER_MONO, 15, 1, 1),SOC_SINGLE("ALC Target Volume", AC97_CODEC_CLASS_REV, 12, 15, 0),SOC_SINGLE("ALC Hold Time", AC97_CODEC_CLASS_REV, 8, 15, 0),SOC_SINGLE("ALC Decay Time", AC97_CODEC_CLASS_REV, 4, 15, 0),SOC_SINGLE("ALC Attack Time", AC97_CODEC_CLASS_REV, 0, 15, 0),SOC_ENUM("ALC Function", wm9712_enum[0]),SOC_SINGLE("ALC Max Volume", AC97_PCI_SVID, 11, 7, 0),SOC_SINGLE("ALC ZC Timeout", AC97_PCI_SVID, 9, 3, 1),SOC_SINGLE("ALC ZC Switch", AC97_PCI_SVID, 8, 1, 0),SOC_SINGLE("ALC NG Switch", AC97_PCI_SVID, 7, 1, 0),SOC_ENUM("ALC NG Type", wm9712_enum[10]),SOC_SINGLE("ALC NG Threshold", AC97_PCI_SVID, 0, 31, 1),SOC_SINGLE("Mic Headphone  Volume", AC97_VIDEO, 12, 7, 1),SOC_SINGLE("ALC Headphone Volume", AC97_VIDEO, 7, 7, 1),SOC_SINGLE("Out3 Switch", AC97_AUX, 15, 1, 1),SOC_SINGLE("Out3 ZC Switch", AC97_AUX, 7, 1, 1),SOC_SINGLE("Out3 Volume", AC97_AUX, 0, 31, 1),SOC_SINGLE("PCBeep Bypass Headphone Volume", AC97_PC_BEEP, 12, 7, 1),SOC_SINGLE("PCBeep Bypass Speaker Volume", AC97_PC_BEEP, 8, 7, 1),SOC_SINGLE("PCBeep Bypass Phone Volume", AC97_PC_BEEP, 4, 7, 1),SOC_SINGLE("Aux Playback Headphone Volume", AC97_CD, 12, 7, 1),SOC_SINGLE("Aux Playback Speaker Volume", AC97_CD, 8, 7, 1),SOC_SINGLE("Aux Playback Phone Volume", AC97_CD, 4, 7, 1),SOC_SINGLE("Phone Volume", AC97_PHONE, 0, 15, 1),SOC_DOUBLE("Line Capture Volume", AC97_LINE, 8, 0, 31, 1),SOC_SINGLE("Capture 20dB Boost Switch", AC97_REC_SEL, 14, 1, 0),SOC_SINGLE("Capture to Phone 20dB Boost Switch", AC97_REC_SEL, 11, 1, 1),SOC_SINGLE("3D Upper Cut-off Switch", AC97_3D_CONTROL, 5, 1, 1),SOC_SINGLE("3D Lower Cut-off Switch", AC97_3D_CONTROL, 4, 1, 1),SOC_SINGLE("3D Playback Volume", AC97_3D_CONTROL, 0, 15, 0),SOC_ENUM("Bass Control", wm9712_enum[5]),SOC_SINGLE("Bass Cut-off Switch", AC97_MASTER_TONE, 12, 1, 1),SOC_SINGLE("Tone Cut-off Switch", AC97_MASTER_TONE, 4, 1, 1),SOC_SINGLE("Playback Attenuate (-6dB) Switch", AC97_MASTER_TONE, 6, 1, 0),SOC_SINGLE("Bass Volume", AC97_MASTER_TONE, 8, 15, 1),SOC_SINGLE("Treble Volume", AC97_MASTER_TONE, 0, 15, 1),SOC_SINGLE("Capture ADC Switch", AC97_REC_GAIN, 15, 1, 1),SOC_ENUM("Capture Volume Steps", wm9712_enum[6]),SOC_DOUBLE("Capture Volume", AC97_REC_GAIN, 8, 0, 63, 1),SOC_SINGLE("Capture ZC Switch", AC97_REC_GAIN, 7, 1, 0),SOC_SINGLE("Mic 1 Volume", AC97_MIC, 8, 31, 1),SOC_SINGLE("Mic 2 Volume", AC97_MIC, 0, 31, 1),SOC_SINGLE("Mic 20dB Boost Switch", AC97_MIC, 7, 1, 0),};/* We have to create a fake left and right HP mixers because * the codec only has a single control that is shared by both channels. * This makes it impossible to determine the audio path. */static int mixer_event(struct snd_soc_dapm_widget *w,	struct snd_kcontrol *k, int event){	u16 l, r, beep, line, phone, mic, pcm, aux;	l = ac97_read(w->codec, HPL_MIXER);	r = ac97_read(w->codec, HPR_MIXER);	beep = ac97_read(w->codec, AC97_PC_BEEP);	mic = ac97_read(w->codec, AC97_VIDEO);	phone = ac97_read(w->codec, AC97_PHONE);	line = ac97_read(w->codec, AC97_LINE);	pcm = ac97_read(w->codec, AC97_PCM);	aux = ac97_read(w->codec, AC97_CD);	if (l & 0x1 || r & 0x1)		ac97_write(w->codec, AC97_VIDEO, mic & 0x7fff);	else		ac97_write(w->codec, AC97_VIDEO, mic | 0x8000);	if (l & 0x2 || r & 0x2)		ac97_write(w->codec, AC97_PCM, pcm & 0x7fff);	else		ac97_write(w->codec, AC97_PCM, pcm | 0x8000);	if (l & 0x4 || r & 0x4)		ac97_write(w->codec, AC97_LINE, line & 0x7fff);	else		ac97_write(w->codec, AC97_LINE, line | 0x8000);	if (l & 0x8 || r & 0x8)		ac97_write(w->codec, AC97_PHONE, phone & 0x7fff);	else		ac97_write(w->codec, AC97_PHONE, phone | 0x8000);	if (l & 0x10 || r & 0x10)		ac97_write(w->codec, AC97_CD, aux & 0x7fff);	else		ac97_write(w->codec, AC97_CD, aux | 0x8000);	if (l & 0x20 || r & 0x20)		ac97_write(w->codec, AC97_PC_BEEP, beep & 0x7fff);	else		ac97_write(w->codec, AC97_PC_BEEP, beep | 0x8000);	return 0;}/* Left Headphone Mixers */static const struct snd_kcontrol_new wm9712_hpl_mixer_controls[] = {	SOC_DAPM_SINGLE("PCBeep Bypass Switch", HPL_MIXER, 5, 1, 0),	SOC_DAPM_SINGLE("Aux Playback Switch", HPL_MIXER, 4, 1, 0),	SOC_DAPM_SINGLE("Phone Bypass Switch", HPL_MIXER, 3, 1, 0),	SOC_DAPM_SINGLE("Line Bypass Switch", HPL_MIXER, 2, 1, 0),	SOC_DAPM_SINGLE("PCM Playback Switch", HPL_MIXER, 1, 1, 0),	SOC_DAPM_SINGLE("Mic Sidetone Switch", HPL_MIXER, 0, 1, 0),};/* Right Headphone Mixers */static const struct snd_kcontrol_new wm9712_hpr_mixer_controls[] = {	SOC_DAPM_SINGLE("PCBeep Bypass Switch", HPR_MIXER, 5, 1, 0),	SOC_DAPM_SINGLE("Aux Playback Switch", HPR_MIXER, 4, 1, 0),	SOC_DAPM_SINGLE("Phone Bypass Switch", HPR_MIXER, 3, 1, 0),	SOC_DAPM_SINGLE("Line Bypass Switch", HPR_MIXER, 2, 1, 0),	SOC_DAPM_SINGLE("PCM Playback Switch", HPR_MIXER, 1, 1, 0),	SOC_DAPM_SINGLE("Mic Sidetone Switch", HPR_MIXER, 0, 1, 0),};/* Speaker Mixer */static const struct snd_kcontrol_new wm9712_speaker_mixer_controls[] = {	SOC_DAPM_SINGLE("PCBeep Bypass Switch", AC97_PC_BEEP, 11, 1, 1),	SOC_DAPM_SINGLE("Aux Playback Switch", AC97_CD, 11, 1, 1),	SOC_DAPM_SINGLE("Phone Bypass Switch", AC97_PHONE, 14, 1, 1),	SOC_DAPM_SINGLE("Line Bypass Switch", AC97_LINE, 14, 1, 1),	SOC_DAPM_SINGLE("PCM Playback Switch", AC97_PCM, 14, 1, 1),};/* Phone Mixer */static const struct snd_kcontrol_new wm9712_phone_mixer_controls[] = {	SOC_DAPM_SINGLE("PCBeep Bypass Switch", AC97_PC_BEEP, 7, 1, 1),	SOC_DAPM_SINGLE("Aux Playback Switch", AC97_CD, 7, 1, 1),	SOC_DAPM_SINGLE("Line Bypass Switch", AC97_LINE, 13, 1, 1),	SOC_DAPM_SINGLE("PCM Playback Switch", AC97_PCM, 13, 1, 1),	SOC_DAPM_SINGLE("Mic 1 Sidetone Switch", AC97_MIC, 14, 1, 1),	SOC_DAPM_SINGLE("Mic 2 Sidetone Switch", AC97_MIC, 13, 1, 1),};/* ALC headphone mux */static const struct snd_kcontrol_new wm9712_alc_mux_controls =SOC_DAPM_ENUM("Route", wm9712_enum[1]);/* out 3 mux */static const struct snd_kcontrol_new wm9712_out3_mux_controls =SOC_DAPM_ENUM("Route", wm9712_enum[2]);/* spk mux */static const struct snd_kcontrol_new wm9712_spk_mux_controls =SOC_DAPM_ENUM("Route", wm9712_enum[3]);/* Capture to Phone mux */static const struct snd_kcontrol_new wm9712_capture_phone_mux_controls =SOC_DAPM_ENUM("Route", wm9712_enum[4]);/* Capture left select */static const struct snd_kcontrol_new wm9712_capture_selectl_controls =SOC_DAPM_ENUM("Route", wm9712_enum[8]);/* Capture right select */static const struct snd_kcontrol_new wm9712_capture_selectr_controls =SOC_DAPM_ENUM("Route", wm9712_enum[9]);/* Mic select */static const struct snd_kcontrol_new wm9712_mic_src_controls =SOC_DAPM_ENUM("Route", wm9712_enum[7]);/* diff select */static const struct snd_kcontrol_new wm9712_diff_sel_controls =SOC_DAPM_ENUM("Route", wm9712_enum[11]);static const struct snd_soc_dapm_widget wm9712_dapm_widgets[] = {SND_SOC_DAPM_MUX("ALC Sidetone Mux", SND_SOC_NOPM, 0, 0,	&wm9712_alc_mux_controls),SND_SOC_DAPM_MUX("Out3 Mux", SND_SOC_NOPM, 0, 0,	&wm9712_out3_mux_controls),SND_SOC_DAPM_MUX("Speaker Mux", SND_SOC_NOPM, 0, 0,	&wm9712_spk_mux_controls),SND_SOC_DAPM_MUX("Capture Phone Mux", SND_SOC_NOPM, 0, 0,	&wm9712_capture_phone_mux_controls),SND_SOC_DAPM_MUX("Left Capture Select", SND_SOC_NOPM, 0, 0,	&wm9712_capture_selectl_controls),SND_SOC_DAPM_MUX("Right Capture Select", SND_SOC_NOPM, 0, 0,	&wm9712_capture_selectr_controls),SND_SOC_DAPM_MUX("Mic Select Source", SND_SOC_NOPM, 0, 0,	&wm9712_mic_src_controls),SND_SOC_DAPM_MUX("Differential Source", SND_SOC_NOPM, 0, 0,	&wm9712_diff_sel_controls),SND_SOC_DAPM_MIXER("AC97 Mixer", SND_SOC_NOPM, 0, 0, NULL, 0),SND_SOC_DAPM_MIXER_E("Left HP Mixer", AC97_INT_PAGING, 9, 1,	&wm9712_hpl_mixer_controls[0], ARRAY_SIZE(wm9712_hpl_mixer_controls),	mixer_event, SND_SOC_DAPM_POST_REG),SND_SOC_DAPM_MIXER_E("Right HP Mixer", AC97_INT_PAGING, 8, 1,	&wm9712_hpr_mixer_controls[0], ARRAY_SIZE(wm9712_hpr_mixer_controls),	 mixer_event, SND_SOC_DAPM_POST_REG),SND_SOC_DAPM_MIXER("Phone Mixer", AC97_INT_PAGING, 6, 1,	&wm9712_phone_mixer_controls[0], ARRAY_SIZE(wm9712_phone_mixer_controls)),SND_SOC_DAPM_MIXER("Speaker Mixer", AC97_INT_PAGING, 7, 1,	&wm9712_speaker_mixer_controls[0],	ARRAY_SIZE(wm9712_speaker_mixer_controls)),SND_SOC_DAPM_MIXER("Mono Mixer", SND_SOC_NOPM, 0, 0, NULL, 0),SND_SOC_DAPM_DAC("Left DAC", "Left HiFi Playback", AC97_INT_PAGING, 14, 1),SND_SOC_DAPM_DAC("Right DAC", "Right HiFi Playback", AC97_INT_PAGING, 13, 1),SND_SOC_DAPM_DAC("Aux DAC", "Aux Playback", SND_SOC_NOPM, 0, 0),SND_SOC_DAPM_ADC("Left ADC", "Left HiFi Capture", AC97_INT_PAGING, 12, 1),SND_SOC_DAPM_ADC("Right ADC", "Right HiFi Capture", AC97_INT_PAGING, 11, 1),SND_SOC_DAPM_PGA("Headphone PGA", AC97_INT_PAGING, 4, 1, NULL, 0),SND_SOC_DAPM_PGA("Speaker PGA", AC97_INT_PAGING, 3, 1, NULL, 0),SND_SOC_DAPM_PGA("Out 3 PGA", AC97_INT_PAGING, 5, 1, NULL, 0),SND_SOC_DAPM_PGA("Line PGA", AC97_INT_PAGING, 2, 1, NULL, 0),SND_SOC_DAPM_PGA("Phone PGA", AC97_INT_PAGING, 1, 1, NULL, 0),SND_SOC_DAPM_PGA("Mic PGA", AC97_INT_PAGING, 0, 1, NULL, 0),SND_SOC_DAPM_MICBIAS("Mic Bias", AC97_INT_PAGING, 10, 1),SND_SOC_DAPM_OUTPUT("MONOOUT"),SND_SOC_DAPM_OUTPUT("HPOUTL"),SND_SOC_DAPM_OUTPUT("HPOUTR"),SND_SOC_DAPM_OUTPUT("LOUT2"),SND_SOC_DAPM_OUTPUT("ROUT2"),SND_SOC_DAPM_OUTPUT("OUT3"),SND_SOC_DAPM_INPUT("LINEINL"),SND_SOC_DAPM_INPUT("LINEINR"),SND_SOC_DAPM_INPUT("PHONE"),SND_SOC_DAPM_INPUT("PCBEEP"),SND_SOC_DAPM_INPUT("MIC1"),SND_SOC_DAPM_INPUT("MIC2"),};static const struct snd_soc_dapm_route audio_map[] = {	/* virtual mixer - mixes left & right channels for spk and mono */	{"AC97 Mixer", NULL, "Left DAC"},	{"AC97 Mixer", NULL, "Right DAC"},	/* Left HP mixer */	{"Left HP Mixer", "PCBeep Bypass Switch", "PCBEEP"},	{"Left HP Mixer", "Aux Playback Switch",  "Aux DAC"},	{"Left HP Mixer", "Phone Bypass Switch",  "Phone PGA"},	{"Left HP Mixer", "Line Bypass Switch",   "Line PGA"},	{"Left HP Mixer", "PCM Playback Switch",  "Left DAC"},	{"Left HP Mixer", "Mic Sidetone Switch",  "Mic PGA"},	{"Left HP Mixer", NULL,  "ALC Sidetone Mux"},	/* Right HP mixer */	{"Right HP Mixer", "PCBeep Bypass Switch", "PCBEEP"},	{"Right HP Mixer", "Aux Playback Switch",  "Aux DAC"},	{"Right HP Mixer", "Phone Bypass Switch",  "Phone PGA"},	{"Right HP Mixer", "Line Bypass Switch",   "Line PGA"},	{"Right HP Mixer", "PCM Playback Switch",  "Right DAC"},	{"Right HP Mixer", "Mic Sidetone Switch",  "Mic PGA"},	{"Right HP Mixer", NULL,  "ALC Sidetone Mux"},	/* speaker mixer */	{"Speaker Mixer", "PCBeep Bypass Switch", "PCBEEP"},	{"Speaker Mixer", "Line Bypass Switch",   "Line PGA"},	{"Speaker Mixer", "PCM Playback Switch",  "AC97 Mixer"},	{"Speaker Mixer", "Phone Bypass Switch",  "Phone PGA"},	{"Speaker Mixer", "Aux Playback Switch",  "Aux DAC"},	/* Phone mixer */	{"Phone Mixer", "PCBeep Bypass Switch",  "PCBEEP"},	{"Phone Mixer", "Line Bypass Switch",    "Line PGA"},	{"Phone Mixer", "Aux Playback Switch",   "Aux DAC"},	{"Phone Mixer", "PCM Playback Switch",   "AC97 Mixer"},	{"Phone Mixer", "Mic 1 Sidetone Switch", "Mic PGA"},	{"Phone Mixer", "Mic 2 Sidetone Switch", "Mic PGA"},	/* inputs */	{"Line PGA", NULL, "LINEINL"},

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品1区2区3区| 蜜桃视频一区二区| 亚洲福中文字幕伊人影院| 久色婷婷小香蕉久久| 91在线观看视频| 日韩欧美中文字幕制服| 一区二区三区在线播| 国产麻豆精品在线观看| 8x8x8国产精品| 亚洲精品亚洲人成人网在线播放| 国产一区二区精品久久91| 欧美日韩二区三区| 亚洲精品视频免费观看| 国产成人精品免费视频网站| 日韩精品一区在线观看| 亚洲乱码精品一二三四区日韩在线| 激情综合网av| 日韩视频在线永久播放| 亚洲一二三区视频在线观看| 成人免费毛片片v| 国产欧美一区二区精品婷婷| 琪琪一区二区三区| 欧美日韩国产不卡| 亚洲福利一区二区三区| 色欧美片视频在线观看| 亚洲三级电影全部在线观看高清| 国产精品亚洲一区二区三区在线| 精品日韩一区二区三区| 日韩福利电影在线观看| 555夜色666亚洲国产免| 性久久久久久久| 欧美精品tushy高清| 丝袜诱惑制服诱惑色一区在线观看| 在线中文字幕一区二区| 亚洲综合免费观看高清在线观看| 色一情一伦一子一伦一区| 伊人开心综合网| 欧洲国产伦久久久久久久| 夜夜嗨av一区二区三区| 欧美日韩专区在线| 日本特黄久久久高潮| 日韩欧美色电影| 国产呦萝稀缺另类资源| 国产三级一区二区三区| 99re亚洲国产精品| 亚洲精品视频观看| 欧美高清激情brazzers| 美女网站色91| 中文字幕欧美三区| 欧美电视剧在线看免费| 另类的小说在线视频另类成人小视频在线| 欧美一级免费观看| 久久成人免费电影| 国产精品午夜免费| 色婷婷亚洲精品| 日韩国产精品久久久久久亚洲| 日韩免费福利电影在线观看| 粉嫩高潮美女一区二区三区 | 日本韩国视频一区二区| 亚洲韩国一区二区三区| 日韩精品一区二区三区swag | 视频一区欧美日韩| 日韩精品资源二区在线| 成人高清伦理免费影院在线观看| 亚洲精品免费在线观看| 日韩一区二区视频| 成人免费av在线| 夜夜嗨av一区二区三区四季av| 日韩美女视频一区二区在线观看| 成人综合在线观看| 日韩激情一区二区| 亚洲欧洲av一区二区三区久久| 日本不卡的三区四区五区| 久久成人免费日本黄色| 国产欧美日产一区| 欧美色窝79yyyycom| 久久av老司机精品网站导航| 亚洲人精品一区| 欧美成人一区二区三区片免费| 成熟亚洲日本毛茸茸凸凹| 婷婷中文字幕综合| 国产精品久久免费看| 日韩欧美一级二级三级久久久| 99热精品国产| 国产一区二区三区免费| 午夜成人在线视频| 亚洲人成人一区二区在线观看| 樱花影视一区二区| 精品国产乱码久久久久久图片| 色综合久久88色综合天天6 | 91精彩视频在线| 国产精品一二三四| 免费视频最近日韩| 久久天堂av综合合色蜜桃网 | 欧美久久久一区| 成人av免费在线观看| 久久精品国产成人一区二区三区| 亚洲图片有声小说| 亚洲欧美国产77777| 国产女主播一区| 精品国精品自拍自在线| 91精品国产色综合久久不卡电影| 99久久亚洲一区二区三区青草| 激情综合网av| 久久草av在线| 欧美aaaaa成人免费观看视频| 亚洲成人在线网站| 亚洲综合免费观看高清完整版在线 | 欧美一区日韩一区| 欧美日韩国产天堂| 欧美中文字幕一二三区视频| 国产传媒日韩欧美成人| 欧美精品乱码久久久久久| 91麻豆国产精品久久| 丰满少妇久久久久久久| 国产69精品一区二区亚洲孕妇 | 亚洲欧美另类久久久精品| 国产精品免费人成网站| 国产精品国产自产拍在线| 国产亚洲女人久久久久毛片| 久久九九全国免费| 精品免费日韩av| 国产欧美一区二区三区网站| 国产色产综合色产在线视频| 欧美激情一区二区三区在线| 中文一区二区在线观看| 亚洲欧美怡红院| 一区二区欧美视频| 欧美aaaaa成人免费观看视频| 久久激情五月婷婷| 国产资源在线一区| 不卡影院免费观看| 日本道在线观看一区二区| 欧美日韩国产色站一区二区三区| 3d动漫精品啪啪一区二区竹菊| 欧美一卡2卡3卡4卡| 日韩免费观看2025年上映的电影| 欧美成人精品高清在线播放| 国产婷婷色一区二区三区在线| 国产精品久久久久久一区二区三区| 亚洲欧美日韩中文播放| 肉丝袜脚交视频一区二区| 黑人精品欧美一区二区蜜桃| 97久久精品人人澡人人爽| 欧美日韩高清影院| 26uuu欧美日本| 亚洲天堂免费在线观看视频| 免费成人av在线播放| 岛国av在线一区| 69精品人人人人| 欧美激情一区二区三区不卡| 亚欧色一区w666天堂| 国产自产v一区二区三区c| 色综合色综合色综合| 欧美sm极限捆绑bd| 亚洲精品免费在线播放| 精品一区二区国语对白| 日本高清视频一区二区| 亚洲精品一区二区三区精华液| 亚洲精品综合在线| 国产美女在线观看一区| 欧美色图第一页| 国产无人区一区二区三区| 亚洲福利国产精品| 99麻豆久久久国产精品免费| 日韩视频免费观看高清完整版| 国产精品理伦片| 成人动漫视频在线| 欧美欧美午夜aⅴ在线观看| 国产日韩欧美在线一区| 青娱乐精品视频在线| 色系网站成人免费| 国产清纯白嫩初高生在线观看91 | 国产精品你懂的在线欣赏| 日韩成人免费看| 91国偷自产一区二区开放时间| 久久久亚洲高清| 日韩av电影免费观看高清完整版| 91在线视频观看| 国产日本欧洲亚洲| 狠狠狠色丁香婷婷综合激情| 91麻豆精品国产91久久久使用方法 | 国产精品一线二线三线精华| 欧美丰满美乳xxx高潮www| 亚洲美女在线一区| 99精品国产91久久久久久| 国产亚洲1区2区3区| 麻豆国产精品视频| 欧美一区二区成人6969| 日韩精品五月天| 欧美丝袜丝nylons| 亚洲国产视频一区二区| 日本韩国欧美在线| 亚洲黄色av一区| 色播五月激情综合网| 一区二区三区免费| 在线观看日韩av先锋影音电影院| 亚洲女同女同女同女同女同69| 丁香另类激情小说| 国产精品久久久爽爽爽麻豆色哟哟|