学习《Linux设备模型浅析之设备篇》笔记(深挖一)

来源:互联网 发布:虚拟手机号码软件 编辑:程序博客网 时间:2024/06/03 16:01

这篇文章既然说了是浅析,那就是跳过了一些东西,我们把这些跳过的东西给它尽可能的补回来


今天登陆 lxr.free-electrons.com 发现内核版本已经升级到3.15了,那以后都使用3.15的源码


文件/arch/arm/mach-s3c64xx/mach-smdk6410.c

static void __init smdk6410_machine_init(void)
{
        u32 cs1;

        s3c_i2c0_set_platdata(NULL);
        s3c_i2c1_set_platdata(NULL);
        s3c_fb_set_platdata(&smdk6410_lcd_pdata);
        s3c_hsotg_set_platdata(&smdk6410_hsotg_pdata);

        samsung_keypad_set_platdata(&smdk6410_keypad_data);

        s3c24xx_ts_set_platdata(NULL);

        /* configure nCS1 width to 16 bits */

        cs1 = __raw_readl(S3C64XX_SROM_BW) & ~(S3C64XX_SROM_BW__CS_MASK << S3C64XX_SROM_BW__NCS1__SHIFT);
        cs1 |= ((1 << S3C64XX_SROM_BW__DATAWIDTH__SHIFT) |(1 << S3C64XX_SROM_BW__WAITENABLE__SHIFT) |(1 << S3C64XX_SROM_BW__BYTEENABLE__SHIFT)) << S3C64XX_SROM_BW__NCS1__SHIFT;
        __raw_writel(cs1, S3C64XX_SROM_BW);

        /* set timing for nCS1 suitable for ethernet chip */

        __raw_writel((0 << S3C64XX_SROM_BCX__PMC__SHIFT) | (6 << S3C64XX_SROM_BCX__TACP__SHIFT) |   (4 << S3C64XX_SROM_BCX__TCAH__SHIFT) |  (1 << S3C64XX_SROM_BCX__TCOH__SHIFT) |  (0xe << S3C64XX_SROM_BCX__TACC__SHIFT) |     (4 << S3C64XX_SROM_BCX__TCOS__SHIFT) | (0 << S3C64XX_SROM_BCX__TACS__SHIFT), S3C64XX_SROM_BC1);

        gpio_request(S3C64XX_GPN(5), "LCD power");
        gpio_request(S3C64XX_GPF(13), "LCD power");

        i2c_register_board_info(0, i2c_devs0, ARRAY_SIZE(i2c_devs0));
        i2c_register_board_info(1, i2c_devs1, ARRAY_SIZE(i2c_devs1));

        s3c_ide_set_platdata(&smdk6410_ide_pdata);

        platform_add_devices
(smdk6410_devices, ARRAY_SIZE(smdk6410_devices));

        samsung_bl_set(&smdk6410_bl_gpio_info, &smdk6410_bl_data);
}


MACHINE_START(SMDK6410, "SMDK6410")
        /* Maintainer: Ben Dooks <ben-linux@fluff.org> */
        .atag_offset=0x100,

        .init_irq=s3c6410_init_irq,
        .map_io=smdk6410_map_io,
        .init_machine=
smdk6410_machine_init,
        .init_late=s3c64xx_init_late,
        .init_time=samsung_timer_init,
        .restart=s3c64xx_restart,
MACHINE_END


#defineMACHINE_START(_type,_name)\
static const struct machine_desc __mach_desc_##_type\
 __used\
 __attribute__((__section__(".arch.info.init"))) = {\
.nr= MACH_TYPE_##_type,\
.name= _name,

#define MACHINE_END\
};

0 0
原创粉丝点击