⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 devices.c

📁 trident tm5600的linux驱动
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <linux/module.h>#include <linux/kernel.h>#include <linux/init.h>#include <linux/platform_device.h>#include <linux/dma-mapping.h>#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 27)#include <asm/arch/gpio.h>#include <asm/arch/udc.h>#include <asm/arch/pxafb.h>#include <asm/arch/mmc.h>#include <asm/arch/irda.h>#include <asm/arch/i2c.h>#include <asm/arch/mfp-pxa27x.h>#include <asm/arch/ohci.h>#include <asm/arch/pxa27x_keypad.h>#include <asm/arch/pxa2xx_spi.h>#include <asm/arch/camera.h>#include <asm/arch/audio.h>#include <asm/arch/pxa3xx_nand.h>#else#include <mach/gpio.h>#include <mach/udc.h>#include <mach/pxafb.h>#include <mach/mmc.h>#include <mach/irda.h>#include <mach/i2c.h>#include <mach/mfp-pxa27x.h>#include <mach/ohci.h>#include <mach/pxa27x_keypad.h>#include <mach/pxa2xx_spi.h>#include <mach/camera.h>#include <mach/audio.h>#include <mach/pxa3xx_nand.h>#endif#include "devices.h"#include "generic.h"void __init pxa_register_device(struct platform_device *dev, void *data){	int ret;	dev->dev.platform_data = data;	ret = platform_device_register(dev);	if (ret)		dev_err(&dev->dev, "unable to register device: %d\n", ret);}static struct resource pxamci_resources[] = {	[0] = {		.start	= 0x41100000,		.end	= 0x41100fff,		.flags	= IORESOURCE_MEM,	},	[1] = {		.start	= IRQ_MMC,		.end	= IRQ_MMC,		.flags	= IORESOURCE_IRQ,	},	[2] = {		.start	= 21,		.end	= 21,		.flags	= IORESOURCE_DMA,	},	[3] = {		.start	= 22,		.end	= 22,		.flags	= IORESOURCE_DMA,	},};static u64 pxamci_dmamask = 0xffffffffUL;struct platform_device pxa_device_mci = {	.name		= "pxa2xx-mci",	.id		= 0,	.dev		= {		.dma_mask = &pxamci_dmamask,		.coherent_dma_mask = 0xffffffff,	},	.num_resources	= ARRAY_SIZE(pxamci_resources),	.resource	= pxamci_resources,};void __init pxa_set_mci_info(struct pxamci_platform_data *info){	pxa_register_device(&pxa_device_mci, info);}static struct pxa2xx_udc_mach_info pxa_udc_info;void __init pxa_set_udc_info(struct pxa2xx_udc_mach_info *info){	memcpy(&pxa_udc_info, info, sizeof *info);}static struct resource pxa2xx_udc_resources[] = {	[0] = {		.start	= 0x40600000,		.end	= 0x4060ffff,		.flags	= IORESOURCE_MEM,	},	[1] = {		.start	= IRQ_USB,		.end	= IRQ_USB,		.flags	= IORESOURCE_IRQ,	},};static u64 udc_dma_mask = ~(u32)0;struct platform_device pxa25x_device_udc = {	.name		= "pxa25x-udc",	.id		= -1,	.resource	= pxa2xx_udc_resources,	.num_resources	= ARRAY_SIZE(pxa2xx_udc_resources),	.dev		=  {		.platform_data	= &pxa_udc_info,		.dma_mask	= &udc_dma_mask,	}};struct platform_device pxa27x_device_udc = {	.name		= "pxa27x-udc",	.id		= -1,	.resource	= pxa2xx_udc_resources,	.num_resources	= ARRAY_SIZE(pxa2xx_udc_resources),	.dev		=  {		.platform_data	= &pxa_udc_info,		.dma_mask	= &udc_dma_mask,	}};static struct resource pxafb_resources[] = {	[0] = {		.start	= 0x44000000,		.end	= 0x4400ffff,		.flags	= IORESOURCE_MEM,	},	[1] = {		.start	= IRQ_LCD,		.end	= IRQ_LCD,		.flags	= IORESOURCE_IRQ,	},};static u64 fb_dma_mask = ~(u64)0;struct platform_device pxa_device_fb = {	.name		= "pxa2xx-fb",	.id		= -1,	.dev		= {		.dma_mask	= &fb_dma_mask,		.coherent_dma_mask = 0xffffffff,	},	.num_resources	= ARRAY_SIZE(pxafb_resources),	.resource	= pxafb_resources,};void __init set_pxa_fb_info(struct pxafb_mach_info *info){	pxa_register_device(&pxa_device_fb, info);}void __init set_pxa_fb_parent(struct device *parent_dev){	pxa_device_fb.dev.parent = parent_dev;}static struct resource pxa_resource_ffuart[] = {	{		.start	= __PREG(FFUART),		.end	= __PREG(FFUART) + 35,		.flags	= IORESOURCE_MEM,	}, {		.start	= IRQ_FFUART,		.end	= IRQ_FFUART,		.flags	= IORESOURCE_IRQ,	}};struct platform_device pxa_device_ffuart= {	.name		= "pxa2xx-uart",	.id		= 0,	.resource	= pxa_resource_ffuart,	.num_resources	= ARRAY_SIZE(pxa_resource_ffuart),};static struct resource pxa_resource_btuart[] = {	{		.start	= __PREG(BTUART),		.end	= __PREG(BTUART) + 35,		.flags	= IORESOURCE_MEM,	}, {		.start	= IRQ_BTUART,		.end	= IRQ_BTUART,		.flags	= IORESOURCE_IRQ,	}};struct platform_device pxa_device_btuart = {	.name		= "pxa2xx-uart",	.id		= 1,	.resource	= pxa_resource_btuart,	.num_resources	= ARRAY_SIZE(pxa_resource_btuart),};static struct resource pxa_resource_stuart[] = {	{		.start	= __PREG(STUART),		.end	= __PREG(STUART) + 35,		.flags	= IORESOURCE_MEM,	}, {		.start	= IRQ_STUART,		.end	= IRQ_STUART,		.flags	= IORESOURCE_IRQ,	}};struct platform_device pxa_device_stuart = {	.name		= "pxa2xx-uart",	.id		= 2,	.resource	= pxa_resource_stuart,	.num_resources	= ARRAY_SIZE(pxa_resource_stuart),};static struct resource pxa_resource_hwuart[] = {	{		.start	= __PREG(HWUART),		.end	= __PREG(HWUART) + 47,		.flags	= IORESOURCE_MEM,	}, {		.start	= IRQ_HWUART,		.end	= IRQ_HWUART,		.flags	= IORESOURCE_IRQ,	}};struct platform_device pxa_device_hwuart = {	.name		= "pxa2xx-uart",	.id		= 3,	.resource	= pxa_resource_hwuart,	.num_resources	= ARRAY_SIZE(pxa_resource_hwuart),};static struct resource pxai2c_resources[] = {	{		.start	= 0x40301680,		.end	= 0x403016a3,		.flags	= IORESOURCE_MEM,	}, {		.start	= IRQ_I2C,		.end	= IRQ_I2C,		.flags	= IORESOURCE_IRQ,	},};struct platform_device pxa_device_i2c = {	.name		= "pxa2xx-i2c",	.id		= 0,	.resource	= pxai2c_resources,	.num_resources	= ARRAY_SIZE(pxai2c_resources),};static unsigned long pxa27x_i2c_mfp_cfg[] = {	GPIO117_I2C_SCL,	GPIO118_I2C_SDA,};void __init pxa_set_i2c_info(struct i2c_pxa_platform_data *info){	if (cpu_is_pxa27x())		pxa2xx_mfp_config(ARRAY_AND_SIZE(pxa27x_i2c_mfp_cfg));	pxa_register_device(&pxa_device_i2c, info);}static struct resource pxai2s_resources[] = {	{		.start	= 0x40400000,		.end	= 0x40400083,		.flags	= IORESOURCE_MEM,	}, {		.start	= IRQ_I2S,		.end	= IRQ_I2S,		.flags	= IORESOURCE_IRQ,	},};struct platform_device pxa_device_i2s = {	.name		= "pxa2xx-i2s",	.id		= -1,	.resource	= pxai2s_resources,	.num_resources	= ARRAY_SIZE(pxai2s_resources),};static u64 pxaficp_dmamask = ~(u32)0;struct platform_device pxa_device_ficp = {	.name		= "pxa2xx-ir",	.id		= -1,	.dev		= {		.dma_mask = &pxaficp_dmamask,		.coherent_dma_mask = 0xffffffff,	},};void __init pxa_set_ficp_info(struct pxaficp_platform_data *info){	pxa_register_device(&pxa_device_ficp, info);}struct platform_device pxa_device_rtc = {	.name		= "sa1100-rtc",	.id		= -1,};static struct resource pxa_ac97_resources[] = {	[0] = {		.start  = 0x40500000,		.end	= 0x40500000 + 0xfff,		.flags  = IORESOURCE_MEM,	},	[1] = {		.start  = IRQ_AC97,		.end    = IRQ_AC97,		.flags  = IORESOURCE_IRQ,	},};static u64 pxa_ac97_dmamask = 0xffffffffUL;struct platform_device pxa_device_ac97 = {	.name           = "pxa2xx-ac97",	.id             = -1,	.dev            = {		.dma_mask = &pxa_ac97_dmamask,		.coherent_dma_mask = 0xffffffff,	},	.num_resources  = ARRAY_SIZE(pxa_ac97_resources),	.resource       = pxa_ac97_resources,};void __init pxa_set_ac97_info(pxa2xx_audio_ops_t *ops){	pxa_register_device(&pxa_device_ac97, ops);}#ifdef CONFIG_PXA25xstatic struct resource pxa25x_resource_pwm0[] = {	[0] = {		.start	= 0x40b00000,		.end	= 0x40b0000f,		.flags	= IORESOURCE_MEM,	},};struct platform_device pxa25x_device_pwm0 = {	.name		= "pxa25x-pwm",	.id		= 0,	.resource	= pxa25x_resource_pwm0,	.num_resources	= ARRAY_SIZE(pxa25x_resource_pwm0),};static struct resource pxa25x_resource_pwm1[] = {	[0] = {		.start	= 0x40c00000,		.end	= 0x40c0000f,		.flags	= IORESOURCE_MEM,	},};struct platform_device pxa25x_device_pwm1 = {	.name		= "pxa25x-pwm",	.id		= 1,	.resource	= pxa25x_resource_pwm1,	.num_resources	= ARRAY_SIZE(pxa25x_resource_pwm1),};static u64 pxa25x_ssp_dma_mask = DMA_BIT_MASK(32);static struct resource pxa25x_resource_ssp[] = {	[0] = {		.start	= 0x41000000,		.end	= 0x4100001f,		.flags	= IORESOURCE_MEM,	},	[1] = {		.start	= IRQ_SSP,		.end	= IRQ_SSP,		.flags	= IORESOURCE_IRQ,	},	[2] = {		/* DRCMR for RX */		.start	= 13,		.end	= 13,		.flags	= IORESOURCE_DMA,	},	[3] = {		/* DRCMR for TX */		.start	= 14,		.end	= 14,		.flags	= IORESOURCE_DMA,	},};struct platform_device pxa25x_device_ssp = {	.name		= "pxa25x-ssp",	.id		= 0,	.dev		= {		.dma_mask = &pxa25x_ssp_dma_mask,		.coherent_dma_mask = DMA_BIT_MASK(32),	},	.resource	= pxa25x_resource_ssp,	.num_resources	= ARRAY_SIZE(pxa25x_resource_ssp),};static u64 pxa25x_nssp_dma_mask = DMA_BIT_MASK(32);static struct resource pxa25x_resource_nssp[] = {	[0] = {		.start	= 0x41400000,		.end	= 0x4140002f,		.flags	= IORESOURCE_MEM,	},	[1] = {		.start	= IRQ_NSSP,		.end	= IRQ_NSSP,		.flags	= IORESOURCE_IRQ,	},	[2] = {		/* DRCMR for RX */		.start	= 15,		.end	= 15,		.flags	= IORESOURCE_DMA,	},	[3] = {		/* DRCMR for TX */		.start	= 16,		.end	= 16,		.flags	= IORESOURCE_DMA,	},};struct platform_device pxa25x_device_nssp = {	.name		= "pxa25x-nssp",	.id		= 1,	.dev		= {		.dma_mask = &pxa25x_nssp_dma_mask,		.coherent_dma_mask = DMA_BIT_MASK(32),	},	.resource	= pxa25x_resource_nssp,	.num_resources	= ARRAY_SIZE(pxa25x_resource_nssp),

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -