Lines Matching refs:pdev

32 rt_uint32_t rt_pci_domain(struct rt_pci_device *pdev)  in rt_pci_domain()  argument
36 if (!pdev) in rt_pci_domain()
41 if ((host_bridge = rt_pci_find_host_bridge(pdev->bus))) in rt_pci_domain()
136 rt_uint8_t rt_pci_find_capability(struct rt_pci_device *pdev, int cap) in rt_pci_find_capability() argument
140 if (pdev) in rt_pci_find_capability()
142 res = pci_bus_find_cap_start(pdev->bus, pdev->devfn, pdev->hdr_type); in rt_pci_find_capability()
146 res = pci_find_next_cap(pdev->bus, pdev->devfn, res, cap); in rt_pci_find_capability()
153 rt_uint8_t rt_pci_find_next_capability(struct rt_pci_device *pdev, rt_uint8_t pos, int cap) in rt_pci_find_next_capability() argument
157 if (pdev) in rt_pci_find_next_capability()
159 res = pci_find_next_cap(pdev->bus, pdev->devfn, pos + PCICAP_NEXTPTR, cap); in rt_pci_find_next_capability()
165 rt_uint16_t rt_pci_find_ext_capability(struct rt_pci_device *pdev, int cap) in rt_pci_find_ext_capability() argument
167 return rt_pci_find_ext_next_capability(pdev, 0, cap); in rt_pci_find_ext_capability()
170 rt_uint16_t rt_pci_find_ext_next_capability(struct rt_pci_device *pdev, rt_uint16_t pos, int cap) in rt_pci_find_ext_next_capability() argument
179 if (pdev->cfg_size <= PCI_REGMAX + 1) in rt_pci_find_ext_next_capability()
189 if (rt_pci_read_config_u32(pdev, pos, &header)) in rt_pci_find_ext_next_capability()
217 if (rt_pci_read_config_u32(pdev, pos, &header)) in rt_pci_find_ext_next_capability()
226 static void pci_set_master(struct rt_pci_device *pdev, rt_bool_t enable) in pci_set_master() argument
230 rt_pci_read_config_u16(pdev, PCIR_COMMAND, &old_cmd); in pci_set_master()
243 rt_pci_write_config_u16(pdev, PCIR_COMMAND, cmd); in pci_set_master()
246 pdev->busmaster = !!enable; in pci_set_master()
249 void rt_pci_set_master(struct rt_pci_device *pdev) in rt_pci_set_master() argument
251 if (pdev) in rt_pci_set_master()
253 pci_set_master(pdev, RT_TRUE); in rt_pci_set_master()
257 void rt_pci_clear_master(struct rt_pci_device *pdev) in rt_pci_clear_master() argument
259 if (pdev) in rt_pci_clear_master()
261 pci_set_master(pdev, RT_FALSE); in rt_pci_clear_master()
265 void rt_pci_intx(struct rt_pci_device *pdev, rt_bool_t enable) in rt_pci_intx() argument
269 if (!pdev) in rt_pci_intx()
274 rt_pci_read_config_u16(pdev, PCIR_COMMAND, &pci_command); in rt_pci_intx()
287 rt_pci_write_config_u16(pdev, PCIR_COMMAND, new); in rt_pci_intx()
291 static rt_bool_t pci_check_and_set_intx_mask(struct rt_pci_device *pdev, rt_bool_t mask) in pci_check_and_set_intx_mask() argument
298 struct rt_pci_bus *bus = pdev->bus; in pci_check_and_set_intx_mask()
302 bus->ops->read(bus, pdev->devfn, PCIR_COMMAND, 4, &cmd_status_dword); in pci_check_and_set_intx_mask()
326 bus->ops->write(bus, pdev->devfn, PCIR_COMMAND, 2, newcmd); in pci_check_and_set_intx_mask()
335 rt_bool_t rt_pci_check_and_mask_intx(struct rt_pci_device *pdev) in rt_pci_check_and_mask_intx() argument
339 if (pdev) in rt_pci_check_and_mask_intx()
341 res = pci_check_and_set_intx_mask(pdev, RT_TRUE); in rt_pci_check_and_mask_intx()
347 rt_bool_t rt_pci_check_and_unmask_intx(struct rt_pci_device *pdev) in rt_pci_check_and_unmask_intx() argument
351 if (pdev) in rt_pci_check_and_unmask_intx()
353 res = pci_check_and_set_intx_mask(pdev, RT_FALSE); in rt_pci_check_and_unmask_intx()
359 void rt_pci_irq_mask(struct rt_pci_device *pdev) in rt_pci_irq_mask() argument
361 if (pdev) in rt_pci_irq_mask()
366 rt_pci_intx(pdev, RT_FALSE); in rt_pci_irq_mask()
368 pirq = rt_pic_find_pirq(pdev->intx_pic, pdev->irq); in rt_pci_irq_mask()
377 rt_hw_interrupt_mask(pdev->irq); in rt_pci_irq_mask()
382 void rt_pci_irq_unmask(struct rt_pci_device *pdev) in rt_pci_irq_unmask() argument
384 if (pdev) in rt_pci_irq_unmask()
386 rt_hw_interrupt_umask(pdev->irq); in rt_pci_irq_unmask()
387 rt_pci_intx(pdev, RT_TRUE); in rt_pci_irq_unmask()
421 rt_uint8_t rt_pci_irq_intx(struct rt_pci_device *pdev, rt_uint8_t pin) in rt_pci_irq_intx() argument
425 if (!pdev->ari_enabled) in rt_pci_irq_intx()
427 slot = RT_PCI_SLOT(pdev->devfn); in rt_pci_irq_intx()
433 rt_uint8_t rt_pci_irq_slot(struct rt_pci_device *pdev, rt_uint8_t *pinp) in rt_pci_irq_slot() argument
437 while (!rt_pci_is_root_bus(pdev->bus)) in rt_pci_irq_slot()
439 pin = rt_pci_irq_intx(pdev, pin); in rt_pci_irq_slot()
440 pdev = pdev->bus->self; in rt_pci_irq_slot()
445 return RT_PCI_SLOT(pdev->devfn); in rt_pci_irq_slot()
529 struct rt_pci_device *pdev) in rt_pci_device_alloc_resource() argument
549 rt_pci_read_config_u16(pdev, PCIR_COMMAND, &command); in rt_pci_device_alloc_resource()
551 rt_pci_read_config_u8(pdev, PCIR_HDRTYPE, &hdr_type); in rt_pci_device_alloc_resource()
553 if (pdev->hdr_type != hdr_type) in rt_pci_device_alloc_resource()
555 LOG_W("%s may not initialized", rt_dm_dev_get_name(&pdev->parent)); in rt_pci_device_alloc_resource()
587 rt_pci_write_config_u32(pdev, bar_base, RT_UINT32_MAX); in rt_pci_device_alloc_resource()
588 rt_pci_read_config_u32(pdev, bar_base, &cfg); in rt_pci_device_alloc_resource()
596 rt_pci_write_config_u32(pdev, bar_base, 0UL); in rt_pci_device_alloc_resource()
619 rt_pci_write_config_u32(pdev, bar_base + sizeof(rt_uint32_t), RT_UINT32_MAX); in rt_pci_device_alloc_resource()
620 rt_pci_read_config_u32(pdev, bar_base + sizeof(rt_uint32_t), &cfg64); in rt_pci_device_alloc_resource()
647 rt_pci_write_config_u32(pdev, bar_base, addr); in rt_pci_device_alloc_resource()
653 rt_pci_write_config_u32(pdev, bar_base, (rt_uint32_t)(addr >> 32)); in rt_pci_device_alloc_resource()
659 rt_pci_write_config_u32(pdev, bar_base, 0UL); in rt_pci_device_alloc_resource()
663 pdev->resource[i].size = size; in rt_pci_device_alloc_resource()
664 pdev->resource[i].base = region->cpu_addr + (addr - region->phy_addr); in rt_pci_device_alloc_resource()
665 pdev->resource[i].flags = flags; in rt_pci_device_alloc_resource()
670 pdev->resource[i].flags = PCI_BUS_REGION_F_NONE; in rt_pci_device_alloc_resource()
676 LOG_W("%s alloc bar(%d) address fail", rt_dm_dev_get_name(&pdev->parent), i); in rt_pci_device_alloc_resource()
686 rt_pci_write_config_u32(pdev, rom_addr, 0xfffffffe); in rt_pci_device_alloc_resource()
687 rt_pci_read_config_u32(pdev, rom_addr, &cfg); in rt_pci_device_alloc_resource()
695 rt_pci_write_config_u32(pdev, rom_addr, addr); in rt_pci_device_alloc_resource()
699 pdev->rom.base = addr; in rt_pci_device_alloc_resource()
700 pdev->rom.size = size; in rt_pci_device_alloc_resource()
701 pdev->rom.flags = PCI_BUS_REGION_F_MEM; in rt_pci_device_alloc_resource()
705 rt_pci_read_config_u16(pdev, PCIR_SUBCLASS, &class); in rt_pci_device_alloc_resource()
712 rt_pci_write_config_u16(pdev, PCIR_COMMAND, command); in rt_pci_device_alloc_resource()
713 rt_pci_write_config_u8(pdev, PCIR_CACHELNSZ, RT_PCI_CACHE_LINE_SIZE); in rt_pci_device_alloc_resource()
714 rt_pci_write_config_u8(pdev, PCIR_LATTIMER, 0x80); in rt_pci_device_alloc_resource()
719 struct rt_pci_bus_resource *rt_pci_find_bar(struct rt_pci_device* pdev,rt_ubase_t flags,int index) in rt_pci_find_bar() argument
723 if (pdev->resource[i].flags == flags) in rt_pci_find_bar()
727 return &pdev->resource[i]; in rt_pci_find_bar()
739 struct rt_pci_device *pdev, *last_pdev = RT_NULL; in rt_pci_enum_device() local
759 rt_list_for_each_entry(pdev, &bus->devices_nodes, list) in rt_pci_enum_device()
777 ++pdev->parent.ref_count; in rt_pci_enum_device()
778 last_pdev = pdev; in rt_pci_enum_device()
818 rt_list_for_each_entry(pdev, &parent->devices_nodes, list) in rt_pci_enum_device()
836 ++pdev->parent.ref_count; in rt_pci_enum_device()
837 last_pdev = pdev; in rt_pci_enum_device()
861 const struct rt_pci_device_id *rt_pci_match_id(struct rt_pci_device *pdev, in rt_pci_match_id() argument
864 if ((id->vendor == PCI_ANY_ID || id->vendor == pdev->vendor) && in rt_pci_match_id()
865 (id->device == PCI_ANY_ID || id->device == pdev->device) && in rt_pci_match_id()
866 (id->subsystem_vendor == PCI_ANY_ID || id->subsystem_vendor == pdev->subsystem_vendor) && in rt_pci_match_id()
867 (id->subsystem_device == PCI_ANY_ID || id->subsystem_device == pdev->subsystem_device) && in rt_pci_match_id()
868 !((id->class ^ pdev->class) & id->class_mask)) in rt_pci_match_id()
876 const struct rt_pci_device_id *rt_pci_match_ids(struct rt_pci_device *pdev, in rt_pci_match_ids() argument
881 if (rt_pci_match_id(pdev, ids)) in rt_pci_match_ids()
908 rt_err_t rt_pci_device_register(struct rt_pci_device *pdev) in rt_pci_device_register() argument
911 RT_ASSERT(pdev != RT_NULL); in rt_pci_device_register()
913 if ((err = rt_bus_add_device(&pci_bus, &pdev->parent))) in rt_pci_device_register()
925 struct rt_pci_device *pdev = rt_container_of(dev, struct rt_pci_device, parent); in pci_match() local
927 if (pdrv->name && pdev->name) in pci_match()
929 match = rt_strcmp(pdrv->name, pdev->name) ? RT_FALSE : RT_TRUE; in pci_match()
934 pdev->id = rt_pci_match_ids(pdev, pdrv->ids); in pci_match()
936 match = pdev->id ? RT_TRUE : RT_FALSE; in pci_match()
946 struct rt_pci_device *pdev = rt_container_of(dev, struct rt_pci_device, parent); in pci_probe() local
948 rt_pci_assign_irq(pdev); in pci_probe()
949 rt_pci_enable_wake(pdev, RT_PCI_D0, RT_TRUE); in pci_probe()
951 err = pdrv->probe(pdev); in pci_probe()
955 rt_pci_enable_wake(pdev, RT_PCI_D0, RT_FALSE); in pci_probe()
966 struct rt_pci_device *pdev = rt_container_of(dev, struct rt_pci_device, parent); in pci_remove() local
970 if ((err = pdrv->remove(pdev))) in pci_remove()
976 rt_pci_enable_wake(pdev, RT_PCI_D0, RT_FALSE); in pci_remove()
978 bus = pdev->bus; in pci_remove()
979 rt_pci_device_remove(pdev); in pci_remove()
990 struct rt_pci_device *pdev = rt_container_of(dev, struct rt_pci_device, parent); in pci_shutdown() local
994 pdrv->shutdown(pdev); in pci_shutdown()
997 rt_pci_enable_wake(pdev, RT_PCI_D0, RT_FALSE); in pci_shutdown()
999 bus = pdev->bus; in pci_shutdown()
1000 rt_pci_device_remove(pdev); in pci_shutdown()