| /linux/drivers/firmware/tegra/ |
| H A D | bpmp.c | 30 struct tegra_bpmp *bpmp = channel->bpmp; in channel_to_ops() local 32 return bpmp->soc->ops; in channel_to_ops() 38 struct tegra_bpmp *bpmp; in tegra_bpmp_get() local 47 bpmp = ERR_PTR(-ENODEV); in tegra_bpmp_get() 51 bpmp = platform_get_drvdata(pdev); in tegra_bpmp_get() 52 if (!bpmp) { in tegra_bpmp_get() 53 bpmp = ERR_PTR(-EPROBE_DEFER); in tegra_bpmp_get() 60 return bpmp; in tegra_bpmp_get() 64 void tegra_bpmp_put(struct tegra_bpmp *bpmp) in tegra_bpmp_put() argument 66 if (bpmp) in tegra_bpmp_put() [all …]
|
| H A D | bpmp-tegra186.c | 82 static int tegra186_bpmp_ring_doorbell(struct tegra_bpmp *bpmp) in tegra186_bpmp_ring_doorbell() argument 84 struct tegra186_bpmp *priv = bpmp->priv; in tegra186_bpmp_ring_doorbell() 98 struct tegra_bpmp *bpmp = data; in tegra186_bpmp_ivc_notify() local 99 struct tegra186_bpmp *priv = bpmp->priv; in tegra186_bpmp_ivc_notify() 104 tegra186_bpmp_ring_doorbell(bpmp); in tegra186_bpmp_ivc_notify() 108 struct tegra_bpmp *bpmp, in tegra186_bpmp_channel_init() argument 111 struct tegra186_bpmp *priv = bpmp->priv; in tegra186_bpmp_channel_init() 117 channel->ivc = devm_kzalloc(bpmp->dev, sizeof(*channel->ivc), in tegra186_bpmp_channel_init() 136 bpmp); in tegra186_bpmp_channel_init() 138 dev_err(bpmp->dev, "failed to setup IVC for channel %u: %d\n", in tegra186_bpmp_channel_init() [all …]
|
| H A D | bpmp-tegra210.c | 37 static u32 bpmp_channel_status(struct tegra_bpmp *bpmp, unsigned int index) in bpmp_channel_status() argument 39 struct tegra210_bpmp *priv = bpmp->priv; in bpmp_channel_status() 48 return bpmp_channel_status(channel->bpmp, index) == MA_ACKD(index); in tegra210_bpmp_is_response_ready() 55 return bpmp_channel_status(channel->bpmp, index) == SL_SIGL(index); in tegra210_bpmp_is_request_ready() 63 return bpmp_channel_status(channel->bpmp, index) == MA_FREE(index); in tegra210_bpmp_is_request_channel_free() 71 return bpmp_channel_status(channel->bpmp, index) == SL_QUED(index); in tegra210_bpmp_is_response_channel_free() 76 struct tegra210_bpmp *priv = channel->bpmp->priv; in tegra210_bpmp_post_request() 85 struct tegra210_bpmp *priv = channel->bpmp->priv; in tegra210_bpmp_post_response() 94 struct tegra210_bpmp *priv = channel->bpmp->priv; in tegra210_bpmp_ack_response() 104 struct tegra210_bpmp *priv = channel->bpmp->priv; in tegra210_bpmp_ack_request() [all …]
|
| H A D | Makefile | 2 tegra-bpmp-y = bpmp.o 3 tegra-bpmp-$(CONFIG_ARCH_TEGRA_210_SOC) += bpmp-tegra210.o 4 tegra-bpmp-$(CONFIG_ARCH_TEGRA_186_SOC) += bpmp-tegra186.o 5 tegra-bpmp-$(CONFIG_ARCH_TEGRA_194_SOC) += bpmp-tegra186.o 6 tegra-bpmp-$(CONFIG_ARCH_TEGRA_234_SOC) += bpmp-tegra186.o 7 tegra-bpmp-$(CONFIG_ARCH_TEGRA_264_SOC) += bpmp-tegra186.o 8 tegra-bpmp-$(CONFIG_DEBUG_FS) += bpmp-debugfs.o 9 obj-$(CONFIG_TEGRA_BPMP) += tegra-bpmp.o
|
| H A D | bpmp-debugfs.c | 70 static const char *get_filename(struct tegra_bpmp *bpmp, in get_filename() argument 82 root_path = dentry_path(bpmp->debugfs_mirror, root_path_buf, in get_filename() 107 static int mrq_debug_open(struct tegra_bpmp *bpmp, const char *name, in mrq_debug_open() argument 134 err = tegra_bpmp_transfer(bpmp, &msg); in mrq_debug_open() 146 static int mrq_debug_close(struct tegra_bpmp *bpmp, u32 fd) in mrq_debug_close() argument 168 err = tegra_bpmp_transfer(bpmp, &msg); in mrq_debug_close() 177 static int mrq_debug_read(struct tegra_bpmp *bpmp, const char *name, in mrq_debug_read() argument 199 err = mrq_debug_open(bpmp, name, &fd, &len, 0); in mrq_debug_read() 212 err = tegra_bpmp_transfer(bpmp, &msg); in mrq_debug_read() 234 close_err = mrq_debug_close(bpmp, fd); in mrq_debug_read() [all …]
|
| H A D | bpmp-private.h | 12 int (*init)(struct tegra_bpmp *bpmp); 13 void (*deinit)(struct tegra_bpmp *bpmp); 22 int (*ring_doorbell)(struct tegra_bpmp *bpmp); 23 int (*resume)(struct tegra_bpmp *bpmp);
|
| /linux/drivers/pmdomain/tegra/ |
| H A D | powergate-bpmp.c | 21 struct tegra_bpmp *bpmp; member 31 static int tegra_bpmp_powergate_set_state(struct tegra_bpmp *bpmp, in tegra_bpmp_powergate_set_state() argument 48 err = tegra_bpmp_transfer(bpmp, &msg); in tegra_bpmp_powergate_set_state() 57 static int tegra_bpmp_powergate_get_state(struct tegra_bpmp *bpmp, in tegra_bpmp_powergate_get_state() argument 78 err = tegra_bpmp_transfer(bpmp, &msg); in tegra_bpmp_powergate_get_state() 87 static int tegra_bpmp_powergate_get_max_id(struct tegra_bpmp *bpmp) in tegra_bpmp_powergate_get_max_id() argument 106 err = tegra_bpmp_transfer(bpmp, &msg); in tegra_bpmp_powergate_get_max_id() 115 static char *tegra_bpmp_powergate_get_name(struct tegra_bpmp *bpmp, in tegra_bpmp_powergate_get_name() argument 136 err = tegra_bpmp_transfer(bpmp, &msg); in tegra_bpmp_powergate_get_name() 143 static inline bool tegra_bpmp_powergate_is_powered(struct tegra_bpmp *bpmp, in tegra_bpmp_powergate_is_powered() argument [all …]
|
| H A D | Makefile | 2 obj-$(CONFIG_SOC_TEGRA_POWERGATE_BPMP) += powergate-bpmp.o
|
| /linux/drivers/clk/tegra/ |
| H A D | clk-bpmp.c | 31 struct tegra_bpmp *bpmp; member 59 static int tegra_bpmp_clk_transfer(struct tegra_bpmp *bpmp, in tegra_bpmp_clk_transfer() argument 86 err = tegra_bpmp_transfer(bpmp, &msg); in tegra_bpmp_clk_transfer() 104 return tegra_bpmp_clk_transfer(clk->bpmp, &msg); in tegra_bpmp_clk_prepare() 117 err = tegra_bpmp_clk_transfer(clk->bpmp, &msg); in tegra_bpmp_clk_unprepare() 119 dev_err(clk->bpmp->dev, "failed to disable clock %s: %d\n", in tegra_bpmp_clk_unprepare() 136 err = tegra_bpmp_clk_transfer(clk->bpmp, &msg); in tegra_bpmp_clk_is_prepared() 160 err = tegra_bpmp_clk_transfer(clk->bpmp, &msg); in tegra_bpmp_clk_recalc_rate() 190 err = tegra_bpmp_clk_transfer(clk->bpmp, &msg); in tegra_bpmp_clk_determine_rate() 218 err = tegra_bpmp_clk_transfer(clk->bpmp, &msg); in tegra_bpmp_clk_set_parent() [all …]
|
| H A D | Makefile | 31 obj-$(CONFIG_CLK_TEGRA_BPMP) += clk-bpmp.o
|
| /linux/include/soc/tegra/ |
| H A D | bpmp.h | 53 struct tegra_bpmp *bpmp; member 130 void tegra_bpmp_put(struct tegra_bpmp *bpmp); 131 int tegra_bpmp_transfer_atomic(struct tegra_bpmp *bpmp, 133 int tegra_bpmp_transfer(struct tegra_bpmp *bpmp, 138 int tegra_bpmp_request_mrq(struct tegra_bpmp *bpmp, unsigned int mrq, 140 void tegra_bpmp_free_mrq(struct tegra_bpmp *bpmp, unsigned int mrq, 142 bool tegra_bpmp_mrq_is_supported(struct tegra_bpmp *bpmp, unsigned int mrq); 148 static inline void tegra_bpmp_put(struct tegra_bpmp *bpmp) in tegra_bpmp_put() argument 151 static inline int tegra_bpmp_transfer_atomic(struct tegra_bpmp *bpmp, in tegra_bpmp_transfer_atomic() argument 156 static inline int tegra_bpmp_transfer(struct tegra_bpmp *bpmp, in tegra_bpmp_transfer() argument [all …]
|
| /linux/drivers/reset/tegra/ |
| H A D | reset-bpmp.c | 20 struct tegra_bpmp *bpmp = to_tegra_bpmp(rstc); in tegra_bpmp_reset_common() local 34 err = tegra_bpmp_transfer(bpmp, &msg); in tegra_bpmp_reset_common() 67 int tegra_bpmp_init_resets(struct tegra_bpmp *bpmp) in tegra_bpmp_init_resets() argument 69 bpmp->rstc.ops = &tegra_bpmp_reset_ops; in tegra_bpmp_init_resets() 70 bpmp->rstc.owner = THIS_MODULE; in tegra_bpmp_init_resets() 71 bpmp->rstc.of_node = bpmp->dev->of_node; in tegra_bpmp_init_resets() 72 bpmp->rstc.nr_resets = bpmp->soc->num_resets; in tegra_bpmp_init_resets() 74 return devm_reset_controller_register(bpmp->dev, &bpmp->rstc); in tegra_bpmp_init_resets()
|
| H A D | Makefile | 2 obj-$(CONFIG_RESET_TEGRA_BPMP) += reset-bpmp.o
|
| /linux/drivers/memory/tegra/ |
| H A D | tegra186-emc.c | 22 struct tegra_bpmp *bpmp; member 167 err = tegra_bpmp_transfer(emc->bpmp, &msg); in tegra186_emc_get_emc_dvfs_latency() 319 emc->bpmp = tegra_bpmp_get(&pdev->dev); in tegra186_emc_probe() 320 if (IS_ERR(emc->bpmp)) in tegra186_emc_probe() 321 return dev_err_probe(&pdev->dev, PTR_ERR(emc->bpmp), in tegra186_emc_probe() 334 if (tegra_bpmp_mrq_is_supported(emc->bpmp, MRQ_EMC_DVFS_LATENCY)) { in tegra186_emc_probe() 341 if (tegra_bpmp_mrq_is_supported(emc->bpmp, MRQ_BWMGR_INT)) { in tegra186_emc_probe() 349 mc->bpmp = emc->bpmp; in tegra186_emc_probe() 361 mc->bpmp = NULL; in tegra186_emc_probe() 369 tegra_bpmp_put(emc->bpmp); in tegra186_emc_probe() [all …]
|
| H A D | tegra264.c | 225 if (!mc->bpmp) { in tegra264_mc_icc_set() 248 ret = tegra_bpmp_transfer(mc->bpmp, &msg); in tegra264_mc_icc_set()
|
| /linux/drivers/cpufreq/ |
| H A D | tegra186-cpufreq.c | 260 struct platform_device *pdev, struct tegra_bpmp *bpmp, in tegra_cpufreq_bpmp_read_lut() argument 272 virt = dma_alloc_coherent(bpmp->dev, sizeof(*data), &phys, in tegra_cpufreq_bpmp_read_lut() 288 err = tegra_bpmp_transfer(bpmp, &msg); in tegra_cpufreq_bpmp_read_lut() 345 dma_free_coherent(bpmp->dev, sizeof(*data), virt, phys); in tegra_cpufreq_bpmp_read_lut() 353 struct tegra_bpmp *bpmp; in tegra186_cpufreq_probe() local 367 bpmp = tegra_bpmp_get(&pdev->dev); in tegra186_cpufreq_probe() 368 if (IS_ERR(bpmp)) in tegra186_cpufreq_probe() 369 return PTR_ERR(bpmp); in tegra186_cpufreq_probe() 380 cluster->bpmp_lut = tegra_cpufreq_bpmp_read_lut(pdev, bpmp, cluster, i, &num_rates); in tegra186_cpufreq_probe() 416 tegra_bpmp_put(bpmp); in tegra186_cpufreq_probe()
|
| H A D | tegra194-cpufreq.c | 614 tegra_cpufreq_bpmp_read_lut(struct platform_device *pdev, struct tegra_bpmp *bpmp, in tegra_cpufreq_bpmp_read_lut() argument 635 err = tegra_bpmp_transfer(bpmp, &msg); in tegra_cpufreq_bpmp_read_lut() 711 struct tegra_bpmp *bpmp; in tegra194_cpufreq_probe() local 749 bpmp = tegra_bpmp_get(&pdev->dev); in tegra194_cpufreq_probe() 750 if (IS_ERR(bpmp)) in tegra194_cpufreq_probe() 751 return PTR_ERR(bpmp); in tegra194_cpufreq_probe() 762 data->bpmp_luts[i] = tegra_cpufreq_bpmp_read_lut(pdev, bpmp, i); in tegra194_cpufreq_probe() 797 tegra_bpmp_put(bpmp); in tegra194_cpufreq_probe()
|
| /linux/Documentation/devicetree/bindings/firmware/ |
| H A D | nvidia,tegra210-bpmp.txt | 15 - "nvidia,tegra210-bpmp" 24 offloaded to bpmp. 28 bpmp@70016000 { 29 compatible = "nvidia,tegra210-bpmp";
|
| /linux/arch/arm64/boot/dts/nvidia/ |
| H A D | tegra194-p3668.dtsi | 9 i2c0 = "/bpmp/i2c"; 17 rtc0 = "/bpmp/i2c/pmic@3c"; 135 bpmp {
|
| H A D | tegra234-p3701.dtsi | 11 rtc0 = "/bpmp/i2c/pmic@3c"; 170 bpmp {
|
| H A D | tegra234-p3767.dtsi | 10 rtc0 = "/bpmp/i2c/pmic@3c"; 125 bpmp {
|
| H A D | tegra234-p3768-0000+p3767.dtsi | 55 assigned-clocks = <&bpmp TEGRA234_CLK_PWM3>; 56 assigned-clock-parents = <&bpmp TEGRA234_CLK_PLLP_OUT0>;
|
| H A D | tegra186-p3310.dtsi | 12 i2c0 = "/bpmp/i2c"; 200 bpmp {
|
| H A D | tegra194-p2888.dtsi | 12 i2c0 = "/bpmp/i2c"; 183 bpmp {
|
| /linux/Documentation/devicetree/bindings/pci/ |
| H A D | nvidia,tegra20-pcie.txt | 568 power-domains = <&bpmp TEGRA186_POWER_DOMAIN_PCX>; 594 clocks = <&bpmp TEGRA186_CLK_AFI>, 595 <&bpmp TEGRA186_CLK_PCIE>, 596 <&bpmp TEGRA186_CLK_PLLE>; 599 resets = <&bpmp TEGRA186_RESET_AFI>, 600 <&bpmp TEGRA186_RESET_PCIE>, 601 <&bpmp TEGRA186_RESET_PCIEXCLK>;
|