1 /* SPDX-License-Identifier: GPL-2.0 */
2 /* Copyright (C) 2024, KEBA Industrial Automation Gmbh */
3 
4 #ifndef _LINUX_MISC_KEBA_H
5 #define _LINUX_MISC_KEBA_H
6 
7 #include <linux/auxiliary_bus.h>
8 
9 struct i2c_board_info;
10 struct spi_board_info;
11 
12 /**
13  * struct keba_i2c_auxdev - KEBA I2C auxiliary device
14  * @auxdev: auxiliary device object
15  * @io: address range of I2C controller IO memory
16  * @info_size: number of I2C devices to be probed
17  * @info: I2C devices to be probed
18  */
19 struct keba_i2c_auxdev {
20 	struct auxiliary_device auxdev;
21 	struct resource io;
22 	int info_size;
23 	struct i2c_board_info *info;
24 };
25 
26 /**
27  * struct keba_spi_auxdev - KEBA SPI auxiliary device
28  * @auxdev: auxiliary device object
29  * @io: address range of SPI controller IO memory
30  * @info_size: number of SPI devices to be probed
31  * @info: SPI devices to be probed
32  */
33 struct keba_spi_auxdev {
34 	struct auxiliary_device auxdev;
35 	struct resource io;
36 	int info_size;
37 	struct spi_board_info *info;
38 };
39 
40 /**
41  * struct keba_fan_auxdev - KEBA fan auxiliary device
42  * @auxdev: auxiliary device object
43  * @io: address range of fan controller IO memory
44  */
45 struct keba_fan_auxdev {
46 	struct auxiliary_device auxdev;
47 	struct resource io;
48 };
49 
50 /**
51  * struct keba_batt_auxdev - KEBA battery auxiliary device
52  * @auxdev: auxiliary device object
53  * @io: address range of battery controller IO memory
54  */
55 struct keba_batt_auxdev {
56 	struct auxiliary_device auxdev;
57 	struct resource io;
58 };
59 
60 /**
61  * struct keba_uart_auxdev - KEBA UART auxiliary device
62  * @auxdev: auxiliary device object
63  * @io: address range of UART controller IO memory
64  * @irq: number of UART controller interrupt
65  */
66 struct keba_uart_auxdev {
67 	struct auxiliary_device auxdev;
68 	struct resource io;
69 	unsigned int irq;
70 };
71 
72 #endif /* _LINUX_MISC_KEBA_H */
73