Lines Matching refs:bdf

20 uint32_t pcie_conf_read(pcie_bdf_t bdf, unsigned int reg)  in pcie_conf_read()  argument
30 return pcie_ctrl_conf_read(dev, bdf, reg); in pcie_conf_read()
33 void pcie_conf_write(pcie_bdf_t bdf, unsigned int reg, uint32_t data) in pcie_conf_write() argument
43 pcie_ctrl_conf_write(dev, bdf, reg, data); in pcie_conf_write()
46 uint32_t pcie_generic_ctrl_conf_read(mm_reg_t cfg_addr, pcie_bdf_t bdf, unsigned int reg) in pcie_generic_ctrl_conf_read() argument
48 volatile uint32_t *bdf_cfg_mem = (volatile uint32_t *)((uintptr_t)cfg_addr + (bdf << 4)); in pcie_generic_ctrl_conf_read()
57 void pcie_generic_ctrl_conf_write(mm_reg_t cfg_addr, pcie_bdf_t bdf, in pcie_generic_ctrl_conf_write() argument
60 volatile uint32_t *bdf_cfg_mem = (volatile uint32_t *)((uintptr_t)cfg_addr + (bdf << 4)); in pcie_generic_ctrl_conf_write()
69 static void pcie_generic_ctrl_enumerate_bars(const struct device *ctrl_dev, pcie_bdf_t bdf, in pcie_generic_ctrl_enumerate_bars() argument
80 data = scratch = pcie_conf_read(bdf, reg); in pcie_generic_ctrl_enumerate_bars()
90 scratch |= ((uint64_t)pcie_conf_read(bdf, reg + 1)) << 32; in pcie_generic_ctrl_enumerate_bars()
101 pcie_conf_write(bdf, reg, 0xFFFFFFFF); in pcie_generic_ctrl_enumerate_bars()
102 size = pcie_conf_read(bdf, reg); in pcie_generic_ctrl_enumerate_bars()
103 pcie_conf_write(bdf, reg, scratch & 0xFFFFFFFF); in pcie_generic_ctrl_enumerate_bars()
106 pcie_conf_write(bdf, reg + 1, 0xFFFFFFFF); in pcie_generic_ctrl_enumerate_bars()
107 size |= ((uint64_t)pcie_conf_read(bdf, reg + 1)) << 32; in pcie_generic_ctrl_enumerate_bars()
108 pcie_conf_write(bdf, reg + 1, scratch >> 32); in pcie_generic_ctrl_enumerate_bars()
128 if (pcie_ctrl_region_allocate(ctrl_dev, bdf, found_mem, in pcie_generic_ctrl_enumerate_bars()
132 pcie_ctrl_region_translate(ctrl_dev, bdf, found_mem, in pcie_generic_ctrl_enumerate_bars()
137 PCIE_BDF_TO_BUS(bdf), PCIE_BDF_TO_DEV(bdf), PCIE_BDF_TO_FUNC(bdf), in pcie_generic_ctrl_enumerate_bars()
143 pcie_conf_write(bdf, reg, bar_bus_addr & 0xFFFFFFFF); in pcie_generic_ctrl_enumerate_bars()
145 pcie_conf_write(bdf, reg + 1, bar_bus_addr >> 32); in pcie_generic_ctrl_enumerate_bars()
149 PCIE_BDF_TO_BUS(bdf), PCIE_BDF_TO_DEV(bdf), PCIE_BDF_TO_FUNC(bdf), in pcie_generic_ctrl_enumerate_bars()
159 static bool pcie_generic_ctrl_enumerate_type1(const struct device *ctrl_dev, pcie_bdf_t bdf, in pcie_generic_ctrl_enumerate_type1() argument
162 uint32_t class = pcie_conf_read(bdf, PCIE_CONF_CLASSREV); in pcie_generic_ctrl_enumerate_type1()
167 uint32_t number = pcie_conf_read(bdf, PCIE_BUS_NUMBER); in pcie_generic_ctrl_enumerate_type1()
170 pcie_generic_ctrl_enumerate_bars(ctrl_dev, bdf, 2); in pcie_generic_ctrl_enumerate_type1()
173 pcie_conf_write(bdf, PCIE_BUS_NUMBER, in pcie_generic_ctrl_enumerate_type1()
174 PCIE_BUS_NUMBER_VAL(PCIE_BDF_TO_BUS(bdf), in pcie_generic_ctrl_enumerate_type1()
180 if (pcie_ctrl_region_get_allocate_base(ctrl_dev, bdf, false, false, in pcie_generic_ctrl_enumerate_type1()
182 uint32_t io = pcie_conf_read(bdf, PCIE_IO_SEC_STATUS); in pcie_generic_ctrl_enumerate_type1()
183 uint32_t io_upper = pcie_conf_read(bdf, PCIE_IO_BASE_LIMIT_UPPER); in pcie_generic_ctrl_enumerate_type1()
185 pcie_conf_write(bdf, PCIE_IO_SEC_STATUS, in pcie_generic_ctrl_enumerate_type1()
190 pcie_conf_write(bdf, PCIE_IO_BASE_LIMIT_UPPER, in pcie_generic_ctrl_enumerate_type1()
194 pcie_set_cmd(bdf, PCIE_CONF_CMDSTAT_IO, true); in pcie_generic_ctrl_enumerate_type1()
198 if (pcie_ctrl_region_get_allocate_base(ctrl_dev, bdf, true, false, in pcie_generic_ctrl_enumerate_type1()
200 uint32_t mem = pcie_conf_read(bdf, PCIE_MEM_BASE_LIMIT); in pcie_generic_ctrl_enumerate_type1()
202 pcie_conf_write(bdf, PCIE_MEM_BASE_LIMIT, in pcie_generic_ctrl_enumerate_type1()
206 pcie_set_cmd(bdf, PCIE_CONF_CMDSTAT_MEM, true); in pcie_generic_ctrl_enumerate_type1()
211 pcie_set_cmd(bdf, PCIE_CONF_CMDSTAT_MASTER, true); in pcie_generic_ctrl_enumerate_type1()
219 static void pcie_generic_ctrl_post_enumerate_type1(const struct device *ctrl_dev, pcie_bdf_t bdf, in pcie_generic_ctrl_post_enumerate_type1() argument
222 uint32_t number = pcie_conf_read(bdf, PCIE_BUS_NUMBER); in pcie_generic_ctrl_post_enumerate_type1()
226 pcie_conf_write(bdf, PCIE_BUS_NUMBER, in pcie_generic_ctrl_post_enumerate_type1()
233 if (pcie_ctrl_region_get_allocate_base(ctrl_dev, bdf, false, false, in pcie_generic_ctrl_post_enumerate_type1()
235 uint32_t io = pcie_conf_read(bdf, PCIE_IO_SEC_STATUS); in pcie_generic_ctrl_post_enumerate_type1()
236 uint32_t io_upper = pcie_conf_read(bdf, PCIE_IO_BASE_LIMIT_UPPER); in pcie_generic_ctrl_post_enumerate_type1()
238 pcie_conf_write(bdf, PCIE_IO_SEC_STATUS, in pcie_generic_ctrl_post_enumerate_type1()
243 pcie_conf_write(bdf, PCIE_IO_BASE_LIMIT_UPPER, in pcie_generic_ctrl_post_enumerate_type1()
249 if (pcie_ctrl_region_get_allocate_base(ctrl_dev, bdf, true, false, in pcie_generic_ctrl_post_enumerate_type1()
251 uint32_t mem = pcie_conf_read(bdf, PCIE_MEM_BASE_LIMIT); in pcie_generic_ctrl_post_enumerate_type1()
253 pcie_conf_write(bdf, PCIE_MEM_BASE_LIMIT, in pcie_generic_ctrl_post_enumerate_type1()
261 static void pcie_generic_ctrl_enumerate_type0(const struct device *ctrl_dev, pcie_bdf_t bdf) in pcie_generic_ctrl_enumerate_type0() argument
264 pcie_generic_ctrl_enumerate_bars(ctrl_dev, bdf, 6); in pcie_generic_ctrl_enumerate_type0()
268 pcie_bdf_t bdf, unsigned int bus_number, in pcie_generic_ctrl_enumerate_endpoint() argument
278 id = pcie_conf_read(bdf, PCIE_CONF_ID); in pcie_generic_ctrl_enumerate_endpoint()
283 class = pcie_conf_read(bdf, PCIE_CONF_CLASSREV); in pcie_generic_ctrl_enumerate_endpoint()
284 data = pcie_conf_read(bdf, PCIE_CONF_TYPE); in pcie_generic_ctrl_enumerate_endpoint()
291 PCIE_BDF_TO_BUS(bdf), PCIE_BDF_TO_DEV(bdf), PCIE_BDF_TO_FUNC(bdf), in pcie_generic_ctrl_enumerate_endpoint()
301 if (PCIE_BDF_TO_FUNC(bdf) == 0 && !multifunction_device) { in pcie_generic_ctrl_enumerate_endpoint()
306 is_bridge = pcie_generic_ctrl_enumerate_type1(ctrl_dev, bdf, bus_number); in pcie_generic_ctrl_enumerate_endpoint()
308 pcie_generic_ctrl_enumerate_type0(ctrl_dev, bdf); in pcie_generic_ctrl_enumerate_endpoint()
315 static inline unsigned int pcie_bdf_bus_next(unsigned int bdf, bool skip_next_func) in pcie_bdf_bus_next() argument
318 if (PCIE_BDF_TO_DEV(bdf) == PCIE_BDF_DEV_MASK) { in pcie_bdf_bus_next()
322 return PCIE_BDF(PCIE_BDF_TO_BUS(bdf), PCIE_BDF_TO_DEV(bdf) + 1, 0); in pcie_bdf_bus_next()
325 if (PCIE_BDF_TO_DEV(bdf) == PCIE_BDF_DEV_MASK && in pcie_bdf_bus_next()
326 PCIE_BDF_TO_FUNC(bdf) == PCIE_BDF_FUNC_MASK) { in pcie_bdf_bus_next()
330 return PCIE_BDF(PCIE_BDF_TO_BUS(bdf), in pcie_bdf_bus_next()
331 (PCIE_BDF_TO_DEV(bdf) + in pcie_bdf_bus_next()
332 ((PCIE_BDF_TO_FUNC(bdf) + 1) / (PCIE_BDF_FUNC_MASK + 1))), in pcie_bdf_bus_next()
333 ((PCIE_BDF_TO_FUNC(bdf) + 1) & PCIE_BDF_FUNC_MASK)); in pcie_bdf_bus_next()