在我们设计的时候,通常用uboot传参数是少不了的,下面就让我和大家俩说说哦
比如我有两款音频芯片,不管是电路板是焊接的是RT5621还是wm8976,用一个升级包就可以搞定,我该如何办呐?
1:在我们启动之前可以用setenv boardargs “codec=wm8976”
然后 save
2:下面的代码加载Mach-smdkc110.c里面(Android 2.3系统)
//********** urbetter+ for PCB type *************
char sound_codec[8]="wm8976";
EXPORT_SYMBOL(sound_codec);
static int __init Sound_setup(char *str)
{
printk("Sound_setup: str=%s\n", str);
strcpy(sound_codec, str);
}
__setup("codec=", Sound_setup);
#endif
3:在我们使用的时候就可以在Mach-smdkc110.c
if(!strcmp(sound_codec, "wm8976"))
{
printk("mach-smdkc110->smdkc110_machine_init &&&&&&&&&&&&&&&&&& wm8976 ok\n");
i2c_register_board_info(1, i2c_devs1_wm8976, ARRAY_SIZE(i2c_devs1_wm8976));
}
if(!strcmp(sound_codec, "rt5621"))
{
printk("mach-smdkc110->smdkc110_machine_init &&&&&&&&&&&&&&&&&& rt5621 is ok\n");
}
我们做的思路就是首先在uboot里面用IIC读取rt5621的ID,如果是说明就是RT5621芯片,不是的话就是wm8976芯片,然后再用uboot来传输参数,我在Mach-smdkc110.c里面进行判断,以来加载该芯片。
这只是我们的方案,大家有更好的可以一起讨论一下!谢谢