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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? lcd_drv_org.c

?? 一個(gè)模擬可種嵌入開發(fā)環(huán)境的模擬軟件.能模擬ARM系列等.
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/fs.h>
#include <linux/delay.h>
#include <linux/slab.h>
#include <asm/fcntl.h>
#include <asm/unistd.h>
#include <asm/io.h>
#include <asm/uaccess.h>

#include "ep7312_sys.h"
#include "lcd_struct.h"

// ioctl 命令I(lǐng)D
#define LCD_Clear			0

#define LCD_Draw_Pixel		1
#define LCD_Draw_VLine		2
#define LCD_Draw_HLine		3
#define LCD_Draw_Rectangle	4

#define LCD_Write_EN		10
#define LCD_Write_CN		11

#define LCD_Save_SCR		12
#define LCD_Load_SCR		13
#define LCD_Release_SCR		14

// 定義LCD的主設(shè)備號(hào)
#define DEV_MAJOR			60

// 定義LCD顯示模式參數(shù)
#define SCR_X				160		/* LCD屏幕寬度 */
#define SCR_Y				160		/* LCD屏幕高度 */
//#define SCR_X				320		/* LCD屏幕寬度 */
//#define SCR_Y				240		/* LCD屏幕高度 */

//#define BPP					32		/* LCD顯示模式 */
//#define BPP					16		/* LCD顯示模式 */
//#define BPP					24		/* LCD顯示模式 */
//#define BPP					8		/* LCD顯示模式 */
//#define BPP					4		/* LCD顯示模式 */
//#define BPP					2		/* LCD顯示模式 */
#define BPP					1		/* LCD顯示模式 */

// 半字節(jié)復(fù)制標(biāo)志
#define LowS				0		/* 取字節(jié)低四位標(biāo)志 */
#define HighS				1		/* 取字節(jié)高四位標(biāo)志 */

// LCD顯示緩存的基址
static unsigned char * __lcd_base;


/* 設(shè)置LCD寄存器 */
static void setup_lcd(void)
{
	// 禁用LCD設(shè)備
	SYSCON1 &= ~0x00001000;
      
	// 設(shè)置LCD控制寄存器
	// 顯示緩存容量[0:12]	: 320 * 240 * 12 / (8*16) = 0x1c1f
	// 線長度[13:18]		: 320 / 16 - 1 = 0x13
	// 像素預(yù)定標(biāo)[19:24]	: 0x01
	// AC預(yù)定標(biāo)[25:29]		: 0x13
	// 灰度使能[30]			: = 1, 使用灰度級(jí)顯示
	// 灰度級(jí)模式[31]		: = 1, 4 bpp模式(16灰度級(jí))
	//LCDCON = 0xe60f7c1f;
//	 LCDCON = 0xe60a7c1f;  //320*720


 //       	 LCDCON =0xe60a6257; //320x240x1
//        	 LCDCON =0xe60a64af; //320x240x2
	LCDCON =0xe60920c8; //160x160x1
         
         printk("\n[test by ywc] lcd driver:LCDCON address=%p",&LCDCON);
 //        LCDCON =0xe60a695f; //320x240x4
//         LCDCON =0xe60a72bf;  //320x240x8


//        LCDCON =0xe60a72bf;  //320x240x16/(8*32)

 //        LCDCON =0xe60a7c1f;  //320x240x24/(8*32)

//         LCDCON =0xe60a72bf;  //320x240x32/(8*64)
         
         
	// 設(shè)置調(diào)色板顏色寄存器的低位和高位有效字
	PALLSW = 0x76543210;	/* 低位有效字 */
	PALMSW = 0xfedcba98;	/* 高位有效字 */

	// 設(shè)置LCD顯示緩沖區(qū)在系統(tǒng)存儲(chǔ)區(qū)域的起始位置
	FBADDR = 0xc;

	// 啟用LCD設(shè)備
	SYSCON1 |= 0x00001000;
	return;
}

