Lines Matching full:ahub
3 * tegra30_ahub.c - Tegra30 AHUB driver
21 #define DRV_NAME "tegra30-ahub"
23 static struct tegra30_ahub *ahub;
27 regmap_write(ahub->regmap_apbif, reg, val);
34 regmap_read(ahub->regmap_apbif, reg, &val);
40 regmap_write(ahub->regmap_ahub, reg, val);
45 regcache_cache_only(ahub->regmap_apbif, true);
46 regcache_cache_only(ahub->regmap_ahub, true);
48 clk_bulk_disable_unprepare(ahub->nclocks, ahub->clocks);
68 ret = reset_control_bulk_assert(ahub->nresets, ahub->resets);
72 ret = clk_bulk_prepare_enable(ahub->nclocks, ahub->clocks);
78 ret = reset_control_bulk_deassert(ahub->nresets, ahub->resets);
82 regcache_cache_only(ahub->regmap_apbif, false);
83 regcache_cache_only(ahub->regmap_ahub, false);
84 regcache_mark_dirty(ahub->regmap_apbif);
85 regcache_mark_dirty(ahub->regmap_ahub);
87 ret = regcache_sync(ahub->regmap_apbif);
91 ret = regcache_sync(ahub->regmap_ahub);
98 clk_bulk_disable_unprepare(ahub->nclocks, ahub->clocks);
111 channel = find_first_zero_bit(ahub->rx_usage,
116 __set_bit(channel, ahub->rx_usage);
120 *fiforeg = ahub->apbif_addr + TEGRA30_AHUB_CHANNEL_RXFIFO +
123 pm_runtime_get_sync(ahub->dev);
149 ahub->soc_data->set_audio_cif(ahub->regmap_apbif, reg, &cif_conf);
151 pm_runtime_put(ahub->dev);
162 pm_runtime_get_sync(ahub->dev);
170 pm_runtime_put(ahub->dev);
181 pm_runtime_get_sync(ahub->dev);
189 pm_runtime_put(ahub->dev);
199 __clear_bit(channel, ahub->rx_usage);
213 channel = find_first_zero_bit(ahub->tx_usage,
218 __set_bit(channel, ahub->tx_usage);
222 *fiforeg = ahub->apbif_addr + TEGRA30_AHUB_CHANNEL_TXFIFO +
225 pm_runtime_get_sync(ahub->dev);
251 ahub->soc_data->set_audio_cif(ahub->regmap_apbif, reg, &cif_conf);
253 pm_runtime_put(ahub->dev);
264 pm_runtime_get_sync(ahub->dev);
272 pm_runtime_put(ahub->dev);
283 pm_runtime_get_sync(ahub->dev);
291 pm_runtime_put(ahub->dev);
301 __clear_bit(channel, ahub->tx_usage);
313 pm_runtime_get_sync(ahub->dev);
319 pm_runtime_put(ahub->dev);
330 pm_runtime_get_sync(ahub->dev);
336 pm_runtime_put(ahub->dev);
481 .name = "ahub",
507 { .compatible = "nvidia,tegra124-ahub", .data = &soc_data_tegra124 },
508 { .compatible = "nvidia,tegra114-ahub", .data = &soc_data_tegra114 },
509 { .compatible = "nvidia,tegra30-ahub", .data = &soc_data_tegra30 },
524 ahub = devm_kzalloc(&pdev->dev, sizeof(struct tegra30_ahub),
526 if (!ahub)
528 dev_set_drvdata(&pdev->dev, ahub);
530 BUILD_BUG_ON(sizeof(ahub->resets) != sizeof(tegra30_ahub_resets_data));
531 memcpy(ahub->resets, tegra30_ahub_resets_data, sizeof(ahub->resets));
533 ahub->nresets = soc_data->num_resets;
534 ahub->soc_data = soc_data;
535 ahub->dev = &pdev->dev;
537 ahub->clocks[ahub->nclocks++].id = "apbif";
538 ahub->clocks[ahub->nclocks++].id = "d_audio";
540 ret = devm_clk_bulk_get(&pdev->dev, ahub->nclocks, ahub->clocks);
544 ret = devm_reset_control_bulk_get_exclusive(&pdev->dev, ahub->nresets,
545 ahub->resets);
557 ahub->apbif_addr = res0->start;
559 ahub->regmap_apbif = devm_regmap_init_mmio(&pdev->dev, regs_apbif,
561 if (IS_ERR(ahub->regmap_apbif)) {
563 ret = PTR_ERR(ahub->regmap_apbif);
566 regcache_cache_only(ahub->regmap_apbif, true);
574 ahub->regmap_ahub = devm_regmap_init_mmio(&pdev->dev, regs_ahub,
576 if (IS_ERR(ahub->regmap_ahub)) {
577 dev_err(&pdev->dev, "ahub regmap init failed\n");
578 ret = PTR_ERR(ahub->regmap_ahub);
581 regcache_cache_only(ahub->regmap_ahub, true);
590 ahub = NULL;
599 ahub = NULL;
684 MODULE_DESCRIPTION("Tegra30 AHUB driver");