| /* SPDX-License-Identifier: GPL-2.0 */ |
| /* |
| * Copyright (c) 2018, NVIDIA CORPORATION. |
| */ |
| |
| #ifndef __FIRMWARE_TEGRA_BPMP_PRIVATE_H |
| #define __FIRMWARE_TEGRA_BPMP_PRIVATE_H |
| |
| #include <soc/tegra/bpmp.h> |
| |
| struct tegra_bpmp_ops { |
| int (*init)(struct tegra_bpmp *bpmp); |
| void (*deinit)(struct tegra_bpmp *bpmp); |
| bool (*is_response_ready)(struct tegra_bpmp_channel *channel); |
| bool (*is_request_ready)(struct tegra_bpmp_channel *channel); |
| int (*ack_response)(struct tegra_bpmp_channel *channel); |
| int (*ack_request)(struct tegra_bpmp_channel *channel); |
| bool (*is_response_channel_free)(struct tegra_bpmp_channel *channel); |
| bool (*is_request_channel_free)(struct tegra_bpmp_channel *channel); |
| int (*post_response)(struct tegra_bpmp_channel *channel); |
| int (*post_request)(struct tegra_bpmp_channel *channel); |
| int (*ring_doorbell)(struct tegra_bpmp *bpmp); |
| int (*resume)(struct tegra_bpmp *bpmp); |
| }; |
| |
| #if IS_ENABLED(CONFIG_ARCH_TEGRA_186_SOC) || \ |
| IS_ENABLED(CONFIG_ARCH_TEGRA_194_SOC) |
| extern const struct tegra_bpmp_ops tegra186_bpmp_ops; |
| #endif |
| #if IS_ENABLED(CONFIG_ARCH_TEGRA_210_SOC) |
| extern const struct tegra_bpmp_ops tegra210_bpmp_ops; |
| #endif |
| |
| #endif |