// 限制橫坐標(biāo)范圍
// 使橫坐標(biāo)在0至SCR_X之間
static int xFormat(int x)
{
	int fx;

	fx = x;
	fx = (fx < 0) ? 0 : fx;
	fx = (fx >= SCR_X) ? (SCR_X - 1) : fx;

	return fx;
}

// 限制縱坐標(biāo)范圍
// 使縱坐標(biāo)在0至SCR_Y之間
static int yFormat(int y)
{
	int fy;

	fy = y;
	fy = (fy < 0) ? 0 : fy;
	fy = (fy >= SCR_Y) ? (SCR_Y - 1) : fy;

	return fy;
}

// 釋放保存屏幕緩沖區(qū)
static void lcd_kernel_release_screen(struct save_struct * buffer)
{
	if ((*buffer).save_buf != NULL)
	{
		// 釋放緩沖區(qū)
		kfree((*buffer).save_buf);
		// 恢復(fù)緩沖區(qū)初始化設(shè)置
		(*buffer).save_buf = NULL;
		(*buffer).save_w = (*buffer).save_h = 0;
	}
}

// 保存屏幕部分區(qū)域的內(nèi)容
static void lcd_kernel_save_screen(int x1, int y1, int x2, int y2, struct save_struct * buffer)
{
	unsigned char * fb_lptr;		/* 每行第一個(gè)點(diǎn)的顯存地址 */
	unsigned char bufferByte;		/* 臨時(shí)緩存字節(jié) */
	long buffer_size;				/* 保存屏幕緩沖區(qū)的字節(jié)數(shù) */
	int factorCount;				/* 每行需要存取的半字節(jié)的個(gè)數(shù) */
	int sb_sign, fb_sign;			/* 半字節(jié)復(fù)制標(biāo)志, = LowS: 復(fù)制低四位, = HighS: 復(fù)制高四位*/
	int p_sb;						/* 保存屏幕緩沖區(qū)指針偏移量 */
	int p_fb;						/* 顯示緩沖區(qū)指針偏移量 */
	int currLine;					/* 當(dāng)前行的縱坐標(biāo) */
	int tmp, i;

	// 修正保存范圍坐標(biāo), 使其在屏幕的顯示范圍之內(nèi)
	x1 = xFormat(x1);
	x2 = xFormat(x2);
	y1 = yFormat(y1);
	y2 = yFormat(y2);

	// 修正保存范圍的橫坐標(biāo), 使x2值永遠(yuǎn)大于x1的值
	if (x1 > x2)
	{
		tmp = x1;
		x1 = x2;
		x2 = tmp;
	}

	// 修正保存范圍的縱坐標(biāo), 使y2值永遠(yuǎn)大于y1的值
	if (y1 > y2)
	{
		tmp = y1;
		y1 = y2;
		y2 = tmp;
	}

	// 計(jì)算新保存的屏幕的寬度和高度
	(*buffer).save_w = x2 - x1 + 1;
	(*buffer).save_h = y2 - y1 + 1;
	// 計(jì)算新緩沖區(qū)大小
	buffer_size = (*buffer).save_w * (*buffer).save_h * 3 * BPP / 8 + 1;
	// 申請(qǐng)新的屏幕緩沖區(qū)
	(*buffer).save_buf = kmalloc(buffer_size, GFP_KERNEL);

	// 初始化保存屏幕半字節(jié)復(fù)制標(biāo)志
	sb_sign = LowS;
	// 計(jì)算每行中半字節(jié)的個(gè)數(shù)
	factorCount = (*buffer).save_w * 3;
	// 初始化屏幕緩沖區(qū)指針偏移量
	p_sb = 0;

	// 復(fù)制顯存的內(nèi)容到保存屏幕緩沖區(qū)中
	for (currLine = y1; currLine <= y2; currLine++)
	{
		// 計(jì)算當(dāng)前行第一個(gè)點(diǎn)的顯存地址
		fb_lptr = __lcd_base + (x1 + currLine * SCR_X) * 3 * BPP / 8;
		// 初始化顯存半字節(jié)復(fù)制標(biāo)志
		fb_sign = (x1 & 0x1);
		// 初始化顯示緩沖區(qū)指針偏移量
		p_fb = 0;

		// 復(fù)制顯存當(dāng)前行的內(nèi)容
		for (i = 0; i < factorCount; i++)
		{
			// 臨時(shí)緩沖字節(jié)清零
			bufferByte &= 0x00;

			// 根據(jù)顯存半字節(jié)復(fù)制標(biāo)志, 將顯存中當(dāng)前字節(jié)的內(nèi)容的低四位(或高四位)
			// 復(fù)制到臨時(shí)緩沖字節(jié)的低四位中
			if (fb_sign == LowS)
				bufferByte = (fb_lptr[p_fb] & 0x0f);
			else
				bufferByte = (fb_lptr[p_fb] & 0xf0) >> 4;

			// 根據(jù)保存屏幕緩沖區(qū)半字節(jié)復(fù)制標(biāo)志, 
			// 對(duì)保存屏幕緩沖區(qū)當(dāng)前字節(jié)中相應(yīng)的四位清零;
			// 如果是要復(fù)制高四位的內(nèi)容, 
			// 還要將臨時(shí)緩沖字節(jié)的低四位內(nèi)容移到高四位中
			if (sb_sign == HighS)
			{
				(*buffer).save_buf[p_sb] &= 0x0f;
				bufferByte = bufferByte << 4;
			}
			else
				(*buffer).save_buf[p_sb] &= 0xf0;

			// 用臨時(shí)緩沖字節(jié)更新保存屏幕緩沖區(qū)的當(dāng)前字節(jié)
			(*buffer).save_buf[p_sb] |= bufferByte;

			// 根據(jù)半字節(jié)復(fù)制標(biāo)志, 設(shè)置相應(yīng)的指針偏移量
			if (fb_sign == HighS)
				p_fb++;
			if (sb_sign == HighS)
				p_sb++;

			// 更新半字節(jié)復(fù)制標(biāo)志
			sb_sign ^= 0x1;			
			fb_sign ^= 0x1;			
		}
	}
}

