diff options
author | 2016-04-23 09:40:28 +0000 | |
---|---|---|
committer | 2016-04-23 09:40:28 +0000 | |
commit | 51cf21f2e07bba27fbddf27513612915b4d18b9c (patch) | |
tree | 0f8a4e109f7eacd67a9c8173f531f678b11d2488 | |
parent | remove errant Pp; (diff) | |
download | wireguard-openbsd-51cf21f2e07bba27fbddf27513612915b4d18b9c.tar.xz wireguard-openbsd-51cf21f2e07bba27fbddf27513612915b4d18b9c.zip |
Print a meaningful interrupt string for i2c devices.
-rw-r--r-- | sys/dev/acpi/dwiic.c | 18 | ||||
-rw-r--r-- | sys/dev/i2c/i2cvar.h | 5 | ||||
-rw-r--r-- | sys/dev/i2c/ihidev.c | 5 |
3 files changed, 23 insertions, 5 deletions
diff --git a/sys/dev/acpi/dwiic.c b/sys/dev/acpi/dwiic.c index 31571e02cac..43c085fac03 100644 --- a/sys/dev/acpi/dwiic.c +++ b/sys/dev/acpi/dwiic.c @@ -1,4 +1,4 @@ -/* $OpenBSD: dwiic.c,v 1.14 2016/04/10 16:43:17 kettenis Exp $ */ +/* $OpenBSD: dwiic.c,v 1.15 2016/04/23 09:40:28 kettenis Exp $ */ /* * Synopsys DesignWare I2C controller * @@ -175,6 +175,7 @@ int dwiic_intr(void *); void * dwiic_i2c_intr_establish(void *, void *, int, int (*)(void *), void *, const char *); +const char * dwiic_i2c_intr_string(void *, void *); int dwiic_acpi_parse_crs(union acpi_resource *, void *); int dwiic_acpi_foundhid(struct aml_node *, void *); @@ -311,6 +312,7 @@ dwiic_attach(struct device *parent, struct device *self, void *aux) sc->sc_i2c_tag.ic_release_bus = dwiic_i2c_release_bus; sc->sc_i2c_tag.ic_exec = dwiic_i2c_exec; sc->sc_i2c_tag.ic_intr_establish = dwiic_i2c_intr_establish; + sc->sc_i2c_tag.ic_intr_string = dwiic_i2c_intr_string; bzero(&sc->sc_iba, sizeof(sc->sc_iba)); sc->sc_iba.iba_name = "iic"; @@ -504,6 +506,20 @@ dwiic_i2c_intr_establish(void *cookie, void *ih, int level, level, func, arg, name); } +const char * +dwiic_i2c_intr_string(void *cookie, void *ih) +{ + struct dwiic_crs *crs = ih; + static char irqstr[64]; + + if (crs->gpio_int_node && crs->gpio_int_node->gpio) + snprintf(irqstr, sizeof(irqstr), "gpio %d", crs->gpio_int_pin); + else + snprintf(irqstr, sizeof(irqstr), "irq %d", crs->irq_int); + + return irqstr; +} + int dwiic_acpi_foundhid(struct aml_node *node, void *arg) { diff --git a/sys/dev/i2c/i2cvar.h b/sys/dev/i2c/i2cvar.h index 7f63349db12..bf9d06647ba 100644 --- a/sys/dev/i2c/i2cvar.h +++ b/sys/dev/i2c/i2cvar.h @@ -1,4 +1,4 @@ -/* $OpenBSD: i2cvar.h,v 1.15 2016/04/10 16:43:17 kettenis Exp $ */ +/* $OpenBSD: i2cvar.h,v 1.16 2016/04/23 09:40:28 kettenis Exp $ */ /* $NetBSD: i2cvar.h,v 1.1 2003/09/30 00:35:31 thorpej Exp $ */ /* @@ -93,6 +93,7 @@ typedef struct i2c_controller { void *(*ic_intr_establish)(void *, void *, int, int (*)(void *), void *, const char *); + const char *(*ic_intr_string)(void *, void *); } *i2c_tag_t; /* Used to attach the i2c framework to the controller. */ @@ -158,6 +159,8 @@ int iic_smbus_receive_byte(i2c_tag_t, i2c_addr_t, uint8_t *, int); #define iic_intr_establish(ic, ih, level, func, arg, name) \ (*(ic)->ic_intr_establish)((ic)->ic_cookie, (ih), (level), \ (func), (arg), (name)) +#define iic_intr_string(ic, ih) \ + (*(ic)->ic_intr_string)((ic)->ic_cookie, (ih)) void iic_ignore_addr(u_int8_t addr); diff --git a/sys/dev/i2c/ihidev.c b/sys/dev/i2c/ihidev.c index 57724b4003d..a416e34abec 100644 --- a/sys/dev/i2c/ihidev.c +++ b/sys/dev/i2c/ihidev.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ihidev.c,v 1.11 2016/04/10 16:43:17 kettenis Exp $ */ +/* $OpenBSD: ihidev.c,v 1.12 2016/04/23 09:40:28 kettenis Exp $ */ /* * HID-over-i2c driver * @@ -108,9 +108,8 @@ ihidev_attach(struct device *parent, struct device *self, void *aux) sc->sc_addr = ia->ia_addr; sc->sc_hid_desc_addr = ia->ia_size; - /* XXX print proper interrupt string */ if (ia->ia_intr) - printf(": interrupt"); + printf(" %s", iic_intr_string(sc->sc_tag, ia->ia_intr)); if (ihidev_hid_command(sc, I2C_HID_CMD_DESCR, NULL) || ihidev_hid_desc_parse(sc)) { |