xref: /kernel/linux/linux-6.6/drivers/cdx/cdx.h (revision 62306a36)
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