13cd83bacSCorey Minyard /* SPDX-License-Identifier: GPL-2.0+ */
23cd83bacSCorey Minyard 
33cd83bacSCorey Minyard /*
43cd83bacSCorey Minyard  * Generic code to add IPMI platform devices.
53cd83bacSCorey Minyard  */
63cd83bacSCorey Minyard 
73cd83bacSCorey Minyard #include <linux/ipmi.h>
83cd83bacSCorey Minyard 
9d7323638SCorey Minyard enum ipmi_plat_interface_type { IPMI_PLAT_IF_SI, IPMI_PLAT_IF_SSIF };
10d7323638SCorey Minyard 
113cd83bacSCorey Minyard struct ipmi_plat_data {
12d7323638SCorey Minyard 	enum ipmi_plat_interface_type iftype;
133cd83bacSCorey Minyard 	unsigned int type; /* si_type for si, SI_INVALID for others */
143cd83bacSCorey Minyard 	unsigned int space; /* addr_space for si, intf# for ssif. */
153cd83bacSCorey Minyard 	unsigned long addr;
163cd83bacSCorey Minyard 	unsigned int regspacing;
173cd83bacSCorey Minyard 	unsigned int regsize;
183cd83bacSCorey Minyard 	unsigned int regshift;
193cd83bacSCorey Minyard 	unsigned int irq;
203cd83bacSCorey Minyard 	unsigned int slave_addr;
213cd83bacSCorey Minyard 	enum ipmi_addr_src addr_source;
223cd83bacSCorey Minyard };
233cd83bacSCorey Minyard 
243cd83bacSCorey Minyard struct platform_device *ipmi_platform_add(const char *name, unsigned int inst,
253cd83bacSCorey Minyard 					  struct ipmi_plat_data *p);
26