diff options
36 files changed, 208 insertions, 260 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index 2dc114b9e7f7..2461e78b173f 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
@@ -13790,6 +13790,7 @@ M: Evgeniy Polyakov <zbr@ioremap.net> | |||
13790 | S: Maintained | 13790 | S: Maintained |
13791 | F: Documentation/w1/ | 13791 | F: Documentation/w1/ |
13792 | F: drivers/w1/ | 13792 | F: drivers/w1/ |
13793 | F: include/linux/w1.h | ||
13793 | 13794 | ||
13794 | W83791D HARDWARE MONITORING DRIVER | 13795 | W83791D HARDWARE MONITORING DRIVER |
13795 | M: Marc Hulsman <m.hulsman@tudelft.nl> | 13796 | M: Marc Hulsman <m.hulsman@tudelft.nl> |
diff --git a/drivers/power/supply/ds2760_battery.c b/drivers/power/supply/ds2760_battery.c index 17225689e3f6..ae180dc929c9 100644 --- a/drivers/power/supply/ds2760_battery.c +++ b/drivers/power/supply/ds2760_battery.c | |||
@@ -28,7 +28,7 @@ | |||
28 | #include <linux/platform_device.h> | 28 | #include <linux/platform_device.h> |
29 | #include <linux/power_supply.h> | 29 | #include <linux/power_supply.h> |
30 | 30 | ||
31 | #include "../../w1/w1.h" | 31 | #include <linux/w1.h> |
32 | #include "../../w1/slaves/w1_ds2760.h" | 32 | #include "../../w1/slaves/w1_ds2760.h" |
33 | 33 | ||
34 | struct ds2760_device_info { | 34 | struct ds2760_device_info { |
diff --git a/drivers/power/supply/ds2780_battery.c b/drivers/power/supply/ds2780_battery.c index 1b3b6fa89c28..8edd4aa5f475 100644 --- a/drivers/power/supply/ds2780_battery.c +++ b/drivers/power/supply/ds2780_battery.c | |||
@@ -21,7 +21,7 @@ | |||
21 | #include <linux/power_supply.h> | 21 | #include <linux/power_supply.h> |
22 | #include <linux/idr.h> | 22 | #include <linux/idr.h> |
23 | 23 | ||
24 | #include "../../w1/w1.h" | 24 | #include <linux/w1.h> |
25 | #include "../../w1/slaves/w1_ds2780.h" | 25 | #include "../../w1/slaves/w1_ds2780.h" |
26 | 26 | ||
27 | /* Current unit measurement in uA for a 1 milli-ohm sense resistor */ | 27 | /* Current unit measurement in uA for a 1 milli-ohm sense resistor */ |
diff --git a/drivers/power/supply/ds2781_battery.c b/drivers/power/supply/ds2781_battery.c index cc0149131f89..4400402f9ec5 100644 --- a/drivers/power/supply/ds2781_battery.c +++ b/drivers/power/supply/ds2781_battery.c | |||
@@ -19,7 +19,7 @@ | |||
19 | #include <linux/power_supply.h> | 19 | #include <linux/power_supply.h> |
20 | #include <linux/idr.h> | 20 | #include <linux/idr.h> |
21 | 21 | ||
22 | #include "../../w1/w1.h" | 22 | #include <linux/w1.h> |
23 | #include "../../w1/slaves/w1_ds2781.h" | 23 | #include "../../w1/slaves/w1_ds2781.h" |
24 | 24 | ||
25 | /* Current unit measurement in uA for a 1 milli-ohm sense resistor */ | 25 | /* Current unit measurement in uA for a 1 milli-ohm sense resistor */ |
diff --git a/drivers/w1/masters/ds1wm.c b/drivers/w1/masters/ds1wm.c index e0b8a4bc73df..fd2e9da27c4b 100644 --- a/drivers/w1/masters/ds1wm.c +++ b/drivers/w1/masters/ds1wm.c | |||
@@ -25,8 +25,7 @@ | |||
25 | 25 | ||
26 | #include <asm/io.h> | 26 | #include <asm/io.h> |
27 | 27 | ||
28 | #include "../w1.h" | 28 | #include <linux/w1.h> |
29 | #include "../w1_int.h" | ||
30 | 29 | ||
31 | 30 | ||
32 | #define DS1WM_CMD 0x00 /* R/W 4 bits command */ | 31 | #define DS1WM_CMD 0x00 /* R/W 4 bits command */ |
diff --git a/drivers/w1/masters/ds2482.c b/drivers/w1/masters/ds2482.c index e8730ea3e3aa..d49681cd29af 100644 --- a/drivers/w1/masters/ds2482.c +++ b/drivers/w1/masters/ds2482.c | |||
@@ -20,8 +20,7 @@ | |||
20 | #include <linux/delay.h> | 20 | #include <linux/delay.h> |
21 | #include <asm/delay.h> | 21 | #include <asm/delay.h> |
22 | 22 | ||
23 | #include "../w1.h" | 23 | #include <linux/w1.h> |
24 | #include "../w1_int.h" | ||
25 | 24 | ||
26 | /** | 25 | /** |
27 | * Allow the active pullup to be disabled, default is enabled. | 26 | * Allow the active pullup to be disabled, default is enabled. |
diff --git a/drivers/w1/masters/ds2490.c b/drivers/w1/masters/ds2490.c index d748e34d4ce5..46ccb2fc4f60 100644 --- a/drivers/w1/masters/ds2490.c +++ b/drivers/w1/masters/ds2490.c | |||
@@ -25,8 +25,7 @@ | |||
25 | #include <linux/usb.h> | 25 | #include <linux/usb.h> |
26 | #include <linux/slab.h> | 26 | #include <linux/slab.h> |
27 | 27 | ||
28 | #include "../w1_int.h" | 28 | #include <linux/w1.h> |
29 | #include "../w1.h" | ||
30 | 29 | ||
31 | /* USB Standard */ | 30 | /* USB Standard */ |
32 | /* USB Control request vendor type */ | 31 | /* USB Control request vendor type */ |
diff --git a/drivers/w1/masters/matrox_w1.c b/drivers/w1/masters/matrox_w1.c index f20d03ecfd1d..d83d7c99d81d 100644 --- a/drivers/w1/masters/matrox_w1.c +++ b/drivers/w1/masters/matrox_w1.c | |||
@@ -34,8 +34,7 @@ | |||
34 | #include <linux/pci_ids.h> | 34 | #include <linux/pci_ids.h> |
35 | #include <linux/pci.h> | 35 | #include <linux/pci.h> |
36 | 36 | ||
37 | #include "../w1.h" | 37 | #include <linux/w1.h> |
38 | #include "../w1_int.h" | ||
39 | 38 | ||
40 | /* | 39 | /* |
41 | * Matrox G400 DDC registers. | 40 | * Matrox G400 DDC registers. |
diff --git a/drivers/w1/masters/mxc_w1.c b/drivers/w1/masters/mxc_w1.c index a4621757a47f..74f2e6e6202a 100644 --- a/drivers/w1/masters/mxc_w1.c +++ b/drivers/w1/masters/mxc_w1.c | |||
@@ -19,8 +19,7 @@ | |||
19 | #include <linux/module.h> | 19 | #include <linux/module.h> |
20 | #include <linux/platform_device.h> | 20 | #include <linux/platform_device.h> |
21 | 21 | ||
22 | #include "../w1.h" | 22 | #include <linux/w1.h> |
23 | #include "../w1_int.h" | ||
24 | 23 | ||
25 | /* | 24 | /* |
26 | * MXC W1 Register offsets | 25 | * MXC W1 Register offsets |
diff --git a/drivers/w1/masters/omap_hdq.c b/drivers/w1/masters/omap_hdq.c index 3302cbd2344a..3612542b6044 100644 --- a/drivers/w1/masters/omap_hdq.c +++ b/drivers/w1/masters/omap_hdq.c | |||
@@ -19,8 +19,7 @@ | |||
19 | #include <linux/pm_runtime.h> | 19 | #include <linux/pm_runtime.h> |
20 | #include <linux/of.h> | 20 | #include <linux/of.h> |
21 | 21 | ||
22 | #include "../w1.h" | 22 | #include <linux/w1.h> |
23 | #include "../w1_int.h" | ||
24 | 23 | ||
25 | #define MOD_NAME "OMAP_HDQ:" | 24 | #define MOD_NAME "OMAP_HDQ:" |
26 | 25 | ||
diff --git a/drivers/w1/masters/w1-gpio.c b/drivers/w1/masters/w1-gpio.c index a373ae69d9f6..a90728ceec5a 100644 --- a/drivers/w1/masters/w1-gpio.c +++ b/drivers/w1/masters/w1-gpio.c | |||
@@ -20,8 +20,7 @@ | |||
20 | #include <linux/of.h> | 20 | #include <linux/of.h> |
21 | #include <linux/delay.h> | 21 | #include <linux/delay.h> |
22 | 22 | ||
23 | #include "../w1.h" | 23 | #include <linux/w1.h> |
24 | #include "../w1_int.h" | ||
25 | 24 | ||
26 | static u8 w1_gpio_set_pullup(void *data, int delay) | 25 | static u8 w1_gpio_set_pullup(void *data, int delay) |
27 | { | 26 | { |
diff --git a/drivers/w1/slaves/w1_bq27000.c b/drivers/w1/slaves/w1_bq27000.c index d480900a28ab..8046ac45381a 100644 --- a/drivers/w1/slaves/w1_bq27000.c +++ b/drivers/w1/slaves/w1_bq27000.c | |||
@@ -17,9 +17,9 @@ | |||
17 | #include <linux/mutex.h> | 17 | #include <linux/mutex.h> |
18 | #include <linux/power/bq27xxx_battery.h> | 18 | #include <linux/power/bq27xxx_battery.h> |
19 | 19 | ||
20 | #include "../w1.h" | 20 | #include <linux/w1.h> |
21 | #include "../w1_int.h" | 21 | |
22 | #include "../w1_family.h" | 22 | #define W1_FAMILY_BQ27000 0x01 |
23 | 23 | ||
24 | #define HDQ_CMD_READ (0) | 24 | #define HDQ_CMD_READ (0) |
25 | #define HDQ_CMD_WRITE (1<<7) | 25 | #define HDQ_CMD_WRITE (1<<7) |
diff --git a/drivers/w1/slaves/w1_ds2405.c b/drivers/w1/slaves/w1_ds2405.c index d5d54876cb64..42a1e81060ce 100644 --- a/drivers/w1/slaves/w1_ds2405.c +++ b/drivers/w1/slaves/w1_ds2405.c | |||
@@ -24,8 +24,9 @@ | |||
24 | #include <linux/string.h> | 24 | #include <linux/string.h> |
25 | #include <linux/types.h> | 25 | #include <linux/types.h> |
26 | 26 | ||
27 | #include "../w1.h" | 27 | #include <linux/w1.h> |
28 | #include "../w1_family.h" | 28 | |
29 | #define W1_FAMILY_DS2405 0x05 | ||
29 | 30 | ||
30 | MODULE_LICENSE("GPL"); | 31 | MODULE_LICENSE("GPL"); |
31 | MODULE_AUTHOR("Maciej S. Szmigiero <mail@maciej.szmigiero.name>"); | 32 | MODULE_AUTHOR("Maciej S. Szmigiero <mail@maciej.szmigiero.name>"); |
diff --git a/drivers/w1/slaves/w1_ds2406.c b/drivers/w1/slaves/w1_ds2406.c index 709bd5e02eed..fac266366ca3 100644 --- a/drivers/w1/slaves/w1_ds2406.c +++ b/drivers/w1/slaves/w1_ds2406.c | |||
@@ -17,9 +17,9 @@ | |||
17 | #include <linux/slab.h> | 17 | #include <linux/slab.h> |
18 | #include <linux/crc16.h> | 18 | #include <linux/crc16.h> |
19 | 19 | ||
20 | #include "../w1.h" | 20 | #include <linux/w1.h> |
21 | #include "../w1_int.h" | 21 | |
22 | #include "../w1_family.h" | 22 | #define W1_FAMILY_DS2406 0x12 |
23 | 23 | ||
24 | #define W1_F12_FUNC_READ_STATUS 0xAA | 24 | #define W1_F12_FUNC_READ_STATUS 0xAA |
25 | #define W1_F12_FUNC_WRITE_STATUS 0x55 | 25 | #define W1_F12_FUNC_WRITE_STATUS 0x55 |
diff --git a/drivers/w1/slaves/w1_ds2408.c b/drivers/w1/slaves/w1_ds2408.c index e01d2b3997bc..b535d5ec35b6 100644 --- a/drivers/w1/slaves/w1_ds2408.c +++ b/drivers/w1/slaves/w1_ds2408.c | |||
@@ -15,9 +15,9 @@ | |||
15 | #include <linux/delay.h> | 15 | #include <linux/delay.h> |
16 | #include <linux/slab.h> | 16 | #include <linux/slab.h> |
17 | 17 | ||
18 | #include "../w1.h" | 18 | #include <linux/w1.h> |
19 | #include "../w1_int.h" | 19 | |
20 | #include "../w1_family.h" | 20 | #define W1_FAMILY_DS2408 0x29 |
21 | 21 | ||
22 | #define W1_F29_RETRIES 3 | 22 | #define W1_F29_RETRIES 3 |
23 | 23 | ||
diff --git a/drivers/w1/slaves/w1_ds2413.c b/drivers/w1/slaves/w1_ds2413.c index 9cc6f0bc2e95..492e3d010321 100644 --- a/drivers/w1/slaves/w1_ds2413.c +++ b/drivers/w1/slaves/w1_ds2413.c | |||
@@ -16,9 +16,9 @@ | |||
16 | #include <linux/delay.h> | 16 | #include <linux/delay.h> |
17 | #include <linux/slab.h> | 17 | #include <linux/slab.h> |
18 | 18 | ||
19 | #include "../w1.h" | 19 | #include <linux/w1.h> |
20 | #include "../w1_int.h" | 20 | |
21 | #include "../w1_family.h" | 21 | #define W1_FAMILY_DS2413 0x3A |
22 | 22 | ||
23 | #define W1_F3A_RETRIES 3 | 23 | #define W1_F3A_RETRIES 3 |
24 | #define W1_F3A_FUNC_PIO_ACCESS_READ 0xF5 | 24 | #define W1_F3A_FUNC_PIO_ACCESS_READ 0xF5 |
diff --git a/drivers/w1/slaves/w1_ds2423.c b/drivers/w1/slaves/w1_ds2423.c index 306240fe496c..050407c53b16 100644 --- a/drivers/w1/slaves/w1_ds2423.c +++ b/drivers/w1/slaves/w1_ds2423.c | |||
@@ -30,9 +30,9 @@ | |||
30 | #include <linux/delay.h> | 30 | #include <linux/delay.h> |
31 | #include <linux/crc16.h> | 31 | #include <linux/crc16.h> |
32 | 32 | ||
33 | #include "../w1.h" | 33 | #include <linux/w1.h> |
34 | #include "../w1_int.h" | 34 | |
35 | #include "../w1_family.h" | 35 | #define W1_COUNTER_DS2423 0x1D |
36 | 36 | ||
37 | #define CRC16_VALID 0xb001 | 37 | #define CRC16_VALID 0xb001 |
38 | #define CRC16_INIT 0 | 38 | #define CRC16_INIT 0 |
diff --git a/drivers/w1/slaves/w1_ds2431.c b/drivers/w1/slaves/w1_ds2431.c index 20182d4a4b19..5adecd3face1 100644 --- a/drivers/w1/slaves/w1_ds2431.c +++ b/drivers/w1/slaves/w1_ds2431.c | |||
@@ -16,9 +16,9 @@ | |||
16 | #include <linux/types.h> | 16 | #include <linux/types.h> |
17 | #include <linux/delay.h> | 17 | #include <linux/delay.h> |
18 | 18 | ||
19 | #include "../w1.h" | 19 | #include <linux/w1.h> |
20 | #include "../w1_int.h" | 20 | |
21 | #include "../w1_family.h" | 21 | #define W1_EEPROM_DS2431 0x2D |
22 | 22 | ||
23 | #define W1_F2D_EEPROM_SIZE 128 | 23 | #define W1_F2D_EEPROM_SIZE 128 |
24 | #define W1_F2D_PAGE_COUNT 4 | 24 | #define W1_F2D_PAGE_COUNT 4 |
diff --git a/drivers/w1/slaves/w1_ds2433.c b/drivers/w1/slaves/w1_ds2433.c index 86c30aceea3e..75ad70cfe8e8 100644 --- a/drivers/w1/slaves/w1_ds2433.c +++ b/drivers/w1/slaves/w1_ds2433.c | |||
@@ -22,9 +22,9 @@ | |||
22 | 22 | ||
23 | #endif | 23 | #endif |
24 | 24 | ||
25 | #include "../w1.h" | 25 | #include <linux/w1.h> |
26 | #include "../w1_int.h" | 26 | |
27 | #include "../w1_family.h" | 27 | #define W1_EEPROM_DS2433 0x23 |
28 | 28 | ||
29 | #define W1_EEPROM_SIZE 512 | 29 | #define W1_EEPROM_SIZE 512 |
30 | #define W1_PAGE_COUNT 16 | 30 | #define W1_PAGE_COUNT 16 |
diff --git a/drivers/w1/slaves/w1_ds2438.c b/drivers/w1/slaves/w1_ds2438.c index 5ededb4965e1..6487fb772a20 100644 --- a/drivers/w1/slaves/w1_ds2438.c +++ b/drivers/w1/slaves/w1_ds2438.c | |||
@@ -13,8 +13,9 @@ | |||
13 | #include <linux/types.h> | 13 | #include <linux/types.h> |
14 | #include <linux/delay.h> | 14 | #include <linux/delay.h> |
15 | 15 | ||
16 | #include "../w1.h" | 16 | #include <linux/w1.h> |
17 | #include "../w1_family.h" | 17 | |
18 | #define W1_FAMILY_DS2438 0x26 | ||
18 | 19 | ||
19 | #define W1_DS2438_RETRIES 3 | 20 | #define W1_DS2438_RETRIES 3 |
20 | 21 | ||
diff --git a/drivers/w1/slaves/w1_ds2760.c b/drivers/w1/slaves/w1_ds2760.c index f35d1e2ef9bb..26168abfb8b8 100644 --- a/drivers/w1/slaves/w1_ds2760.c +++ b/drivers/w1/slaves/w1_ds2760.c | |||
@@ -18,11 +18,12 @@ | |||
18 | #include <linux/idr.h> | 18 | #include <linux/idr.h> |
19 | #include <linux/gfp.h> | 19 | #include <linux/gfp.h> |
20 | 20 | ||
21 | #include "../w1.h" | 21 | #include <linux/w1.h> |
22 | #include "../w1_int.h" | 22 | |
23 | #include "../w1_family.h" | ||
24 | #include "w1_ds2760.h" | 23 | #include "w1_ds2760.h" |
25 | 24 | ||
25 | #define W1_FAMILY_DS2760 0x30 | ||
26 | |||
26 | static int w1_ds2760_io(struct device *dev, char *buf, int addr, size_t count, | 27 | static int w1_ds2760_io(struct device *dev, char *buf, int addr, size_t count, |
27 | int io) | 28 | int io) |
28 | { | 29 | { |
diff --git a/drivers/w1/slaves/w1_ds2780.c b/drivers/w1/slaves/w1_ds2780.c index 292972212107..a60528131154 100644 --- a/drivers/w1/slaves/w1_ds2780.c +++ b/drivers/w1/slaves/w1_ds2780.c | |||
@@ -21,11 +21,12 @@ | |||
21 | #include <linux/mutex.h> | 21 | #include <linux/mutex.h> |
22 | #include <linux/idr.h> | 22 | #include <linux/idr.h> |
23 | 23 | ||
24 | #include "../w1.h" | 24 | #include <linux/w1.h> |
25 | #include "../w1_int.h" | 25 | |
26 | #include "../w1_family.h" | ||
27 | #include "w1_ds2780.h" | 26 | #include "w1_ds2780.h" |
28 | 27 | ||
28 | #define W1_FAMILY_DS2780 0x32 | ||
29 | |||
29 | static int w1_ds2780_do_io(struct device *dev, char *buf, int addr, | 30 | static int w1_ds2780_do_io(struct device *dev, char *buf, int addr, |
30 | size_t count, int io) | 31 | size_t count, int io) |
31 | { | 32 | { |
diff --git a/drivers/w1/slaves/w1_ds2781.c b/drivers/w1/slaves/w1_ds2781.c index a5d75067b230..645be6e0b24a 100644 --- a/drivers/w1/slaves/w1_ds2781.c +++ b/drivers/w1/slaves/w1_ds2781.c | |||
@@ -18,11 +18,12 @@ | |||
18 | #include <linux/platform_device.h> | 18 | #include <linux/platform_device.h> |
19 | #include <linux/mutex.h> | 19 | #include <linux/mutex.h> |
20 | 20 | ||
21 | #include "../w1.h" | 21 | #include <linux/w1.h> |
22 | #include "../w1_int.h" | 22 | |
23 | #include "../w1_family.h" | ||
24 | #include "w1_ds2781.h" | 23 | #include "w1_ds2781.h" |
25 | 24 | ||
25 | #define W1_FAMILY_DS2781 0x3D | ||
26 | |||
26 | static int w1_ds2781_do_io(struct device *dev, char *buf, int addr, | 27 | static int w1_ds2781_do_io(struct device *dev, char *buf, int addr, |
27 | size_t count, int io) | 28 | size_t count, int io) |
28 | { | 29 | { |
diff --git a/drivers/w1/slaves/w1_ds28e04.c b/drivers/w1/slaves/w1_ds28e04.c index c62858c05e8f..ec234b846eb3 100644 --- a/drivers/w1/slaves/w1_ds28e04.c +++ b/drivers/w1/slaves/w1_ds28e04.c | |||
@@ -20,9 +20,9 @@ | |||
20 | #define CRC16_INIT 0 | 20 | #define CRC16_INIT 0 |
21 | #define CRC16_VALID 0xb001 | 21 | #define CRC16_VALID 0xb001 |
22 | 22 | ||
23 | #include "../w1.h" | 23 | #include <linux/w1.h> |
24 | #include "../w1_int.h" | 24 | |
25 | #include "../w1_family.h" | 25 | #define W1_FAMILY_DS28E04 0x1C |
26 | 26 | ||
27 | /* Allow the strong pullup to be disabled, but default to enabled. | 27 | /* Allow the strong pullup to be disabled, but default to enabled. |
28 | * If it was disabled a parasite powered device might not get the required | 28 | * If it was disabled a parasite powered device might not get the required |
diff --git a/drivers/w1/slaves/w1_smem.c b/drivers/w1/slaves/w1_smem.c index 99b03bfb9941..e556b0caff71 100644 --- a/drivers/w1/slaves/w1_smem.c +++ b/drivers/w1/slaves/w1_smem.c | |||
@@ -27,9 +27,10 @@ | |||
27 | #include <linux/device.h> | 27 | #include <linux/device.h> |
28 | #include <linux/types.h> | 28 | #include <linux/types.h> |
29 | 29 | ||
30 | #include "../w1.h" | 30 | #include <linux/w1.h> |
31 | #include "../w1_int.h" | 31 | |
32 | #include "../w1_family.h" | 32 | #define W1_FAMILY_SMEM_01 0x01 |
33 | #define W1_FAMILY_SMEM_81 0x81 | ||
33 | 34 | ||
34 | static struct w1_family w1_smem_family_01 = { | 35 | static struct w1_family w1_smem_family_01 = { |
35 | .fid = W1_FAMILY_SMEM_01, | 36 | .fid = W1_FAMILY_SMEM_01, |
diff --git a/drivers/w1/slaves/w1_therm.c b/drivers/w1/slaves/w1_therm.c index ccaf29994a42..cb3fc3c6b0d1 100644 --- a/drivers/w1/slaves/w1_therm.c +++ b/drivers/w1/slaves/w1_therm.c | |||
@@ -30,9 +30,13 @@ | |||
30 | #include <linux/slab.h> | 30 | #include <linux/slab.h> |
31 | #include <linux/delay.h> | 31 | #include <linux/delay.h> |
32 | 32 | ||
33 | #include "../w1.h" | 33 | #include <linux/w1.h> |
34 | #include "../w1_int.h" | 34 | |
35 | #include "../w1_family.h" | 35 | #define W1_THERM_DS18S20 0x10 |
36 | #define W1_THERM_DS1822 0x22 | ||
37 | #define W1_THERM_DS18B20 0x28 | ||
38 | #define W1_THERM_DS1825 0x3B | ||
39 | #define W1_THERM_DS28EA00 0x42 | ||
36 | 40 | ||
37 | /* Allow the strong pullup to be disabled, but default to enabled. | 41 | /* Allow the strong pullup to be disabled, but default to enabled. |
38 | * If it was disabled a parasite powered device might not get the require | 42 | * If it was disabled a parasite powered device might not get the require |
diff --git a/drivers/w1/w1.c b/drivers/w1/w1.c index 8172dee5e23c..95ea7e6b1d99 100644 --- a/drivers/w1/w1.c +++ b/drivers/w1/w1.c | |||
@@ -28,11 +28,11 @@ | |||
28 | 28 | ||
29 | #include <linux/atomic.h> | 29 | #include <linux/atomic.h> |
30 | 30 | ||
31 | #include "w1.h" | 31 | #include "w1_internal.h" |
32 | #include "w1_int.h" | ||
33 | #include "w1_family.h" | ||
34 | #include "w1_netlink.h" | 32 | #include "w1_netlink.h" |
35 | 33 | ||
34 | #define W1_FAMILY_DEFAULT 0 | ||
35 | |||
36 | static int w1_timeout = 10; | 36 | static int w1_timeout = 10; |
37 | module_param_named(timeout, w1_timeout, int, 0); | 37 | module_param_named(timeout, w1_timeout, int, 0); |
38 | MODULE_PARM_DESC(timeout, "time in seconds between automatic slave searches"); | 38 | MODULE_PARM_DESC(timeout, "time in seconds between automatic slave searches"); |
diff --git a/drivers/w1/w1_family.c b/drivers/w1/w1_family.c index 9759cdaf22f4..f14ab0b340b5 100644 --- a/drivers/w1/w1_family.c +++ b/drivers/w1/w1_family.c | |||
@@ -18,8 +18,7 @@ | |||
18 | #include <linux/delay.h> | 18 | #include <linux/delay.h> |
19 | #include <linux/export.h> | 19 | #include <linux/export.h> |
20 | 20 | ||
21 | #include "w1_family.h" | 21 | #include "w1_internal.h" |
22 | #include "w1.h" | ||
23 | 22 | ||
24 | DEFINE_SPINLOCK(w1_flock); | 23 | DEFINE_SPINLOCK(w1_flock); |
25 | static LIST_HEAD(w1_families); | 24 | static LIST_HEAD(w1_families); |
diff --git a/drivers/w1/w1_family.h b/drivers/w1/w1_family.h deleted file mode 100644 index 869a3ff87d29..000000000000 --- a/drivers/w1/w1_family.h +++ /dev/null | |||
@@ -1,98 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2004 Evgeniy Polyakov <zbr@ioremap.net> | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation; either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | */ | ||
14 | |||
15 | #ifndef __W1_FAMILY_H | ||
16 | #define __W1_FAMILY_H | ||
17 | |||
18 | #include <linux/types.h> | ||
19 | #include <linux/device.h> | ||
20 | #include <linux/atomic.h> | ||
21 | |||
22 | #define W1_FAMILY_DEFAULT 0 | ||
23 | #define W1_FAMILY_BQ27000 0x01 | ||
24 | #define W1_FAMILY_SMEM_01 0x01 | ||
25 | #define W1_FAMILY_SMEM_81 0x81 | ||
26 | #define W1_FAMILY_DS2405 0x05 | ||
27 | #define W1_THERM_DS18S20 0x10 | ||
28 | #define W1_FAMILY_DS28E04 0x1C | ||
29 | #define W1_COUNTER_DS2423 0x1D | ||
30 | #define W1_THERM_DS1822 0x22 | ||
31 | #define W1_EEPROM_DS2433 0x23 | ||
32 | #define W1_FAMILY_DS2438 0x26 | ||
33 | #define W1_THERM_DS18B20 0x28 | ||
34 | #define W1_FAMILY_DS2408 0x29 | ||
35 | #define W1_EEPROM_DS2431 0x2D | ||
36 | #define W1_FAMILY_DS2760 0x30 | ||
37 | #define W1_FAMILY_DS2780 0x32 | ||
38 | #define W1_FAMILY_DS2413 0x3A | ||
39 | #define W1_FAMILY_DS2406 0x12 | ||
40 | #define W1_THERM_DS1825 0x3B | ||
41 | #define W1_FAMILY_DS2781 0x3D | ||
42 | #define W1_THERM_DS28EA00 0x42 | ||
43 | |||
44 | #define MAXNAMELEN 32 | ||
45 | |||
46 | struct w1_slave; | ||
47 | |||
48 | /** | ||
49 | * struct w1_family_ops - operations for a family type | ||
50 | * @add_slave: add_slave | ||
51 | * @remove_slave: remove_slave | ||
52 | * @groups: sysfs group | ||
53 | */ | ||
54 | struct w1_family_ops | ||
55 | { | ||
56 | int (* add_slave)(struct w1_slave *); | ||
57 | void (* remove_slave)(struct w1_slave *); | ||
58 | const struct attribute_group **groups; | ||
59 | }; | ||
60 | |||
61 | /** | ||
62 | * struct w1_family - reference counted family structure. | ||
63 | * @family_entry: family linked list | ||
64 | * @fid: 8 bit family identifier | ||
65 | * @fops: operations for this family | ||
66 | * @refcnt: reference counter | ||
67 | */ | ||
68 | struct w1_family | ||
69 | { | ||
70 | struct list_head family_entry; | ||
71 | u8 fid; | ||
72 | |||
73 | struct w1_family_ops *fops; | ||
74 | |||
75 | atomic_t refcnt; | ||
76 | }; | ||
77 | |||
78 | extern spinlock_t w1_flock; | ||
79 | |||
80 | void w1_family_put(struct w1_family *); | ||
81 | void __w1_family_get(struct w1_family *); | ||
82 | struct w1_family * w1_family_registered(u8); | ||
83 | void w1_unregister_family(struct w1_family *); | ||
84 | int w1_register_family(struct w1_family *); | ||
85 | |||
86 | /** | ||
87 | * module_w1_driver() - Helper macro for registering a 1-Wire families | ||
88 | * @__w1_family: w1_family struct | ||
89 | * | ||
90 | * Helper macro for 1-Wire families which do not do anything special in module | ||
91 | * init/exit. This eliminates a lot of boilerplate. Each module may only | ||
92 | * use this macro once, and calling it replaces module_init() and module_exit() | ||
93 | */ | ||
94 | #define module_w1_family(__w1_family) \ | ||
95 | module_driver(__w1_family, w1_register_family, \ | ||
96 | w1_unregister_family) | ||
97 | |||
98 | #endif /* __W1_FAMILY_H */ | ||
diff --git a/drivers/w1/w1_int.c b/drivers/w1/w1_int.c index 4439d10709bb..1c776178f598 100644 --- a/drivers/w1/w1_int.c +++ b/drivers/w1/w1_int.c | |||
@@ -21,9 +21,8 @@ | |||
21 | #include <linux/export.h> | 21 | #include <linux/export.h> |
22 | #include <linux/moduleparam.h> | 22 | #include <linux/moduleparam.h> |
23 | 23 | ||
24 | #include "w1.h" | 24 | #include "w1_internal.h" |
25 | #include "w1_netlink.h" | 25 | #include "w1_netlink.h" |
26 | #include "w1_int.h" | ||
27 | 26 | ||
28 | static int w1_search_count = -1; /* Default is continual scan */ | 27 | static int w1_search_count = -1; /* Default is continual scan */ |
29 | module_param_named(search_count, w1_search_count, int, 0); | 28 | module_param_named(search_count, w1_search_count, int, 0); |
diff --git a/drivers/w1/w1_int.h b/drivers/w1/w1_int.h deleted file mode 100644 index 371989159216..000000000000 --- a/drivers/w1/w1_int.h +++ /dev/null | |||
@@ -1,27 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2004 Evgeniy Polyakov <zbr@ioremap.net> | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation; either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | */ | ||
14 | |||
15 | #ifndef __W1_INT_H | ||
16 | #define __W1_INT_H | ||
17 | |||
18 | #include <linux/kernel.h> | ||
19 | #include <linux/device.h> | ||
20 | |||
21 | #include "w1.h" | ||
22 | |||
23 | int w1_add_master_device(struct w1_bus_master *); | ||
24 | void w1_remove_master_device(struct w1_bus_master *); | ||
25 | void __w1_remove_master_device(struct w1_master *); | ||
26 | |||
27 | #endif /* __W1_INT_H */ | ||
diff --git a/drivers/w1/w1_internal.h b/drivers/w1/w1_internal.h new file mode 100644 index 000000000000..1623e2fdccc7 --- /dev/null +++ b/drivers/w1/w1_internal.h | |||
@@ -0,0 +1,87 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2004 Evgeniy Polyakov <zbr@ioremap.net> | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation; either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | */ | ||
14 | |||
15 | #ifndef __W1_H | ||
16 | #define __W1_H | ||
17 | |||
18 | #include <linux/w1.h> | ||
19 | |||
20 | #include <linux/completion.h> | ||
21 | #include <linux/mutex.h> | ||
22 | |||
23 | #define W1_SLAVE_ACTIVE 0 | ||
24 | #define W1_SLAVE_DETACH 1 | ||
25 | |||
26 | /** | ||
27 | * struct w1_async_cmd - execute callback from the w1_process kthread | ||
28 | * @async_entry: link entry | ||
29 | * @cb: callback function, must list_del and destroy this list before | ||
30 | * returning | ||
31 | * | ||
32 | * When inserted into the w1_master async_list, w1_process will execute | ||
33 | * the callback. Embed this into the structure with the command details. | ||
34 | */ | ||
35 | struct w1_async_cmd { | ||
36 | struct list_head async_entry; | ||
37 | void (*cb)(struct w1_master *dev, struct w1_async_cmd *async_cmd); | ||
38 | }; | ||
39 | |||
40 | int w1_create_master_attributes(struct w1_master *master); | ||
41 | void w1_destroy_master_attributes(struct w1_master *master); | ||
42 | void w1_search(struct w1_master *dev, u8 search_type, | ||
43 | w1_slave_found_callback cb); | ||
44 | void w1_search_devices(struct w1_master *dev, u8 search_type, | ||
45 | w1_slave_found_callback cb); | ||
46 | /* call w1_unref_slave to release the reference counts w1_search_slave added */ | ||
47 | struct w1_slave *w1_search_slave(struct w1_reg_num *id); | ||
48 | /* | ||
49 | * decrements the reference on sl->master and sl, and cleans up if zero | ||
50 | * returns the reference count after it has been decremented | ||
51 | */ | ||
52 | int w1_unref_slave(struct w1_slave *sl); | ||
53 | void w1_slave_found(struct w1_master *dev, u64 rn); | ||
54 | void w1_search_process_cb(struct w1_master *dev, u8 search_type, | ||
55 | w1_slave_found_callback cb); | ||
56 | struct w1_slave *w1_slave_search_device(struct w1_master *dev, | ||
57 | struct w1_reg_num *rn); | ||
58 | struct w1_master *w1_search_master_id(u32 id); | ||
59 | |||
60 | /* Disconnect and reconnect devices in the given family. Used for finding | ||
61 | * unclaimed devices after a family has been registered or releasing devices | ||
62 | * after a family has been unregistered. Set attach to 1 when a new family | ||
63 | * has just been registered, to 0 when it has been unregistered. | ||
64 | */ | ||
65 | void w1_reconnect_slaves(struct w1_family *f, int attach); | ||
66 | int w1_attach_slave_device(struct w1_master *dev, struct w1_reg_num *rn); | ||
67 | /* 0 success, otherwise EBUSY */ | ||
68 | int w1_slave_detach(struct w1_slave *sl); | ||
69 | |||
70 | void __w1_remove_master_device(struct w1_master *dev); | ||
71 | |||
72 | void w1_family_put(struct w1_family *f); | ||
73 | void __w1_family_get(struct w1_family *f); | ||
74 | struct w1_family *w1_family_registered(u8 fid); | ||
75 | |||
76 | extern struct device_driver w1_master_driver; | ||
77 | extern struct device w1_master_device; | ||
78 | extern int w1_max_slave_count; | ||
79 | extern int w1_max_slave_ttl; | ||
80 | extern struct list_head w1_masters; | ||
81 | extern struct mutex w1_mlock; | ||
82 | extern spinlock_t w1_flock; | ||
83 | |||
84 | int w1_process_callbacks(struct w1_master *dev); | ||
85 | int w1_process(void *data); | ||
86 | |||
87 | #endif /* __W1_H */ | ||
diff --git a/drivers/w1/w1_io.c b/drivers/w1/w1_io.c index 1134e6b1eb02..d191e1f80579 100644 --- a/drivers/w1/w1_io.c +++ b/drivers/w1/w1_io.c | |||
@@ -18,7 +18,7 @@ | |||
18 | #include <linux/moduleparam.h> | 18 | #include <linux/moduleparam.h> |
19 | #include <linux/module.h> | 19 | #include <linux/module.h> |
20 | 20 | ||
21 | #include "w1.h" | 21 | #include "w1_internal.h" |
22 | 22 | ||
23 | static int w1_delay_parm = 1; | 23 | static int w1_delay_parm = 1; |
24 | module_param_named(delay_coef, w1_delay_parm, int, 0); | 24 | module_param_named(delay_coef, w1_delay_parm, int, 0); |
diff --git a/drivers/w1/w1_netlink.c b/drivers/w1/w1_netlink.c index 027950f997d1..f2f099caeb77 100644 --- a/drivers/w1/w1_netlink.c +++ b/drivers/w1/w1_netlink.c | |||
@@ -17,7 +17,7 @@ | |||
17 | #include <linux/netlink.h> | 17 | #include <linux/netlink.h> |
18 | #include <linux/connector.h> | 18 | #include <linux/connector.h> |
19 | 19 | ||
20 | #include "w1.h" | 20 | #include "w1_internal.h" |
21 | #include "w1_netlink.h" | 21 | #include "w1_netlink.h" |
22 | 22 | ||
23 | #if defined(CONFIG_W1_CON) && (defined(CONFIG_CONNECTOR) || (defined(CONFIG_CONNECTOR_MODULE) && defined(CONFIG_W1_MODULE))) | 23 | #if defined(CONFIG_W1_CON) && (defined(CONFIG_CONNECTOR) || (defined(CONFIG_CONNECTOR_MODULE) && defined(CONFIG_W1_MODULE))) |
diff --git a/drivers/w1/w1_netlink.h b/drivers/w1/w1_netlink.h index b389e5ff5fa5..a36661cd1f05 100644 --- a/drivers/w1/w1_netlink.h +++ b/drivers/w1/w1_netlink.h | |||
@@ -18,7 +18,7 @@ | |||
18 | #include <asm/types.h> | 18 | #include <asm/types.h> |
19 | #include <linux/connector.h> | 19 | #include <linux/connector.h> |
20 | 20 | ||
21 | #include "w1.h" | 21 | #include "w1_internal.h" |
22 | 22 | ||
23 | /** | 23 | /** |
24 | * enum w1_cn_msg_flags - bitfield flags for struct cn_msg.flags | 24 | * enum w1_cn_msg_flags - bitfield flags for struct cn_msg.flags |
diff --git a/drivers/w1/w1.h b/include/linux/w1.h index 758a7a6322e9..90cbe7e65059 100644 --- a/drivers/w1/w1.h +++ b/include/linux/w1.h | |||
@@ -12,8 +12,10 @@ | |||
12 | * GNU General Public License for more details. | 12 | * GNU General Public License for more details. |
13 | */ | 13 | */ |
14 | 14 | ||
15 | #ifndef __W1_H | 15 | #ifndef __LINUX_W1_H |
16 | #define __W1_H | 16 | #define __LINUX_W1_H |
17 | |||
18 | #include <linux/device.h> | ||
17 | 19 | ||
18 | /** | 20 | /** |
19 | * struct w1_reg_num - broken out slave device id | 21 | * struct w1_reg_num - broken out slave device id |
@@ -22,8 +24,7 @@ | |||
22 | * @id: along with family is the unique device id | 24 | * @id: along with family is the unique device id |
23 | * @crc: checksum of the other bytes | 25 | * @crc: checksum of the other bytes |
24 | */ | 26 | */ |
25 | struct w1_reg_num | 27 | struct w1_reg_num { |
26 | { | ||
27 | #if defined(__LITTLE_ENDIAN_BITFIELD) | 28 | #if defined(__LITTLE_ENDIAN_BITFIELD) |
28 | __u64 family:8, | 29 | __u64 family:8, |
29 | id:48, | 30 | id:48, |
@@ -39,12 +40,6 @@ struct w1_reg_num | |||
39 | 40 | ||
40 | #ifdef __KERNEL__ | 41 | #ifdef __KERNEL__ |
41 | 42 | ||
42 | #include <linux/completion.h> | ||
43 | #include <linux/device.h> | ||
44 | #include <linux/mutex.h> | ||
45 | |||
46 | #include "w1_family.h" | ||
47 | |||
48 | #define W1_MAXNAMELEN 32 | 43 | #define W1_MAXNAMELEN 32 |
49 | 44 | ||
50 | #define W1_SEARCH 0xF0 | 45 | #define W1_SEARCH 0xF0 |
@@ -59,9 +54,6 @@ struct w1_reg_num | |||
59 | #define W1_MATCH_ROM 0x55 | 54 | #define W1_MATCH_ROM 0x55 |
60 | #define W1_RESUME_CMD 0xA5 | 55 | #define W1_RESUME_CMD 0xA5 |
61 | 56 | ||
62 | #define W1_SLAVE_ACTIVE 0 | ||
63 | #define W1_SLAVE_DETACH 1 | ||
64 | |||
65 | /** | 57 | /** |
66 | * struct w1_slave - holds a single slave device on the bus | 58 | * struct w1_slave - holds a single slave device on the bus |
67 | * | 59 | * |
@@ -78,8 +70,7 @@ struct w1_reg_num | |||
78 | * @dev: kernel device identifier | 70 | * @dev: kernel device identifier |
79 | * | 71 | * |
80 | */ | 72 | */ |
81 | struct w1_slave | 73 | struct w1_slave { |
82 | { | ||
83 | struct module *owner; | 74 | struct module *owner; |
84 | unsigned char name[W1_MAXNAMELEN]; | 75 | unsigned char name[W1_MAXNAMELEN]; |
85 | struct list_head w1_slave_entry; | 76 | struct list_head w1_slave_entry; |
@@ -96,7 +87,6 @@ struct w1_slave | |||
96 | 87 | ||
97 | typedef void (*w1_slave_found_callback)(struct w1_master *, u64); | 88 | typedef void (*w1_slave_found_callback)(struct w1_master *, u64); |
98 | 89 | ||
99 | |||
100 | /** | 90 | /** |
101 | * struct w1_bus_master - operations available on a bus master | 91 | * struct w1_bus_master - operations available on a bus master |
102 | * | 92 | * |
@@ -142,8 +132,7 @@ typedef void (*w1_slave_found_callback)(struct w1_master *, u64); | |||
142 | * reset_bus. | 132 | * reset_bus. |
143 | * | 133 | * |
144 | */ | 134 | */ |
145 | struct w1_bus_master | 135 | struct w1_bus_master { |
146 | { | ||
147 | void *data; | 136 | void *data; |
148 | 137 | ||
149 | u8 (*read_bit)(void *); | 138 | u8 (*read_bit)(void *); |
@@ -209,8 +198,7 @@ enum w1_master_flags { | |||
209 | * @bus_master: io operations available | 198 | * @bus_master: io operations available |
210 | * @seq: sequence number used for netlink broadcasts | 199 | * @seq: sequence number used for netlink broadcasts |
211 | */ | 200 | */ |
212 | struct w1_master | 201 | struct w1_master { |
213 | { | ||
214 | struct list_head w1_master_entry; | 202 | struct list_head w1_master_entry; |
215 | struct module *owner; | 203 | struct module *owner; |
216 | unsigned char name[W1_MAXNAMELEN]; | 204 | unsigned char name[W1_MAXNAMELEN]; |
@@ -254,45 +242,51 @@ struct w1_master | |||
254 | u32 seq; | 242 | u32 seq; |
255 | }; | 243 | }; |
256 | 244 | ||
245 | int w1_add_master_device(struct w1_bus_master *master); | ||
246 | void w1_remove_master_device(struct w1_bus_master *master); | ||
247 | |||
257 | /** | 248 | /** |
258 | * struct w1_async_cmd - execute callback from the w1_process kthread | 249 | * struct w1_family_ops - operations for a family type |
259 | * @async_entry: link entry | 250 | * @add_slave: add_slave |
260 | * @cb: callback function, must list_del and destroy this list before | 251 | * @remove_slave: remove_slave |
261 | * returning | 252 | * @groups: sysfs group |
262 | * | ||
263 | * When inserted into the w1_master async_list, w1_process will execute | ||
264 | * the callback. Embed this into the structure with the command details. | ||
265 | */ | 253 | */ |
266 | struct w1_async_cmd { | 254 | struct w1_family_ops { |
267 | struct list_head async_entry; | 255 | int (*add_slave)(struct w1_slave *sl); |
268 | void (*cb)(struct w1_master *dev, struct w1_async_cmd *async_cmd); | 256 | void (*remove_slave)(struct w1_slave *sl); |
257 | const struct attribute_group **groups; | ||
269 | }; | 258 | }; |
270 | 259 | ||
271 | int w1_create_master_attributes(struct w1_master *); | 260 | /** |
272 | void w1_destroy_master_attributes(struct w1_master *master); | 261 | * struct w1_family - reference counted family structure. |
273 | void w1_search(struct w1_master *dev, u8 search_type, w1_slave_found_callback cb); | 262 | * @family_entry: family linked list |
274 | void w1_search_devices(struct w1_master *dev, u8 search_type, w1_slave_found_callback cb); | 263 | * @fid: 8 bit family identifier |
275 | /* call w1_unref_slave to release the reference counts w1_search_slave added */ | 264 | * @fops: operations for this family |
276 | struct w1_slave *w1_search_slave(struct w1_reg_num *id); | 265 | * @refcnt: reference counter |
277 | /* decrements the reference on sl->master and sl, and cleans up if zero | 266 | */ |
278 | * returns the reference count after it has been decremented */ | 267 | struct w1_family { |
279 | int w1_unref_slave(struct w1_slave *sl); | 268 | struct list_head family_entry; |
280 | void w1_slave_found(struct w1_master *dev, u64 rn); | 269 | u8 fid; |
281 | void w1_search_process_cb(struct w1_master *dev, u8 search_type, | 270 | |
282 | w1_slave_found_callback cb); | 271 | struct w1_family_ops *fops; |
283 | struct w1_slave *w1_slave_search_device(struct w1_master *dev, | 272 | |
284 | struct w1_reg_num *rn); | 273 | atomic_t refcnt; |
285 | struct w1_master *w1_search_master_id(u32 id); | 274 | }; |
286 | 275 | ||
287 | /* Disconnect and reconnect devices in the given family. Used for finding | 276 | int w1_register_family(struct w1_family *family); |
288 | * unclaimed devices after a family has been registered or releasing devices | 277 | void w1_unregister_family(struct w1_family *family); |
289 | * after a family has been unregistered. Set attach to 1 when a new family | 278 | |
290 | * has just been registered, to 0 when it has been unregistered. | 279 | /** |
280 | * module_w1_driver() - Helper macro for registering a 1-Wire families | ||
281 | * @__w1_family: w1_family struct | ||
282 | * | ||
283 | * Helper macro for 1-Wire families which do not do anything special in module | ||
284 | * init/exit. This eliminates a lot of boilerplate. Each module may only | ||
285 | * use this macro once, and calling it replaces module_init() and module_exit() | ||
291 | */ | 286 | */ |
292 | void w1_reconnect_slaves(struct w1_family *f, int attach); | 287 | #define module_w1_family(__w1_family) \ |
293 | int w1_attach_slave_device(struct w1_master *dev, struct w1_reg_num *rn); | 288 | module_driver(__w1_family, w1_register_family, \ |
294 | /* 0 success, otherwise EBUSY */ | 289 | w1_unregister_family) |
295 | int w1_slave_detach(struct w1_slave *sl); | ||
296 | 290 | ||
297 | u8 w1_triplet(struct w1_master *dev, int bdir); | 291 | u8 w1_triplet(struct w1_master *dev, int bdir); |
298 | void w1_write_8(struct w1_master *, u8); | 292 | void w1_write_8(struct w1_master *, u8); |
@@ -321,16 +315,6 @@ static inline struct w1_master* dev_to_w1_master(struct device *dev) | |||
321 | return container_of(dev, struct w1_master, dev); | 315 | return container_of(dev, struct w1_master, dev); |
322 | } | 316 | } |
323 | 317 | ||
324 | extern struct device_driver w1_master_driver; | ||
325 | extern struct device w1_master_device; | ||
326 | extern int w1_max_slave_count; | ||
327 | extern int w1_max_slave_ttl; | ||
328 | extern struct list_head w1_masters; | ||
329 | extern struct mutex w1_mlock; | ||
330 | |||
331 | extern int w1_process_callbacks(struct w1_master *dev); | ||
332 | extern int w1_process(void *); | ||
333 | |||
334 | #endif /* __KERNEL__ */ | 318 | #endif /* __KERNEL__ */ |
335 | 319 | ||
336 | #endif /* __W1_H */ | 320 | #endif /* __LINUX_W1_H */ |