Introduce an ability to specify microseconds bus scanning intervals in w1 core
Subsystems (2)
A message that is not in the archive (sent off-list or not yet received): [email protected]
A message that is not in the archive (sent off-list or not yet received): [email protected]
PATCH 1/1 Introduce an ability to specify microseconds bus scanning intervals in w1 core
DS1990* "iButtons" and compatible RFID card readers commonly found at physical access control systems are usually attached/generate presence for as short as 100 ms - hence the tens-to-hundreds milliseconds scan intervals are required.
Tested on Raspberry Pi model B+ with DS2482-100 bus master, tens-of-milliseconds intervals are easily achieved without significant CPU load (and with unknown accuracy), and though I doubt microseconds-scale intervals are really feasible in terms of practical use and underlying buses timings, I believe it makes sense to give the ability of using them to those willing to try.
drivers/w1/w1.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-)
---
drivers/w1/w1.c +16 -1
@@ -46,11 +46,15 @@ MODULE_AUTHOR("Evgeniy Polyakov <[email protected]>");MODULE_DESCRIPTION ("Driver for 1-wire Dallas network protocol." );static int w1_timeout =10 ; +static int w1_timeout_us =0 ;int w1_max_slave_count =64 ;int w1_max_slave_ttl =10 ;module_param_named (timeout, w1_timeout, int,0 );MODULE_PARM_DESC (timeout,"time in seconds between automatic slave searches" ); +module_param_named (timeout_us, w1_timeout_us, int,0 ); +MODULE_PARM_DESC (timeout,"time in microseconds between automatic slave" +"searches" );/* A search stops when w1_max_slave_count devices have been found in that * search. The next search will start over and detect the same set of devices * on a static 1-wire bus. Memory is not allocated based on this number, just
@@ -317,6 +321,14 @@ static ssize_t w1_master_attribute_show_timeout(struct device *dev, struct devicreturn count; } +static ssize_t w1_master_attribute_show_timeout_us (struct device *dev, +struct device_attribute *attr,char *buf) +{ +ssize_t count; + count =sprintf (buf,"%d\n" , w1_timeout_us); +return count; +} +static ssize_t w1_master_attribute_store_max_slave_count (struct device *dev,struct device_attribute *attr,const char *buf,size_t count) {
@@ -543,6 +555,7 @@ static W1_MASTER_ATTR_RO(slave_count, S_IRUGO); static W1_MASTER_ATTR_RW(max_slave_count, S_IRUGO | S_IWUSR | S_IWGRP); static W1_MASTER_ATTR_RO(attempts, S_IRUGO); static W1_MASTER_ATTR_RO(timeout, S_IRUGO); +static W1_MASTER_ATTR_RO(timeout_us, S_IRUGO); static W1_MASTER_ATTR_RO(pointer, S_IRUGO); static W1_MASTER_ATTR_RW(search, S_IRUGO | S_IWUSR | S_IWGRP); static W1_MASTER_ATTR_RW(pullup, S_IRUGO | S_IWUSR | S_IWGRP);
@@ -556,6 +569,7 @@ static struct attribute *w1_master_default_attrs[] = { &w1_master_attribute_max_slave_count.attr, &w1_master_attribute_attempts.attr, &w1_master_attribute_timeout.attr, + &w1_master_attribute_timeout_us.attr, &w1_master_attribute_pointer.attr, &w1_master_attribute_search.attr, &w1_master_attribute_pullup.attr,
@@ -1108,7 +1122,8 @@ int w1_process(void *data)/* As long as w1_timeout is only set by a module parameter the sleep * time can be calculated in jiffies once. */ -const unsigned long jtime =msecs_to_jiffies (w1_timeout *1000 ); +const unsigned long jtime = +usecs_to_jiffies (w1_timeout *1000000 + w1_timeout_us);/* remainder if it woke up early */ unsigned long jremain =0 ;
Randy Dunlap
reviewerQuoted 25 lines · Dmitry Khromov
DS1990* "iButtons" and compatible RFID card readers commonly found at physical access control systems are usually attached/generate presence for as short as 100 ms - hence the tens-to-hundreds milliseconds scan intervals are required.
Tested on Raspberry Pi model B+ with DS2482-100 bus master, tens-of-milliseconds intervals are easily achieved without significant CPU load (and with unknown accuracy), and though I doubt microseconds-scale intervals are really feasible in terms of practical use and underlying buses timings, I believe it makes sense to give the ability of using them to those willing to try.
Signed-off-by Dmitry Khromov <[email protected]>Acked-by Evgeniy Polyakov <[email protected]>drivers/w1/w1.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-)---
drivers/w1/w1.c +0
-0@@ -46,11 +46,15 @@ MODULE_AUTHOR("Evgeniy Polyakov <[email protected]>");MODULE_DESCRIPTION ("Driver for 1-wire Dallas network protocol." );
drivers/w1/w1.c MODULE_AUTHOR("Evgeniy Polyakov <[email protected]>"); · line 57
Quoted 10 lines
drivers/w1/w1.c +4
-0static int w1_timeout =10 ; +static int w1_timeout_us =0 ;int w1_max_slave_count =64 ;int w1_max_slave_ttl =10 ;module_param_named (timeout, w1_timeout, int,0 );MODULE_PARM_DESC (timeout,"time in seconds between automatic slave searches" ); +module_param_named (timeout_us, w1_timeout_us, int,0 ); +MODULE_PARM_DESC (timeout,"time in microseconds between automatic slave" +"searches" );
The description string needs a space between "slave" and "searches".
Quoted 3 lines
drivers/w1/w1.c +0
-0/* A search stops when w1_max_slave_count devices have been found in that * search. The next search will start over and detect the same set of devices * on a static 1-wire bus. Memory is not allocated based on this number, just
Signature · 1 line
~Randy
PATCH v2 1/1 w1: introduce an ability to specify microseconds bus scanning intervals
--- drivers/w1/w1.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-)
drivers/w1/w1.c +16 -1
@@ -46,11 +46,15 @@ MODULE_AUTHOR("Evgeniy Polyakov <[email protected]>");MODULE_DESCRIPTION ("Driver for 1-wire Dallas network protocol." );static int w1_timeout =10 ; +static int w1_timeout_us =0 ;int w1_max_slave_count =64 ;int w1_max_slave_ttl =10 ;module_param_named (timeout, w1_timeout, int,0 );MODULE_PARM_DESC (timeout,"time in seconds between automatic slave searches" ); +module_param_named (timeout_us, w1_timeout_us, int,0 ); +MODULE_PARM_DESC (timeout,"time in microseconds between automatic slave" +" searches" );/* A search stops when w1_max_slave_count devices have been found in that * search. The next search will start over and detect the same set of devices * on a static 1-wire bus. Memory is not allocated based on this number, just
@@ -317,6 +321,14 @@ static ssize_t w1_master_attribute_show_timeout(struct device *dev, struct devicreturn count; } +static ssize_t w1_master_attribute_show_timeout_us (struct device *dev, +struct device_attribute *attr,char *buf) +{ +ssize_t count; + count =sprintf (buf,"%d\n" , w1_timeout_us); +return count; +} +static ssize_t w1_master_attribute_store_max_slave_count (struct device *dev,struct device_attribute *attr,const char *buf,size_t count) {
@@ -543,6 +555,7 @@ static W1_MASTER_ATTR_RO(slave_count, S_IRUGO); static W1_MASTER_ATTR_RW(max_slave_count, S_IRUGO | S_IWUSR | S_IWGRP); static W1_MASTER_ATTR_RO(attempts, S_IRUGO); static W1_MASTER_ATTR_RO(timeout, S_IRUGO); +static W1_MASTER_ATTR_RO(timeout_us, S_IRUGO); static W1_MASTER_ATTR_RO(pointer, S_IRUGO); static W1_MASTER_ATTR_RW(search, S_IRUGO | S_IWUSR | S_IWGRP); static W1_MASTER_ATTR_RW(pullup, S_IRUGO | S_IWUSR | S_IWGRP);
@@ -556,6 +569,7 @@ static struct attribute *w1_master_default_attrs[] = { &w1_master_attribute_max_slave_count.attr, &w1_master_attribute_attempts.attr, &w1_master_attribute_timeout.attr, + &w1_master_attribute_timeout_us.attr, &w1_master_attribute_pointer.attr, &w1_master_attribute_search.attr, &w1_master_attribute_pullup.attr,
@@ -1108,7 +1122,8 @@ int w1_process(void *data)/* As long as w1_timeout is only set by a module parameter the sleep * time can be calculated in jiffies once. */ -const unsigned long jtime =msecs_to_jiffies (w1_timeout *1000 ); +const unsigned long jtime = +usecs_to_jiffies (w1_timeout *1000000 + w1_timeout_us);/* remainder if it woke up early */ unsigned long jremain =0 ;
Signature · 1 line
2.3.5
Re: [PATCH v2] w1: introduce an ability to specify microseconds bus scanning intervals
Hi
Looks good to me. Greg, please pull it into your tree.
23.04.2015, 00:56, "Dmitry Khromov" <[email protected]>:
Quoted 68 lines
Signed-off-by Dmitry Khromov <[email protected]>---
drivers/w1/w1.c | 17 ++++++++++++++++-1 file changed, 16 insertions(+), 1 deletion(-)drivers/w1/w1.c +16
-2@@ -46,11 +46,15 @@ MODULE_AUTHOR("Evgeniy Polyakov <[email protected]>"); MODULE_DESCRIPTION("Driver for 1-wire Dallas network protocol."); static int w1_timeout = 10; +static int w1_timeout_us =0 ; int w1_max_slave_count = 64; int w1_max_slave_ttl = 10; module_param_named(timeout, w1_timeout, int, 0); MODULE_PARM_DESC(timeout, "time in seconds between automatic slave searches"); +module_param_named (timeout_us, w1_timeout_us, int,0 ); +MODULE_PARM_DESC (timeout,"time in microseconds between automatic slave" + " searches"); /* A search stops when w1_max_slave_count devices have been found in that* search. The next search will start over and detect the same set of devices * on a static 1-wire bus. Memory is not allocated based on this number, just @@ -317,6 +321,14 @@ static ssize_t w1_master_attribute_show_timeout(struct device *dev, struct devic return count; } +static ssize_t w1_master_attribute_show_timeout_us (struct device *dev, +struct device_attribute *attr,char *buf) +{ +ssize_t count; + count =sprintf (buf,"%d\n" , w1_timeout_us); +return count; +} + static ssize_t w1_master_attribute_store_max_slave_count(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) {@@ -543,6 +555,7 @@ static W1_MASTER_ATTR_RO(slave_count, S_IRUGO); static W1_MASTER_ATTR_RW(max_slave_count, S_IRUGO | S_IWUSR | S_IWGRP); static W1_MASTER_ATTR_RO(attempts, S_IRUGO); static W1_MASTER_ATTR_RO(timeout, S_IRUGO); +static W1_MASTER_ATTR_RO(timeout_us, S_IRUGO); static W1_MASTER_ATTR_RO(pointer, S_IRUGO); static W1_MASTER_ATTR_RW(search, S_IRUGO | S_IWUSR | S_IWGRP); static W1_MASTER_ATTR_RW(pullup, S_IRUGO | S_IWUSR | S_IWGRP);@@ -556,6 +569,7 @@ static struct attribute *w1_master_default_attrs[] = { &w1_master_attribute_max_slave_count.attr, &w1_master_attribute_attempts.attr, &w1_master_attribute_timeout.attr, + &w1_master_attribute_timeout_us.attr, &w1_master_attribute_pointer.attr, &w1_master_attribute_search.attr, &w1_master_attribute_pullup.attr,@@ -1108,7 +1122,8 @@ int w1_process(void *data) /* As long as w1_timeout is only set by a module parameter the sleep* time can be calculated in jiffies once. */ -const unsigned long jtime =msecs_to_jiffies (w1_timeout *1000 ); +const unsigned long jtime = + usecs_to_jiffies(w1_timeout * 1000000 + w1_timeout_us); /* remainder if it woke up early */ unsigned long jremain = 0; --2.3.5
Re: [PATCH v2] w1: introduce an ability to specify microseconds bus scanning intervals
In reply to Dmitry KhromovQuoted 4 lines · Dmitry Khromov
Signed-off-by Dmitry Khromov <[email protected]>--- drivers/w1/w1.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-)
You added a new sysfs file, without any documentation about it added to Documentation/ABI, nor any reason why this needs to be done in the changelog entry for the patch.
I need _some_ kind of information here, sorry, I can't take this as-is.
thanks,
greg k-h
Re: [PATCH v2] w1: introduce an ability to specify microseconds bus scanning intervals
Quoted 9 lines · Greg KH
Quoted 4 lines · Dmitry Khromov
Signed-off-by Dmitry Khromov <[email protected]>--- drivers/w1/w1.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-)You added a new sysfs file, without any documentation about it added to
Documentation/ABI, nor any reason why this needs to be done in the changelog entry for the patch.
Sorry for that, the complete reason was given in the original version of the patch, I've added a short summary in the changelog for v3. Thanks for reminding about the documentation. I've added a short description and minor cosmetics to Documentation/w1/w1.generic to give a slightly more detailed idea on what's going on during the bus scan.
Please review.
Signature · 2 lines
Regards, - Dmitry
PATCH v3 1/1 w1: introduce an ability to specify microseconds bus scanning intervals
Some of 1-Wire devices commonly associated with physical access control systems are attached/generate presence for as short as 100 ms - hence the tens-to-hundreds milliseconds scan intervals are required.
--- Documentation/ABI/stable/sysfs-bus-w1 | 11 +++++++++++ Documentation/w1/w1.generic | 30 +++++++++++++++++++----------- drivers/w1/w1.c | 17 ++++++++++++++++- 3 files changed, 46 insertions(+), 12 deletions(-) create mode 100644 Documentation/ABI/stable/sysfs-bus-w1
Documentation/ABI/stable/sysfs-bus-w1 new file +11 -0
@@ -0,0 +1,11 @@ +What: /sys/bus/w1/devices/.../w1_master_timeout_us +Date: April 2015 +Contact: Dmitry Khromov <[email protected]> +Description: Bus scanning interval, microseconds component. + Some of 1-Wire devices commonly associated with physical access + control systems are attached/generate presence for as short as + 100 ms - hence the tens-to-hundreds milliseconds scan intervals + are required. + see Documentation/w1/w1.generic for detailed information. +Users: any user space application which wants to know bus scanning + interval
Documentation/w1/w1.generic +19 -11
@@ -76,21 +76,24 @@ See struct w1_bus_master definition in w1.h for details. w1 master sysfs interface ------------------------------------------------------------------ -<xx-xxxxxxxxxxxxx> - a directory for a found device. The format is family-serial +<xx-xxxxxxxxxxxxx> - A directory for a found device. The format is family-serial bus - (standard) symlink to the w1 bus driver - (standard) symlink to the w1 driver -w1_master_add - Manually register a slave device -w1_master_attempts - the number of times a search was attempted +w1_master_add - (rw) manually register a slave device +w1_master_attempts - (ro) the number of times a search was attempted w1_master_max_slave_count - - maximum number of slaves to search for at a time -w1_master_name - the name of the device (w1_bus_masterX) -w1_master_pullup - 5V strong pullup 0 enabled, 1 disabled -w1_master_remove - Manually remove a slave device -w1_master_search - the number of searches left to do, -1=continual (default) + - (rw) maximum number of slaves to search for at a time +w1_master_name - (ro) the name of the device (w1_bus_masterX) +w1_master_pullup - (rw) 5V strong pullup 0 enabled, 1 disabled +w1_master_remove - (rw) manually remove a slave device +w1_master_search - (rw) the number of searches left to do, + -1=continual (default) w1_master_slave_count - - the number of slaves found -w1_master_slaves - the names of the slaves, one per line -w1_master_timeout - the delay in seconds between searches + - (ro) the number of slaves found +w1_master_slaves - (ro) the names of the slaves, one per line +w1_master_timeout - (ro) the delay in seconds between searches +w1_master_timeout_us + - (ro) the delay in microseconds beetwen searches If you have a w1 bus that never changes (you don't add or remove devices), you can set the module parameter search_count to a small positive number
@@ -101,6 +104,11 @@ generally only make sense when searching is disabled, as a search will redetect manually removed devices that are present and timeout manually added devices that aren't on the bus. +Bus searches occur at an interval, specified as a summ of timeout and +timeout_us module parameters (either of which may be 0) for as long as +w1_master_search remains greater than 0 or is -1. Each search attempt +decrements w1_master_search by 1 (down to 0) and increments +w1_master_attempts by 1. w1 slave sysfs interface ------------------------------------------------------------------
drivers/w1/w1.c +16 -1
@@ -46,11 +46,15 @@ MODULE_AUTHOR("Evgeniy Polyakov <[email protected]>");MODULE_DESCRIPTION ("Driver for 1-wire Dallas network protocol." );static int w1_timeout =10 ; +static int w1_timeout_us =0 ;int w1_max_slave_count =64 ;int w1_max_slave_ttl =10 ;module_param_named (timeout, w1_timeout, int,0 );MODULE_PARM_DESC (timeout,"time in seconds between automatic slave searches" ); +module_param_named (timeout_us, w1_timeout_us, int,0 ); +MODULE_PARM_DESC (timeout,"time in microseconds between automatic slave" +" searches" );/* A search stops when w1_max_slave_count devices have been found in that * search. The next search will start over and detect the same set of devices * on a static 1-wire bus. Memory is not allocated based on this number, just
@@ -317,6 +321,14 @@ static ssize_t w1_master_attribute_show_timeout(struct device *dev, struct devicreturn count; } +static ssize_t w1_master_attribute_show_timeout_us (struct device *dev, +struct device_attribute *attr,char *buf) +{ +ssize_t count; + count =sprintf (buf,"%d\n" , w1_timeout_us); +return count; +} +static ssize_t w1_master_attribute_store_max_slave_count (struct device *dev,struct device_attribute *attr,const char *buf,size_t count) {
@@ -543,6 +555,7 @@ static W1_MASTER_ATTR_RO(slave_count, S_IRUGO); static W1_MASTER_ATTR_RW(max_slave_count, S_IRUGO | S_IWUSR | S_IWGRP); static W1_MASTER_ATTR_RO(attempts, S_IRUGO); static W1_MASTER_ATTR_RO(timeout, S_IRUGO); +static W1_MASTER_ATTR_RO(timeout_us, S_IRUGO); static W1_MASTER_ATTR_RO(pointer, S_IRUGO); static W1_MASTER_ATTR_RW(search, S_IRUGO | S_IWUSR | S_IWGRP); static W1_MASTER_ATTR_RW(pullup, S_IRUGO | S_IWUSR | S_IWGRP);
@@ -556,6 +569,7 @@ static struct attribute *w1_master_default_attrs[] = { &w1_master_attribute_max_slave_count.attr, &w1_master_attribute_attempts.attr, &w1_master_attribute_timeout.attr, + &w1_master_attribute_timeout_us.attr, &w1_master_attribute_pointer.attr, &w1_master_attribute_search.attr, &w1_master_attribute_pullup.attr,
@@ -1108,7 +1122,8 @@ int w1_process(void *data)/* As long as w1_timeout is only set by a module parameter the sleep * time can be calculated in jiffies once. */ -const unsigned long jtime =msecs_to_jiffies (w1_timeout *1000 ); +const unsigned long jtime = +usecs_to_jiffies (w1_timeout *1000000 + w1_timeout_us);/* remainder if it woke up early */ unsigned long jremain =0 ;
Signature · 1 line
2.3.5
PATCH v3 1/1 w1: introduce an ability to specify microseconds bus scanning intervals
In reply to Greg KHSome of 1-Wire devices commonly associated with physical access control systems are attached/generate presence for as short as 100 ms - hence the tens-to-hundreds milliseconds scan intervals are required.
--- Documentation/ABI/stable/sysfs-bus-w1 | 11 +++++++++++ Documentation/w1/w1.generic | 30 +++++++++++++++++++----------- drivers/w1/w1.c | 17 ++++++++++++++++- 3 files changed, 46 insertions(+), 12 deletions(-) create mode 100644 Documentation/ABI/stable/sysfs-bus-w1
Documentation/ABI/stable/sysfs-bus-w1 new file +11 -0
@@ -0,0 +1,11 @@ +What: /sys/bus/w1/devices/.../w1_master_timeout_us +Date: April 2015 +Contact: Dmitry Khromov <[email protected]> +Description: Bus scanning interval, microseconds component. + Some of 1-Wire devices commonly associated with physical access + control systems are attached/generate presence for as short as + 100 ms - hence the tens-to-hundreds milliseconds scan intervals + are required. + see Documentation/w1/w1.generic for detailed information. +Users: any user space application which wants to know bus scanning + interval
Documentation/w1/w1.generic +19 -11
@@ -76,21 +76,24 @@ See struct w1_bus_master definition in w1.h for details. w1 master sysfs interface ------------------------------------------------------------------ -<xx-xxxxxxxxxxxxx> - a directory for a found device. The format is family-serial +<xx-xxxxxxxxxxxxx> - A directory for a found device. The format is family-serial bus - (standard) symlink to the w1 bus driver - (standard) symlink to the w1 driver -w1_master_add - Manually register a slave device -w1_master_attempts - the number of times a search was attempted +w1_master_add - (rw) manually register a slave device +w1_master_attempts - (ro) the number of times a search was attempted w1_master_max_slave_count - - maximum number of slaves to search for at a time -w1_master_name - the name of the device (w1_bus_masterX) -w1_master_pullup - 5V strong pullup 0 enabled, 1 disabled -w1_master_remove - Manually remove a slave device -w1_master_search - the number of searches left to do, -1=continual (default) + - (rw) maximum number of slaves to search for at a time +w1_master_name - (ro) the name of the device (w1_bus_masterX) +w1_master_pullup - (rw) 5V strong pullup 0 enabled, 1 disabled +w1_master_remove - (rw) manually remove a slave device +w1_master_search - (rw) the number of searches left to do, + -1=continual (default) w1_master_slave_count - - the number of slaves found -w1_master_slaves - the names of the slaves, one per line -w1_master_timeout - the delay in seconds between searches + - (ro) the number of slaves found +w1_master_slaves - (ro) the names of the slaves, one per line +w1_master_timeout - (ro) the delay in seconds between searches +w1_master_timeout_us + - (ro) the delay in microseconds beetwen searches If you have a w1 bus that never changes (you don't add or remove devices), you can set the module parameter search_count to a small positive number
@@ -101,6 +104,11 @@ generally only make sense when searching is disabled, as a search will redetect manually removed devices that are present and timeout manually added devices that aren't on the bus. +Bus searches occur at an interval, specified as a summ of timeout and +timeout_us module parameters (either of which may be 0) for as long as +w1_master_search remains greater than 0 or is -1. Each search attempt +decrements w1_master_search by 1 (down to 0) and increments +w1_master_attempts by 1. w1 slave sysfs interface ------------------------------------------------------------------
drivers/w1/w1.c +16 -1
@@ -46,11 +46,15 @@ MODULE_AUTHOR("Evgeniy Polyakov <[email protected]>");MODULE_DESCRIPTION ("Driver for 1-wire Dallas network protocol." );static int w1_timeout =10 ; +static int w1_timeout_us =0 ;int w1_max_slave_count =64 ;int w1_max_slave_ttl =10 ;module_param_named (timeout, w1_timeout, int,0 );MODULE_PARM_DESC (timeout,"time in seconds between automatic slave searches" ); +module_param_named (timeout_us, w1_timeout_us, int,0 ); +MODULE_PARM_DESC (timeout,"time in microseconds between automatic slave" +" searches" );/* A search stops when w1_max_slave_count devices have been found in that * search. The next search will start over and detect the same set of devices * on a static 1-wire bus. Memory is not allocated based on this number, just
@@ -317,6 +321,14 @@ static ssize_t w1_master_attribute_show_timeout(struct device *dev, struct devicreturn count; } +static ssize_t w1_master_attribute_show_timeout_us (struct device *dev, +struct device_attribute *attr,char *buf) +{ +ssize_t count; + count =sprintf (buf,"%d\n" , w1_timeout_us); +return count; +} +static ssize_t w1_master_attribute_store_max_slave_count (struct device *dev,struct device_attribute *attr,const char *buf,size_t count) {
@@ -543,6 +555,7 @@ static W1_MASTER_ATTR_RO(slave_count, S_IRUGO); static W1_MASTER_ATTR_RW(max_slave_count, S_IRUGO | S_IWUSR | S_IWGRP); static W1_MASTER_ATTR_RO(attempts, S_IRUGO); static W1_MASTER_ATTR_RO(timeout, S_IRUGO); +static W1_MASTER_ATTR_RO(timeout_us, S_IRUGO); static W1_MASTER_ATTR_RO(pointer, S_IRUGO); static W1_MASTER_ATTR_RW(search, S_IRUGO | S_IWUSR | S_IWGRP); static W1_MASTER_ATTR_RW(pullup, S_IRUGO | S_IWUSR | S_IWGRP);
@@ -556,6 +569,7 @@ static struct attribute *w1_master_default_attrs[] = { &w1_master_attribute_max_slave_count.attr, &w1_master_attribute_attempts.attr, &w1_master_attribute_timeout.attr, + &w1_master_attribute_timeout_us.attr, &w1_master_attribute_pointer.attr, &w1_master_attribute_search.attr, &w1_master_attribute_pullup.attr,
@@ -1108,7 +1122,8 @@ int w1_process(void *data)/* As long as w1_timeout is only set by a module parameter the sleep * time can be calculated in jiffies once. */ -const unsigned long jtime =msecs_to_jiffies (w1_timeout *1000 ); +const unsigned long jtime = +usecs_to_jiffies (w1_timeout *1000000 + w1_timeout_us);/* remainder if it woke up early */ unsigned long jremain =0 ;
Signature · 1 line
2.3.5
Re: [PATCH v3] w1: introduce an ability to specify microseconds bus scanning intervals
Hi
12.05.2015, 22:30, "Dmitry Khromov" <[email protected]>:
Quoted 5 lines
Some of 1-Wire devices commonly associated with physical access control systems are attached/generate presence for as short as 100 ms - hence the tens-to-hundreds milliseconds scan intervals are required.
Signed-off-by Dmitry Khromov <[email protected]>
Greg, please pull it upstream
Re: [PATCH v3] w1: introduce an ability to specify microseconds bus scanning intervals
Quoted 11 lines · Evgeniy Polyakov
Hi
12.05.2015, 22:30, "Dmitry Khromov" <[email protected]>:
Quoted 5 lines
Some of 1-Wire devices commonly associated with physical access control systems are attached/generate presence for as short as 100 ms - hence the tens-to-hundreds milliseconds scan intervals are required.
Signed-off-by Dmitry Khromov <[email protected]>Greg, please pull it upstream
Acked-by Evgeniy Polyakov <[email protected]>
Ok, will do.