码迷,mamicode.com
首页 > 其他好文 > 详细

添加新设备在平台里的支持

时间:2016-09-27 13:14:57      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:

1-->设备的定义
平台的所有设备都会在arch\arm\plat-s3c\include\plat\devs.h中进行初始定义

2-->定义设备的结构体
设备实体的结构体解析

struct resource {
resource_size_t start;	/* 该设备在CPU总线上的线性起始物理地址 */
resource_size_t end;	/* 该设备在CPU总线上的线性结尾物理地址 */
const char *name;	/* 该设备的名称 */
unsigned long flags;	/* 该设备的共性和特性的标志位,定义在ioport.h中 */
struct resource *parent, *sibling, *child;	/* 父节点,兄弟节点,子节点 */
};

3-->设备资源
平台的所有设备都会在arch\arm\plat-s3cxx\devs.c中进行资源使用定义

4-->平台设备初始化
平台的所有设备都会在arch\arm\mach-s3c2440\mach-mini2440.c中的函数__initdata进行明确的初始化工作

 

例如:添加平台对MMC/SD卡的支持

1--->arch\arm\plat-s3c\include\plat\devs.h
添加定义:extern struct platform_device s3c_device_sdi;

2--->arch\arm\mach-s3c2440\mach-mini2440.c
添加MMC/SD卡的定义:

static struct s3c24xx_mci_pdata mini2440_mmc_cfg = {
.gpio_detect = S3C2410_GPG(8),
.gpio_wprotect = S3C2410_GPH(8),
.set_power = NULL,
.ocr_avail = MMC_VDD_32_33|MMC_VDD_33_34,
};

3--->arch\arm\mach-s3c2440\mach-mini2440.c
将MMC/SD配置配置给平台:

static void __init mini2440_machine_init(void)
{
#if defined (LCD_WIDTH)
s3c24xx_fb_set_platdata(&mini2440_fb_info);
#endif
s3c_i2c0_set_platdata(NULL);
s3c2410_gpio_cfgpin(S3C2410_GPC(0), S3C2410_GPC0_LEND);
s3c_device_nand.dev.platform_data = &friendly_arm_nand_info;
s3c_device_sdi.dev.platform_data = &mini2440_mmc_cfg;	/* 将MMC/SD配置配置给平台 */
platform_add_devices(mini2440_devices, ARRAY_SIZE(mini2440_devices));
s3c_pm_init();
}

4--->arch\arm\mach-s3c2440\mach-mini2440.c
列入到要在平台初始化:

static struct platform_device *mini2440_devices[] __initdata = {
&s3c_device_usb,
&s3c_device_rtc,
&s3c_device_lcd,
&s3c_device_wdt,
&s3c_device_i2c0,
&s3c_device_iis,
&mini2440_device_eth,
&s3c24xx_uda134x,
&s3c_device_nand,
&s3c_device_sdi,	/* 新加入的设备 */
&s3c_device_usbgadget,
};

  

 

添加新设备在平台里的支持

标签:

原文地址:http://www.cnblogs.com/foggia2004/p/5912183.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!