| /Linux-v6.1/drivers/firmware/tegra/ |
| D | bpmp.c | 18 #include <soc/tegra/bpmp.h> 19 #include <soc/tegra/bpmp-abi.h> 22 #include "bpmp-private.h" 37 struct tegra_bpmp *bpmp = channel->bpmp; in channel_to_ops() local 39 return bpmp->soc->ops; in channel_to_ops() 45 struct tegra_bpmp *bpmp; in tegra_bpmp_get() local 48 np = of_parse_phandle(dev->of_node, "nvidia,bpmp", 0); in tegra_bpmp_get() 54 bpmp = ERR_PTR(-ENODEV); in tegra_bpmp_get() 58 bpmp = platform_get_drvdata(pdev); in tegra_bpmp_get() 59 if (!bpmp) { in tegra_bpmp_get() [all …]
|
| D | bpmp-tegra186.c | 10 #include <soc/tegra/bpmp.h> 11 #include <soc/tegra/bpmp-abi.h> 14 #include "bpmp-private.h" 81 static int tegra186_bpmp_ring_doorbell(struct tegra_bpmp *bpmp) in tegra186_bpmp_ring_doorbell() argument 83 struct tegra186_bpmp *priv = bpmp->priv; in tegra186_bpmp_ring_doorbell() 97 struct tegra_bpmp *bpmp = data; in tegra186_bpmp_ivc_notify() local 98 struct tegra186_bpmp *priv = bpmp->priv; in tegra186_bpmp_ivc_notify() 103 tegra186_bpmp_ring_doorbell(bpmp); in tegra186_bpmp_ivc_notify() 107 struct tegra_bpmp *bpmp, in tegra186_bpmp_channel_init() argument 110 struct tegra186_bpmp *priv = bpmp->priv; in tegra186_bpmp_channel_init() [all …]
|
| D | bpmp-tegra210.c | 12 #include <soc/tegra/bpmp.h> 14 #include "bpmp-private.h" 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() [all …]
|
| D | bpmp-debugfs.c | 10 #include <soc/tegra/bpmp.h> 11 #include <soc/tegra/bpmp-abi.h> 73 /* map filename in Linux debugfs to corresponding entry in BPMP */ 74 static const char *get_filename(struct tegra_bpmp *bpmp, in get_filename() argument 86 root_path = dentry_path(bpmp->debugfs_mirror, root_path_buf, in get_filename() 111 static int mrq_debug_open(struct tegra_bpmp *bpmp, const char *name, in mrq_debug_open() argument 138 err = tegra_bpmp_transfer(bpmp, &msg); in mrq_debug_open() 150 static int mrq_debug_close(struct tegra_bpmp *bpmp, uint32_t fd) in mrq_debug_close() argument 172 err = tegra_bpmp_transfer(bpmp, &msg); in mrq_debug_close() 181 static int mrq_debug_read(struct tegra_bpmp *bpmp, const char *name, in mrq_debug_read() argument [all …]
|
| 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
|
| /Linux-v6.1/arch/arm64/boot/dts/nvidia/ |
| D | tegra186.dtsi | 10 #include <dt-bindings/thermal/tegra186-bpmp-thermal.h> 55 clocks = <&bpmp TEGRA186_CLK_AXI_CBB>, 56 <&bpmp TEGRA186_CLK_EQOS_AXI>, 57 <&bpmp TEGRA186_CLK_EQOS_RX>, 58 <&bpmp TEGRA186_CLK_EQOS_TX>, 59 <&bpmp TEGRA186_CLK_EQOS_PTP_REF>; 61 resets = <&bpmp TEGRA186_RESET_EQOS>; 79 resets = <&bpmp TEGRA186_RESET_GPCDMA>; 121 clocks = <&bpmp TEGRA186_CLK_APE>, 122 <&bpmp TEGRA186_CLK_APB2APE>; [all …]
|
| D | tegra194.dtsi | 10 #include <dt-bindings/thermal/tegra194-bpmp-thermal.h> 118 clocks = <&bpmp TEGRA194_CLK_AXI_CBB>, 119 <&bpmp TEGRA194_CLK_EQOS_AXI>, 120 <&bpmp TEGRA194_CLK_EQOS_RX>, 121 <&bpmp TEGRA194_CLK_EQOS_TX>, 122 <&bpmp TEGRA194_CLK_EQOS_PTP_REF>; 124 resets = <&bpmp TEGRA194_RESET_EQOS>; 143 resets = <&bpmp TEGRA194_RESET_GPCDMA>; 185 clocks = <&bpmp TEGRA194_CLK_APE>, 186 <&bpmp TEGRA194_CLK_APB2APE>; [all …]
|
| D | tegra234.dtsi | 28 resets = <&bpmp TEGRA234_RESET_GPCDMA>; 69 clocks = <&bpmp TEGRA234_CLK_APE>, 70 <&bpmp TEGRA234_CLK_APB2APE>; 72 power-domains = <&bpmp TEGRA234_POWER_DOMAIN_AUD>; 81 clocks = <&bpmp TEGRA234_CLK_AHUB>; 83 assigned-clocks = <&bpmp TEGRA234_CLK_AHUB>; 84 assigned-clock-parents = <&bpmp TEGRA234_CLK_PLLA_OUT0>; 94 clocks = <&bpmp TEGRA234_CLK_I2S1>, 95 <&bpmp TEGRA234_CLK_I2S1_SYNC_INPUT>; 97 assigned-clocks = <&bpmp TEGRA234_CLK_I2S1>; [all …]
|
| /Linux-v6.1/drivers/soc/tegra/ |
| D | powergate-bpmp.c | 11 #include <soc/tegra/bpmp.h> 12 #include <soc/tegra/bpmp-abi.h> 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 [all …]
|
| /Linux-v6.1/Documentation/devicetree/bindings/display/tegra/ |
| D | nvidia,tegra186-display.yaml | 128 resets = <&bpmp TEGRA186_RESET_NVDISPLAY0_MISC>, 129 <&bpmp TEGRA186_RESET_NVDISPLAY0_WGRP0>, 130 <&bpmp TEGRA186_RESET_NVDISPLAY0_WGRP1>, 131 <&bpmp TEGRA186_RESET_NVDISPLAY0_WGRP2>, 132 <&bpmp TEGRA186_RESET_NVDISPLAY0_WGRP3>, 133 <&bpmp TEGRA186_RESET_NVDISPLAY0_WGRP4>, 134 <&bpmp TEGRA186_RESET_NVDISPLAY0_WGRP5>; 137 clocks = <&bpmp TEGRA186_CLK_NVDISPLAY_DISP>, 138 <&bpmp TEGRA186_CLK_NVDISPLAY_DSC>, 139 <&bpmp TEGRA186_CLK_NVDISPLAYHUB>; [all …]
|
| /Linux-v6.1/drivers/clk/tegra/ |
| D | clk-bpmp.c | 11 #include <soc/tegra/bpmp.h> 12 #include <soc/tegra/bpmp-abi.h> 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() [all …]
|
| /Linux-v6.1/include/soc/tegra/ |
| D | bpmp.h | 15 #include <soc/tegra/bpmp-abi.h> 40 struct tegra_bpmp *bpmp; member 111 void tegra_bpmp_put(struct tegra_bpmp *bpmp); 112 int tegra_bpmp_transfer_atomic(struct tegra_bpmp *bpmp, 114 int tegra_bpmp_transfer(struct tegra_bpmp *bpmp, 119 int tegra_bpmp_request_mrq(struct tegra_bpmp *bpmp, unsigned int mrq, 121 void tegra_bpmp_free_mrq(struct tegra_bpmp *bpmp, unsigned int mrq, 123 bool tegra_bpmp_mrq_is_supported(struct tegra_bpmp *bpmp, unsigned int mrq); 129 static inline void tegra_bpmp_put(struct tegra_bpmp *bpmp) in tegra_bpmp_put() argument 132 static inline int tegra_bpmp_transfer_atomic(struct tegra_bpmp *bpmp, in tegra_bpmp_transfer_atomic() argument [all …]
|
| D | bpmp-abi.h | 44 * @brief Messages sent to/from BPMP via IPC 56 * The CPU requests the BPMP to perform a particular service by 61 * The BPMP processes the data and replies with an IVC frame (on the 67 * BPMP can lead to BPMP eventually sending an MRQ message to the 69 * a thermal trip point, the BPMP may eventually send a single 168 * BPMP. Subject to change in future 216 * * Targets: BPMP 220 * Behavior is equivalent to a simple #MRQ_PING except that BPMP 256 * @brief Query BPMP firmware's tag (i.e. unique identifer) 262 * * Targets: BPMP [all …]
|
| /Linux-v6.1/Documentation/devicetree/bindings/firmware/ |
| D | nvidia,tegra186-bpmp.yaml | 4 $id: http://devicetree.org/schemas/firmware/nvidia,tegra186-bpmp.yaml# 7 title: NVIDIA Tegra Boot and Power Management Processor (BPMP) 14 The BPMP is a specific processor in Tegra chip, which is designed for 17 defines the resources that would be used by the BPMP firmware driver, 19 CPU and BPMP. 39 The BPMP implements some services which must be represented by 43 BPMP node. 45 Software can determine whether a child node of the BPMP node 49 provide configuration information regarding the BPMP itself, although 52 The BPMP firmware defines no single global name-/numbering-space for [all …]
|
| D | nvidia,tegra210-bpmp.txt | 1 NVIDIA Tegra210 Boot and Power Management Processor (BPMP) 3 The Boot and Power Management Processor (BPMP) is a co-processor found 8 be used by the BPMP T210 firmware driver, which can create the 9 interprocessor communication (IPC) between the CPU and BPMP. 15 - "nvidia,tegra210-bpmp" 24 offloaded to bpmp. 28 bpmp@70016000 { 29 compatible = "nvidia,tegra210-bpmp";
|
| /Linux-v6.1/drivers/reset/tegra/ |
| D | reset-bpmp.c | 8 #include <soc/tegra/bpmp.h> 9 #include <soc/tegra/bpmp-abi.h> 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-v6.1/Documentation/devicetree/bindings/i2c/ |
| D | nvidia,tegra186-bpmp-i2c.yaml | 4 $id: http://devicetree.org/schemas/i2c/nvidia,tegra186-bpmp-i2c.yaml# 7 title: NVIDIA Tegra186 (and later) BPMP I2C controller 14 In Tegra186 and later, the BPMP (Boot and Power Management Processor) 17 the BPMP in order to execute transactions on that I2C bus. This 20 The BPMP I2C node must be located directly inside the main BPMP node. 21 See ../firmware/nvidia,tegra186-bpmp.yaml for details of the BPMP 29 const: nvidia,tegra186-bpmp-i2c 31 nvidia,bpmp-bus-id: 34 as defined by the BPMP firmware. 45 - nvidia,bpmp-bus-id
|
| /Linux-v6.1/Documentation/devicetree/bindings/net/ |
| D | nvidia,tegra234-mgbe.yaml | 124 clocks = <&bpmp TEGRA234_CLK_MGBE0_APP>, 125 <&bpmp TEGRA234_CLK_MGBE0_MAC>, 126 <&bpmp TEGRA234_CLK_MGBE0_MAC_DIVIDER>, 127 <&bpmp TEGRA234_CLK_MGBE0_PTP_REF>, 128 <&bpmp TEGRA234_CLK_MGBE0_RX_INPUT_M>, 129 <&bpmp TEGRA234_CLK_MGBE0_RX_INPUT>, 130 <&bpmp TEGRA234_CLK_MGBE0_TX>, 131 <&bpmp TEGRA234_CLK_MGBE0_EEE_PCS>, 132 <&bpmp TEGRA234_CLK_MGBE0_RX_PCS_INPUT>, 133 <&bpmp TEGRA234_CLK_MGBE0_RX_PCS_M>, [all …]
|
| /Linux-v6.1/Documentation/devicetree/bindings/thermal/ |
| D | nvidia,tegra186-bpmp-thermal.yaml | 4 $id: http://devicetree.org/schemas/thermal/nvidia,tegra186-bpmp-thermal.yaml# 7 title: NVIDIA Tegra186 (and later) BPMP thermal sensor 14 In Tegra186, the BPMP (Boot and Power Management Processor) implements 17 sensor that is exposed by BPMP. 19 The BPMP thermal node must be located directly inside the main BPMP 20 node. See ../firmware/nvidia,tegra186-bpmp.yaml for details of the 21 BPMP binding. 32 - nvidia,tegra186-bpmp-thermal 33 - nvidia,tegra194-bpmp-thermal
|
| /Linux-v6.1/drivers/thermal/tegra/ |
| D | tegra-bpmp-thermal.c | 16 #include <soc/tegra/bpmp.h> 17 #include <soc/tegra/bpmp-abi.h> 28 struct tegra_bpmp *bpmp; member 52 err = tegra_bpmp_transfer(zone->tegra->bpmp, &msg); in __tegra_bpmp_thermal_get_temp() 87 err = tegra_bpmp_transfer(zone->tegra->bpmp, &msg); in tegra_bpmp_thermal_set_trips() 136 static int tegra_bpmp_thermal_get_num_zones(struct tegra_bpmp *bpmp, in tegra_bpmp_thermal_get_num_zones() argument 154 err = tegra_bpmp_transfer(bpmp, &msg); in tegra_bpmp_thermal_get_num_zones() 172 struct tegra_bpmp *bpmp = dev_get_drvdata(pdev->dev.parent); in tegra_bpmp_thermal_probe() local 183 tegra->bpmp = bpmp; in tegra_bpmp_thermal_probe() 185 err = tegra_bpmp_thermal_get_num_zones(bpmp, &max_num_zones); in tegra_bpmp_thermal_probe() [all …]
|
| /Linux-v6.1/drivers/i2c/busses/ |
| D | i2c-tegra-bpmp.c | 3 * drivers/i2c/busses/i2c-tegra-bpmp.c 19 #include <soc/tegra/bpmp-abi.h> 20 #include <soc/tegra/bpmp.h> 32 struct tegra_bpmp *bpmp; member 37 * Linux flags are translated to BPMP defined I2C flags that are used in BPMP 113 * The data in the BPMP -> CPU direction is composed of sequential blocks for 122 * ...then the data in the BPMP -> CPU direction would be 4 bytes total, and 193 err = tegra_bpmp_transfer_atomic(i2c->bpmp, &msg); in tegra_bpmp_i2c_msg_xfer() 195 err = tegra_bpmp_transfer(i2c->bpmp, &msg); in tegra_bpmp_i2c_msg_xfer() 295 i2c->bpmp = dev_get_drvdata(pdev->dev.parent); in tegra_bpmp_i2c_probe() [all …]
|
| /Linux-v6.1/Documentation/devicetree/bindings/pci/ |
| D | nvidia,tegra194-pcie-ep.yaml | 116 nvidia,bpmp: 119 Must contain a pair of phandles to BPMP controller node followed by 147 - description: phandle to BPMP controller node 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>; 278 power-domains = <&bpmp TEGRA234_POWER_DOMAIN_PCIEX8A>; [all …]
|
| D | nvidia,tegra194-pcie.yaml | 111 nvidia,bpmp: 114 Must contain a pair of phandles to BPMP controller node followed by 142 - description: phandle to BPMP controller node 222 - nvidia,bpmp 238 power-domains = <&bpmp TEGRA194_POWER_DOMAIN_PCIEX8B>; 254 clocks = <&bpmp TEGRA194_CLK_PEX0_CORE_0>; 257 resets = <&bpmp TEGRA194_RESET_PEX0_CORE_0_APB>, 258 <&bpmp TEGRA194_RESET_PEX0_CORE_0>; 269 nvidia,bpmp = <&bpmp 0>; 304 power-domains = <&bpmp TEGRA234_POWER_DOMAIN_PCIEX4BB>; [all …]
|
| /Linux-v6.1/Documentation/devicetree/bindings/gpu/ |
| 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-v6.1/drivers/cpufreq/ |
| D | tegra186-cpufreq.c | 12 #include <soc/tegra/bpmp.h> 13 #include <soc/tegra/bpmp-abi.h> 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 235 bpmp = tegra_bpmp_get(&pdev->dev); in tegra186_cpufreq_probe() 236 if (IS_ERR(bpmp)) in tegra186_cpufreq_probe() 237 return PTR_ERR(bpmp); in tegra186_cpufreq_probe() [all …]
|