Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bb398a4c authored by Corey Minyard's avatar Corey Minyard
Browse files

ipmi_si: Change ipmi_si_add_smi() to take just I/O info



Instead of allocating the smi_info structure, filling in the I/O
info, and passing it to ipmi_si_add_smi(), just pass the I/O
info in the io structure and let ipmi_si_add_smi() allocate
the smi_info structure.

This required redoing the way the remove functions for some
device interfaces worked, a new function named
ipmi_si_remove_by_dev() allows the device to be passed in and
detected instead of using driver data, which couldn't be
filled out easily othersize.

After this the platform handling should be decoupled from the
smi_info structure and that handling can be pulled out to its
own files.

Signed-off-by: default avatarCorey Minyard <cminyard@mvista.com>
parent e1eeb7f8
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -14,10 +14,9 @@
#define DEFAULT_REGSPACING	1
#define DEFAULT_REGSIZE		1

struct smi_info;

int ipmi_si_add_smi(struct smi_info *info);
int ipmi_si_add_smi(struct si_sm_io *io);
irqreturn_t ipmi_si_irq_handler(int irq, void *data);
void ipmi_irq_start_cleanup(struct si_sm_io *io);
int ipmi_std_irq_setup(struct si_sm_io *io);
void ipmi_irq_finish_setup(struct si_sm_io *io);
int ipmi_si_remove_by_dev(struct device *dev);
+226 −306

File changed.

Preview size limit exceeded, changes collapsed.

+1 −0
Original line number Diff line number Diff line
@@ -70,6 +70,7 @@ struct si_sm_io {
	enum ipmi_addr_src addr_source; /* ACPI, PCI, SMBIOS, hardcode, etc. */
	void (*addr_source_cleanup)(struct si_sm_io *io);
	void *addr_source_data;
	union ipmi_smi_info_union addr_info;

	int (*io_setup)(struct si_sm_io *info);
	void (*io_cleanup)(struct si_sm_io *info);