162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci * 362306a36Sopenharmony_ci * Header file for MCDI FW interaction for CDX bus. 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 2022-2023, Advanced Micro Devices, Inc. 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#ifndef CDX_MCDI_FUNCTIONS_H 962306a36Sopenharmony_ci#define CDX_MCDI_FUNCTIONS_H 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci#include "mcdi.h" 1262306a36Sopenharmony_ci#include "../cdx.h" 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci/** 1562306a36Sopenharmony_ci * cdx_mcdi_get_num_buses - Get the total number of buses on 1662306a36Sopenharmony_ci * the controller. 1762306a36Sopenharmony_ci * @cdx: pointer to MCDI interface. 1862306a36Sopenharmony_ci * 1962306a36Sopenharmony_ci * Return: total number of buses available on the controller, 2062306a36Sopenharmony_ci * <0 on failure 2162306a36Sopenharmony_ci */ 2262306a36Sopenharmony_ciint cdx_mcdi_get_num_buses(struct cdx_mcdi *cdx); 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci/** 2562306a36Sopenharmony_ci * cdx_mcdi_get_num_devs - Get the total number of devices on 2662306a36Sopenharmony_ci * a particular bus of the controller. 2762306a36Sopenharmony_ci * @cdx: pointer to MCDI interface. 2862306a36Sopenharmony_ci * @bus_num: Bus number. 2962306a36Sopenharmony_ci * 3062306a36Sopenharmony_ci * Return: total number of devices available on the bus, <0 on failure 3162306a36Sopenharmony_ci */ 3262306a36Sopenharmony_ciint cdx_mcdi_get_num_devs(struct cdx_mcdi *cdx, int bus_num); 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci/** 3562306a36Sopenharmony_ci * cdx_mcdi_get_dev_config - Get configuration for a particular 3662306a36Sopenharmony_ci * bus_num:dev_num 3762306a36Sopenharmony_ci * @cdx: pointer to MCDI interface. 3862306a36Sopenharmony_ci * @bus_num: Bus number. 3962306a36Sopenharmony_ci * @dev_num: Device number. 4062306a36Sopenharmony_ci * @dev_params: Pointer to cdx_dev_params, this is populated by this 4162306a36Sopenharmony_ci * device with the configuration corresponding to the provided 4262306a36Sopenharmony_ci * bus_num:dev_num. 4362306a36Sopenharmony_ci * 4462306a36Sopenharmony_ci * Return: 0 total number of devices available on the bus, <0 on failure 4562306a36Sopenharmony_ci */ 4662306a36Sopenharmony_ciint cdx_mcdi_get_dev_config(struct cdx_mcdi *cdx, 4762306a36Sopenharmony_ci u8 bus_num, u8 dev_num, 4862306a36Sopenharmony_ci struct cdx_dev_params *dev_params); 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ci/** 5162306a36Sopenharmony_ci * cdx_mcdi_reset_device - Reset cdx device represented by bus_num:dev_num 5262306a36Sopenharmony_ci * @cdx: pointer to MCDI interface. 5362306a36Sopenharmony_ci * @bus_num: Bus number. 5462306a36Sopenharmony_ci * @dev_num: Device number. 5562306a36Sopenharmony_ci * 5662306a36Sopenharmony_ci * Return: 0 on success, <0 on failure 5762306a36Sopenharmony_ci */ 5862306a36Sopenharmony_ciint cdx_mcdi_reset_device(struct cdx_mcdi *cdx, 5962306a36Sopenharmony_ci u8 bus_num, u8 dev_num); 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_ci#endif /* CDX_MCDI_FUNCTIONS_H */ 62