设为首页 加入收藏

TOP

dispc_reg_in ,dispc_reg_out , dispc_reg_merge函数功能的分析
2014-11-23 23:36:30 来源: 作者: 【 】 浏览:2
Tags:dispc_reg_in dispc_reg_out dispc_reg_merge 函数 功能 分析

u32 dispc_reg_in(u32 offset)

{

return (inl(offset)); //从端口读取4个连续的字节

}

该函数读取寄存器的值

u32 dispc_reg_out(u32 offset, u32 val)

{

outl(val, offset); //向端口写入4个连续的字节

return (val);

}

该函数设置寄存器全部位的值

u32 dispc_reg_merge(u32 offset, u32 val, u32 mask)

{

u32 addr = offset;

u32 new_val = (inl(addr) &~mask) | (val & mask);

outl(new_val, addr);

return (new_val);

}

该函数设置寄存器指定哪些位的值,保留其他位的值不变。指定的位用mask表示。

mask:掩码,即要设置的位的掩码设为1,其余为0;www.2cto.com

inl(addr)& ~mask:掩码取反与寄存器中的值作“与”运算,结果是要设置的位清0,其他位置不变;

val& mask:得到要设置位置0或1,其余都置0;

inl(addr) & ~mask) | (val & mask:将原来的值与设置的值作“或”,可以将要设置的位设成相应的值,而其他位保持原来的值不变。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇openssl/md5.h没有此文件 下一篇C语言实现多个数的最大公倍数

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: