--- - 2018-12-24 08:27:48.000000000 +0100
+++ sys/dev/ipmi.c 2018-12-23 09:50:53.000000000 +0100
@@ -1,4 +1,4 @@
-/* $NetBSD: ipmi.c,v 1.70 2018/12/17 16:26:03 christos Exp $ */
+/* $NetBSD$ */
/*
* Copyright (c) 2006 Manuel Bouyer.
@@ -67,8 +67,6 @@ __KERNEL_RCSID(0, "$NetBSD: ipmi.c,v 1.7
#include <sys/bus.h>
#include <sys/intr.h>
-#include <x86/smbiosvar.h>
-
#include <dev/isa/isareg.h>
#include <dev/isa/isavar.h>
@@ -90,33 +88,14 @@ struct ipmi_sensor {
int32_t i_prevval; /* feed rnd source on change */
};
-int ipmi_nintr;
-int ipmi_dbg = 0;
-int ipmi_enabled = 0;
+#if 0
+static int ipmi_nintr;
+#endif
+static int ipmi_dbg = 0;
+static int ipmi_enabled = 0;
#define SENSOR_REFRESH_RATE (hz / 2)
-#define SMBIOS_TYPE_IPMI 0x26
-
-/*
- * Format of SMBIOS IPMI Flags
- *
- * bit0: interrupt trigger mode (1=level, 0=edge)
- * bit1: interrupt polarity (1=active high, 0=active low)
- * bit2: reserved
- * bit3: address LSB (1=odd,0=even)
- * bit4: interrupt (1=specified, 0=not specified)
- * bit5: reserved
- * bit6/7: register spacing (1,4,2,err)
- */
-#define SMIPMI_FLAG_IRQLVL (1L << 0)
-#define SMIPMI_FLAG_IRQEN (1L << 3)
-#define SMIPMI_FLAG_ODDOFFSET (1L << 4)
-#define SMIPMI_FLAG_IFSPACING(x) (((x)>>6)&0x3)
-#define IPMI_IOSPACING_BYTE 0
-#define IPMI_IOSPACING_WORD 2
-#define IPMI_IOSPACING_DWORD 1
-
#define IPMI_BTMSG_LEN 0
#define IPMI_BTMSG_NFLN 1
#define IPMI_BTMSG_SEQ 2
@@ -164,74 +143,89 @@ int ipmi_enabled = 0;
if (len && ipmi_dbg >= lvl) \
dumpb(msg, len, (const uint8_t *)(buf));
-long signextend(unsigned long, int);
+static long signextend(unsigned long, int);
SLIST_HEAD(ipmi_sensors_head, ipmi_sensor);
-struct ipmi_sensors_head ipmi_sensor_list =
+static struct ipmi_sensors_head ipmi_sensor_list =
SLIST_HEAD_INITIALIZER(&ipmi_sensor_list);
-void dumpb(const char *, int, const uint8_t *);
+static void dumpb(const char *, int, const uint8_t *);
-int read_sensor(struct ipmi_softc *, struct ipmi_sensor *);
-int add_sdr_sensor(struct ipmi_softc *, uint8_t *);
-int get_sdr_partial(struct ipmi_softc *, uint16_t, uint16_t,
+static int read_sensor(struct ipmi_softc *, struct ipmi_sensor *);
+static int add_sdr_sensor(struct ipmi_softc *, uint8_t *);
+static int get_sdr_partial(struct ipmi_softc *, uint16_t, uint16_t,
uint8_t, uint8_t, void *, uint16_t *);
-int get_sdr(struct ipmi_softc *, uint16_t, uint16_t *);
+static int get_sdr(struct ipmi_softc *, uint16_t, uint16_t *);
-char *ipmi_buf_acquire(struct ipmi_softc *, size_t);
-void ipmi_buf_release(struct ipmi_softc *, char *);
-int ipmi_sendcmd(struct ipmi_softc *, int, int, int, int, int, const void*);
-int ipmi_recvcmd(struct ipmi_softc *, int, int *, void *);
-void ipmi_delay(struct ipmi_softc *, int);
-
-int ipmi_watchdog_setmode(struct sysmon_wdog *);
-int ipmi_watchdog_tickle(struct sysmon_wdog *);
-void ipmi_dotickle(struct ipmi_softc *);
-
-int ipmi_intr(void *);
-int ipmi_match(device_t, cfdata_t, void *);
-void ipmi_attach(device_t, device_t, void *);
-static int ipmi_detach(device_t, int);
+static char *ipmi_buf_acquire(struct ipmi_softc *, size_t);
+static void ipmi_buf_release(struct ipmi_softc *, char *);
+static int ipmi_sendcmd(struct ipmi_softc *, int, int, int, int, int, const void*);
+static int ipmi_recvcmd(struct ipmi_softc *, int, int *, void *);
+static void ipmi_delay(struct ipmi_softc *, int);
+
+static int ipmi_watchdog_setmode(struct sysmon_wdog *);
+static int ipmi_watchdog_tickle(struct sysmon_wdog *);
+static void ipmi_dotickle(struct ipmi_softc *);
-long ipmi_convert(uint8_t, struct sdrtype1 *, long);
-void ipmi_sensor_name(char *, int, uint8_t, uint8_t *);
+#if 0
+static int ipmi_intr(void *);
+#endif
-/* BMC Helper Functions */
-uint8_t bmc_read(struct ipmi_softc *, int);
-void bmc_write(struct ipmi_softc *, int, uint8_t);
-int bmc_io_wait(struct ipmi_softc *, int, uint8_t, uint8_t, const char *);
-int bmc_io_wait_spin(struct ipmi_softc *, int, uint8_t, uint8_t);
-int bmc_io_wait_sleep(struct ipmi_softc *, int, uint8_t, uint8_t);
-
-void *bt_buildmsg(struct ipmi_softc *, int, int, int, const void *, int *);
-void *cmn_buildmsg(struct ipmi_softc *, int, int, int, const void *, int *);
-
-int getbits(uint8_t *, int, int);
-int ipmi_sensor_type(int, int, int);
-
-void ipmi_smbios_probe(struct smbios_ipmi *, struct ipmi_attach_args *);
-void ipmi_refresh_sensors(struct ipmi_softc *);
-int ipmi_map_regs(struct ipmi_softc *, struct ipmi_attach_args *);
-void ipmi_unmap_regs(struct ipmi_softc *);
-
-void *scan_sig(long, long, int, int, const void *);
-
-int32_t ipmi_convert_sensor(uint8_t *, struct ipmi_sensor *);
-void ipmi_set_limits(struct sysmon_envsys *, envsys_data_t *,
- sysmon_envsys_lim_t *, uint32_t *);
-void ipmi_get_limits(struct sysmon_envsys *, envsys_data_t *,
- sysmon_envsys_lim_t *, uint32_t *);
-void ipmi_get_sensor_limits(struct ipmi_softc *, struct ipmi_sensor *,
- sysmon_envsys_lim_t *, uint32_t *);
-int ipmi_sensor_status(struct ipmi_softc *, struct ipmi_sensor *,
- envsys_data_t *, uint8_t *);
+static int ipmi_match(device_t, cfdata_t, void *);
+static void ipmi_attach(device_t, device_t, void *);
+static int ipmi_detach(device_t, int);
-int add_child_sensors(struct ipmi_softc *, uint8_t *, int, int, int,
- int, int, int, const char *);
+static long ipmi_convert(uint8_t, struct sdrtype1 *, long);
+static void ipmi_sensor_name(char *, int, uint8_t, uint8_t *);
-bool ipmi_suspend(device_t, const pmf_qual_t *);
+/* BMC Helper Functions */
+static uint8_t bmc_read(struct ipmi_softc *, int);
+static void bmc_write(struct ipmi_softc *, int, uint8_t);
+static int bmc_io_wait(struct ipmi_softc *, int, uint8_t, uint8_t, const char *);
+static int bmc_io_wait_spin(struct ipmi_softc *, int, uint8_t, uint8_t);
+static int bmc_io_wait_sleep(struct ipmi_softc *, int, uint8_t, uint8_t);
+
+static void *bt_buildmsg(struct ipmi_softc *, int, int, int, const void *, int *);
+static void *cmn_buildmsg(struct ipmi_softc *, int, int, int, const void *, int *);
+
+static int getbits(uint8_t *, int, int);
+static int ipmi_sensor_type(int, int, int);
+
+static void ipmi_refresh_sensors(struct ipmi_softc *);
+static int ipmi_map_regs(struct ipmi_softc *, struct ipmi_attach_args *);
+static void ipmi_unmap_regs(struct ipmi_softc *);
+
+static int32_t ipmi_convert_sensor(uint8_t *, struct ipmi_sensor *);
+static void ipmi_set_limits(struct sysmon_envsys *, envsys_data_t *,
+ sysmon_envsys_lim_t *, uint32_t *);
+static void ipmi_get_limits(struct sysmon_envsys *, envsys_data_t *,
+ sysmon_envsys_lim_t *, uint32_t *);
+static void ipmi_get_sensor_limits(struct ipmi_softc *, struct ipmi_sensor *,
+ sysmon_envsys_lim_t *, uint32_t *);
+static int ipmi_sensor_status(struct ipmi_softc *, struct ipmi_sensor *,
+ envsys_data_t *, uint8_t *);
+
+static int add_child_sensors(struct ipmi_softc *, uint8_t *, int, int, int,
+ int, int, int, const char *);
+
+static bool ipmi_suspend(device_t, const pmf_qual_t *);
+
+static int kcs_probe(struct ipmi_softc *);
+static int kcs_reset(struct ipmi_softc *);
+static int kcs_sendmsg(struct ipmi_softc *, int, const uint8_t *);
+static int kcs_recvmsg(struct ipmi_softc *, int, int *len, uint8_t *);
+
+static int bt_probe(struct ipmi_softc *);
+static int bt_reset(struct ipmi_softc *);
+static int bt_sendmsg(struct ipmi_softc *, int, const uint8_t *);
+static int bt_recvmsg(struct ipmi_softc *, int, int *, uint8_t *);
+
+static int smic_probe(struct ipmi_softc *);
+static int smic_reset(struct ipmi_softc *);
+static int smic_sendmsg(struct ipmi_softc *, int, const uint8_t *);
+static int smic_recvmsg(struct ipmi_softc *, int, int *, uint8_t *);
-struct ipmi_if kcs_if = {
+static struct ipmi_if kcs_if = {
"KCS",
IPMI_IF_KCS_NREGS,
cmn_buildmsg,
@@ -241,7 +235,7 @@ struct ipmi_if kcs_if = {
kcs_probe,
};
-struct ipmi_if smic_if = {
+static struct ipmi_if smic_if = {
"SMIC",
IPMI_IF_SMIC_NREGS,
cmn_buildmsg,
@@ -251,7 +245,7 @@ struct ipmi_if smic_if = {
smic_probe,
};
-struct ipmi_if bt_if = {
+static struct ipmi_if bt_if = {
"BT",
IPMI_IF_BT_NREGS,
bt_buildmsg,
@@ -261,9 +255,9 @@ struct ipmi_if bt_if = {
bt_probe,
};
-struct ipmi_if *ipmi_get_if(int);
+static struct ipmi_if *ipmi_get_if(int);
-struct ipmi_if *
+static struct ipmi_if *
ipmi_get_if(int iftype)
{
switch (iftype) {
@@ -281,21 +275,21 @@ ipmi_get_if(int iftype)
/*
* BMC Helper Functions
*/
-uint8_t
+static uint8_t
bmc_read(struct ipmi_softc *sc, int offset)
{
return bus_space_read_1(sc->sc_iot, sc->sc_ioh,
offset * sc->sc_if_iospacing);
}
-void
+static void
bmc_write(struct ipmi_softc *sc, int offset, uint8_t val)
{
bus_space_write_1(sc->sc_iot, sc->sc_ioh,
offset * sc->sc_if_iospacing, val);
}
-int
+static int
bmc_io_wait_sleep(struct ipmi_softc *sc, int offset, uint8_t mask,
uint8_t value)
{
@@ -315,7 +309,7 @@ bmc_io_wait_sleep(struct ipmi_softc *sc,
return -1;
}
-int
+static int
bmc_io_wait(struct ipmi_softc *sc, int offset, uint8_t mask, uint8_t value,
const char *lbl)
{
@@ -328,7 +322,7 @@ bmc_io_wait(struct ipmi_softc *sc, int o
return bmc_io_wait_sleep(sc, offset, mask, value);
}
-int
+static int
bmc_io_wait_spin(struct ipmi_softc *sc, int offset, uint8_t mask,
uint8_t value)
{
@@ -373,16 +367,16 @@ bmc_io_wait_spin(struct ipmi_softc *sc,
#define BT_IM_SMI_EN (1L << 3)
#define BT_IM_NMI2SMI (1L << 4)
-int bt_read(struct ipmi_softc *, int);
-int bt_write(struct ipmi_softc *, int, uint8_t);
+static int bt_read(struct ipmi_softc *, int);
+static int bt_write(struct ipmi_softc *, int, uint8_t);
-int
+static int
bt_read(struct ipmi_softc *sc, int reg)
{
return bmc_read(sc, reg);
}
-int
+static int
bt_write(struct ipmi_softc *sc, int reg, uint8_t data)
{
if (bmc_io_wait(sc, _BT_CTRL_REG, BT_BMC_BUSY, 0, __func__) < 0)
@@ -392,7 +386,7 @@ bt_write(struct ipmi_softc *sc, int reg,
return 0;
}
-int
+static int
bt_sendmsg(struct ipmi_softc *sc, int len, const uint8_t *data)
{
int i;
@@ -409,7 +403,7 @@ bt_sendmsg(struct ipmi_softc *sc, int le
return 0;
}
-int
+static int
bt_recvmsg(struct ipmi_softc *sc, int maxlen, int *rxlen, uint8_t *data)
{
uint8_t len, v, i;
@@ -433,13 +427,13 @@ bt_recvmsg(struct ipmi_softc *sc, int ma
return 0;
}
-int
+static int
bt_reset(struct ipmi_softc *sc)
{
return -1;
}
-int
+static int
bt_probe(struct ipmi_softc *sc)
{
uint8_t rv;
@@ -499,11 +493,11 @@ bt_probe(struct ipmi_softc *sc)
#define SMIC_TX_DATA_RDY (1L << 6)
#define SMIC_RX_DATA_RDY (1L << 7)
-int smic_wait(struct ipmi_softc *, uint8_t, uint8_t, const char *);
-int smic_write_cmd_data(struct ipmi_softc *, uint8_t, const uint8_t *);
-int smic_read_data(struct ipmi_softc *, uint8_t *);
+static int smic_wait(struct ipmi_softc *, uint8_t, uint8_t, const char *);
+static int smic_write_cmd_data(struct ipmi_softc *, uint8_t, const uint8_t *);
+static int smic_read_data(struct ipmi_softc *, uint8_t *);
-int
+static int
smic_wait(struct ipmi_softc *sc, uint8_t mask, uint8_t val, const char *lbl)
{
int v;
@@ -519,7 +513,7 @@ smic_wait(struct ipmi_softc *sc, uint8_t
return v;
}
-int
+static int
smic_write_cmd_data(struct ipmi_softc *sc, uint8_t cmd, const uint8_t *data)
{
int sts, v;
@@ -541,7 +535,7 @@ smic_write_cmd_data(struct ipmi_softc *s
return smic_wait(sc, SMIC_BUSY, 0, __func__);
}
-int
+static int
smic_read_data(struct ipmi_softc *sc, uint8_t *data)
{
int sts;
@@ -557,7 +551,7 @@ smic_read_data(struct ipmi_softc *sc, ui
#define ErrStat(a, ...) if (a) printf(__VA_ARGS__);
-int
+static int
smic_sendmsg(struct ipmi_softc *sc, int len, const uint8_t *data)
{
int sts, idx;
@@ -578,7 +572,7 @@ smic_sendmsg(struct ipmi_softc *sc, int
return 0;
}
-int
+static int
smic_recvmsg(struct ipmi_softc *sc, int maxlen, int *len, uint8_t *data)
{
int sts, idx;
@@ -610,13 +604,13 @@ smic_recvmsg(struct ipmi_softc *sc, int
return 0;
}
-int
+static int
smic_reset(struct ipmi_softc *sc)
{
return -1;
}
-int
+static int
smic_probe(struct ipmi_softc *sc)
{
/* Flag register should not be 0xFF on a good system */
@@ -651,12 +645,12 @@ smic_probe(struct ipmi_softc *sc)
#define KCS_WRITE_STATE 0x80
#define KCS_ERROR_STATE 0xC0
-int kcs_wait(struct ipmi_softc *, uint8_t, uint8_t, const char *);
-int kcs_write_cmd(struct ipmi_softc *, uint8_t);
-int kcs_write_data(struct ipmi_softc *, uint8_t);
-int kcs_read_data(struct ipmi_softc *, uint8_t *);
+static int kcs_wait(struct ipmi_softc *, uint8_t, uint8_t, const char *);
+static int kcs_write_cmd(struct ipmi_softc *, uint8_t);
+static int kcs_write_data(struct ipmi_softc *, uint8_t);
+static int kcs_read_data(struct ipmi_softc *, uint8_t *);
-int
+static int
kcs_wait(struct ipmi_softc *sc, uint8_t mask, uint8_t value, const char *lbl)
{
int v;
@@ -681,7 +675,7 @@ kcs_wait(struct ipmi_softc *sc, uint8_t
return v & KCS_STATE_MASK;
}
-int
+static int
kcs_write_cmd(struct ipmi_softc *sc, uint8_t cmd)
{
/* ASSERT: IBF and OBF are clear */
@@ -691,7 +685,7 @@ kcs_write_cmd(struct ipmi_softc *sc, uin
return kcs_wait(sc, KCS_IBF, 0, "write_cmd");
}
-int
+static int
kcs_write_data(struct ipmi_softc *sc, uint8_t data)
{
/* ASSERT: IBF and OBF are clear */
@@ -701,7 +695,7 @@ kcs_write_data(struct ipmi_softc *sc, ui
return kcs_wait(sc, KCS_IBF, 0, "write_data");
}
-int
+static int
kcs_read_data(struct ipmi_softc *sc, uint8_t * data)
{
int sts;
@@ -720,7 +714,7 @@ kcs_read_data(struct ipmi_softc *sc, uin
}
/* Exported KCS functions */
-int
+static int
kcs_sendmsg(struct ipmi_softc *sc, int len, const uint8_t * data)
{
int idx, sts;
@@ -746,7 +740,7 @@ kcs_sendmsg(struct ipmi_softc *sc, int l
return 0;
}
-int
+static int
kcs_recvmsg(struct ipmi_softc *sc, int maxlen, int *rxlen, uint8_t * data)
{
int idx, sts;
@@ -769,13 +763,13 @@ kcs_recvmsg(struct ipmi_softc *sc, int m
return 0;
}
-int
+static int
kcs_reset(struct ipmi_softc *sc)
{
return -1;
}
-int
+static int
kcs_probe(struct ipmi_softc *sc)
{
uint8_t v;
@@ -859,24 +853,7 @@ struct ipmi_bmc_response {
CFATTACH_DECL2_NEW(ipmi, sizeof(struct ipmi_softc),
ipmi_match, ipmi_attach, ipmi_detach, NULL, NULL, NULL);
-/* Scan memory for signature */
-void *
-scan_sig(long start, long end, int skip, int len, const void *data)
-{
- void *va;
-
- while (start < end) {
- va = ISA_HOLE_VADDR(start);
- if (memcmp(va, data, len) == 0)
- return va;
-
- start += skip;
- }
-
- return NULL;
-}
-
-void
+static void
dumpb(const char *lbl, int len, const uint8_t *data)
{
int idx;
@@ -888,76 +865,6 @@ dumpb(const char *lbl, int len, const ui
printf("\n");
}
-void
-ipmi_smbios_probe(struct smbios_ipmi *pipmi, struct ipmi_attach_args *ia)
-{
- const char *platform;
-
- dbg_printf(1, "%s: %#.2x %#.2x %#.2x %#.2x %#08" PRIx64
- " %#.2x %#.2x\n", __func__,
- pipmi->smipmi_if_type,
- pipmi->smipmi_if_rev,
- pipmi->smipmi_i2c_address,
- pipmi->smipmi_nvram_address,
- pipmi->smipmi_base_address,
- pipmi->smipmi_base_flags,
- pipmi->smipmi_irq);
-
- ia->iaa_if_type = pipmi->smipmi_if_type;
- ia->iaa_if_rev = pipmi->smipmi_if_rev;
- ia->iaa_if_irq = (pipmi->smipmi_base_flags & SMIPMI_FLAG_IRQEN) ?
- pipmi->smipmi_irq : -1;
- ia->iaa_if_irqlvl = (pipmi->smipmi_base_flags & SMIPMI_FLAG_IRQLVL) ?
- IST_LEVEL : IST_EDGE;
-
- switch (SMIPMI_FLAG_IFSPACING(pipmi->smipmi_base_flags)) {
- case IPMI_IOSPACING_BYTE:
- ia->iaa_if_iospacing = 1;
- break;
-
- case IPMI_IOSPACING_DWORD:
- ia->iaa_if_iospacing = 4;
- break;
-
- case IPMI_IOSPACING_WORD:
- ia->iaa_if_iospacing = 2;
- break;
-
- default:
- ia->iaa_if_iospacing = 1;
- aprint_error("%s: unknown register spacing\n", __func__);
- }
-
- /* Calculate base address (PCI BAR format) */
- if (pipmi->smipmi_base_address & 0x1) {
- ia->iaa_if_iotype = 'i';
- ia->iaa_if_iobase = pipmi->smipmi_base_address & ~0x1;
- } else {
- ia->iaa_if_iotype = 'm';
- ia->iaa_if_iobase = pipmi->smipmi_base_address & ~0xF;
- }
- if (pipmi->smipmi_base_flags & SMIPMI_FLAG_ODDOFFSET)
- ia->iaa_if_iobase++;
-
- platform = pmf_get_platform("system-product");
- if (platform != NULL &&
- strcmp(platform, "ProLiant MicroServer") == 0 &&
- pipmi->smipmi_base_address != 0) {
- ia->iaa_if_iospacing = 1;
- ia->iaa_if_iobase = pipmi->smipmi_base_address & ~0x7;
- ia->iaa_if_iotype = 'i';
- return;
- }
-
- if (pipmi->smipmi_base_flags == 0x7f) {
- /* IBM 325 eServer workaround */
- ia->iaa_if_iospacing = 1;
- ia->iaa_if_iobase = pipmi->smipmi_base_address;
- ia->iaa_if_iotype = 'i';
- return;
- }
-}
-
/*
* bt_buildmsg builds an IPMI message from a nfLun, cmd, and data
* This is used by BT protocol
@@ -965,7 +872,7 @@ ipmi_smbios_probe(struct smbios_ipmi *pi
* Returns a buffer to an allocated message, txlen contains length
* of allocated message
*/
-void *
+static void *
bt_buildmsg(struct ipmi_softc *sc, int nfLun, int cmd, int len,
const void *data, int *txlen)
{
@@ -994,7 +901,7 @@ bt_buildmsg(struct ipmi_softc *sc, int n
* Returns a buffer to an allocated message, txlen contains length
* of allocated message
*/
-void *
+static void *
cmn_buildmsg(struct ipmi_softc *sc, int nfLun, int cmd, int len,
const void *data, int *txlen)
{
@@ -1019,7 +926,7 @@ cmn_buildmsg(struct ipmi_softc *sc, int
*
* Send an IPMI command
*/
-int
+static int
ipmi_sendcmd(struct ipmi_softc *sc, int rssa, int rslun, int netfn, int cmd,
int txlen, const void *data)
{
@@ -1066,7 +973,7 @@ done:
return rc;
}
-void
+static void
ipmi_buf_release(struct ipmi_softc *sc, char *buf)
{
KASSERT(sc->sc_buf_rsvd);
@@ -1074,7 +981,7 @@ ipmi_buf_release(struct ipmi_softc *sc,
sc->sc_buf_rsvd = false;
}
-char *
+static char *
ipmi_buf_acquire(struct ipmi_softc *sc, size_t len)
{
KASSERT(len <= sizeof(sc->sc_buf));
@@ -1088,7 +995,7 @@ ipmi_buf_acquire(struct ipmi_softc *sc,
/*
* ipmi_recvcmd: caller must hold sc_cmd_mtx.
*/
-int
+static int
ipmi_recvcmd(struct ipmi_softc *sc, int maxlen, int *rxlen, void *data)
{
uint8_t *buf, rc = 0;
@@ -1127,7 +1034,7 @@ ipmi_recvcmd(struct ipmi_softc *sc, int
/*
* ipmi_delay: caller must hold sc_cmd_mtx.
*/
-void
+static void
ipmi_delay(struct ipmi_softc *sc, int ms)
{
if (cold) {
@@ -1140,7 +1047,7 @@ ipmi_delay(struct ipmi_softc *sc, int ms
}
/* Read a partial SDR entry */
-int
+static int
get_sdr_partial(struct ipmi_softc *sc, uint16_t recordId, uint16_t reserveId,
uint8_t offset, uint8_t length, void *buffer, uint16_t *nxtRecordId)
{
@@ -1171,10 +1078,10 @@ get_sdr_partial(struct ipmi_softc *sc, u
return 0;
}
-int maxsdrlen = 0x10;
+static int maxsdrlen = 0x10;
/* Read an entire SDR; pass to add sensor */
-int
+static int
get_sdr(struct ipmi_softc *sc, uint16_t recid, uint16_t *nxtrec)
{
uint16_t resid = 0;
@@ -1232,7 +1139,7 @@ get_sdr(struct ipmi_softc *sc, uint16_t
return 0;
}
-int
+static int
getbits(uint8_t *bytes, int bitpos, int bitlen)
{
int v;
@@ -1251,7 +1158,7 @@ getbits(uint8_t *bytes, int bitpos, int
}
/* Decode IPMI sensor name */
-void
+static void
ipmi_sensor_name(char *name, int len, uint8_t typelen, uint8_t *bits)
{
int i, slen;
@@ -1295,7 +1202,7 @@ ipmi_sensor_name(char *name, int len, ui
}
/* Sign extend a n-bit value */
-long
+static long
signextend(unsigned long val, int bits)
{
long msk = (1L << (bits-1))-1;
@@ -1450,7 +1357,7 @@ done:
}
/* Convert IPMI reading from sensor factors */
-long
+static long
ipmi_convert(uint8_t v, struct sdrtype1 *s1, long adj)
{
int64_t M, B;
@@ -1499,7 +1406,7 @@ ipmi_convert(uint8_t v, struct sdrtype1
return FIX2INT(val);
}
-int32_t
+static int32_t
ipmi_convert_sensor(uint8_t *reading, struct ipmi_sensor *psensor)
{
struct sdrtype1 *s1 = (struct sdrtype1 *)psensor->i_sdr;
@@ -1526,7 +1433,7 @@ ipmi_convert_sensor(uint8_t *reading, st
return val;
}
-void
+static void
ipmi_set_limits(struct sysmon_envsys *sme, envsys_data_t *edata,
sysmon_envsys_lim_t *limits, uint32_t *props)
{
@@ -1548,7 +1455,7 @@ ipmi_set_limits(struct sysmon_envsys *sm
return;
}
-void
+static void
ipmi_get_limits(struct sysmon_envsys *sme, envsys_data_t *edata,
sysmon_envsys_lim_t *limits, uint32_t *props)
{
@@ -1571,7 +1478,7 @@ ipmi_get_limits(struct sysmon_envsys *sm
return;
}
-void
+static void
ipmi_get_sensor_limits(struct ipmi_softc *sc, struct ipmi_sensor *psensor,
sysmon_envsys_lim_t *limits, uint32_t *props)
{
@@ -1647,7 +1554,7 @@ ipmi_get_sensor_limits(struct ipmi_softc
return;
}
-int
+static int
ipmi_sensor_status(struct ipmi_softc *sc, struct ipmi_sensor *psensor,
envsys_data_t *edata, uint8_t *reading)
{
@@ -1707,7 +1614,7 @@ ipmi_sensor_status(struct ipmi_softc *sc
return ENVSYS_SVALID;
}
-int
+static int
read_sensor(struct ipmi_softc *sc, struct ipmi_sensor *psensor)
{
struct sdrtype1 *s1 = (struct sdrtype1 *) psensor->i_sdr;
@@ -1744,7 +1651,7 @@ err:
return -1;
}
-int
+static int
ipmi_sensor_type(int type, int ext_type, int entity)
{
switch (ext_type << 8L | type) {
@@ -1770,7 +1677,7 @@ ipmi_sensor_type(int type, int ext_type,
}
/* Add Sensor to BSD Sysctl interface */
-int
+static int
add_sdr_sensor(struct ipmi_softc *sc, uint8_t *psdr)
{
int rc;
@@ -1812,7 +1719,7 @@ ipmi_is_dupname(char *name)
return 0;
}
-int
+static int
add_child_sensors(struct ipmi_softc *sc, uint8_t *psdr, int count,
int sensor_num, int sensor_type, int ext_type, int sensor_base,
int entity, const char *name)
@@ -1889,8 +1796,9 @@ add_child_sensors(struct ipmi_softc *sc,
return 1;
}
+#if 0
/* Interrupt handler */
-int
+static int
ipmi_intr(void *arg)
{
struct ipmi_softc *sc = (struct ipmi_softc *)arg;
@@ -1902,9 +1810,10 @@ ipmi_intr(void *arg)
return 0;
}
+#endif
/* Handle IPMI Timer - reread sensor values */
-void
+static void
ipmi_refresh_sensors(struct ipmi_softc *sc)
{
@@ -1920,7 +1829,7 @@ ipmi_refresh_sensors(struct ipmi_softc *
}
}
-int
+static int
ipmi_map_regs(struct ipmi_softc *sc, struct ipmi_attach_args *ia)
{
int error;
@@ -1955,40 +1864,14 @@ ipmi_map_regs(struct ipmi_softc *sc, str
return 0;
}
-void
+static void
ipmi_unmap_regs(struct ipmi_softc *sc)
{
bus_space_unmap(sc->sc_iot, sc->sc_ioh,
sc->sc_if->nregs * sc->sc_if_iospacing);
}
-int
-ipmi_probe(struct ipmi_attach_args *ia)
-{
- struct dmd_ipmi *pipmi;
- struct smbtable tbl;
-
- tbl.cookie = 0;
-
- if (smbios_find_table(SMBIOS_TYPE_IPMIDEV, &tbl))
- ipmi_smbios_probe(tbl.tblhdr, ia);
- else {
- pipmi = scan_sig(0xC0000L, 0xFFFFFL, 16, 4, "IPMI");
- /* XXX hack to find Dell PowerEdge 8450 */
- if (pipmi == NULL) {
- /* no IPMI found */
- return 0;
- }
-
- /* we have an IPMI signature, fill in attach arg structure */
- ia->iaa_if_type = pipmi->dmd_if_type;
- ia->iaa_if_rev = pipmi->dmd_if_rev;
- }
-
- return 1;
-}
-
-int
+static int
ipmi_match(device_t parent, cfdata_t cf, void *aux)
{
struct ipmi_softc sc;
@@ -2150,7 +2033,7 @@ ipmi_thread(void *cookie)
kthread_exit(0);
}
-void
+static void
ipmi_attach(device_t parent, device_t self, void *aux)
{
struct ipmi_softc *sc = device_private(self);
@@ -2230,7 +2113,7 @@ ipmi_detach(device_t self, int flags)
return 0;
}
-int
+static int
ipmi_watchdog_setmode(struct sysmon_wdog *smwdog)
{
struct ipmi_softc *sc = smwdog->smw_cookie;
@@ -2280,7 +2163,7 @@ ipmi_watchdog_setmode(struct sysmon_wdog
return 0;
}
-int
+static int
ipmi_watchdog_tickle(struct sysmon_wdog *smwdog)
{
struct ipmi_softc *sc = smwdog->smw_cookie;
@@ -2292,7 +2175,7 @@ ipmi_watchdog_tickle(struct sysmon_wdog
return 0;
}
-void
+static void
ipmi_dotickle(struct ipmi_softc *sc)
{
int rc, len;
@@ -2309,7 +2192,7 @@ ipmi_dotickle(struct ipmi_softc *sc)
}
}
-bool
+static bool
ipmi_suspend(device_t dev, const pmf_qual_t *qual)
{
struct ipmi_softc *sc = device_private(dev);