xref: /freebsd/sys/dev/bnxt/bnxt_en/bnxt_auxbus_compat.h (revision 050d28e13cdede7528944c0abf8d0455729c63fd)
1*050d28e1SChandrakanth patil /*-
2*050d28e1SChandrakanth patil  * Broadcom NetXtreme-C/E network driver.
3*050d28e1SChandrakanth patil  *
4*050d28e1SChandrakanth patil  * Copyright (c) 2024 Broadcom, All Rights Reserved.
5*050d28e1SChandrakanth patil  * The term Broadcom refers to Broadcom Limited and/or its subsidiaries
6*050d28e1SChandrakanth patil  *
7*050d28e1SChandrakanth patil  * Redistribution and use in source and binary forms, with or without
8*050d28e1SChandrakanth patil  * modification, are permitted provided that the following conditions
9*050d28e1SChandrakanth patil  * are met:
10*050d28e1SChandrakanth patil  * 1. Redistributions of source code must retain the above copyright
11*050d28e1SChandrakanth patil  *    notice, this list of conditions and the following disclaimer.
12*050d28e1SChandrakanth patil  * 2. Redistributions in binary form must reproduce the above copyright
13*050d28e1SChandrakanth patil  *    notice, this list of conditions and the following disclaimer in the
14*050d28e1SChandrakanth patil  *    documentation and/or other materials provided with the distribution.
15*050d28e1SChandrakanth patil  *
16*050d28e1SChandrakanth patil  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS'
17*050d28e1SChandrakanth patil  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18*050d28e1SChandrakanth patil  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19*050d28e1SChandrakanth patil  * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
20*050d28e1SChandrakanth patil  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21*050d28e1SChandrakanth patil  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22*050d28e1SChandrakanth patil  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23*050d28e1SChandrakanth patil  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24*050d28e1SChandrakanth patil  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25*050d28e1SChandrakanth patil  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
26*050d28e1SChandrakanth patil  * THE POSSIBILITY OF SUCH DAMAGE.
27*050d28e1SChandrakanth patil  */
28*050d28e1SChandrakanth patil 
29*050d28e1SChandrakanth patil #ifndef _BNXT_AUXILIARY_COMPAT_H_
30*050d28e1SChandrakanth patil #define _BNXT_AUXILIARY_COMPAT_H_
31*050d28e1SChandrakanth patil 
32*050d28e1SChandrakanth patil #include <linux/device.h>
33*050d28e1SChandrakanth patil #include <linux/idr.h>
34*050d28e1SChandrakanth patil 
35*050d28e1SChandrakanth patil #define KBUILD_MODNAME		"if_bnxt"
36*050d28e1SChandrakanth patil #define AUXILIARY_NAME_SIZE	32
37*050d28e1SChandrakanth patil 
38*050d28e1SChandrakanth patil struct auxiliary_device_id {
39*050d28e1SChandrakanth patil 	char name[AUXILIARY_NAME_SIZE];
40*050d28e1SChandrakanth patil 	uint64_t driver_data;
41*050d28e1SChandrakanth patil };
42*050d28e1SChandrakanth patil 
43*050d28e1SChandrakanth patil struct auxiliary_device {
44*050d28e1SChandrakanth patil 	struct device dev;
45*050d28e1SChandrakanth patil 	const char *name;
46*050d28e1SChandrakanth patil 	uint32_t id;
47*050d28e1SChandrakanth patil 	struct list_head list;
48*050d28e1SChandrakanth patil };
49*050d28e1SChandrakanth patil 
50*050d28e1SChandrakanth patil struct auxiliary_driver {
51*050d28e1SChandrakanth patil 	int (*probe)(struct auxiliary_device *auxdev, const struct auxiliary_device_id *id);
52*050d28e1SChandrakanth patil 	void (*remove)(struct auxiliary_device *auxdev);
53*050d28e1SChandrakanth patil 	const char *name;
54*050d28e1SChandrakanth patil 	struct device_driver driver;
55*050d28e1SChandrakanth patil 	const struct auxiliary_device_id *id_table;
56*050d28e1SChandrakanth patil 	struct list_head list;
57*050d28e1SChandrakanth patil };
58*050d28e1SChandrakanth patil 
59*050d28e1SChandrakanth patil int auxiliary_device_init(struct auxiliary_device *auxdev);
60*050d28e1SChandrakanth patil int auxiliary_device_add(struct auxiliary_device *auxdev);
61*050d28e1SChandrakanth patil void auxiliary_device_uninit(struct auxiliary_device *auxdev);
62*050d28e1SChandrakanth patil void auxiliary_device_delete(struct auxiliary_device *auxdev);
63*050d28e1SChandrakanth patil int auxiliary_driver_register(struct auxiliary_driver *auxdrv);
64*050d28e1SChandrakanth patil void auxiliary_driver_unregister(struct auxiliary_driver *auxdrv);
65*050d28e1SChandrakanth patil 
auxiliary_get_drvdata(struct auxiliary_device * auxdev)66*050d28e1SChandrakanth patil static inline void *auxiliary_get_drvdata(struct auxiliary_device *auxdev)
67*050d28e1SChandrakanth patil {
68*050d28e1SChandrakanth patil 	return dev_get_drvdata(&auxdev->dev);
69*050d28e1SChandrakanth patil }
70*050d28e1SChandrakanth patil 
auxiliary_set_drvdata(struct auxiliary_device * auxdev,void * data)71*050d28e1SChandrakanth patil static inline void auxiliary_set_drvdata(struct auxiliary_device *auxdev, void *data)
72*050d28e1SChandrakanth patil {
73*050d28e1SChandrakanth patil 	dev_set_drvdata(&auxdev->dev, data);
74*050d28e1SChandrakanth patil }
75*050d28e1SChandrakanth patil #endif /* _BNXT_AUXILIARY_COMPAT_H_ */
76