Lines Matching +full:aux +full:- +full:bus

1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
34 #include <sys/bus.h>
57 #include <machine/bus.h>
99 clk_t aclk_mst, aclk_slv, aclk_dbi, pclk, aux; member
106 {"rockchip,rk3568-pcie", 1},
116 device_printf(sc->dev, "INTERRUPT!!\n"); in rk3568_intr()
125 val = bus_read_4(sc->apb_res, PCIE_CLIENT_LTSSM_STATUS); in rk3568_pcie_get_link()
143 if (sc->reset_gpio != NULL) { in rk3568_pcie_init_soc()
144 if (gpio_pin_setflags(sc->reset_gpio, GPIO_PIN_OUTPUT)) { in rk3568_pcie_init_soc()
148 if (gpio_pin_set_active(sc->reset_gpio, true)) { in rk3568_pcie_init_soc()
155 if (hwreset_assert(sc->hwreset)) { in rk3568_pcie_init_soc()
161 if (sc->regulator != NULL) { in rk3568_pcie_init_soc()
162 if (regulator_enable(sc->regulator)) { in rk3568_pcie_init_soc()
169 if (phy_enable(sc->phy)) { in rk3568_pcie_init_soc()
175 if (hwreset_deassert(sc->hwreset)) { in rk3568_pcie_init_soc()
181 if ((err = clk_enable(sc->aclk_mst))) { in rk3568_pcie_init_soc()
185 if ((err = clk_enable(sc->aclk_slv))) { in rk3568_pcie_init_soc()
189 if ((err = clk_enable(sc->aclk_dbi))) { in rk3568_pcie_init_soc()
193 if ((err = clk_enable(sc->pclk))) { in rk3568_pcie_init_soc()
197 if ((err = clk_enable(sc->aux))) { in rk3568_pcie_init_soc()
198 device_printf(dev, "Could not enable aux clk\n"); in rk3568_pcie_init_soc()
203 bus_write_4(sc->apb_res, PCIE_CLIENT_HOT_RESET_CTRL, in rk3568_pcie_init_soc()
205 bus_write_4(sc->apb_res, PCIE_CLIENT_GENERAL_CON, in rk3568_pcie_init_soc()
209 if ((err = gpio_pin_set_active(sc->reset_gpio, false))) in rk3568_pcie_init_soc()
213 bus_write_4(sc->apb_res, PCIE_CLIENT_GENERAL_CON, in rk3568_pcie_init_soc()
219 if (sc->reset_gpio != NULL) { in rk3568_pcie_init_soc()
220 if (gpio_pin_set_active(sc->reset_gpio, true)) { in rk3568_pcie_init_soc()
227 for (count = 20; count; count--) { in rk3568_pcie_init_soc()
245 bus_write_4(sc->apb_res, PCIE_CLIENT_INTR_MASK_MSG_RX, 0x7fff0000); in rk3568_pcie_init_soc()
248 bus_write_4(sc->apb_res, PCIE_CLIENT_INTR_MASK_LEGACY, 0x00ff0000); in rk3568_pcie_init_soc()
251 bus_write_4(sc->apb_res, PCIE_CLIENT_INTR_MASK_ERR, 0x0fff0000); in rk3568_pcie_init_soc()
262 if (sc->irq_handle) in rk3568_pcie_detach()
263 bus_teardown_intr(dev, sc->irq_res, sc->irq_handle); in rk3568_pcie_detach()
264 if (sc->phy) in rk3568_pcie_detach()
265 phy_release(sc->phy); in rk3568_pcie_detach()
266 if (sc->aux) in rk3568_pcie_detach()
267 clk_release(sc->aux); in rk3568_pcie_detach()
268 if (sc->pclk) in rk3568_pcie_detach()
269 clk_release(sc->pclk); in rk3568_pcie_detach()
270 if (sc->aclk_dbi) in rk3568_pcie_detach()
271 clk_release(sc->aclk_dbi); in rk3568_pcie_detach()
272 if (sc->aclk_slv) in rk3568_pcie_detach()
273 clk_release(sc->aclk_slv); in rk3568_pcie_detach()
274 if (sc->aclk_mst) in rk3568_pcie_detach()
275 clk_release(sc->aclk_mst); in rk3568_pcie_detach()
276 if (sc->hwreset) in rk3568_pcie_detach()
277 hwreset_release(sc->hwreset); in rk3568_pcie_detach()
278 if (sc->regulator) in rk3568_pcie_detach()
279 regulator_release(sc->regulator); in rk3568_pcie_detach()
280 if (sc->irq_res) in rk3568_pcie_detach()
281 bus_release_resource(dev, SYS_RES_IRQ, sc->irq_rid, in rk3568_pcie_detach()
282 sc->irq_res); in rk3568_pcie_detach()
283 if (sc->dbi_res) in rk3568_pcie_detach()
284 bus_release_resource(dev, SYS_RES_MEMORY, sc->dbi_rid, in rk3568_pcie_detach()
285 sc->dbi_res); in rk3568_pcie_detach()
286 if (sc->apb_res) in rk3568_pcie_detach()
287 bus_release_resource(dev, SYS_RES_MEMORY, sc->apb_rid, in rk3568_pcie_detach()
288 sc->apb_res); in rk3568_pcie_detach()
298 sc->dev = dev; in rk3568_pcie_attach()
299 sc->node = ofw_bus_get_node(dev); in rk3568_pcie_attach()
302 if ((error = ofw_bus_find_string_index(sc->node, "reg-names", "apb", in rk3568_pcie_attach()
303 &sc->apb_rid))) { in rk3568_pcie_attach()
307 if (!(sc->apb_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, in rk3568_pcie_attach()
308 &sc->apb_rid, RF_ACTIVE))) { in rk3568_pcie_attach()
312 if ((error = ofw_bus_find_string_index(sc->node, "reg-names", "dbi", in rk3568_pcie_attach()
313 &sc->dbi_rid))) { in rk3568_pcie_attach()
317 if (!(sc->dw_sc.dbi_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, in rk3568_pcie_attach()
318 &sc->dbi_rid, RF_ACTIVE))) { in rk3568_pcie_attach()
323 if (!(sc->irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ, in rk3568_pcie_attach()
324 &sc->irq_rid, RF_ACTIVE | RF_SHAREABLE))) { in rk3568_pcie_attach()
330 error = regulator_get_by_ofw_property(dev, 0, "vpcie3v3-supply", in rk3568_pcie_attach()
331 &sc->regulator); in rk3568_pcie_attach()
338 if (hwreset_get_by_ofw_name(dev, 0, "pipe", &sc->hwreset)) { in rk3568_pcie_attach()
344 error = gpio_pin_get_by_ofw_property(dev, sc->node, "reset-gpios", in rk3568_pcie_attach()
345 &sc->reset_gpio); in rk3568_pcie_attach()
347 device_printf(dev, "Cannot get reset-gpios\n"); in rk3568_pcie_attach()
352 if (clk_get_by_ofw_name(dev, 0, "aclk_mst", &sc->aclk_mst)) { in rk3568_pcie_attach()
356 if (clk_get_by_ofw_name(dev, 0, "aclk_slv", &sc->aclk_slv)) { in rk3568_pcie_attach()
360 if (clk_get_by_ofw_name(dev, 0, "aclk_dbi", &sc->aclk_dbi)) { in rk3568_pcie_attach()
364 if (clk_get_by_ofw_name(dev, 0, "pclk", &sc->pclk)) { in rk3568_pcie_attach()
368 if (clk_get_by_ofw_name(dev, 0, "aux", &sc->aux)) { in rk3568_pcie_attach()
369 device_printf(dev, "Can not get aux clk\n"); in rk3568_pcie_attach()
374 if (phy_get_by_ofw_name(dev, 0, "pcie-phy", &sc->phy)) { in rk3568_pcie_attach()
375 device_printf(dev, "Cannot get 'pcie-phy'\n"); in rk3568_pcie_attach()
383 if ((bus_setup_intr(dev, sc->irq_res, INTR_TYPE_MISC | INTR_MPSAFE, in rk3568_pcie_attach()
384 NULL, rk3568_intr, sc, &sc->irq_handle))) { in rk3568_pcie_attach()
402 if (!ofw_bus_search_compatible(dev, compat_data)->ocd_data) in rk3568_pcie_probe()
404 device_set_desc(dev, "RockChip RK3568 PCI-express controller"); in rk3568_pcie_probe()