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

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

?? em-x270.c

?? linux 內核源代碼
?? C
字號:
/* * Support for CompuLab EM-x270 platform * * Copyright (C) 2007 CompuLab, Ltd. * Author: Mike Rapoport <mike@compulab.co.il> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */#include <linux/irq.h>#include <linux/platform_device.h>#include <linux/dm9000.h>#include <linux/rtc-v3020.h>#include <linux/mtd/nand.h>#include <linux/mtd/partitions.h>#include <asm/mach-types.h>#include <asm/mach/arch.h>#include <asm/arch/pxa-regs.h>#include <asm/arch/pxafb.h>#include <asm/arch/ohci.h>#include <asm/arch/mmc.h>#include <asm/arch/bitfield.h>#include "generic.h"/* GPIO IRQ usage */#define EM_X270_MMC_PD		(105)#define EM_X270_ETHIRQ		IRQ_GPIO(41)#define EM_X270_MMC_IRQ		IRQ_GPIO(13)static struct resource em_x270_dm9k_resource[] = {	[0] = {		.start = PXA_CS2_PHYS,		.end   = PXA_CS2_PHYS + 3,		.flags = IORESOURCE_MEM,	},	[1] = {		.start = PXA_CS2_PHYS + 8,		.end   = PXA_CS2_PHYS + 8 + 0x3f,		.flags = IORESOURCE_MEM,	},	[2] = {		.start = EM_X270_ETHIRQ,		.end   = EM_X270_ETHIRQ,		.flags = IORESOURCE_IRQ,	}};/* for the moment we limit ourselves to 32bit IO until some * better IO routines can be written and tested */static struct dm9000_plat_data em_x270_dm9k_platdata = {	.flags		= DM9000_PLATF_32BITONLY,};/* Ethernet device */static struct platform_device em_x270_dm9k = {	.name		= "dm9000",	.id		= 0,	.num_resources	= ARRAY_SIZE(em_x270_dm9k_resource),	.resource	= em_x270_dm9k_resource,	.dev		= {		.platform_data = &em_x270_dm9k_platdata,	}};/* audio device */static struct platform_device em_x270_audio = {	.name		= "pxa2xx-ac97",	.id		= -1,};/* WM9712 touchscreen controller. Hopefully the driver will make it to * the mainstream sometime */static struct platform_device em_x270_ts = {	.name		= "wm97xx-ts",	.id		= -1,};/* RTC */static struct resource em_x270_v3020_resource[] = {	[0] = {		.start = PXA_CS4_PHYS,		.end   = PXA_CS4_PHYS + 3,		.flags = IORESOURCE_MEM,	},};static struct v3020_platform_data em_x270_v3020_platdata = {	.leftshift = 0,};static struct platform_device em_x270_rtc = {	.name		= "v3020",	.num_resources	= ARRAY_SIZE(em_x270_v3020_resource),	.resource	= em_x270_v3020_resource,	.id		= -1,	.dev		= {		.platform_data = &em_x270_v3020_platdata,	}};/* NAND flash */#define GPIO_NAND_CS	(11)#define GPIO_NAND_RB	(56)static inline void nand_cs_on(void){	GPCR(GPIO_NAND_CS) = GPIO_bit(GPIO_NAND_CS);}static void nand_cs_off(void){	dsb();	GPSR(GPIO_NAND_CS) = GPIO_bit(GPIO_NAND_CS);}/* hardware specific access to control-lines */static void em_x270_nand_cmd_ctl(struct mtd_info *mtd, int dat,				 unsigned int ctrl){	struct nand_chip *this = mtd->priv;	unsigned long nandaddr = (unsigned long)this->IO_ADDR_W;	dsb();	if (ctrl & NAND_CTRL_CHANGE) {		if (ctrl & NAND_ALE)			nandaddr |=  (1 << 3);		else			nandaddr &= ~(1 << 3);		if (ctrl & NAND_CLE)			nandaddr |=  (1 << 2);		else			nandaddr &= ~(1 << 2);		if (ctrl & NAND_NCE)			nand_cs_on();		else			nand_cs_off();	}	dsb();	this->IO_ADDR_W = (void __iomem *)nandaddr;	if (dat != NAND_CMD_NONE)		writel(dat, this->IO_ADDR_W);	dsb();}/* read device ready pin */static int em_x270_nand_device_ready(struct mtd_info *mtd){	dsb();	return GPLR(GPIO_NAND_RB) & GPIO_bit(GPIO_NAND_RB);}static struct mtd_partition em_x270_partition_info[] = {	[0] = {		.name	= "em_x270-0",		.offset	= 0,		.size	= SZ_4M,	},	[1] = {		.name	= "em_x270-1",		.offset	= MTDPART_OFS_APPEND,		.size	= MTDPART_SIZ_FULL	},};static const char *em_x270_part_probes[] = { "cmdlinepart", NULL };struct platform_nand_data em_x270_nand_platdata = {	.chip = {		.nr_chips = 1,		.chip_offset = 0,		.nr_partitions = ARRAY_SIZE(em_x270_partition_info),		.partitions = em_x270_partition_info,		.chip_delay = 20,		.part_probe_types = em_x270_part_probes,	},	.ctrl = {		.hwcontrol = 0,		.dev_ready = em_x270_nand_device_ready,		.select_chip = 0,		.cmd_ctrl = em_x270_nand_cmd_ctl,	},};static struct resource em_x270_nand_resource[] = {	[0] = {		.start = PXA_CS1_PHYS,		.end   = PXA_CS1_PHYS + 12,		.flags = IORESOURCE_MEM,	},};static struct platform_device em_x270_nand = {	.name		= "gen_nand",	.num_resources	= ARRAY_SIZE(em_x270_nand_resource),	.resource	= em_x270_nand_resource,	.id		= -1,	.dev		= {		.platform_data = &em_x270_nand_platdata,	}};/* platform devices */static struct platform_device *platform_devices[] __initdata = {	&em_x270_dm9k,	&em_x270_audio,	&em_x270_ts,	&em_x270_rtc,	&em_x270_nand,};/* PXA27x OHCI controller setup */static int em_x270_ohci_init(struct device *dev){	/* Set the Power Control Polarity Low */	UHCHR = (UHCHR | UHCHR_PCPL) &		~(UHCHR_SSEP1 | UHCHR_SSEP2 | UHCHR_SSE);	/* enable port 2 transiever */	UP2OCR = UP2OCR_HXS | UP2OCR_HXOE;	return 0;}static struct pxaohci_platform_data em_x270_ohci_platform_data = {	.port_mode	= PMM_PERPORT_MODE,	.init		= em_x270_ohci_init,};static int em_x270_mci_init(struct device *dev,			    irq_handler_t em_x270_detect_int,			    void *data){	int err;	/* setup GPIO for PXA27x MMC controller */	pxa_gpio_mode(GPIO32_MMCCLK_MD);	pxa_gpio_mode(GPIO112_MMCCMD_MD);	pxa_gpio_mode(GPIO92_MMCDAT0_MD);	pxa_gpio_mode(GPIO109_MMCDAT1_MD);	pxa_gpio_mode(GPIO110_MMCDAT2_MD);	pxa_gpio_mode(GPIO111_MMCDAT3_MD);	/* EM-X270 uses GPIO13 as SD power enable */	pxa_gpio_mode(EM_X270_MMC_PD | GPIO_OUT);	err = request_irq(EM_X270_MMC_IRQ, em_x270_detect_int,			  IRQF_DISABLED | IRQF_TRIGGER_FALLING,			  "MMC card detect", data);	if (err) {		printk(KERN_ERR "%s: can't request MMC card detect IRQ: %d\n",		       __FUNCTION__, err);		return err;	}	return 0;}static void em_x270_mci_setpower(struct device *dev, unsigned int vdd){	/*	   FIXME: current hardware implementation does not allow to	   enable/disable MMC power. This will be fixed in next HW releases,	   and we'll need to add implmentation here.	*/	return;}static void em_x270_mci_exit(struct device *dev, void *data){	free_irq(EM_X270_MMC_IRQ, data);}static struct pxamci_platform_data em_x270_mci_platform_data = {	.ocr_mask	= MMC_VDD_28_29|MMC_VDD_29_30|MMC_VDD_30_31,	.init 		= em_x270_mci_init,	.setpower 	= em_x270_mci_setpower,	.exit		= em_x270_mci_exit,};/* LCD 480x640 */static struct pxafb_mode_info em_x270_lcd_mode = {	.pixclock	= 50000,	.bpp		= 16,	.xres		= 480,	.yres		= 640,	.hsync_len	= 8,	.vsync_len	= 2,	.left_margin	= 8,	.upper_margin	= 0,	.right_margin	= 24,	.lower_margin	= 4,	.cmap_greyscale	= 0,};static struct pxafb_mach_info em_x270_lcd = {	.modes		= &em_x270_lcd_mode,	.num_modes	= 1,	.cmap_inverse	= 0,	.cmap_static	= 0,	.lccr0		= LCCR0_PAS,	.lccr3		= LCCR3_PixClkDiv(0x01) | LCCR3_Acb(0xff),};static void __init em_x270_init(void){	/* setup LCD */	set_pxa_fb_info(&em_x270_lcd);	/* register EM-X270 platform devices */	platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));	/* set MCI and OHCI platform parameters */	pxa_set_mci_info(&em_x270_mci_platform_data);	pxa_set_ohci_info(&em_x270_ohci_platform_data);	/* setup STUART GPIOs */	pxa_gpio_mode(GPIO46_STRXD_MD);	pxa_gpio_mode(GPIO47_STTXD_MD);	/* setup BTUART GPIOs */	pxa_gpio_mode(GPIO42_BTRXD_MD);	pxa_gpio_mode(GPIO43_BTTXD_MD);	pxa_gpio_mode(GPIO44_BTCTS_MD);	pxa_gpio_mode(GPIO45_BTRTS_MD);	/* Setup interrupt for dm9000 */	set_irq_type(EM_X270_ETHIRQ, IRQT_RISING);}MACHINE_START(EM_X270, "Compulab EM-x270")	.boot_params	= 0xa0000100,	.phys_io	= 0x40000000,	.io_pg_offst	= (io_p2v(0x40000000) >> 18) & 0xfffc,	.map_io		= pxa_map_io,	.init_irq	= pxa27x_init_irq,	.timer		= &pxa_timer,	.init_machine	= em_x270_init,MACHINE_END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
狠狠色综合日日| 伊人一区二区三区| 欧美—级在线免费片| 欧美激情一区二区三区蜜桃视频| 久久精品国产99国产| 884aa四虎影成人精品一区| 亚洲不卡在线观看| 欧美日韩精品欧美日韩精品一 | 日本韩国一区二区| 亚洲男人电影天堂| 欧美日本在线播放| 麻豆成人免费电影| 欧美国产精品一区二区| 成人动漫一区二区三区| 亚洲欧美日韩国产一区二区三区| 欧美色网站导航| 秋霞电影一区二区| 欧美—级在线免费片| 欧美日韩在线三级| 韩国女主播成人在线| 亚洲天堂久久久久久久| 欧美一区二区三区性视频| 国产麻豆午夜三级精品| 亚洲啪啪综合av一区二区三区| 精品视频免费看| 国产一区二区三区在线观看免费| 中文字幕一区二区三区在线观看 | 337p粉嫩大胆噜噜噜噜噜91av| 国产精品乡下勾搭老头1| 中文字幕亚洲电影| 欧美高清精品3d| 丁香另类激情小说| 亚洲国产精品欧美一二99| 久久久久久久久97黄色工厂| 色婷婷av一区| 国产精品一品二品| 日日夜夜免费精品视频| 中文字幕高清不卡| 日韩一卡二卡三卡国产欧美| 色综合色综合色综合色综合色综合| 日本欧美一区二区在线观看| 日韩毛片精品高清免费| 日韩午夜在线观看| 在线欧美一区二区| 不卡电影一区二区三区| 精品一区二区三区香蕉蜜桃| 亚洲一区二区精品3399| 亚洲国产精华液网站w| 日韩欧美另类在线| 欧美人xxxx| 91在线视频在线| 国产精品1区二区.| 麻豆精品一区二区三区| 亚洲最大成人综合| 中文字幕制服丝袜一区二区三区| 日韩欧美国产一区二区在线播放 | 美女脱光内衣内裤视频久久网站| 亚洲色图一区二区三区| 国产亚洲精品超碰| 欧美mv日韩mv亚洲| 91精品福利在线一区二区三区| 色综合婷婷久久| 99久久精品免费看| 国产91精品免费| 国产成人啪午夜精品网站男同| 美女一区二区在线观看| 日日夜夜免费精品| 天天综合网天天综合色| 亚洲成人在线观看视频| 亚洲综合一区二区| 亚洲国产综合91精品麻豆| 亚洲最色的网站| 同产精品九九九| 天天综合色天天综合色h| 首页欧美精品中文字幕| 日本亚洲三级在线| 美女精品自拍一二三四| 麻豆免费看一区二区三区| 免费观看30秒视频久久| 麻豆精品国产91久久久久久| 九色|91porny| 韩国理伦片一区二区三区在线播放| 免费看精品久久片| 国产在线观看一区二区| 国产精品羞羞答答xxdd| www.欧美色图| 91激情五月电影| 欧美日韩国产另类不卡| 欧美大片拔萝卜| 久久精品一区二区三区四区| 国产日产欧美一区| 最新不卡av在线| 亚洲一线二线三线视频| 天堂午夜影视日韩欧美一区二区| 欧美aaa在线| 国产高清精品在线| 96av麻豆蜜桃一区二区| 欧美三级乱人伦电影| 欧美电视剧免费全集观看 | 国产精品久久久久久久久免费相片| 国产欧美精品一区二区三区四区| 国产精品久久久久婷婷| 亚洲激情自拍视频| 蜜臀久久久99精品久久久久久| 极品尤物av久久免费看| 99麻豆久久久国产精品免费| 欧美中文字幕不卡| 精品久久一二三区| 国产精品人人做人人爽人人添| 亚洲靠逼com| 久久精品99国产精品| 成人h版在线观看| 欧美精品高清视频| 欧美国产精品一区| 天堂午夜影视日韩欧美一区二区| 国产麻豆精品在线| 欧美视频在线观看一区二区| 久久精品一区二区三区不卡牛牛| 一区二区三区欧美视频| 国产老肥熟一区二区三区| 91成人看片片| 国产亚洲欧美一区在线观看| 亚洲一二三四区不卡| 国模冰冰炮一区二区| 色999日韩国产欧美一区二区| 91精品国产综合久久久蜜臀图片| 中文字幕制服丝袜成人av| 日韩va亚洲va欧美va久久| 成人教育av在线| 日韩视频免费观看高清完整版 | 亚洲欧洲三级电影| 看片网站欧美日韩| 色88888久久久久久影院野外| 精品免费日韩av| 亚洲综合网站在线观看| av一区二区三区| 久久久亚洲精华液精华液精华液| 午夜视频在线观看一区| 91传媒视频在线播放| 久久久亚洲精品一区二区三区 | 欧美成人性战久久| 午夜精品福利一区二区三区av | 中文字幕av一区二区三区免费看 | 国产一区视频导航| 欧美日韩成人在线| 亚洲视频在线一区观看| 国产乱理伦片在线观看夜一区| 欧美日韩国产一二三| 亚洲激情图片一区| 波多野结衣在线aⅴ中文字幕不卡| 精品美女一区二区| 秋霞电影一区二区| 在线综合+亚洲+欧美中文字幕| 一区二区在线观看av| 波多野结衣亚洲一区| 国产日本欧洲亚洲| 国产成人亚洲精品青草天美| 久久综合给合久久狠狠狠97色69| 日韩精品乱码av一区二区| 91国产精品成人| 一区二区三区91| 欧洲一区二区三区免费视频| 亚洲码国产岛国毛片在线| 91原创在线视频| 自拍视频在线观看一区二区| 成人午夜短视频| 国产精品免费丝袜| 99re这里只有精品6| 亚洲激情av在线| 在线观看日产精品| 亚洲va欧美va人人爽| 欧美美女一区二区| 日本vs亚洲vs韩国一区三区二区 | 亚洲成av人片在线观看无码| 在线观看欧美黄色| 亚洲国产精品久久不卡毛片| 欧美日韩激情一区二区三区| 婷婷开心久久网| 日韩视频一区二区| 国产大陆精品国产| 中文字幕一区日韩精品欧美| 日本高清无吗v一区| 亚洲成人久久影院| 日韩三级精品电影久久久| 国内成+人亚洲+欧美+综合在线| 2019国产精品| 97精品国产露脸对白| 又紧又大又爽精品一区二区| 欧美日韩在线观看一区二区 | 国产91精品入口| 亚洲美女视频一区| 欧美日韩精品电影| 国产在线观看一区二区| 自拍偷在线精品自拍偷无码专区| 日本高清不卡在线观看| 免费视频一区二区| 国产精品嫩草影院com| 欧美日韩高清在线播放| 国产一区二区调教| 亚洲免费观看在线视频|