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

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
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
#include <linux/dmi.h> #include <linux/dmi.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/property.h> #include <linux/property.h>
#include "ipmi_si_sm.h"
#include "ipmi_dmi.h" #include "ipmi_dmi.h"
#include "ipmi_plat_data.h" #include "ipmi_plat_data.h"
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
/* /*
* DMI defines for use by IPMI * DMI defines for use by IPMI
*/ */
#include "ipmi_si.h"
#ifdef CONFIG_IPMI_DMI_DECODE #ifdef CONFIG_IPMI_DMI_DECODE
int ipmi_dmi_get_slave_addr(enum si_type si_type, unsigned int space, int ipmi_dmi_get_slave_addr(enum si_type si_type, unsigned int space,
......
...@@ -6,14 +6,65 @@ ...@@ -6,14 +6,65 @@
* etc) to the base ipmi system interface code. * 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/interrupt.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include "ipmi_si_sm.h"
#define SI_DEVICE_NAME "ipmi_si"
#define DEFAULT_REGSPACING 1 #define DEFAULT_REGSPACING 1
#define DEFAULT_REGSIZE 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); int ipmi_si_add_smi(struct si_sm_io *io);
irqreturn_t ipmi_si_irq_handler(int irq, void *data); irqreturn_t ipmi_si_irq_handler(int irq, void *data);
...@@ -50,3 +101,5 @@ static inline void ipmi_si_parisc_shutdown(void) { } ...@@ -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_port_setup(struct si_sm_io *io);
int ipmi_si_mem_setup(struct si_sm_io *io); int ipmi_si_mem_setup(struct si_sm_io *io);
#endif /* __IPMI_SI_H__ */
...@@ -40,6 +40,7 @@ ...@@ -40,6 +40,7 @@
#include <linux/ipmi.h> #include <linux/ipmi.h>
#include <linux/ipmi_smi.h> #include <linux/ipmi_smi.h>
#include "ipmi_si.h" #include "ipmi_si.h"
#include "ipmi_si_sm.h"
#include <linux/string.h> #include <linux/string.h>
#include <linux/ctype.h> #include <linux/ctype.h>
...@@ -1266,12 +1267,12 @@ int ipmi_std_irq_setup(struct si_sm_io *io) ...@@ -1266,12 +1267,12 @@ int ipmi_std_irq_setup(struct si_sm_io *io)
rv = request_irq(io->irq, rv = request_irq(io->irq,
ipmi_si_irq_handler, ipmi_si_irq_handler,
IRQF_SHARED, IRQF_SHARED,
DEVICE_NAME, SI_DEVICE_NAME,
io->irq_handler_data); io->irq_handler_data);
if (rv) { if (rv) {
dev_warn(io->dev, "%s unable to claim interrupt %d," dev_warn(io->dev, "%s unable to claim interrupt %d,"
" running polled\n", " running polled\n",
DEVICE_NAME, io->irq); SI_DEVICE_NAME, io->irq);
io->irq = 0; io->irq = 0;
} else { } else {
io->irq_cleanup = std_irq_cleanup; io->irq_cleanup = std_irq_cleanup;
......
...@@ -118,7 +118,7 @@ int ipmi_si_mem_setup(struct si_sm_io *io) ...@@ -118,7 +118,7 @@ int ipmi_si_mem_setup(struct si_sm_io *io)
*/ */
for (idx = 0; idx < io->io_size; idx++) { for (idx = 0; idx < io->io_size; idx++) {
if (request_mem_region(addr + idx * io->regspacing, if (request_mem_region(addr + idx * io->regspacing,
io->regsize, DEVICE_NAME) == NULL) { io->regsize, SI_DEVICE_NAME) == NULL) {
/* Undo allocations */ /* Undo allocations */
mem_region_cleanup(io, idx); mem_region_cleanup(io, idx);
return -EIO; return -EIO;
......
...@@ -150,7 +150,7 @@ static const struct pci_device_id ipmi_pci_devices[] = { ...@@ -150,7 +150,7 @@ static const struct pci_device_id ipmi_pci_devices[] = {
MODULE_DEVICE_TABLE(pci, ipmi_pci_devices); MODULE_DEVICE_TABLE(pci, ipmi_pci_devices);
static struct pci_driver ipmi_pci_driver = { static struct pci_driver ipmi_pci_driver = {
.name = DEVICE_NAME, .name = SI_DEVICE_NAME,
.id_table = ipmi_pci_devices, .id_table = ipmi_pci_devices,
.probe = ipmi_pci_probe, .probe = ipmi_pci_probe,
.remove = ipmi_pci_remove, .remove = ipmi_pci_remove,
......
...@@ -457,7 +457,7 @@ static const struct platform_device_id si_plat_ids[] = { ...@@ -457,7 +457,7 @@ static const struct platform_device_id si_plat_ids[] = {
struct platform_driver ipmi_platform_driver = { struct platform_driver ipmi_platform_driver = {
.driver = { .driver = {
.name = DEVICE_NAME, .name = SI_DEVICE_NAME,
.of_match_table = of_ipmi_match, .of_match_table = of_ipmi_match,
.acpi_match_table = ACPI_PTR(acpi_ipmi_match), .acpi_match_table = ACPI_PTR(acpi_ipmi_match),
}, },
......
...@@ -99,7 +99,7 @@ int ipmi_si_port_setup(struct si_sm_io *io) ...@@ -99,7 +99,7 @@ int ipmi_si_port_setup(struct si_sm_io *io)
*/ */
for (idx = 0; idx < io->io_size; idx++) { for (idx = 0; idx < io->io_size; idx++) {
if (request_region(addr + idx * io->regspacing, if (request_region(addr + idx * io->regspacing,
io->regsize, DEVICE_NAME) == NULL) { io->regsize, SI_DEVICE_NAME) == NULL) {
/* Undo allocations */ /* Undo allocations */
while (idx--) while (idx--)
release_region(addr + idx * io->regspacing, release_region(addr + idx * io->regspacing,
......
...@@ -14,7 +14,10 @@ ...@@ -14,7 +14,10 @@
* Copyright 2002 MontaVista Software Inc. * Copyright 2002 MontaVista Software Inc.
*/ */
#include <linux/ipmi.h> #ifndef __IPMI_SI_SM_H__
#define __IPMI_SI_SM_H__
#include "ipmi_si.h"
/* /*
* This is defined by the state machines themselves, it is an opaque * This is defined by the state machines themselves, it is an opaque
...@@ -22,54 +25,6 @@ ...@@ -22,54 +25,6 @@
*/ */
struct si_sm_data; struct si_sm_data;
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;
};
/* Results of SMI events. */ /* Results of SMI events. */
enum si_sm_result { enum si_sm_result {
SI_SM_CALL_WITHOUT_DELAY, /* Call the driver again immediately */ SI_SM_CALL_WITHOUT_DELAY, /* Call the driver again immediately */
...@@ -146,3 +101,4 @@ extern const struct si_sm_handlers kcs_smi_handlers; ...@@ -146,3 +101,4 @@ extern const struct si_sm_handlers kcs_smi_handlers;
extern const struct si_sm_handlers smic_smi_handlers; extern const struct si_sm_handlers smic_smi_handlers;
extern const struct si_sm_handlers bt_smi_handlers; extern const struct si_sm_handlers bt_smi_handlers;
#endif /* __IPMI_SI_SM_H__ */
...@@ -52,7 +52,6 @@ ...@@ -52,7 +52,6 @@
#include <linux/acpi.h> #include <linux/acpi.h>
#include <linux/ctype.h> #include <linux/ctype.h>
#include <linux/time64.h> #include <linux/time64.h>
#include "ipmi_si_sm.h"
#include "ipmi_dmi.h" #include "ipmi_dmi.h"
#define DEVICE_NAME "ipmi_ssif" #define DEVICE_NAME "ipmi_ssif"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment