| From: NeilBrown <neilb@suse.de> |
| Date: Wed, 19 Nov 2014 14:04:20 +1100 |
| Subject: w1: support auto-load of w1_bq27000 module. |
| |
| commit 4b7e4f8289c1ca60accb6c1baf31984f69bc2771 upstream. |
| |
| 1/ change request_module call to zero-pad single digit |
| family numbers. This appears to be the intention of |
| the code, but not what it actually does. |
| |
| This means that the alias created for W1_FAMILY_SMEM_01 |
| might actually be useful. |
| |
| 2/ Define a family name for the BQ27000 battery charge monitor. |
| Unfortunately this is the same number as W1_FAMILY_SMEM_01 |
| so if both a compiled on a system, one module might need to |
| be blacklisted. |
| |
| 3/ Add a MODULE_ALIAS for the bq27000. |
| |
| Acked-by: Evgeniy Polyakov <zbr@ioremap.net> |
| Signed-off-by: NeilBrown <neilb@suse.de> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Signed-off-by: Ben Hutchings <ben@decadent.org.uk> |
| --- |
| drivers/w1/slaves/w1_bq27000.c | 4 ++-- |
| drivers/w1/w1.c | 2 +- |
| drivers/w1/w1_family.h | 1 + |
| 3 files changed, 4 insertions(+), 3 deletions(-) |
| |
| --- a/drivers/w1/slaves/w1_bq27000.c |
| +++ b/drivers/w1/slaves/w1_bq27000.c |
| @@ -88,7 +88,7 @@ static struct w1_family_ops w1_bq27000_f |
| }; |
| |
| static struct w1_family w1_bq27000_family = { |
| - .fid = 1, |
| + .fid = W1_FAMILY_BQ27000, |
| .fops = &w1_bq27000_fops, |
| }; |
| |
| @@ -111,7 +111,7 @@ module_exit(w1_bq27000_exit); |
| |
| module_param(F_ID, int, S_IRUSR); |
| MODULE_PARM_DESC(F_ID, "1-wire slave FID for BQ device"); |
| - |
| +MODULE_ALIAS("w1-family-" __stringify(W1_FAMILY_BQ27000)); |
| MODULE_LICENSE("GPL"); |
| MODULE_AUTHOR("Texas Instruments Ltd"); |
| MODULE_DESCRIPTION("HDQ/1-wire slave driver bq27000 battery monitor chip"); |
| --- a/drivers/w1/w1.c |
| +++ b/drivers/w1/w1.c |
| @@ -727,7 +727,7 @@ int w1_attach_slave_device(struct w1_mas |
| |
| /* slave modules need to be loaded in a context with unlocked mutex */ |
| mutex_unlock(&dev->mutex); |
| - request_module("w1-family-0x%0x", rn->family); |
| + request_module("w1-family-0x%02x", rn->family); |
| mutex_lock(&dev->mutex); |
| |
| spin_lock(&w1_flock); |
| --- a/drivers/w1/w1_family.h |
| +++ b/drivers/w1/w1_family.h |
| @@ -27,6 +27,7 @@ |
| #include <linux/atomic.h> |
| |
| #define W1_FAMILY_DEFAULT 0 |
| +#define W1_FAMILY_BQ27000 0x01 |
| #define W1_FAMILY_SMEM_01 0x01 |
| #define W1_FAMILY_SMEM_81 0x81 |
| #define W1_THERM_DS18S20 0x10 |