// 加載屏幕部分區(qū)域的內(nèi)容
static void lcd_kernel_load_screen(int x1, int y1, struct save_struct buffer)
{
	unsigned char * fb_lptr;		/* 每行第一個(gè)點(diǎn)的顯存地址 */
	unsigned char bufferByte;		/* 臨時(shí)緩存字節(jié) */
	int factorCount;				/* 每行需要存取的半字節(jié)的個(gè)數(shù) */
	int sb_sign, fb_sign;			/* 半字節(jié)復(fù)制標(biāo)志, = LowS: 復(fù)制低四位, = HighS: 復(fù)制高四位*/
	int p_sb;						/* 保存屏幕緩沖區(qū)指針偏移量 */
	int p_fb;						/* 顯示緩沖區(qū)指針偏移量 */
	int x2, y2;						/* 加載區(qū)域右下角的坐標(biāo) */
	int currLine;					/* 當(dāng)前行的縱坐標(biāo) */
	int i;

	// 修正加載范圍坐標(biāo), 使其在屏幕的顯示范圍之內(nèi)
	x1 = xFormat(x1);
	y1 = xFormat(y1);

	// 計(jì)算加載范圍右下角的坐標(biāo)
	x2 = x1 + buffer.save_w - 1;
	y2 = y1 + buffer.save_h - 1;

	// 如果加載范圍超出屏幕的顯示范圍
	// 則不作任何操作返回
	if (x2 >= SCR_X || y2 >= SCR_Y)
	{
		printk(KERN_INFO "Load position out of screen boundary!\n");

		return;
	}

	// 如果尚未執(zhí)行保存屏幕的操作,
	// 則不作任何操作返回
	if (buffer.save_buf == NULL)
	{
		printk(KERN_INFO "No Saved Screen!\n");

		return;
	}

	// 初始化保存屏幕半字節(jié)復(fù)制標(biāo)志
	sb_sign = LowS;
	// 計(jì)算每行中半字節(jié)的個(gè)數(shù)
	factorCount = buffer.save_w * 3;
	// 初始化屏幕緩沖區(qū)指針偏移量
	p_sb = 0;

	// 加載保存屏幕緩沖區(qū)的內(nèi)容到顯存中
	for (currLine = y1; currLine <= y2; currLine++)
	{
		// 計(jì)算當(dāng)前行第一個(gè)點(diǎn)的顯存地址
		fb_lptr = __lcd_base + (x1 + currLine * SCR_X) * 3 * BPP / 8;
		// 初始化顯存半字節(jié)復(fù)制標(biāo)志
		fb_sign = (x1 & 0x1);
		// 初始化顯示緩沖區(qū)指針偏移量
		p_fb = 0;

		// 加載當(dāng)行的內(nèi)容到顯存中
		for (i = 0; i < factorCount; i++)
		{
			// 臨時(shí)緩沖字節(jié)清零
			bufferByte &= 0x00;

			// 根據(jù)保存屏幕半字節(jié)復(fù)制標(biāo)志, 將保存屏幕緩沖區(qū)中
			// 當(dāng)前字節(jié)的內(nèi)容的低四位(或高四位)
			// 復(fù)制到臨時(shí)緩沖字節(jié)的低四位中
			if (sb_sign == LowS)
				bufferByte = (buffer.save_buf[p_sb] & 0x0f);
			else
				bufferByte = (buffer.save_buf[p_sb] & 0xf0) >> 4;

			// 根據(jù)顯存半字節(jié)復(fù)制標(biāo)志, 
			// 對(duì)顯存當(dāng)前字節(jié)中相應(yīng)的四位清零;
			// 如果是要復(fù)制高四位的內(nèi)容, 
			// 還要將臨時(shí)緩沖字節(jié)的低四位內(nèi)容移到高四位中
			if (fb_sign == HighS)
			{
				fb_lptr[p_fb] &= 0x0f;
				bufferByte = bufferByte << 4;
			}
			else
				fb_lptr[p_fb] &= 0xf0;

			// 用臨時(shí)緩沖字節(jié)更新顯存內(nèi)容
			fb_lptr[p_fb] |= bufferByte;


			// 根據(jù)半字節(jié)復(fù)制標(biāo)志, 設(shè)置相應(yīng)的指針偏移量
			if (fb_sign == HighS)
				p_fb++;
			if (sb_sign == HighS)
				p_sb++;

			// 更新半字節(jié)復(fù)制標(biāo)志
			sb_sign ^= 0x1;			
			fb_sign ^= 0x1;	
		}
	}
}

