现在的位置: 首页 > 综合 > 正文

of_bus 结构

2013年04月14日 ⁄ 综合 ⁄ 共 1600字 ⁄ 字号 评论关闭

内核版本2.6.34.6

/* Callbacks for bus specific translators */
  50struct of_bus {
  51        const char      *name;
  52        const char      *addresses;
  53        int             (*match)(struct device_node *parent);
  54        void            (*count_cells)(struct device_node *child,
  55                                       int *addrc, int *sizec);
  56        u64             (*map)(u32 *addr, const u32 *range,
  57                                int na, int ns, int pna);
  58        int             (*translate)(u32 *addr, u64 offset, int na);
  59        unsigned int    (*get_flags)(const u32 *addr);
  60};

一直奇怪addresses是啥,网上也没有对这个机构的介绍,今天递归查找别的函数的时候,偶然看到内核有

 373 * Array of bus specific translators
 374 */
 375
 376static struct of_bus of_busses[] = {
 377#ifdef CONFIG_PCI 
 378        /* PCI */
 379        {
 380                .name = "pci",
 381                .addresses = "assigned-addresses",
 382                .match = of_bus_pci_match,
 383                .count_cells = of_bus_pci_count_cells,
 384                .map = of_bus_pci_map,
 385                .translate = of_bus_pci_translate,
 386                .get_flags = of_bus_pci_get_flags,
 387        },
 388#endif /* CONFIG_PCI */
 389        /* ISA */
 390        {
 391                .name = "isa",
 392                .addresses = "reg",
 393                .match = of_bus_isa_match,
 394                .count_cells = of_bus_isa_count_cells,
 395                .map = of_bus_isa_map,
 396                .translate = of_bus_isa_translate,
 397                .get_flags = of_bus_isa_get_flags,
 398        },
 399        /* Default */
 400        {
 401                .name = "default",
 402                .addresses = "reg",
 403                .match = NULL,
 404                .count_cells = of_bus_default_count_cells,
 405                .map = of_bus_default_map,
 406                .translate = of_bus_default_translate,
 407                .get_flags = of_bus_default_get_flags,
 408        },
 409};

懂了...

正在整理函数of_address_to_resource的原理。等整理清楚了会贴上了,希望能整理清楚

抱歉!评论已关闭.