|
1 | 1 | // SPDX-License-Identifier: GPL-2.0-only |
2 | 2 | /* |
3 | | - * Copyright (C) 2014-2025 NVIDIA CORPORATION. All rights reserved. |
| 3 | + * Copyright (C) 2014-2026 NVIDIA CORPORATION. All rights reserved. |
4 | 4 | */ |
5 | 5 |
|
6 | 6 | #include <linux/clk.h> |
@@ -56,6 +56,23 @@ static const struct of_device_id tegra_mc_of_match[] = { |
56 | 56 | }; |
57 | 57 | MODULE_DEVICE_TABLE(of, tegra_mc_of_match); |
58 | 58 |
|
| 59 | +const struct tegra_mc_regs tegra20_mc_regs = { |
| 60 | + .cfg_channel_enable = 0xdf8, |
| 61 | + .err_status = 0x08, |
| 62 | + .err_add = 0x0c, |
| 63 | + .err_add_hi = 0x11fc, |
| 64 | + .err_vpr_status = 0x654, |
| 65 | + .err_vpr_add = 0x658, |
| 66 | + .err_sec_status = 0x67c, |
| 67 | + .err_sec_add = 0x680, |
| 68 | + .err_mts_status = 0x9b0, |
| 69 | + .err_mts_add = 0x9b4, |
| 70 | + .err_gen_co_status = 0xc00, |
| 71 | + .err_gen_co_add = 0xc04, |
| 72 | + .err_route_status = 0x9c0, |
| 73 | + .err_route_add = 0x9c4, |
| 74 | +}; |
| 75 | + |
59 | 76 | static void tegra_mc_devm_action_put_device(void *data) |
60 | 77 | { |
61 | 78 | struct tegra_mc *mc = data; |
@@ -591,37 +608,37 @@ irqreturn_t tegra30_mc_handle_irq(int irq, void *data) |
591 | 608 |
|
592 | 609 | switch (intmask) { |
593 | 610 | case MC_INT_DECERR_VPR: |
594 | | - status_reg = MC_ERR_VPR_STATUS; |
595 | | - addr_reg = MC_ERR_VPR_ADR; |
| 611 | + status_reg = mc->soc->regs->err_vpr_status; |
| 612 | + addr_reg = mc->soc->regs->err_vpr_add; |
596 | 613 | break; |
597 | 614 |
|
598 | 615 | case MC_INT_SECERR_SEC: |
599 | | - status_reg = MC_ERR_SEC_STATUS; |
600 | | - addr_reg = MC_ERR_SEC_ADR; |
| 616 | + status_reg = mc->soc->regs->err_sec_status; |
| 617 | + addr_reg = mc->soc->regs->err_sec_add; |
601 | 618 | break; |
602 | 619 |
|
603 | 620 | case MC_INT_DECERR_MTS: |
604 | | - status_reg = MC_ERR_MTS_STATUS; |
605 | | - addr_reg = MC_ERR_MTS_ADR; |
| 621 | + status_reg = mc->soc->regs->err_mts_status; |
| 622 | + addr_reg = mc->soc->regs->err_mts_add; |
606 | 623 | break; |
607 | 624 |
|
608 | 625 | case MC_INT_DECERR_GENERALIZED_CARVEOUT: |
609 | | - status_reg = MC_ERR_GENERALIZED_CARVEOUT_STATUS; |
610 | | - addr_reg = MC_ERR_GENERALIZED_CARVEOUT_ADR; |
| 626 | + status_reg = mc->soc->regs->err_gen_co_status; |
| 627 | + addr_reg = mc->soc->regs->err_gen_co_add; |
611 | 628 | break; |
612 | 629 |
|
613 | 630 | case MC_INT_DECERR_ROUTE_SANITY: |
614 | | - status_reg = MC_ERR_ROUTE_SANITY_STATUS; |
615 | | - addr_reg = MC_ERR_ROUTE_SANITY_ADR; |
| 631 | + status_reg = mc->soc->regs->err_route_status; |
| 632 | + addr_reg = mc->soc->regs->err_route_add; |
616 | 633 | break; |
617 | 634 |
|
618 | 635 | default: |
619 | | - status_reg = MC_ERR_STATUS; |
620 | | - addr_reg = MC_ERR_ADR; |
| 636 | + status_reg = mc->soc->regs->err_status; |
| 637 | + addr_reg = mc->soc->regs->err_add; |
621 | 638 |
|
622 | 639 | #ifdef CONFIG_PHYS_ADDR_T_64BIT |
623 | 640 | if (mc->soc->has_addr_hi_reg) |
624 | | - addr_hi_reg = MC_ERR_ADR_HI; |
| 641 | + addr_hi_reg = mc->soc->regs->err_add_hi; |
625 | 642 | #endif |
626 | 643 | break; |
627 | 644 | } |
@@ -874,7 +891,7 @@ static void tegra_mc_num_channel_enabled(struct tegra_mc *mc) |
874 | 891 | unsigned int i; |
875 | 892 | u32 value; |
876 | 893 |
|
877 | | - value = mc_ch_readl(mc, 0, MC_EMEM_ADR_CFG_CHANNEL_ENABLE); |
| 894 | + value = mc_ch_readl(mc, 0, mc->soc->regs->cfg_channel_enable); |
878 | 895 | if (value <= 0) { |
879 | 896 | mc->num_channels = mc->soc->num_channels; |
880 | 897 | return; |
|
0 commit comments