diff --git a/[refs] b/[refs] index 40732c82a3cb..897eac0f53ea 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 718a538f945a84244a460df434c3f6f04701957b +refs/heads/master: 85e941cc9f10316080a16b121d24d329e5c2a65d diff --git a/trunk/drivers/w1/w1_family.h b/trunk/drivers/w1/w1_family.h index 2995c6cb869f..d01f0424cee9 100644 --- a/trunk/drivers/w1/w1_family.h +++ b/trunk/drivers/w1/w1_family.h @@ -27,7 +27,8 @@ #include #define W1_FAMILY_DEFAULT 0 -#define W1_FAMILY_SMEM 0x01 +#define W1_FAMILY_SMEM_01 0x01 +#define W1_FAMILY_SMEM_81 0x81 #define W1_THERM_DS18S20 0x10 #define W1_THERM_DS1822 0x22 #define W1_THERM_DS18B20 0x28 diff --git a/trunk/drivers/w1/w1_smem.c b/trunk/drivers/w1/w1_smem.c index 674eb75a9bad..4a335f1a2ae2 100644 --- a/trunk/drivers/w1/w1_smem.c +++ b/trunk/drivers/w1/w1_smem.c @@ -99,19 +99,37 @@ static ssize_t w1_smem_read_bin(struct kobject *kobj, char *buf, loff_t off, siz return count; } -static struct w1_family w1_smem_family = { - .fid = W1_FAMILY_SMEM, +static struct w1_family w1_smem_family_01 = { + .fid = W1_FAMILY_SMEM_01, + .fops = &w1_smem_fops, +}; + +static struct w1_family w1_smem_family_81 = { + .fid = W1_FAMILY_SMEM_81, .fops = &w1_smem_fops, }; static int __init w1_smem_init(void) { - return w1_register_family(&w1_smem_family); + int err; + + err = w1_register_family(&w1_smem_family_01); + if (err) + return err; + + err = w1_register_family(&w1_smem_family_81); + if (err) { + w1_unregister_family(&w1_smem_family_01); + return err; + } + + return 0; } static void __exit w1_smem_fini(void) { - w1_unregister_family(&w1_smem_family); + w1_unregister_family(&w1_smem_family_01); + w1_unregister_family(&w1_smem_family_81); } module_init(w1_smem_init);