mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	firmware: tegra: Add helper to check for supported MRQs
Add a helper function to check that firmware is supporting a given MRQ command. Signed-off-by: Timo Alho <talho@nvidia.com> Acked-by: Sivaram Nair <sivaramn@nvidia.com> Acked-by: Jon Hunter <jonathanh@nvidia.com> Signed-off-by: Thierry Reding <treding@nvidia.com>
This commit is contained in:
		
							parent
							
								
									651022382c
								
							
						
					
					
						commit
						d78b5bde0f
					
				
					 2 changed files with 32 additions and 0 deletions
				
			
		| 
						 | 
					@ -470,6 +470,31 @@ void tegra_bpmp_free_mrq(struct tegra_bpmp *bpmp, unsigned int mrq, void *data)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
EXPORT_SYMBOL_GPL(tegra_bpmp_free_mrq);
 | 
					EXPORT_SYMBOL_GPL(tegra_bpmp_free_mrq);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool tegra_bpmp_mrq_is_supported(struct tegra_bpmp *bpmp, unsigned int mrq)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						struct mrq_query_abi_request req = { .mrq = cpu_to_le32(mrq) };
 | 
				
			||||||
 | 
						struct mrq_query_abi_response resp;
 | 
				
			||||||
 | 
						struct tegra_bpmp_message msg = {
 | 
				
			||||||
 | 
							.mrq = MRQ_QUERY_ABI,
 | 
				
			||||||
 | 
							.tx = {
 | 
				
			||||||
 | 
								.data = &req,
 | 
				
			||||||
 | 
								.size = sizeof(req),
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							.rx = {
 | 
				
			||||||
 | 
								.data = &resp,
 | 
				
			||||||
 | 
								.size = sizeof(resp),
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
						int ret;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ret = tegra_bpmp_transfer(bpmp, &msg);
 | 
				
			||||||
 | 
						if (ret || msg.rx.ret)
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return resp.status == 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					EXPORT_SYMBOL_GPL(tegra_bpmp_mrq_is_supported);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void tegra_bpmp_mrq_handle_ping(unsigned int mrq,
 | 
					static void tegra_bpmp_mrq_handle_ping(unsigned int mrq,
 | 
				
			||||||
				       struct tegra_bpmp_channel *channel,
 | 
									       struct tegra_bpmp_channel *channel,
 | 
				
			||||||
				       void *data)
 | 
									       void *data)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -129,6 +129,7 @@ int tegra_bpmp_request_mrq(struct tegra_bpmp *bpmp, unsigned int mrq,
 | 
				
			||||||
			   tegra_bpmp_mrq_handler_t handler, void *data);
 | 
								   tegra_bpmp_mrq_handler_t handler, void *data);
 | 
				
			||||||
void tegra_bpmp_free_mrq(struct tegra_bpmp *bpmp, unsigned int mrq,
 | 
					void tegra_bpmp_free_mrq(struct tegra_bpmp *bpmp, unsigned int mrq,
 | 
				
			||||||
			 void *data);
 | 
								 void *data);
 | 
				
			||||||
 | 
					bool tegra_bpmp_mrq_is_supported(struct tegra_bpmp *bpmp, unsigned int mrq);
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
static inline struct tegra_bpmp *tegra_bpmp_get(struct device *dev)
 | 
					static inline struct tegra_bpmp *tegra_bpmp_get(struct device *dev)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -164,6 +165,12 @@ static inline void tegra_bpmp_free_mrq(struct tegra_bpmp *bpmp,
 | 
				
			||||||
				       unsigned int mrq, void *data)
 | 
									       unsigned int mrq, void *data)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline bool tegra_bpmp_mrq_is_supported(struct tegra_bpmp *bpmp,
 | 
				
			||||||
 | 
										      unsigned int mrq)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return false;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if IS_ENABLED(CONFIG_CLK_TEGRA_BPMP)
 | 
					#if IS_ENABLED(CONFIG_CLK_TEGRA_BPMP)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue