Switch from a char* to an enum to identify the address source of SIs,
making it easier to handle them appropriately during registration.
Signed-off-by: Matthew Garrett <mjg@redhat.com>
Signed-off-by: Corey Minyard <cminyard@mvista.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
};
static char *si_to_str[] = { "kcs", "smic", "bt" };
};
static char *si_to_str[] = { "kcs", "smic", "bt" };
+enum ipmi_addr_src {
+ SI_INVALID = 0, SI_HOTMOD, SI_HARDCODED, SI_SPMI, SI_ACPI, SI_SMBIOS,
+ SI_PCI, SI_DEVICETREE, SI_DEFAULT
+};
+static char *ipmi_addr_src_to_str[] = { NULL, "hotmod", "hardcoded", "SPMI",
+ "ACPI", "SMBIOS", "PCI",
+ "device-tree", "default" };
+
#define DEVICE_NAME "ipmi_si"
static struct platform_driver ipmi_driver = {
#define DEVICE_NAME "ipmi_si"
static struct platform_driver ipmi_driver = {
int (*irq_setup)(struct smi_info *info);
void (*irq_cleanup)(struct smi_info *info);
unsigned int io_size;
int (*irq_setup)(struct smi_info *info);
void (*irq_cleanup)(struct smi_info *info);
unsigned int io_size;
- char *addr_source; /* ACPI, PCI, SMBIOS, hardcode, default. */
+ enum ipmi_addr_src addr_source; /* ACPI, PCI, SMBIOS, hardcode, etc. */
void (*addr_source_cleanup)(struct smi_info *info);
void *addr_source_data;
void (*addr_source_cleanup)(struct smi_info *info);
void *addr_source_data;
- info->addr_source = "hotmod";
+ info->addr_source = SI_HOTMOD;
info->si_type = si_type;
info->io.addr_data = addr;
info->io.addr_type = addr_space;
info->si_type = si_type;
info->io.addr_data = addr;
info->io.addr_type = addr_space;
- info->addr_source = "hardcoded";
+ info->addr_source = SI_HARDCODED;
if (!si_type[i] || strcmp(si_type[i], "kcs") == 0) {
info->si_type = SI_KCS;
if (!si_type[i] || strcmp(si_type[i], "kcs") == 0) {
info->si_type = SI_KCS;
- info->addr_source = "SPMI";
+ info->addr_source = SI_SPMI;
/* Figure out the interface type. */
switch (spmi->InterfaceType) {
/* Figure out the interface type. */
switch (spmi->InterfaceType) {
if (!info)
return -ENOMEM;
if (!info)
return -ENOMEM;
- info->addr_source = "ACPI";
+ info->addr_source = SI_ACPI;
handle = acpi_dev->handle;
handle = acpi_dev->handle;
- info->addr_source = "SMBIOS";
+ info->addr_source = SI_SMBIOS;
switch (ipmi_data->type) {
case 0x01: /* KCS */
switch (ipmi_data->type) {
case 0x01: /* KCS */
if (!info)
return -ENOMEM;
if (!info)
return -ENOMEM;
- info->addr_source = "PCI";
+ info->addr_source = SI_PCI;
switch (class_type) {
case PCI_ERMC_CLASSCODE_TYPE_SMIC:
switch (class_type) {
case PCI_ERMC_CLASSCODE_TYPE_SMIC:
}
info->si_type = (enum si_type) match->data;
}
info->si_type = (enum si_type) match->data;
- info->addr_source = "device-tree";
+ info->addr_source = SI_DEVICETREE;
info->irq_setup = std_irq_setup;
if (resource.flags & IORESOURCE_IO) {
info->irq_setup = std_irq_setup;
if (resource.flags & IORESOURCE_IO) {
- info->addr_source = NULL;
+ info->addr_source = SI_DEFAULT;
info->si_type = ipmi_defaults[i].type;
info->io_setup = port_setup;
info->si_type = ipmi_defaults[i].type;
info->io_setup = port_setup;
- if (new_smi->addr_source) {
- printk(KERN_INFO "ipmi_si: Trying %s-specified %s state"
- " machine at %s address 0x%lx, slave address 0x%x,"
- " irq %d\n",
- new_smi->addr_source,
- si_to_str[new_smi->si_type],
- addr_space_to_str[new_smi->io.addr_type],
- new_smi->io.addr_data,
- new_smi->slave_addr, new_smi->irq);
- }
+ printk(KERN_INFO "ipmi_si: Trying %s-specified %s state"
+ " machine at %s address 0x%lx, slave address 0x%x,"
+ " irq %d\n",
+ ipmi_addr_src_to_str[new_smi->addr_source],
+ si_to_str[new_smi->si_type],
+ addr_space_to_str[new_smi->io.addr_type],
+ new_smi->io.addr_data,
+ new_smi->slave_addr, new_smi->irq);
mutex_lock(&smi_infos_lock);
if (!is_new_interface(new_smi)) {
mutex_lock(&smi_infos_lock);
if (!is_new_interface(new_smi)) {