/* get our clocks */
clk_pci = clk_get(&pdev->dev, NULL); if (IS_ERR(clk_pci)) {
dev_err(&pdev->dev, "failed to get pci clock\n"); return PTR_ERR(clk_pci);
}
clk_external = clk_get(&pdev->dev, "external"); if (IS_ERR(clk_external)) {
clk_put(clk_pci);
dev_err(&pdev->dev, "failed to get external pci clock\n"); return PTR_ERR(clk_external);
}
/* read the bus speed that we want */
bus_clk = of_get_property(node, "lantiq,bus-clock", NULL); if (bus_clk)
clk_set_rate(clk_pci, *bus_clk);
/* and enable the clocks */
clk_enable(clk_pci); if (of_property_read_bool(node, "lantiq,external-clock"))
clk_enable(clk_external); else
clk_disable(clk_external);
/* setup reset gpio used by pci */
reset_gpio = devm_gpiod_get_optional(&pdev->dev, "reset",
GPIOD_OUT_LOW);
error = PTR_ERR_OR_ZERO(reset_gpio); if (error) {
dev_err(&pdev->dev, "failed to request gpio: %d\n", error); return error;
}
gpiod_set_consumer_name(reset_gpio, "pci_reset");
/* enable auto-switching between PCI and EBU */
ltq_pci_w32(0xa, PCI_CR_CLK_CTRL);
/* busy, i.e. configuration is not done, PCI access has to be retried */
ltq_pci_w32(ltq_pci_r32(PCI_CR_PCI_MOD) & ~(1 << 24), PCI_CR_PCI_MOD);
wmb(); /* BUS Master/IO/MEM access */
ltq_pci_cfg_w32(ltq_pci_cfg_r32(PCI_CS_STS_CMD) | 7, PCI_CS_STS_CMD);
staticint __init pcibios_init(void)
{ int ret = platform_driver_register(<q_pci_driver); if (ret)
pr_info("pci-xway: Error registering platform driver!"); return ret;
}
arch_initcall(pcibios_init);
Messung V0.5 in Prozent
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.1Angebot
(Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-09-30)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.