高通平台lcm型号通过cmdline向驱动传递参数的过程-module_param_string

高通平台在lk里识别的屏之后,会通过cmdline向内核传递参数

1 cat /proc/cmdline

mdss_mdp.panel=1:dsi:0:qcom,mdss_dsi_nt35532_fhd_video:1:none:cfg:single_dsi

2 drivers\video\msm\mdss\Mdss_mdp.c
在这个函数中用 module_param_string来注册参数
module_param_string(panel, mdss_mdp_panel, MDSS_MAX_PANEL_LEN, 0);
展开这个宏定义
#define module_param_string(name, string, len, perm)			\
	static const struct kparam_string __param_string_##name		\
		= { len, string };					\
	__module_param_call(MODULE_PARAM_PREFIX, name,			\
			    &param_ops_string,				\
			    .str = &__param_string_##name, perm, -1, 0);\
	__MODULE_PARM_TYPE(name, "string")
__module_param_call的宏定义为
#define __module_param_call(prefix, name, ops, arg, perm, level, flags)	\
	/* Default value instead of permissions? */			\
	static const char __param_str_##name[] = prefix #name; \
	static struct kernel_param __moduleparam_const __param_##name	\
	__used								\
    __attribute__ ((unused,__section__ ("__param"),aligned(sizeof(void *)))) \
	= { __param_str_##name, ops, VERIFY_OCTAL_PERMISSIONS(perm),	\
	    level, flags, { arg } }
根据这些宏,最终展开的为
static const char __param_str_panel[] = MODULE_PARAM_PREFIX panel; \
static struct kernel_param __moduleparam_const __param_panel	\
	__used	__attribute__ ((unused,__section__ ("__param"),aligned(sizeof(void *)))) = {
.name  = __param_str_panel, 
.ops   = ¶m_ops_string, 
.perm  = VERIFY_OCTAL_PERMISSIONS(0),	
.level = -1, 
.flags = 0,
.str = &__param_string_panel }
kernel连接时会将param放到_param段中
MODULE_PARAM_PREFIX的宏定义为
#ifdef MODULE
#define MODULE_PARAM_PREFIX /* empty */
#else
#define MODULE_PARAM_PREFIX KBUILD_MODNAME "."
#endif
是模块编译的为空,不是模块编译的话为 "模块名."
查看Makefile
obj-$(CONFIG_FB_MSM_MDSS) += mdss-mdp.o
可知模块名为mdss-mdp
所以kernel传参数的时候,参数名为 mdss-mdp.panel

3 kernel对cmdline的解析
请参考http://blog.csdn.net/skyflying2012/article/details/41142801

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值