162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci * 362306a36Sopenharmony_ci * Header file for the CDX Bus 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 2022-2023, Advanced Micro Devices, Inc. 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#ifndef _CDX_H_ 962306a36Sopenharmony_ci#define _CDX_H_ 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci#include <linux/cdx/cdx_bus.h> 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci/** 1462306a36Sopenharmony_ci * struct cdx_dev_params - CDX device parameters 1562306a36Sopenharmony_ci * @cdx: CDX controller associated with the device 1662306a36Sopenharmony_ci * @parent: Associated CDX controller 1762306a36Sopenharmony_ci * @vendor: Vendor ID for CDX device 1862306a36Sopenharmony_ci * @device: Device ID for CDX device 1962306a36Sopenharmony_ci * @bus_num: Bus number for this CDX device 2062306a36Sopenharmony_ci * @dev_num: Device number for this device 2162306a36Sopenharmony_ci * @res: array of MMIO region entries 2262306a36Sopenharmony_ci * @res_count: number of valid MMIO regions 2362306a36Sopenharmony_ci * @req_id: Requestor ID associated with CDX device 2462306a36Sopenharmony_ci */ 2562306a36Sopenharmony_cistruct cdx_dev_params { 2662306a36Sopenharmony_ci struct cdx_controller *cdx; 2762306a36Sopenharmony_ci u16 vendor; 2862306a36Sopenharmony_ci u16 device; 2962306a36Sopenharmony_ci u8 bus_num; 3062306a36Sopenharmony_ci u8 dev_num; 3162306a36Sopenharmony_ci struct resource res[MAX_CDX_DEV_RESOURCES]; 3262306a36Sopenharmony_ci u8 res_count; 3362306a36Sopenharmony_ci u32 req_id; 3462306a36Sopenharmony_ci}; 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ci/** 3762306a36Sopenharmony_ci * cdx_register_controller - Register a CDX controller and its ports 3862306a36Sopenharmony_ci * on the CDX bus. 3962306a36Sopenharmony_ci * @cdx: The CDX controller to register 4062306a36Sopenharmony_ci * 4162306a36Sopenharmony_ci * Return: -errno on failure, 0 on success. 4262306a36Sopenharmony_ci */ 4362306a36Sopenharmony_ciint cdx_register_controller(struct cdx_controller *cdx); 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ci/** 4662306a36Sopenharmony_ci * cdx_unregister_controller - Unregister a CDX controller 4762306a36Sopenharmony_ci * @cdx: The CDX controller to unregister 4862306a36Sopenharmony_ci */ 4962306a36Sopenharmony_civoid cdx_unregister_controller(struct cdx_controller *cdx); 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci/** 5262306a36Sopenharmony_ci * cdx_device_add - Add a CDX device. This function adds a CDX device 5362306a36Sopenharmony_ci * on the CDX bus as per the device parameters provided 5462306a36Sopenharmony_ci * by caller. It also creates and registers an associated 5562306a36Sopenharmony_ci * Linux generic device. 5662306a36Sopenharmony_ci * @dev_params: device parameters associated with the device to be created. 5762306a36Sopenharmony_ci * 5862306a36Sopenharmony_ci * Return: -errno on failure, 0 on success. 5962306a36Sopenharmony_ci */ 6062306a36Sopenharmony_ciint cdx_device_add(struct cdx_dev_params *dev_params); 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ci#endif /* _CDX_H_ */ 63