Commit 104fb25f authored by Corey Minyard's avatar Corey Minyard
Browse files

ipmi_si: Rework some include files



ipmi_si_sm.h was getting included in lots of places it didn't
belong.  Rework things a bit to remove all the dependencies,
mostly just moving things between include files that were in
the wrong place and removing bogus includes.

Signed-off-by: default avatarCorey Minyard <cminyard@mvista.com>
parent cbb19cb1
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -12,7 +12,6 @@
#include <linux/dmi.h>
#include <linux/platform_device.h>
#include <linux/property.h>
#include "ipmi_si_sm.h"
#include "ipmi_dmi.h"
#include "ipmi_plat_data.h"

+1 −0
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@
/*
 * DMI defines for use by IPMI
 */
#include "ipmi_si.h"

#ifdef CONFIG_IPMI_DMI_DECODE
int ipmi_dmi_get_slave_addr(enum si_type si_type, unsigned int space,
+55 −2
Original line number Diff line number Diff line
@@ -6,14 +6,65 @@
 * etc) to the base ipmi system interface code.
 */

#ifndef __IPMI_SI_H__
#define __IPMI_SI_H__

#include <linux/ipmi.h>
#include <linux/interrupt.h>
#include <linux/platform_device.h>
#include "ipmi_si_sm.h"

#define SI_DEVICE_NAME "ipmi_si"

#define DEFAULT_REGSPACING	1
#define DEFAULT_REGSIZE		1

#define DEVICE_NAME "ipmi_si"
enum si_type {
	SI_TYPE_INVALID, SI_KCS, SI_SMIC, SI_BT
};

enum ipmi_addr_space {
	IPMI_IO_ADDR_SPACE, IPMI_MEM_ADDR_SPACE
};

/*
 * The structure for doing I/O in the state machine.  The state
 * machine doesn't have the actual I/O routines, they are done through
 * this interface.
 */
struct si_sm_io {
	unsigned char (*inputb)(const struct si_sm_io *io, unsigned int offset);
	void (*outputb)(const struct si_sm_io *io,
			unsigned int  offset,
			unsigned char b);

	/*
	 * Generic info used by the actual handling routines, the
	 * state machine shouldn't touch these.
	 */
	void __iomem *addr;
	unsigned int regspacing;
	unsigned int regsize;
	unsigned int regshift;
	enum ipmi_addr_space addr_space;
	unsigned long addr_data;
	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);
	unsigned int io_size;

	int irq;
	int (*irq_setup)(struct si_sm_io *io);
	void *irq_handler_data;
	void (*irq_cleanup)(struct si_sm_io *io);

	u8 slave_addr;
	enum si_type si_type;
	struct device *dev;
};

int ipmi_si_add_smi(struct si_sm_io *io);
irqreturn_t ipmi_si_irq_handler(int irq, void *data);
@@ -50,3 +101,5 @@ static inline void ipmi_si_parisc_shutdown(void) { }

int ipmi_si_port_setup(struct si_sm_io *io);
int ipmi_si_mem_setup(struct si_sm_io *io);

#endif /* __IPMI_SI_H__ */
+3 −2
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@
#include <linux/ipmi.h>
#include <linux/ipmi_smi.h>
#include "ipmi_si.h"
#include "ipmi_si_sm.h"
#include <linux/string.h>
#include <linux/ctype.h>

@@ -1266,12 +1267,12 @@ int ipmi_std_irq_setup(struct si_sm_io *io)
	rv = request_irq(io->irq,
			 ipmi_si_irq_handler,
			 IRQF_SHARED,
			 DEVICE_NAME,
			 SI_DEVICE_NAME,
			 io->irq_handler_data);
	if (rv) {
		dev_warn(io->dev, "%s unable to claim interrupt %d,"
			 " running polled\n",
			 DEVICE_NAME, io->irq);
			 SI_DEVICE_NAME, io->irq);
		io->irq = 0;
	} else {
		io->irq_cleanup = std_irq_cleanup;
+1 −1
Original line number Diff line number Diff line
@@ -118,7 +118,7 @@ int ipmi_si_mem_setup(struct si_sm_io *io)
	 */
	for (idx = 0; idx < io->io_size; idx++) {
		if (request_mem_region(addr + idx * io->regspacing,
				       io->regsize, DEVICE_NAME) == NULL) {
				       io->regsize, SI_DEVICE_NAME) == NULL) {
			/* Undo allocations */
			mem_region_cleanup(io, idx);
			return -EIO;
Loading