xref: /linux-6.15/include/linux/mfd/cgbc.h (revision 6f1067cf)
1*6f1067cfSThomas Richard /* SPDX-License-Identifier: GPL-2.0-or-later */
2*6f1067cfSThomas Richard /*
3*6f1067cfSThomas Richard  * Congatec Board Controller driver definitions
4*6f1067cfSThomas Richard  *
5*6f1067cfSThomas Richard  * Copyright (C) 2024 Bootlin
6*6f1067cfSThomas Richard  * Author: Thomas Richard <[email protected]>
7*6f1067cfSThomas Richard  */
8*6f1067cfSThomas Richard 
9*6f1067cfSThomas Richard #ifndef _LINUX_MFD_CGBC_H_
10*6f1067cfSThomas Richard 
11*6f1067cfSThomas Richard /**
12*6f1067cfSThomas Richard  * struct cgbc_version - Board Controller device version structure
13*6f1067cfSThomas Richard  * @feature:	Board Controller feature number
14*6f1067cfSThomas Richard  * @major:	Board Controller major revision
15*6f1067cfSThomas Richard  * @minor:	Board Controller minor revision
16*6f1067cfSThomas Richard  */
17*6f1067cfSThomas Richard struct cgbc_version {
18*6f1067cfSThomas Richard 	unsigned char feature;
19*6f1067cfSThomas Richard 	unsigned char major;
20*6f1067cfSThomas Richard 	unsigned char minor;
21*6f1067cfSThomas Richard };
22*6f1067cfSThomas Richard 
23*6f1067cfSThomas Richard /**
24*6f1067cfSThomas Richard  * struct cgbc_device_data - Internal representation of the Board Controller device
25*6f1067cfSThomas Richard  * @io_session:		Pointer to the session IO memory
26*6f1067cfSThomas Richard  * @io_cmd:		Pointer to the command IO memory
27*6f1067cfSThomas Richard  * @session:		Session id returned by the Board Controller
28*6f1067cfSThomas Richard  * @dev:		Pointer to kernel device structure
29*6f1067cfSThomas Richard  * @cgbc_version:	Board Controller version structure
30*6f1067cfSThomas Richard  * @mutex:		Board Controller mutex
31*6f1067cfSThomas Richard  */
32*6f1067cfSThomas Richard struct cgbc_device_data {
33*6f1067cfSThomas Richard 	void __iomem		*io_session;
34*6f1067cfSThomas Richard 	void __iomem		*io_cmd;
35*6f1067cfSThomas Richard 	u8			session;
36*6f1067cfSThomas Richard 	struct device		*dev;
37*6f1067cfSThomas Richard 	struct cgbc_version	version;
38*6f1067cfSThomas Richard 	struct mutex		lock;
39*6f1067cfSThomas Richard };
40*6f1067cfSThomas Richard 
41*6f1067cfSThomas Richard int cgbc_command(struct cgbc_device_data *cgbc, void *cmd, unsigned int cmd_size,
42*6f1067cfSThomas Richard 		 void *data, unsigned int data_size, u8 *status);
43*6f1067cfSThomas Richard 
44*6f1067cfSThomas Richard #endif /*_LINUX_MFD_CGBC_H_*/
45