设备树中#address-cells和#size-cells作用_刘星燎-CSDN博客
int __init tcc_pmap_init(void){ /*后运行*/
struct pmap_entry *entry;
struct device_node *np;
for_each_compatible_node(np, NULL, "telechips,pmap") { /*为每个设备节点添加reg属性*/
const char *name;
pmap_t *info;
int naddr, nsize;
struct property *prop;
__be32 *val, *pval;
if (of_property_read_string(np, "telechips,pmap-name", &name)) {
continue;
}
/* Skip if there are reg property */
if (of_get_property(np, "reg", NULL)) {
continue;
}
if (!(info = pmap_find_info_by_name(name))) {
continue;
}
naddr = of_n_addr_cells(np);
nsize = of_n_size_cells(np);
prop = kzalloc(sizeof(*prop), GFP_KERNEL); /*分配一个struct property大小空间*/
/*prop属性对象初始化*/
prop->name = kstrdup("reg", GFP_KERNEL); /*属性名为"reg"*/
prop->length = (naddr + nsize) * sizeof(__be32);
prop->value = kzalloc((naddr + nsize) * sizeof(__be32), GFP_KERNEL);
of_add_property(np, prop); /*添加属性*/
/* Update info with pmap related properties */
pmap_update_info(np, info);
}
}