/linux/drivers/firmware/tegra/ |
H A D | bpmp.c | 31 struct tegra_bpmp *bpmp = channel->bpmp; in channel_to_ops() local 51 if (!bpmp) { in tegra_bpmp_get() 62 if (bpmp) in tegra_bpmp_put() 70 struct tegra_bpmp *bpmp = channel->bpmp; in tegra_bpmp_channel_get_thread_index() local 184 return bpmp->soc->ops->ring_doorbell(bpmp); in tegra_bpmp_ring_doorbell() 207 struct tegra_bpmp *bpmp = channel->bpmp; in tegra_bpmp_channel_read() local 411 struct tegra_bpmp *bpmp = channel->bpmp; in tegra_bpmp_mrq_return() local 747 err = bpmp->soc->ops->init(bpmp); in tegra_bpmp_probe() 799 tegra_bpmp_free_mrq(bpmp, MRQ_PING, bpmp); in tegra_bpmp_probe() 802 bpmp->soc->ops->deinit(bpmp); in tegra_bpmp_probe() [all …]
|
H A D | bpmp-tegra186.c | 98 struct tegra_bpmp *bpmp = data; in tegra186_bpmp_ivc_notify() local 108 struct tegra_bpmp *bpmp, in tegra186_bpmp_channel_init() argument 136 bpmp); in tegra186_bpmp_channel_init() 144 channel->bpmp = bpmp; in tegra186_bpmp_channel_init() 168 tegra_bpmp_handle_rx(bpmp); in mbox_handle_rx() 177 if (!bpmp->threaded_channels[i].bpmp) in tegra186_bpmp_teardown_channels() 286 err = tegra186_bpmp_channel_init(bpmp->tx_channel, bpmp, in tegra186_bpmp_setup_channels() 291 err = tegra186_bpmp_channel_init(bpmp->rx_channel, bpmp, in tegra186_bpmp_setup_channels() 302 bpmp, index); in tegra186_bpmp_setup_channels() 334 priv->parent = bpmp; in tegra186_bpmp_init() [all …]
|
H A D | bpmp-tegra210.c | 39 struct tegra210_bpmp *priv = bpmp->priv; in bpmp_channel_status() 113 struct tegra210_bpmp *priv = bpmp->priv; in tegra210_bpmp_ring_doorbell() 128 struct tegra_bpmp *bpmp = data; in rx_irq() local 130 tegra_bpmp_handle_rx(bpmp); in rx_irq() 136 struct tegra_bpmp *bpmp, in tegra210_bpmp_channel_init() argument 139 struct tegra210_bpmp *priv = bpmp->priv; in tegra210_bpmp_channel_init() 157 channel->bpmp = bpmp; in tegra210_bpmp_channel_init() 173 bpmp->priv = priv; in tegra210_bpmp_init() 183 err = tegra210_bpmp_channel_init(bpmp->tx_channel, bpmp, in tegra210_bpmp_init() 188 err = tegra210_bpmp_channel_init(bpmp->rx_channel, bpmp, in tegra210_bpmp_init() [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_DEBUG_FS) += bpmp-debugfs.o 8 obj-$(CONFIG_TEGRA_BPMP) += tegra-bpmp.o
|
H A D | bpmp-debugfs.c | 134 err = tegra_bpmp_transfer(bpmp, &msg); in mrq_debug_open() 168 err = tegra_bpmp_transfer(bpmp, &msg); in mrq_debug_close() 212 err = tegra_bpmp_transfer(bpmp, &msg); in mrq_debug_read() 234 close_err = mrq_debug_close(bpmp, fd); in mrq_debug_read() 295 err = mrq_debug_close(bpmp, fd); in mrq_debug_write() 358 close_err = mrq_debug_close(bpmp, fd); in bpmp_debug_show() 416 if (!bpmp || !parent || !ppath) in bpmp_populate_debugfs_inband() 732 parent, bpmp, in bpmp_populate_dir() 765 err = bpmp_populate_dir(bpmp, &seqbuf, bpmp->debugfs_mirror, 0); in bpmp_populate_debugfs_shmem() 788 if (IS_ERR(bpmp->debugfs_mirror)) { in tegra_bpmp_init_debugfs() [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 48 err = tegra_bpmp_transfer(bpmp, &msg); in tegra_bpmp_powergate_set_state() 78 err = tegra_bpmp_transfer(bpmp, &msg); in tegra_bpmp_powergate_get_state() 106 err = tegra_bpmp_transfer(bpmp, &msg); in tegra_bpmp_powergate_get_max_id() 136 err = tegra_bpmp_transfer(bpmp, &msg); in tegra_bpmp_powergate_get_name() 152 struct tegra_bpmp *bpmp = powergate->bpmp; in tegra_powergate_power_on() local 161 struct tegra_bpmp *bpmp = powergate->bpmp; in tegra_powergate_power_off() local 182 powergate->bpmp = bpmp; in tegra_powergate_add() 200 struct tegra_bpmp *bpmp = powergate->bpmp; in tegra_powergate_remove() local 331 struct device *dev = bpmp->dev; in tegra_bpmp_init_powergates() [all …]
|
/linux/arch/arm64/boot/dts/nvidia/ |
H A D | tegra186.dtsi | 56 <&bpmp TEGRA186_CLK_EQOS_AXI>, 57 <&bpmp TEGRA186_CLK_EQOS_RX>, 58 <&bpmp TEGRA186_CLK_EQOS_TX>, 588 nvidia,bpmp = <&bpmp>; 1335 nvidia,bpmp = <&bpmp>; 1367 <&bpmp TEGRA186_CLK_AFI>, 1873 <&bpmp TEGRA186_CLK_GPU>; 1897 label = "cpu-bpmp-tx"; 1903 label = "cpu-bpmp-rx"; 1908 bpmp: bpmp { label [all …]
|
H A D | tegra194.dtsi | 723 nvidia,bpmp = <&bpmp>; 2389 nvidia,bpmp = <&bpmp 1>; 2441 nvidia,bpmp = <&bpmp 2>; 2493 nvidia,bpmp = <&bpmp 3>; 2545 nvidia,bpmp = <&bpmp 4>; 2590 nvidia,bpmp = <&bpmp 4>; 2636 nvidia,bpmp = <&bpmp 0>; 2681 nvidia,bpmp = <&bpmp 0>; 2726 nvidia,bpmp = <&bpmp 5>; 2850 bpmp: bpmp { label [all …]
|
H A D | tegra234.dtsi | 2756 nvidia,bpmp = <&bpmp>; 4007 nvidia,bpmp = <&bpmp>; 4461 nvidia,bpmp = <&bpmp 8>; 4515 nvidia,bpmp = <&bpmp 9>; 4661 nvidia,bpmp = <&bpmp 1>; 4715 nvidia,bpmp = <&bpmp 2>; 4769 nvidia,bpmp = <&bpmp 3>; 4823 nvidia,bpmp = <&bpmp 4>; 4862 nvidia,bpmp = <&bpmp 4>; 4908 nvidia,bpmp = <&bpmp 0>; [all …]
|
/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, 148 static inline void tegra_bpmp_put(struct tegra_bpmp *bpmp) in tegra_bpmp_put() argument 156 static inline int tegra_bpmp_transfer(struct tegra_bpmp *bpmp, in tegra_bpmp_transfer() argument 186 void tegra_bpmp_handle_rx(struct tegra_bpmp *bpmp); 189 int tegra_bpmp_init_clocks(struct tegra_bpmp *bpmp); 198 int tegra_bpmp_init_resets(struct tegra_bpmp *bpmp); 207 int tegra_bpmp_init_powergates(struct tegra_bpmp *bpmp); [all …]
|
/linux/drivers/clk/tegra/ |
H A D | clk-bpmp.c | 31 struct tegra_bpmp *bpmp; member 449 dev_err(bpmp->dev, in tegra_bpmp_probe_clocks() 518 clk->bpmp = bpmp; in tegra_bpmp_clk_register() 533 dev_WARN(bpmp->dev, in tegra_bpmp_clk_register() 602 if (bpmp->clocks[i]) { in tegra_bpmp_register_clocks_one() 618 dev_err(bpmp->dev, in tegra_bpmp_register_clocks_one() 627 bpmp->clocks[i] = clk; in tegra_bpmp_register_clocks_one() 636 bpmp->num_clocks = count; in tegra_bpmp_register_clocks() 638 bpmp->clocks = devm_kcalloc(bpmp->dev, count, sizeof(struct tegra_bpmp_clk), GFP_KERNEL); in tegra_bpmp_register_clocks() 639 if (!bpmp->clocks) in tegra_bpmp_register_clocks() [all …]
|
/linux/Documentation/devicetree/bindings/display/tegra/ |
H A D | nvidia,tegra186-display.yaml | 128 resets = <&bpmp TEGRA186_RESET_NVDISPLAY0_MISC>, 129 <&bpmp TEGRA186_RESET_NVDISPLAY0_WGRP0>, 130 <&bpmp TEGRA186_RESET_NVDISPLAY0_WGRP1>, 137 clocks = <&bpmp TEGRA186_CLK_NVDISPLAY_DISP>, 138 <&bpmp TEGRA186_CLK_NVDISPLAY_DSC>, 139 <&bpmp TEGRA186_CLK_NVDISPLAYHUB>; 153 clocks = <&bpmp TEGRA186_CLK_NVDISPLAY_P0>; 172 clocks = <&bpmp TEGRA186_CLK_NVDISPLAY_P1>; 191 clocks = <&bpmp TEGRA186_CLK_NVDISPLAY_P2>; 226 clocks = <&bpmp TEGRA194_CLK_NVDISPLAY_DISP>, [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()
|
/linux/Documentation/devicetree/bindings/net/ |
H A D | nvidia,tegra234-mgbe.yaml | 124 clocks = <&bpmp TEGRA234_CLK_MGBE0_APP>, 125 <&bpmp TEGRA234_CLK_MGBE0_MAC>, 127 <&bpmp TEGRA234_CLK_MGBE0_PTP_REF>, 129 <&bpmp TEGRA234_CLK_MGBE0_RX_INPUT>, 130 <&bpmp TEGRA234_CLK_MGBE0_TX>, 131 <&bpmp TEGRA234_CLK_MGBE0_EEE_PCS>, 133 <&bpmp TEGRA234_CLK_MGBE0_RX_PCS_M>, 134 <&bpmp TEGRA234_CLK_MGBE0_RX_PCS>, 135 <&bpmp TEGRA234_CLK_MGBE0_TX_PCS>; 139 resets = <&bpmp TEGRA234_RESET_MGBE0_MAC>, [all …]
|
/linux/drivers/thermal/tegra/ |
H A D | tegra-bpmp-thermal.c | 28 struct tegra_bpmp *bpmp; member 52 err = tegra_bpmp_transfer(zone->tegra->bpmp, &msg); in __tegra_bpmp_thermal_get_temp() 91 err = tegra_bpmp_transfer(zone->tegra->bpmp, &msg); in tegra_bpmp_thermal_set_trips() 159 err = tegra_bpmp_transfer(bpmp, &msg); in tegra_bpmp_thermal_get_num_zones() 188 err = tegra_bpmp_transfer(bpmp, &msg); in tegra_bpmp_thermal_trips_supported() 214 struct tegra_bpmp *bpmp = dev_get_drvdata(pdev->dev.parent); in tegra_bpmp_thermal_probe() local 222 err = tegra_bpmp_thermal_trips_supported(bpmp, &supported); in tegra_bpmp_thermal_probe() 238 tegra->bpmp = bpmp; in tegra_bpmp_thermal_probe() 240 err = tegra_bpmp_thermal_get_num_zones(bpmp, &max_num_zones); in tegra_bpmp_thermal_probe() 290 err = tegra_bpmp_request_mrq(bpmp, MRQ_THERMAL, bpmp_mrq_thermal, in tegra_bpmp_thermal_probe() [all …]
|
/linux/Documentation/devicetree/bindings/usb/ |
H A D | nvidia,tegra234-xusb.yaml | 133 clocks = <&bpmp TEGRA234_CLK_XUSB_CORE_HOST>, 134 <&bpmp TEGRA234_CLK_XUSB_FALCON>, 135 <&bpmp TEGRA234_CLK_XUSB_CORE_SS>, 136 <&bpmp TEGRA234_CLK_XUSB_SS>, 137 <&bpmp TEGRA234_CLK_CLK_M>, 138 <&bpmp TEGRA234_CLK_XUSB_FS>, 139 <&bpmp TEGRA234_CLK_UTMIP_PLL>, 140 <&bpmp TEGRA234_CLK_CLK_M>, 141 <&bpmp TEGRA234_CLK_PLLE>; 151 power-domains = <&bpmp TEGRA234_POWER_DOMAIN_XUSBC>, [all …]
|
H A D | nvidia,tegra186-xusb.yaml | 145 clocks = <&bpmp TEGRA186_CLK_XUSB_HOST>, 146 <&bpmp TEGRA186_CLK_XUSB_FALCON>, 147 <&bpmp TEGRA186_CLK_XUSB_SS>, 148 <&bpmp TEGRA186_CLK_XUSB_CORE_SS>, 149 <&bpmp TEGRA186_CLK_CLK_M>, 150 <&bpmp TEGRA186_CLK_XUSB_FS>, 151 <&bpmp TEGRA186_CLK_PLLU>, 152 <&bpmp TEGRA186_CLK_CLK_M>, 153 <&bpmp TEGRA186_CLK_PLLE>; 157 power-domains = <&bpmp TEGRA186_POWER_DOMAIN_XUSBC>, [all …]
|
H A D | nvidia,tegra194-xusb.yaml | 148 clocks = <&bpmp TEGRA194_CLK_XUSB_CORE_HOST>, 149 <&bpmp TEGRA194_CLK_XUSB_FALCON>, 150 <&bpmp TEGRA194_CLK_XUSB_CORE_SS>, 151 <&bpmp TEGRA194_CLK_XUSB_SS>, 152 <&bpmp TEGRA194_CLK_CLK_M>, 153 <&bpmp TEGRA194_CLK_XUSB_FS>, 154 <&bpmp TEGRA194_CLK_UTMIPLL>, 155 <&bpmp TEGRA194_CLK_CLK_M>, 156 <&bpmp TEGRA194_CLK_PLLE>; 166 power-domains = <&bpmp TEGRA194_POWER_DOMAIN_XUSBC>, [all …]
|
/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() 323 emc->bpmp = tegra_bpmp_get(&pdev->dev); in tegra186_emc_probe() 324 if (IS_ERR(emc->bpmp)) in tegra186_emc_probe() 337 if (tegra_bpmp_mrq_is_supported(emc->bpmp, MRQ_EMC_DVFS_LATENCY)) { in tegra186_emc_probe() 344 if (tegra_bpmp_mrq_is_supported(emc->bpmp, MRQ_BWMGR_INT)) { in tegra186_emc_probe() 352 mc->bpmp = emc->bpmp; in tegra186_emc_probe() 364 mc->bpmp = NULL; in tegra186_emc_probe() 372 tegra_bpmp_put(emc->bpmp); in tegra186_emc_probe() 383 mc->bpmp = NULL; in tegra186_emc_remove() [all …]
|
/linux/Documentation/devicetree/bindings/firmware/ |
H A D | nvidia,tegra186-bpmp.yaml | 71 - nvidia,tegra194-bpmp 72 - nvidia,tegra234-bpmp 73 - const: nvidia,tegra186-bpmp 74 - const: nvidia,tegra186-bpmp 162 label = "cpu-bpmp-tx"; 168 label = "cpu-bpmp-rx"; 173 bpmp { 174 compatible = "nvidia,tegra186-bpmp"; 189 nvidia,bpmp-bus-id = <5>; 203 bpmp { [all …]
|
/linux/drivers/cpufreq/ |
H A D | tegra186-cpufreq.c | 130 struct platform_device *pdev, struct tegra_bpmp *bpmp, in init_vhint_table() argument 141 virt = dma_alloc_coherent(bpmp->dev, sizeof(*data), &phys, in init_vhint_table() 157 err = tegra_bpmp_transfer(bpmp, &msg); in init_vhint_table() 213 dma_free_coherent(bpmp->dev, sizeof(*data), virt, phys); in init_vhint_table() 221 struct tegra_bpmp *bpmp; in tegra186_cpufreq_probe() local 232 bpmp = tegra_bpmp_get(&pdev->dev); in tegra186_cpufreq_probe() 233 if (IS_ERR(bpmp)) in tegra186_cpufreq_probe() 234 return PTR_ERR(bpmp); in tegra186_cpufreq_probe() 245 cluster->table = init_vhint_table(pdev, bpmp, cluster, i); in tegra186_cpufreq_probe() 257 tegra_bpmp_put(bpmp); in tegra186_cpufreq_probe()
|
/linux/Documentation/devicetree/bindings/gpu/ |
H A D | nvidia,gk20a.txt | 87 clocks = <&bpmp TEGRA186_CLK_GPCCLK>, 88 <&bpmp TEGRA186_CLK_GPU>; 90 resets = <&bpmp TEGRA186_RESET_GPU>; 92 power-domains = <&bpmp TEGRA186_POWER_DOMAIN_GPU>; 105 clocks = <&bpmp TEGRA194_CLK_GPCCLK>, 106 <&bpmp TEGRA194_CLK_GPU_PWR>, 107 <&bpmp TEGRA194_CLK_FUSE>; 109 resets = <&bpmp TEGRA194_RESET_GPU>; 113 power-domains = <&bpmp TEGRA194_POWER_DOMAIN_GPU>;
|
/linux/Documentation/devicetree/bindings/i2c/ |
H A D | nvidia,tegra186-bpmp-i2c.yaml | 4 $id: http://devicetree.org/schemas/i2c/nvidia,tegra186-bpmp-i2c.yaml# 21 See ../firmware/nvidia,tegra186-bpmp.yaml for details of the BPMP 28 const: nvidia,tegra186-bpmp-i2c 30 nvidia,bpmp-bus-id: 44 - nvidia,bpmp-bus-id
|
/linux/Documentation/devicetree/bindings/pci/ |
H A D | nvidia,tegra194-pcie-ep.yaml | 116 nvidia,bpmp: 204 - nvidia,bpmp 229 clocks = <&bpmp TEGRA194_CLK_PEX1_CORE_5>; 232 resets = <&bpmp TEGRA194_RESET_PEX1_CORE_5_APB>, 233 <&bpmp TEGRA194_RESET_PEX1_CORE_5>; 236 power-domains = <&bpmp TEGRA194_POWER_DOMAIN_PCIEX8A>; 240 nvidia,bpmp = <&bpmp 5>; 288 clocks = <&bpmp TEGRA234_CLK_PEX1_C5_CORE>; 291 resets = <&bpmp TEGRA234_RESET_PEX1_CORE_5_APB>, 292 <&bpmp TEGRA234_RESET_PEX1_CORE_5>; [all …]
|