Lines Matching +full:tegra30 +full:- +full:hda
1 // SPDX-License-Identifier: GPL-2.0-only
10 #include <dt-bindings/memory/tegra30-mc.h>
1152 { .name = "hda", .swgroup = TEGRA_SWGROUP_HDA, .reg = 0x254 },
1206 TEGRA30_MC_RESET(HDA, 0x200, 0x204, 7),
1224 unsigned int fifo_size = client->fifo_size; in tegra30_mc_tune_client_latency()
1244 switch (client->swgroup) { in tegra30_mc_tune_client_latency()
1271 arb_nsec -= arb_tolerance_compensation_nsec; in tegra30_mc_tune_client_latency()
1279 * client may wait in the EMEM arbiter before it becomes a high-priority in tegra30_mc_tune_client_latency()
1282 la_ticks = arb_nsec / mc->tick; in tegra30_mc_tune_client_latency()
1283 la_ticks = min(la_ticks, client->regs.la.mask); in tegra30_mc_tune_client_latency()
1285 value = mc_readl(mc, client->regs.la.reg); in tegra30_mc_tune_client_latency()
1286 value &= ~(client->regs.la.mask << client->regs.la.shift); in tegra30_mc_tune_client_latency()
1287 value |= la_ticks << client->regs.la.shift; in tegra30_mc_tune_client_latency()
1288 mc_writel(mc, value, client->regs.la.reg); in tegra30_mc_tune_client_latency()
1293 struct tegra_mc *mc = icc_provider_to_tegra_mc(src->provider); in tegra30_mc_icc_set()
1294 const struct tegra_mc_client *client = &mc->soc->clients[src->id]; in tegra30_mc_icc_set()
1295 u64 peak_bandwidth = icc_units_to_bps(src->peak_bw); in tegra30_mc_icc_set()
1298 * Skip pre-initialization that is done by icc_node_add(), which sets in tegra30_mc_icc_set()
1320 * ISO clients need to reserve extra bandwidth up-front because in tegra30_mc_icc_aggreate()
1339 unsigned int i, idx = spec->args[0]; in tegra30_mc_of_icc_xlate_extended()
1343 list_for_each_entry(node, &mc->provider.nodes, node_list) { in tegra30_mc_of_icc_xlate_extended()
1344 if (node->id != idx) in tegra30_mc_of_icc_xlate_extended()
1349 return ERR_PTR(-ENOMEM); in tegra30_mc_of_icc_xlate_extended()
1351 client = &mc->soc->clients[idx]; in tegra30_mc_of_icc_xlate_extended()
1352 ndata->node = node; in tegra30_mc_of_icc_xlate_extended()
1354 switch (client->swgroup) { in tegra30_mc_of_icc_xlate_extended()
1360 ndata->tag = TEGRA_MC_ICC_TAG_ISO; in tegra30_mc_of_icc_xlate_extended()
1364 ndata->tag = TEGRA_MC_ICC_TAG_DEFAULT; in tegra30_mc_of_icc_xlate_extended()
1371 for (i = 0; i < mc->soc->num_clients; i++) { in tegra30_mc_of_icc_xlate_extended()
1372 if (mc->soc->clients[i].id == idx) in tegra30_mc_of_icc_xlate_extended()
1373 return ERR_PTR(-EPROBE_DEFER); in tegra30_mc_of_icc_xlate_extended()
1376 dev_err(mc->dev, "invalid ICC client ID %u\n", idx); in tegra30_mc_of_icc_xlate_extended()
1378 return ERR_PTR(-EINVAL); in tegra30_mc_of_icc_xlate_extended()