Home
last modified time | relevance | path

Searched full:bpmp (Results 1 – 25 of 51) sorted by relevance

123

/linux-5.10/drivers/firmware/tegra/
Dbpmp.c18 #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 …]
Dbpmp-tegra186.c10 #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 …]
Dbpmp-tegra210.c12 #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 …]
Dbpmp-debugfs.c10 #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
82 root_path = dentry_path(bpmp->debugfs_mirror, root_path_buf, in get_filename()
102 static int mrq_debug_open(struct tegra_bpmp *bpmp, const char *name, in mrq_debug_open() argument
129 err = tegra_bpmp_transfer(bpmp, &msg); in mrq_debug_open()
141 static int mrq_debug_close(struct tegra_bpmp *bpmp, uint32_t fd) in mrq_debug_close() argument
163 err = tegra_bpmp_transfer(bpmp, &msg); in mrq_debug_close()
172 static int mrq_debug_read(struct tegra_bpmp *bpmp, const char *name, in mrq_debug_read() argument
[all …]
DMakefile2 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_DEBUG_FS) += bpmp-debugfs.o
7 obj-$(CONFIG_TEGRA_BPMP) += tegra-bpmp.o
Dbpmp-private.h9 #include <soc/tegra/bpmp.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-5.10/arch/arm64/boot/dts/nvidia/
Dtegra186.dtsi10 #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 clocks = <&bpmp TEGRA186_CLK_APE>,
80 <&bpmp TEGRA186_CLK_APB2APE>;
82 power-domains = <&bpmp TEGRA186_POWER_DOMAIN_AUD>;
[all …]
Dtegra194.dtsi9 #include <dt-bindings/thermal/tegra194-bpmp-thermal.h>
54 clocks = <&bpmp TEGRA194_CLK_AXI_CBB>,
55 <&bpmp TEGRA194_CLK_EQOS_AXI>,
56 <&bpmp TEGRA194_CLK_EQOS_RX>,
57 <&bpmp TEGRA194_CLK_EQOS_TX>,
58 <&bpmp TEGRA194_CLK_EQOS_PTP_REF>;
60 resets = <&bpmp TEGRA194_RESET_EQOS>;
77 clocks = <&bpmp TEGRA194_CLK_APE>,
78 <&bpmp TEGRA194_CLK_APB2APE>;
80 power-domains = <&bpmp TEGRA194_POWER_DOMAIN_AUD>;
[all …]
Dtegra234.dtsi32 clocks = <&bpmp TEGRA234_CLK_UARTA>;
34 resets = <&bpmp TEGRA234_RESET_UARTA>;
43 clocks = <&bpmp TEGRA234_CLK_SDMMC4>;
45 resets = <&bpmp TEGRA234_RESET_SDMMC4>;
54 clocks = <&bpmp TEGRA234_CLK_FUSE>;
134 label = "cpu-bpmp-tx";
140 label = "cpu-bpmp-rx";
145 bpmp: bpmp { label
146 compatible = "nvidia,tegra234-bpmp", "nvidia,tegra186-bpmp";
155 compatible = "nvidia,tegra186-bpmp-i2c";
[all …]
/linux-5.10/drivers/soc/tegra/
Dpowergate-bpmp.c12 #include <soc/tegra/bpmp.h>
13 #include <soc/tegra/bpmp-abi.h>
22 struct tegra_bpmp *bpmp; member
32 static int tegra_bpmp_powergate_set_state(struct tegra_bpmp *bpmp, in tegra_bpmp_powergate_set_state() argument
49 err = tegra_bpmp_transfer(bpmp, &msg); in tegra_bpmp_powergate_set_state()
58 static int tegra_bpmp_powergate_get_state(struct tegra_bpmp *bpmp, in tegra_bpmp_powergate_get_state() argument
79 err = tegra_bpmp_transfer(bpmp, &msg); in tegra_bpmp_powergate_get_state()
88 static int tegra_bpmp_powergate_get_max_id(struct tegra_bpmp *bpmp) in tegra_bpmp_powergate_get_max_id() argument
107 err = tegra_bpmp_transfer(bpmp, &msg); in tegra_bpmp_powergate_get_max_id()
116 static char *tegra_bpmp_powergate_get_name(struct tegra_bpmp *bpmp, in tegra_bpmp_powergate_get_name() argument
[all …]
/linux-5.10/drivers/clk/tegra/
Dclk-bpmp.c11 #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-5.10/include/soc/tegra/
Dbpmp.h15 #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 …]
Dbpmp-abi.h44 * @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-5.10/Documentation/devicetree/bindings/firmware/
Dnvidia,tegra186-bpmp.txt1 NVIDIA Tegra Boot and Power Management Processor (BPMP)
3 The BPMP is a specific processor in Tegra chip, which is designed for
6 defines the resources that would be used by the BPMP firmware driver,
8 and BPMP.
14 - "nvidia,tegra186-bpmp"
17 the IPC between CPU and BPMP is based on.
40 The BPMP implements some services which must be represented by separate nodes.
43 be nested directly inside the main BPMP node.
45 Software can determine whether a child node of the BPMP node represents a device
48 property may be used to provide configuration information regarding the BPMP
[all …]
Dnvidia,tegra210-bpmp.txt1 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-5.10/Documentation/devicetree/bindings/i2c/
Dnvidia,tegra186-bpmp-i2c.txt1 NVIDIA Tegra186 BPMP I2C controller
3 In Tegra186, the BPMP (Boot and Power Management Processor) owns certain HW
5 running on other CPUs must perform IPC to the BPMP in order to execute
9 The BPMP I2C node must be located directly inside the main BPMP node. See
10 ../firmware/nvidia,tegra186-bpmp.txt for details of the BPMP binding.
19 - "nvidia,tegra186-bpmp-i2c".
26 - nvidia,bpmp-bus-id:
29 BPMP firmware.
33 bpmp {
37 compatible = "nvidia,tegra186-bpmp-i2c";
[all …]
/linux-5.10/drivers/reset/tegra/
Dreset-bpmp.c8 #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
33 return tegra_bpmp_transfer(bpmp, &msg); in tegra_bpmp_reset_common()
60 int tegra_bpmp_init_resets(struct tegra_bpmp *bpmp) in tegra_bpmp_init_resets() argument
62 bpmp->rstc.ops = &tegra_bpmp_reset_ops; in tegra_bpmp_init_resets()
63 bpmp->rstc.owner = THIS_MODULE; in tegra_bpmp_init_resets()
64 bpmp->rstc.of_node = bpmp->dev->of_node; in tegra_bpmp_init_resets()
65 bpmp->rstc.nr_resets = bpmp->soc->num_resets; in tegra_bpmp_init_resets()
67 return devm_reset_controller_register(bpmp->dev, &bpmp->rstc); in tegra_bpmp_init_resets()
/linux-5.10/Documentation/devicetree/bindings/thermal/
Dnvidia,tegra186-bpmp-thermal.txt1 NVIDIA Tegra186 BPMP thermal sensor
3 In Tegra186, the BPMP (Boot and Power Management Processor) implements an
6 exposed by BPMP.
8 The BPMP thermal node must be located directly inside the main BPMP node. See
9 ../firmware/nvidia,tegra186-bpmp.txt for details of the BPMP binding.
18 - "nvidia,tegra186-bpmp-thermal"
19 - "nvidia,tegra194-bpmp-thermal"
26 bpmp {
30 compatible = "nvidia,tegra186-bpmp-thermal";
/linux-5.10/drivers/thermal/tegra/
Dtegra-bpmp-thermal.c16 #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()
79 return tegra_bpmp_transfer(zone->tegra->bpmp, &msg); in tegra_bpmp_thermal_set_trips()
122 static int tegra_bpmp_thermal_get_num_zones(struct tegra_bpmp *bpmp, in tegra_bpmp_thermal_get_num_zones() argument
140 err = tegra_bpmp_transfer(bpmp, &msg); in tegra_bpmp_thermal_get_num_zones()
156 struct tegra_bpmp *bpmp = dev_get_drvdata(pdev->dev.parent); in tegra_bpmp_thermal_probe() local
167 tegra->bpmp = bpmp; in tegra_bpmp_thermal_probe()
169 err = tegra_bpmp_thermal_get_num_zones(bpmp, &max_num_zones); in tegra_bpmp_thermal_probe()
[all …]
/linux-5.10/drivers/i2c/busses/
Di2c-tegra-bpmp.c3 * 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
136 * The data in the BPMP -> CPU direction is composed of sequential blocks for
145 * ...then the data in the BPMP -> CPU direction would be 4 bytes total, and
216 err = tegra_bpmp_transfer_atomic(i2c->bpmp, &msg); in tegra_bpmp_i2c_msg_xfer()
218 err = tegra_bpmp_transfer(i2c->bpmp, &msg); in tegra_bpmp_i2c_msg_xfer()
298 i2c->bpmp = dev_get_drvdata(pdev->dev.parent); in tegra_bpmp_i2c_probe()
[all …]
/linux-5.10/Documentation/devicetree/bindings/memory-controllers/
Dnvidia,tegra186-mc.yaml55 controller on NVIDIA Tegra186 and later is performed on the BPMP. This
81 nvidia,bpmp:
84 phandle of the node representing the BPMP
124 clocks = <&bpmp TEGRA186_CLK_EMC>;
127 nvidia,bpmp = <&bpmp>;
132 bpmp: bpmp {
133 compatible = "nvidia,tegra186-bpmp";
/linux-5.10/Documentation/devicetree/bindings/gpu/
Dnvidia,gk20a.txt87 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-5.10/drivers/cpufreq/
Dtegra186-cpufreq.c12 #include <soc/tegra/bpmp.h>
13 #include <soc/tegra/bpmp-abi.h>
143 struct platform_device *pdev, struct tegra_bpmp *bpmp, in init_vhint_table() argument
154 virt = dma_alloc_coherent(bpmp->dev, sizeof(*data), &phys, in init_vhint_table()
170 err = tegra_bpmp_transfer(bpmp, &msg); in init_vhint_table()
222 dma_free_coherent(bpmp->dev, sizeof(*data), virt, phys); in init_vhint_table()
230 struct tegra_bpmp *bpmp; in tegra186_cpufreq_probe() local
244 bpmp = tegra_bpmp_get(&pdev->dev); in tegra186_cpufreq_probe()
245 if (IS_ERR(bpmp)) in tegra186_cpufreq_probe()
246 return PTR_ERR(bpmp); in tegra186_cpufreq_probe()
[all …]
/linux-5.10/Documentation/devicetree/bindings/pci/
Dnvidia,tegra194-pcie.txt47 - nvidia,bpmp: Must contain a pair of phandle to BPMP controller node followed
145 power-domains = <&bpmp TEGRA194_POWER_DOMAIN_PCIEX8B>;
160 clocks = <&bpmp TEGRA194_CLK_PEX0_CORE_0>;
163 resets = <&bpmp TEGRA194_RESET_PEX0_CORE_0_APB>,
164 <&bpmp TEGRA194_RESET_PEX0_CORE_0>;
175 nvidia,bpmp = <&bpmp 0>;
201 power-domains = <&bpmp TEGRA194_POWER_DOMAIN_PCIEX8A>;
215 clocks = <&bpmp TEGRA194_CLK_PEX1_CORE_5>;
218 resets = <&bpmp TEGRA194_RESET_PEX1_CORE_5_APB>,
219 <&bpmp TEGRA194_RESET_PEX1_CORE_5>;
[all …]
/linux-5.10/drivers/memory/tegra/
Dtegra186-emc.c12 #include <soc/tegra/bpmp.h>
20 struct tegra_bpmp *bpmp; member
174 emc->bpmp = tegra_bpmp_get(&pdev->dev); in tegra186_emc_probe()
175 if (IS_ERR(emc->bpmp)) in tegra186_emc_probe()
176 return dev_err_probe(&pdev->dev, PTR_ERR(emc->bpmp), "failed to get BPMP\n"); in tegra186_emc_probe()
195 err = tegra_bpmp_transfer(emc->bpmp, &msg); in tegra186_emc_probe()
250 tegra_bpmp_put(emc->bpmp); in tegra186_emc_probe()
259 tegra_bpmp_put(emc->bpmp); in tegra186_emc_remove()

123