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

📄 common-smdk.c

📁 cs8900网卡驱动。运行环境为ARM9+LINUX
💻 C
字号:
/* linux/arch/arm/plat-s3c24xx/common-smdk.c * * Copyright (c) 2006 Simtec Electronics *	Ben Dooks <ben@simtec.co.uk> * * Common code for SMDK2410 and SMDK2440 boards * * http://www.fluff.org/ben/smdk2440/ * * 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/kernel.h>#include <linux/types.h>#include <linux/interrupt.h>#include <linux/list.h>#include <linux/timer.h>#include <linux/init.h>#include <linux/sysdev.h>#include <linux/platform_device.h>#include <linux/mtd/mtd.h>#include <linux/mtd/nand.h>#include <linux/mtd/nand_ecc.h>#include <linux/mtd/partitions.h>#include <asm/mach/arch.h>#include <asm/mach/map.h>#include <asm/mach/irq.h>#include <asm/mach-types.h>#include <asm/hardware.h>#include <asm/io.h>#include <asm/irq.h>#include <asm/arch/regs-gpio.h>#include <asm/arch/leds-gpio.h>#include <asm/arch/irqs.h>#include <asm/plat-s3c/nand.h>#include <asm/plat-s3c24xx/common-smdk.h>#include <asm/plat-s3c24xx/devs.h>#include <asm/plat-s3c24xx/pm.h>/* LED devices */static struct s3c24xx_led_platdata smdk_pdata_led4 = {	.gpio		= S3C2410_GPF4,	.flags		= S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,	.name		= "led4",	.def_trigger	= "timer",};static struct s3c24xx_led_platdata smdk_pdata_led5 = {	.gpio		= S3C2410_GPF5,	.flags		= S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,	.name		= "led5",	.def_trigger	= "nand-disk",};static struct s3c24xx_led_platdata smdk_pdata_led6 = {	.gpio		= S3C2410_GPF6,	.flags		= S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,	.name		= "led6",};static struct s3c24xx_led_platdata smdk_pdata_led7 = {	.gpio		= S3C2410_GPF7,	.flags		= S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,	.name		= "led7",};static struct platform_device smdk_led4 = {	.name		= "s3c24xx_led",	.id		= 0,	.dev		= {		.platform_data = &smdk_pdata_led4,	},};static struct platform_device smdk_led5 = {	.name		= "s3c24xx_led",	.id		= 1,	.dev		= {		.platform_data = &smdk_pdata_led5,	},};static struct platform_device smdk_led6 = {	.name		= "s3c24xx_led",	.id		= 2,	.dev		= {		.platform_data = &smdk_pdata_led6,	},};static struct platform_device smdk_led7 = {	.name		= "s3c24xx_led",	.id		= 3,	.dev		= {		.platform_data = &smdk_pdata_led7,	},};/* NAND parititon from 2.4.18-swl5 */static struct mtd_partition smdk_default_nand_part[] = {	[0] = {		.name	= "Boot Agent",		.size	= SZ_16K,		.offset	= 0,	},	[1] = {		.name	= "S3C2410 flash partition 1",		.offset = 0,		.size	= SZ_2M,	},	[2] = {		.name	= "S3C2410 flash partition 2",		.offset = SZ_4M,		.size	= SZ_4M,	},	[3] = {		.name	= "S3C2410 flash partition 3",		.offset	= SZ_8M,		.size	= SZ_2M,	},	[4] = {		.name	= "S3C2410 flash partition 4",		.offset = SZ_1M * 10,		.size	= SZ_4M,	},	[5] = {		.name	= "S3C2410 flash partition 5",		.offset	= SZ_1M * 14,		.size	= SZ_1M * 10,	},	[6] = {		.name	= "S3C2410 flash partition 6",		.offset	= SZ_1M * 24,		.size	= SZ_1M * 24,	},	[7] = {		.name	= "S3C2410 flash partition 7",		.offset = SZ_1M * 48,		.size	= SZ_16M,	}};static struct s3c2410_nand_set smdk_nand_sets[] = {	[0] = {		.name		= "NAND",		.nr_chips	= 1,		.nr_partitions	= ARRAY_SIZE(smdk_default_nand_part),		.partitions	= smdk_default_nand_part,	},};/* choose a set of timings which should suit most 512Mbit * chips and beyond.*/static struct s3c2410_platform_nand smdk_nand_info = {	.tacls		= 20,	.twrph0		= 60,	.twrph1		= 20,	.nr_sets	= ARRAY_SIZE(smdk_nand_sets),	.sets		= smdk_nand_sets,};/* platform device for cs8900 */static void cs8900pdev_release(struct device *dev){	struct platform_device *pdev = to_platform_device(dev);	printk("Release %s, id is %d\n", pdev->name, pdev->id);}static struct resource cs8900_res[] = {	[0] = {		.start = 0x19000000,		.end = 0x1900000f,		.flags = IORESOURCE_IO,	},	[1] = {		.start = IRQ_EINT9,		.end = IRQ_EINT9,		.flags = IORESOURCE_IRQ,	},};static struct platform_device my8900 = {	.name = "CS8900-2624",	.id = 1,	.num_resources = ARRAY_SIZE(cs8900_res),	.resource = cs8900_res,	.dev = {		.release = cs8900pdev_release,	},};/* devices we initialise */static struct platform_device __initdata *smdk_devs[] = {	&my8900,	&s3c_device_nand,	&smdk_led4,	&smdk_led5,	&smdk_led6,	&smdk_led7,};void __init smdk_machine_init(void){	/* Configure the LEDs (even if we have no LED support)*/	s3c2410_gpio_cfgpin(S3C2410_GPF4, S3C2410_GPF4_OUTP);	s3c2410_gpio_cfgpin(S3C2410_GPF5, S3C2410_GPF5_OUTP);	s3c2410_gpio_cfgpin(S3C2410_GPF6, S3C2410_GPF6_OUTP);	s3c2410_gpio_cfgpin(S3C2410_GPF7, S3C2410_GPF7_OUTP);	s3c2410_gpio_setpin(S3C2410_GPF4, 1);	s3c2410_gpio_setpin(S3C2410_GPF5, 1);	s3c2410_gpio_setpin(S3C2410_GPF6, 1);	s3c2410_gpio_setpin(S3C2410_GPF7, 1);	if (machine_is_smdk2443())		smdk_nand_info.twrph0 = 50;	s3c_device_nand.dev.platform_data = &smdk_nand_info;	platform_add_devices(smdk_devs, ARRAY_SIZE(smdk_devs));	s3c2410_pm_init();}

⌨️ 快捷键说明

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