// 繪制一個(gè)像素點(diǎn)
static void lcd_kernel_pixel(int x, int y, COLOR color)
{
	unsigned char*	fb_ptr;			/* 更新像素點(diǎn)對(duì)應(yīng)的顯存地址 */
	unsigned short* fb_ptr_halfword;
	unsigned int* fb_ptr_word;
	unsigned int pointeraddr;
	
	
	//COLOR pure_color=0x0000;
	unsigned char pure_color_byte =       0x00;		/* 更新顏色信息 */
	unsigned short  pure_color_halfword = 0x0000;
	unsigned int  pure_color_word = 0x00000000;
	
        static int once = 0;
	// 如果坐標(biāo)越界則不做任何操作, 直接返回
	if ( x < 0 || x >= SCR_X|| y < 0 || y >= SCR_Y)
	{
		printk("out of bounds\n");
		return;
	}

	// 計(jì)算當(dāng)前點(diǎn)對(duì)應(yīng)的顯存地址
	//fb_ptr = __lcd_base + (x + y * SCR_X) * 3 * BPP / 8;
	fb_ptr = __lcd_base + (x + y * SCR_X) * 1 * BPP / 8;  //by ywc 4bpp,8bpp
       if(once<3){
        once++;
        printk("\n[test by ywc]lcd driver:fb_ptr=0x%p",&fb_ptr);	
        }
	fb_ptr_halfword = (unsigned short *)(__lcd_base + (x + y * SCR_X) * 1 * BPP / 8);//by ywc
	
	pointeraddr = (((unsigned int )(__lcd_base + (x + y * SCR_X) * 1 * BPP / 8)));//by ywc
	 fb_ptr_word =(unsigned int *)(pointeraddr&~0x3);
	
	//fb_ptr_word   =__lcd_base + (x + y * SCR_X) * 1 * BPP / (8);
		
	
	
	switch (BPP) {
		case 1:
		       switch(x & 0x07){
	                        case 0:
	                               pure_color_byte = (color & 0x01 ) <<0;            // add by ywc
	                               *(fb_ptr) &= 0xfe;	
		                       *(fb_ptr) |= pure_color_byte;
		                       break;
		                case 1:
	                               pure_color_byte = (color & 0x01 ) <<1;        // add by ywc
	                               *(fb_ptr) &= 0xfd;
		                       *(fb_ptr) |= pure_color_byte;
                                       break;
		                case 2:
	                               pure_color_byte = (color & 0x01 ) <<2;            // add by ywc
	                               *(fb_ptr) &= 0xfb;	
		                       *(fb_ptr) |= pure_color_byte;
		                       break;
		                case 3:
	                               pure_color_byte = (color & 0x01 ) <<3;        // add by ywc
	                               *(fb_ptr) &= 0xf7;
		                       *(fb_ptr) |= pure_color_byte;
                                       break;
		                case 4:
	                               pure_color_byte = (color & 0x01 ) <<4;            // add by ywc
	                               *(fb_ptr) &= 0xef;	
		                       *(fb_ptr) |= pure_color_byte;
		                       break;
		                case 5:
	                               pure_color_byte = (color & 0x01 ) <<5;        // add by ywc
	                               *(fb_ptr) &= 0xdf;
		                       *(fb_ptr) |= pure_color_byte;
                                       break;
		                case 6:
	                               pure_color_byte = (color & 0x01 ) <<6;            // add by ywc
	                               *(fb_ptr) &= 0xbf;	
		                       *(fb_ptr) |= pure_color_byte;
		                       break;
		                case 7:
	                               pure_color_byte = (color & 0x01 ) <<7;        // add by ywc
	                               *(fb_ptr) &= 0x7f;
		                       *(fb_ptr) |= pure_color_byte;                     
                                       break;
                               }
                        break;        
                case 2:
                      switch(x & 0x03){
	                        case 0:
	                               pure_color_byte = (color & 0x03 ) <<0;            // add by ywc
	                               *(fb_ptr) &= 0xfc;	
		                       *(fb_ptr) |= pure_color_byte;
		                       break;
		                case 1:
	                               pure_color_byte = (color & 0x03 ) <<2;        // add by ywc
	                               *(fb_ptr) &= 0xf3;
		                       *(fb_ptr) |= pure_color_byte;
                                       break;
		                case 2:
	                               pure_color_byte = (color & 0x03 ) <<4;            // add by ywc
	                               *(fb_ptr) &= 0xcf;	
		                       *(fb_ptr) |= pure_color_byte;
		                       break;
		                case 3:
	                               pure_color_byte = (color & 0x03 ) <<6;        // add by ywc
	                               *(fb_ptr) &= 0x3f;
		                       *(fb_ptr) |= pure_color_byte;
		                       break;
                               }
                        break;
		
                case 4:
                        if (x & 0x1)
	                {
	                 pure_color_byte = (color & 0x0f) << 4;            // add by ywc
	                 *fb_ptr &= 0x0f;	
		         *fb_ptr |= pure_color_byte;
		        }
		        else 
	                {
	                 pure_color_byte = ( color & 0x0f );        // add by ywc
	                 *(fb_ptr) &= 0xf0;
		         *(fb_ptr) |= pure_color_byte;
		        }                        
                        break;
                case 8:
                       pure_color_byte = ( color & 0xff);          // why not ? by ywc
	               *(fb_ptr) = pure_color_byte;
                       break;
                case 15:
                        
                        break;
                case 16:
                        pure_color_halfword = ( color & 0xffff);          // why not ? by ywc
                        if(y==212)printk("color=%8x,fb_ptr_halfword=%p\n",color,fb_ptr_halfword);
	               *(fb_ptr_halfword) = pure_color_halfword;
                        
                        break;
     /*           case 24:
                       printk("color=%8x,fb_ptr_word=%p\n",color,fb_ptr);
                       
	               *(fb_ptr) = ( color & 0x0000ff);          // 24 bit=3 byte;
	               *(fb_ptr+1) = ( color & 0x00ff00)>>4;
	               *(fb_ptr+2) = ( color & 0xff0000)>>8;
	               printk("pure_color_word=%8x\n",pure_color_word);
                       break; 
     */
                case 32:
                       pure_color_word = ( color & 0x00ffffff);          // why not ? by ywc
                      //  if(y==212)
                      printk("color=%8x,fb_ptr_word=%p\n",color,fb_ptr_word);
	               *(fb_ptr_word) = pure_color_word;
                        
                        break;                
                default:
                        
                        break;
                }
	
	//pure_color = ( color & 0x00ff);   // why not ? by ywc
	//*(fb_ptr) = pure_color;

	// 更新像素點(diǎn)的顏色信息
	// 處理x坐標(biāo)為奇數(shù)的情況		
/*	if (x & 0x1)
	{
	         pure_color = (color & 0x000f) << 4;            // add by ywc

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产午夜亚洲精品午夜鲁丝片| 欧美高清在线精品一区| 国产精品996| 亚洲精品一二三| 欧美一级xxx| 成人晚上爱看视频| 美国av一区二区| 一区二区在线免费| 精品国产乱码久久| 欧美色爱综合网| www.在线欧美| 韩国在线一区二区| 天堂成人免费av电影一区| 亚洲国产成人在线| 欧美电影精品一区二区| 欧美在线观看一区二区| 成人免费毛片片v| 久久99国产精品久久99| 午夜精品久久久久久久久 | 久久女同性恋中文字幕| 欧美性色黄大片手机版| 99久久亚洲一区二区三区青草| 韩国女主播一区二区三区| 午夜国产精品影院在线观看| 最新欧美精品一区二区三区| 久久久亚洲精华液精华液精华液 | 成人免费观看av| 激情都市一区二区| 美女在线视频一区| 奇米精品一区二区三区四区 | 国产一区二区三区久久久 | 7777精品伊人久久久大香线蕉 | 成人免费在线视频观看| 国产亚洲综合色| 日韩视频免费观看高清在线视频| 欧美三级日韩三级| 日本韩国精品一区二区在线观看| av电影在线不卡| 成人av电影观看| 99riav一区二区三区| 高清国产午夜精品久久久久久| 国产一区二区三区香蕉| 韩国成人福利片在线播放| 九九在线精品视频| 国产一区二三区好的| 韩国v欧美v日本v亚洲v| 国产精品亚洲а∨天堂免在线| 国产一区欧美一区| 国产一区激情在线| 粉嫩久久99精品久久久久久夜| 成人美女视频在线观看18| 丁香六月综合激情| 色94色欧美sute亚洲13| 精品视频一区 二区 三区| 欧美日韩第一区日日骚| 在线91免费看| 久久久不卡网国产精品一区| 国产精品午夜免费| 亚洲日本青草视频在线怡红院| 亚洲人成网站色在线观看| 亚洲国产成人高清精品| 日本伊人午夜精品| 精品一区二区三区在线播放 | 国产精品亲子伦对白| 综合亚洲深深色噜噜狠狠网站| 国产精品美女久久久久久久| 亚洲蜜臀av乱码久久精品| 亚洲福中文字幕伊人影院| 日韩综合在线视频| 九色综合国产一区二区三区| 成人久久18免费网站麻豆| 欧美性受极品xxxx喷水| 日韩精品中午字幕| 国产精品色在线观看| 亚洲二区视频在线| 国产一区视频导航| 在线一区二区三区四区| 日韩一区二区三区视频| 国产精品久久精品日日| 中文字幕+乱码+中文字幕一区| 亚洲精品国产a| 精品一区二区三区在线播放| www.欧美精品一二区| 欧美日韩卡一卡二| 欧美激情在线一区二区三区| 亚洲小少妇裸体bbw| 国产精品一区二区你懂的| 欧美午夜精品久久久| 久久综合九色综合欧美亚洲| 一区二区三区日韩精品视频| 另类欧美日韩国产在线| 色综合久久综合| 精品国产一区二区三区久久影院 | 一区二区三区在线免费视频 | 美女网站在线免费欧美精品| av亚洲精华国产精华精华 | 欧美伦理电影网| 国产午夜精品美女毛片视频| 亚洲韩国一区二区三区| 国产精品资源站在线| 91麻豆精品国产自产在线| 国产精品日韩精品欧美在线| 午夜精品久久久久久久99水蜜桃 | 黄色日韩三级电影| 欧美日韩在线一区二区| 国产精品久久久久毛片软件| 蜜乳av一区二区| 欧美日韩一区二区三区高清| 中文字幕中文字幕在线一区| 精品一区二区三区免费视频| 欧美精品aⅴ在线视频| 亚洲品质自拍视频| 国产成人av一区二区三区在线观看| 欧美福利一区二区| 亚洲欧洲中文日韩久久av乱码| 国产九色sp调教91| 欧美一级一级性生活免费录像| 亚洲黄色小视频| eeuss影院一区二区三区| 精品国产乱码久久久久久浪潮| 五月天亚洲精品| 在线视频欧美精品| 亚洲女爱视频在线| 成人h动漫精品一区二区| 久久嫩草精品久久久精品| 日本亚洲三级在线| 欧美亚一区二区| 一区二区三区中文字幕电影 | 亚洲香蕉伊在人在线观| 色8久久人人97超碰香蕉987| 国产精品成人一区二区艾草| 成人综合在线观看| 欧美国产国产综合| 成人福利视频网站| 中文一区二区完整视频在线观看| 国产精品伊人色| 精品va天堂亚洲国产| 国内不卡的二区三区中文字幕| 日韩精品专区在线影院重磅| 精品一区二区在线免费观看| 精品国产一区二区三区久久影院| 精品一区二区三区蜜桃| 26uuu亚洲婷婷狠狠天堂| 国产剧情在线观看一区二区 | 日韩国产欧美在线播放| 欧美精品自拍偷拍| 美女在线视频一区| 久久久久久亚洲综合| 成人免费福利片| 亚洲人一二三区| 欧美亚洲国产一区二区三区va | 亚洲线精品一区二区三区八戒| 欧美午夜电影在线播放| 天天色综合成人网| 欧美成人一区二区| 国产成人综合亚洲91猫咪| 中文字幕二三区不卡| 91小视频免费观看| 亚洲成人福利片| 日韩一区二区三区免费看| 国产在线精品一区二区夜色| 国产视频一区二区在线| 色一情一乱一乱一91av| 天堂午夜影视日韩欧美一区二区| 日韩欧美一卡二卡| 福利91精品一区二区三区| 亚洲裸体xxx| 欧美一区欧美二区| 国产jizzjizz一区二区| 悠悠色在线精品| 日韩精品自拍偷拍| 波多野结衣中文一区| 亚洲午夜久久久久久久久电影院 | 国产传媒欧美日韩成人| 亚洲免费av观看| 日韩欧美国产综合| 91亚洲精品久久久蜜桃网站| 日本不卡的三区四区五区| 亚洲国产岛国毛片在线| 欧美日本一区二区| 成人午夜精品一区二区三区| 亚洲va欧美va国产va天堂影院| 久久久91精品国产一区二区精品 | 欧美日韩国产片| 国产一区不卡精品| 亚洲成人激情综合网| 国产欧美日韩精品在线| 在线看国产日韩| 国产精品一区在线| 五月综合激情日本mⅴ| 国产精品久久久久久久久果冻传媒 | 亚洲成人av资源| 欧美国产日韩一二三区| 这里只有精品电影| 91视视频在线观看入口直接观看www| 免费视频最近日韩| 亚洲乱码中文字幕综合| 国产欧美一区二区三区网站| 91麻豆精品国产91久久久久| 99综合影院在线|