diff options
Diffstat (limited to 'drivers/w1')
-rw-r--r-- | drivers/w1/masters/ds1wm.c | 5 | ||||
-rw-r--r-- | drivers/w1/masters/matrox_w1.c | 2 | ||||
-rw-r--r-- | drivers/w1/slaves/w1_therm.c | 9 | ||||
-rw-r--r-- | drivers/w1/w1.c | 2 | ||||
-rw-r--r-- | drivers/w1/w1_family.h | 3 |
5 files changed, 18 insertions, 3 deletions
diff --git a/drivers/w1/masters/ds1wm.c b/drivers/w1/masters/ds1wm.c index ad57593d224..a0c8965c1a7 100644 --- a/drivers/w1/masters/ds1wm.c +++ b/drivers/w1/masters/ds1wm.c @@ -109,6 +109,7 @@ struct ds1wm_data { /* byte to write that makes all intr disabled, */ /* considering active_state (IAS) (optimization) */ u8 int_en_reg_none; + unsigned int reset_recover_delay; /* see ds1wm.h */ }; static inline void ds1wm_write_register(struct ds1wm_data *ds1wm_data, u32 reg, @@ -187,6 +188,9 @@ static int ds1wm_reset(struct ds1wm_data *ds1wm_data) return 1; } + if (ds1wm_data->reset_recover_delay) + msleep(ds1wm_data->reset_recover_delay); + return 0; } @@ -490,6 +494,7 @@ static int ds1wm_probe(struct platform_device *pdev) } ds1wm_data->irq = res->start; ds1wm_data->int_en_reg_none = (plat->active_high ? DS1WM_INTEN_IAS : 0); + ds1wm_data->reset_recover_delay = plat->reset_recover_delay; if (res->flags & IORESOURCE_IRQ_HIGHEDGE) irq_set_irq_type(ds1wm_data->irq, IRQ_TYPE_EDGE_RISING); diff --git a/drivers/w1/masters/matrox_w1.c b/drivers/w1/masters/matrox_w1.c index 1550431ccb6..334d1ccf9c9 100644 --- a/drivers/w1/masters/matrox_w1.c +++ b/drivers/w1/masters/matrox_w1.c @@ -20,7 +20,7 @@ */ #include <asm/types.h> -#include <asm/atomic.h> +#include <linux/atomic.h> #include <asm/io.h> #include <linux/delay.h> diff --git a/drivers/w1/slaves/w1_therm.c b/drivers/w1/slaves/w1_therm.c index 17726a05a0a..402928b135d 100644 --- a/drivers/w1/slaves/w1_therm.c +++ b/drivers/w1/slaves/w1_therm.c @@ -86,6 +86,11 @@ static struct w1_family w1_therm_family_DS1822 = { .fops = &w1_therm_fops, }; +static struct w1_family w1_therm_family_DS28EA00 = { + .fid = W1_THERM_DS28EA00, + .fops = &w1_therm_fops, +}; + struct w1_therm_family_converter { u8 broken; @@ -111,6 +116,10 @@ static struct w1_therm_family_converter w1_therm_families[] = { .f = &w1_therm_family_DS18B20, .convert = w1_DS18B20_convert_temp }, + { + .f = &w1_therm_family_DS28EA00, + .convert = w1_DS18B20_convert_temp + }, }; static inline int w1_DS18B20_convert_temp(u8 rom[9]) diff --git a/drivers/w1/w1.c b/drivers/w1/w1.c index 10606c82275..6c136c19e98 100644 --- a/drivers/w1/w1.c +++ b/drivers/w1/w1.c @@ -33,7 +33,7 @@ #include <linux/kthread.h> #include <linux/freezer.h> -#include <asm/atomic.h> +#include <linux/atomic.h> #include "w1.h" #include "w1_log.h" diff --git a/drivers/w1/w1_family.h b/drivers/w1/w1_family.h index 97479ae70b9..98a1ac0f469 100644 --- a/drivers/w1/w1_family.h +++ b/drivers/w1/w1_family.h @@ -24,7 +24,7 @@ #include <linux/types.h> #include <linux/device.h> -#include <asm/atomic.h> +#include <linux/atomic.h> #define W1_FAMILY_DEFAULT 0 #define W1_FAMILY_SMEM_01 0x01 @@ -38,6 +38,7 @@ #define W1_EEPROM_DS2431 0x2D #define W1_FAMILY_DS2760 0x30 #define W1_FAMILY_DS2780 0x32 +#define W1_THERM_DS28EA00 0x42 #define MAXNAMELEN 32 |