| /kernel/linux/linux-6.6/drivers/memory/tegra/ |
| D | tegra20-emc.c | 216 * There are multiple sources in the EMC driver which could request 237 struct tegra_emc *emc = data; in tegra_emc_isr() local 241 status = readl_relaxed(emc->regs + EMC_INTSTATUS) & intmask; in tegra_emc_isr() 247 dev_err_ratelimited(emc->dev, in tegra_emc_isr() 251 writel_relaxed(status, emc->regs + EMC_INTSTATUS); in tegra_emc_isr() 256 static struct emc_timing *tegra_emc_find_timing(struct tegra_emc *emc, in tegra_emc_find_timing() argument 262 for (i = 0; i < emc->num_timings; i++) { in tegra_emc_find_timing() 263 if (emc->timings[i].rate >= rate) { in tegra_emc_find_timing() 264 timing = &emc->timings[i]; in tegra_emc_find_timing() 270 dev_err(emc->dev, "no timing for rate %lu\n", rate); in tegra_emc_find_timing() [all …]
|
| D | tegra30-emc.c | 5 * Based on downstream driver from NVIDIA and tegra124-emc.c 387 * There are multiple sources in the EMC driver which could request 398 static int emc_seq_update_timing(struct tegra_emc *emc) in emc_seq_update_timing() argument 403 writel_relaxed(EMC_TIMING_UPDATE, emc->regs + EMC_TIMING_CONTROL); in emc_seq_update_timing() 405 err = readl_relaxed_poll_timeout_atomic(emc->regs + EMC_STATUS, val, in emc_seq_update_timing() 409 dev_err(emc->dev, "failed to update timing: %d\n", err); in emc_seq_update_timing() 418 struct tegra_emc *emc = data; in tegra_emc_isr() local 422 status = readl_relaxed(emc->regs + EMC_INTSTATUS) & intmask; in tegra_emc_isr() 428 dev_err_ratelimited(emc->dev, in tegra_emc_isr() 432 writel_relaxed(status, emc->regs + EMC_INTSTATUS); in tegra_emc_isr() [all …]
|
| D | tegra186-emc.c | 42 * to control the EMC frequency. The top-level directory can be found here: 44 * /sys/kernel/debug/emc 49 * EMC frequencies. 53 * configured EMC frequency, this will cause the frequency to be 58 * the value is lower than the currently configured EMC frequency, this 63 static bool tegra186_emc_validate_rate(struct tegra186_emc *emc, in tegra186_emc_validate_rate() argument 68 for (i = 0; i < emc->num_dvfs; i++) in tegra186_emc_validate_rate() 69 if (rate == emc->dvfs[i].rate) in tegra186_emc_validate_rate() 78 struct tegra186_emc *emc = s->private; in tegra186_emc_debug_available_rates_show() local 82 for (i = 0; i < emc->num_dvfs; i++) { in tegra186_emc_debug_available_rates_show() [all …]
|
| D | tegra210-emc-core.c | 21 #include "tegra210-emc.h" 69 next->trim_perch_regs[EMC ## chan ## \ 561 struct tegra210_emc *emc = from_timer(emc, timer, training); in tegra210_emc_train() local 564 if (!emc->last) in tegra210_emc_train() 567 spin_lock_irqsave(&emc->lock, flags); in tegra210_emc_train() 569 if (emc->sequence->periodic_compensation) in tegra210_emc_train() 570 emc->sequence->periodic_compensation(emc); in tegra210_emc_train() 572 spin_unlock_irqrestore(&emc->lock, flags); in tegra210_emc_train() 574 mod_timer(&emc->training, in tegra210_emc_train() 575 jiffies + msecs_to_jiffies(emc->training_interval)); in tegra210_emc_train() [all …]
|
| D | tegra124-emc.c | 507 * There are multiple sources in the EMC driver which could request 518 static void emc_ccfifo_writel(struct tegra_emc *emc, u32 value, in emc_ccfifo_writel() argument 521 writel(value, emc->regs + EMC_CCFIFO_DATA); in emc_ccfifo_writel() 522 writel(offset, emc->regs + EMC_CCFIFO_ADDR); in emc_ccfifo_writel() 525 static void emc_seq_update_timing(struct tegra_emc *emc) in emc_seq_update_timing() argument 530 writel(1, emc->regs + EMC_TIMING_CONTROL); in emc_seq_update_timing() 533 value = readl(emc->regs + EMC_STATUS); in emc_seq_update_timing() 539 dev_err(emc->dev, "timing update timed out\n"); in emc_seq_update_timing() 542 static void emc_seq_disable_auto_cal(struct tegra_emc *emc) in emc_seq_disable_auto_cal() argument 547 writel(0, emc->regs + EMC_AUTO_CAL_INTERVAL); in emc_seq_disable_auto_cal() [all …]
|
| D | tegra210-emc-cc-r21021.c | 14 #include "tegra210-emc.h" 36 #define emc_dbg(emc, flags, ...) dev_dbg(emc->dev, __VA_ARGS__) argument 108 emc_dbg(emc, EMA_UPDATES, "%s: (s=%lu) EMA: %u\n", \ 116 static u32 update_clock_tree_delay(struct tegra210_emc *emc, int type) in update_clock_tree_delay() argument 119 struct tegra210_emc_timing *last = emc->last; in update_clock_tree_delay() 120 struct tegra210_emc_timing *next = emc->next; in update_clock_tree_delay() 134 value = tegra210_emc_mrr_read(emc, 2, 19); in update_clock_tree_delay() 136 for (i = 0; i < emc->num_channels; i++) { in update_clock_tree_delay() 145 value = tegra210_emc_mrr_read(emc, 2, 18); in update_clock_tree_delay() 147 for (i = 0; i < emc->num_channels; i++) { in update_clock_tree_delay() [all …]
|
| /kernel/linux/linux-5.10/drivers/memory/tegra/ |
| D | tegra210-emc-core.c | 21 #include "tegra210-emc.h" 69 next->trim_perch_regs[EMC ## chan ## \ 561 struct tegra210_emc *emc = from_timer(emc, timer, training); in tegra210_emc_train() local 564 if (!emc->last) in tegra210_emc_train() 567 spin_lock_irqsave(&emc->lock, flags); in tegra210_emc_train() 569 if (emc->sequence->periodic_compensation) in tegra210_emc_train() 570 emc->sequence->periodic_compensation(emc); in tegra210_emc_train() 572 spin_unlock_irqrestore(&emc->lock, flags); in tegra210_emc_train() 574 mod_timer(&emc->training, in tegra210_emc_train() 575 jiffies + msecs_to_jiffies(emc->training_interval)); in tegra210_emc_train() [all …]
|
| D | tegra186-emc.c | 38 * to control the EMC frequency. The top-level directory can be found here: 40 * /sys/kernel/debug/emc 45 * EMC frequencies. 49 * configured EMC frequency, this will cause the frequency to be 54 * the value is lower than the currently configured EMC frequency, this 59 static bool tegra186_emc_validate_rate(struct tegra186_emc *emc, in tegra186_emc_validate_rate() argument 64 for (i = 0; i < emc->num_dvfs; i++) in tegra186_emc_validate_rate() 65 if (rate == emc->dvfs[i].rate) in tegra186_emc_validate_rate() 74 struct tegra186_emc *emc = s->private; in tegra186_emc_debug_available_rates_show() local 78 for (i = 0; i < emc->num_dvfs; i++) { in tegra186_emc_debug_available_rates_show() [all …]
|
| D | tegra30-emc.c | 5 * Based on downstream driver from NVIDIA and tegra124-emc.c 357 static int emc_seq_update_timing(struct tegra_emc *emc) in emc_seq_update_timing() argument 362 writel_relaxed(EMC_TIMING_UPDATE, emc->regs + EMC_TIMING_CONTROL); in emc_seq_update_timing() 364 err = readl_relaxed_poll_timeout_atomic(emc->regs + EMC_STATUS, val, in emc_seq_update_timing() 368 dev_err(emc->dev, "failed to update timing: %d\n", err); in emc_seq_update_timing() 377 struct tegra_emc *emc = data; in tegra_emc_isr() local 381 status = readl_relaxed(emc->regs + EMC_INTSTATUS) & intmask; in tegra_emc_isr() 387 dev_err_ratelimited(emc->dev, in tegra_emc_isr() 391 writel_relaxed(status, emc->regs + EMC_INTSTATUS); in tegra_emc_isr() 396 static struct emc_timing *emc_find_timing(struct tegra_emc *emc, in emc_find_timing() argument [all …]
|
| D | tegra20-emc.c | 163 struct tegra_emc *emc = data; in tegra_emc_isr() local 167 status = readl_relaxed(emc->regs + EMC_INTSTATUS) & intmask; in tegra_emc_isr() 173 dev_err_ratelimited(emc->dev, in tegra_emc_isr() 177 writel_relaxed(status, emc->regs + EMC_INTSTATUS); in tegra_emc_isr() 182 static struct emc_timing *tegra_emc_find_timing(struct tegra_emc *emc, in tegra_emc_find_timing() argument 188 for (i = 0; i < emc->num_timings; i++) { in tegra_emc_find_timing() 189 if (emc->timings[i].rate >= rate) { in tegra_emc_find_timing() 190 timing = &emc->timings[i]; in tegra_emc_find_timing() 196 dev_err(emc->dev, "no timing for rate %lu\n", rate); in tegra_emc_find_timing() 203 static int emc_prepare_timing_change(struct tegra_emc *emc, unsigned long rate) in emc_prepare_timing_change() argument [all …]
|
| D | tegra124-emc.c | 21 #include <soc/tegra/emc.h> 488 static void emc_ccfifo_writel(struct tegra_emc *emc, u32 value, in emc_ccfifo_writel() argument 491 writel(value, emc->regs + EMC_CCFIFO_DATA); in emc_ccfifo_writel() 492 writel(offset, emc->regs + EMC_CCFIFO_ADDR); in emc_ccfifo_writel() 495 static void emc_seq_update_timing(struct tegra_emc *emc) in emc_seq_update_timing() argument 500 writel(1, emc->regs + EMC_TIMING_CONTROL); in emc_seq_update_timing() 503 value = readl(emc->regs + EMC_STATUS); in emc_seq_update_timing() 509 dev_err(emc->dev, "timing update timed out\n"); in emc_seq_update_timing() 512 static void emc_seq_disable_auto_cal(struct tegra_emc *emc) in emc_seq_disable_auto_cal() argument 517 writel(0, emc->regs + EMC_AUTO_CAL_INTERVAL); in emc_seq_disable_auto_cal() [all …]
|
| D | tegra210-emc-cc-r21021.c | 14 #include "tegra210-emc.h" 36 #define emc_dbg(emc, flags, ...) dev_dbg(emc->dev, __VA_ARGS__) argument 108 emc_dbg(emc, EMA_UPDATES, "%s: (s=%lu) EMA: %u\n", \ 116 static u32 update_clock_tree_delay(struct tegra210_emc *emc, int type) in update_clock_tree_delay() argument 119 struct tegra210_emc_timing *last = emc->last; in update_clock_tree_delay() 120 struct tegra210_emc_timing *next = emc->next; in update_clock_tree_delay() 134 value = tegra210_emc_mrr_read(emc, 2, 19); in update_clock_tree_delay() 136 for (i = 0; i < emc->num_channels; i++) { in update_clock_tree_delay() 145 value = tegra210_emc_mrr_read(emc, 2, 18); in update_clock_tree_delay() 147 for (i = 0; i < emc->num_channels; i++) { in update_clock_tree_delay() [all …]
|
| /kernel/linux/linux-5.10/arch/arm/boot/dts/ |
| D | tegra124-nyan-blaze-emc.dtsi | 4 emc-timings-1 { 11 clock-names = "emc-parent"; 17 clock-names = "emc-parent"; 23 clock-names = "emc-parent"; 29 clock-names = "emc-parent"; 35 clock-names = "emc-parent"; 41 clock-names = "emc-parent"; 47 clock-names = "emc-parent"; 53 clock-names = "emc-parent"; 60 clock-names = "emc-parent"; [all …]
|
| D | tegra124-apalis-emc.dtsi | 9 emc-timings-1 { 16 clock-names = "emc-parent"; 22 clock-names = "emc-parent"; 28 clock-names = "emc-parent"; 34 clock-names = "emc-parent"; 40 clock-names = "emc-parent"; 46 clock-names = "emc-parent"; 52 clock-names = "emc-parent"; 58 clock-names = "emc-parent"; 64 clock-names = "emc-parent"; [all …]
|
| D | tegra124-jetson-tk1-emc.dtsi | 4 emc-timings-3 { 11 clock-names = "emc-parent"; 17 clock-names = "emc-parent"; 23 clock-names = "emc-parent"; 29 clock-names = "emc-parent"; 35 clock-names = "emc-parent"; 41 clock-names = "emc-parent"; 47 clock-names = "emc-parent"; 53 clock-names = "emc-parent"; 59 clock-names = "emc-parent"; [all …]
|
| /kernel/linux/linux-6.6/arch/arm/boot/dts/nvidia/ |
| D | tegra124-apalis-emc.dtsi | 11 emc-timings-1 { 18 clock-names = "emc-parent"; 25 clock-names = "emc-parent"; 32 clock-names = "emc-parent"; 39 clock-names = "emc-parent"; 46 clock-names = "emc-parent"; 53 clock-names = "emc-parent"; 60 clock-names = "emc-parent"; 67 clock-names = "emc-parent"; 74 clock-names = "emc-parent"; [all …]
|
| D | tegra124-jetson-tk1-emc.dtsi | 7 emc-timings-3 { 14 clock-names = "emc-parent"; 21 clock-names = "emc-parent"; 28 clock-names = "emc-parent"; 35 clock-names = "emc-parent"; 42 clock-names = "emc-parent"; 49 clock-names = "emc-parent"; 56 clock-names = "emc-parent"; 63 clock-names = "emc-parent"; 70 clock-names = "emc-parent"; [all …]
|
| D | tegra124-nyan-blaze-emc.dtsi | 7 emc-timings-1 { 14 clock-names = "emc-parent"; 21 clock-names = "emc-parent"; 28 clock-names = "emc-parent"; 35 clock-names = "emc-parent"; 42 clock-names = "emc-parent"; 49 clock-names = "emc-parent"; 56 clock-names = "emc-parent"; 63 clock-names = "emc-parent"; 72 clock-names = "emc-parent"; [all …]
|
| D | tegra30-asus-tf300t.dts | 146 emc-timings-0 { 211 emc-timings-1 { 276 emc-timings-2 { 343 emc-timings-0 { 350 nvidia,emc-auto-cal-interval = <0x001fffff>; 351 nvidia,emc-mode-1 = <0x80100003>; 352 nvidia,emc-mode-2 = <0x80200008>; 353 nvidia,emc-mode-reset = <0x80001221>; 354 nvidia,emc-zcal-cnt-long = <0x00000040>; 355 nvidia,emc-cfg-dyn-self-ref; [all …]
|
| D | tegra30-asus-tf300tg.dts | 220 emc-timings-0 { 285 emc-timings-1 { 350 emc-timings-2 { 417 emc-timings-0 { 424 nvidia,emc-auto-cal-interval = <0x001fffff>; 425 nvidia,emc-mode-1 = <0x80100003>; 426 nvidia,emc-mode-2 = <0x80200048>; 427 nvidia,emc-mode-reset = <0x80001221>; 428 nvidia,emc-zcal-cnt-long = <0x00000040>; 429 nvidia,emc-cfg-dyn-self-ref; [all …]
|
| D | tegra30-asus-tf201.dts | 112 emc-timings-0 { 167 emc-timings-1 { 224 emc-timings-0 { 231 nvidia,emc-auto-cal-interval = <0x001fffff>; 232 nvidia,emc-mode-1 = <0x00010022>; 233 nvidia,emc-mode-2 = <0x00020001>; 234 nvidia,emc-mode-reset = <0x00000000>; 235 nvidia,emc-zcal-cnt-long = <0x00000009>; 236 nvidia,emc-cfg-periodic-qrst; 238 nvidia,emc-configuration = < 0x00000001 [all …]
|
| /kernel/linux/linux-6.6/drivers/clk/tegra/ |
| D | clk-tegra20-emc.c | 3 * Based on drivers/clk/tegra/clk-emc.c 10 #define pr_fmt(fmt) "tegra-emc-clk: " fmt 57 struct tegra_clk_emc *emc = to_tegra_clk_emc(hw); in emc_recalc_rate() local 60 val = readl_relaxed(emc->reg); in emc_recalc_rate() 68 struct tegra_clk_emc *emc = to_tegra_clk_emc(hw); in emc_get_parent() local 70 return readl_relaxed(emc->reg) >> CLK_SOURCE_EMC_2X_CLK_SRC_SHIFT; in emc_get_parent() 75 struct tegra_clk_emc *emc = to_tegra_clk_emc(hw); in emc_set_parent() local 78 val = readl_relaxed(emc->reg); in emc_set_parent() 84 if (index == EMC_SRC_PLL_M && div == 0 && emc->want_low_jitter) in emc_set_parent() 89 if (emc->mc_same_freq) in emc_set_parent() [all …]
|
| /kernel/linux/linux-5.10/drivers/clk/tegra/ |
| D | clk-tegra20-emc.c | 3 * Based on drivers/clk/tegra/clk-emc.c 10 #define pr_fmt(fmt) "tegra-emc-clk: " fmt 56 struct tegra_clk_emc *emc = to_tegra_clk_emc(hw); in emc_recalc_rate() local 59 val = readl_relaxed(emc->reg); in emc_recalc_rate() 67 struct tegra_clk_emc *emc = to_tegra_clk_emc(hw); in emc_get_parent() local 69 return readl_relaxed(emc->reg) >> CLK_SOURCE_EMC_2X_CLK_SRC_SHIFT; in emc_get_parent() 74 struct tegra_clk_emc *emc = to_tegra_clk_emc(hw); in emc_set_parent() local 77 val = readl_relaxed(emc->reg); in emc_set_parent() 83 if (index == EMC_SRC_PLL_M && div == 0 && emc->want_low_jitter) in emc_set_parent() 88 if (emc->mc_same_freq) in emc_set_parent() [all …]
|
| /kernel/linux/linux-6.6/Documentation/devicetree/bindings/memory-controllers/ |
| D | nvidia,tegra124-emc.yaml | 4 $id: http://devicetree.org/schemas/memory-controllers/nvidia,tegra124-emc.yaml# 14 The EMC interfaces with the off-chip SDRAM to service the request stream 19 const: nvidia,tegra124-emc 30 - const: emc 51 "^emc-timings-[0-9]+$": 71 nvidia,emc-auto-cal-config: 77 nvidia,emc-auto-cal-config2: 83 nvidia,emc-auto-cal-config3: 89 nvidia,emc-auto-cal-interval: 96 nvidia,emc-bgbias-ctl0: [all …]
|
| /kernel/linux/linux-5.10/Documentation/devicetree/bindings/memory-controllers/ |
| D | nvidia,tegra124-emc.yaml | 4 $id: http://devicetree.org/schemas/memory-controllers/nvidia,tegra124-emc.yaml# 14 The EMC interfaces with the off-chip SDRAM to service the request stream 19 const: nvidia,tegra124-emc 30 - const: emc 38 "^emc-timings-[0-9]+$": 57 nvidia,emc-auto-cal-config: 63 nvidia,emc-auto-cal-config2: 69 nvidia,emc-auto-cal-config3: 75 nvidia,emc-auto-cal-interval: 82 nvidia,emc-bgbias-ctl0: [all …]
|