drivers: w1: Make 1-Wire Skip ROM cmd. optional
For systems with a true dynamic 1-Wire nature, the 1-Wire devices cannot be defined in the DeviceTree (the number of slaves in the system is not known during the build time). In other words, there are no pre-defined 1-Wire devices on the bus in DeviceTree, and thus the slave_count variable is always zero. That means the skip_rom functionality will always be called even if there are multiple devices connected to the bus. This commit allows the user to override this original behavior and avoid the skip_rom call by ignoring the slave count variable. Also, this work preserves full backward compatibility. Signed-off-by: Pavel Hübner <pavel.hubner@hardwario.com>
This commit is contained in:
parent
9988067c5a
commit
83d031c024
2 changed files with 14 additions and 1 deletions
|
@ -53,4 +53,17 @@ config W1_NET
|
||||||
help
|
help
|
||||||
Enable 1-wire network layer
|
Enable 1-wire network layer
|
||||||
|
|
||||||
|
config W1_NET_FORCE_MULTIDROP_ADDRESSING
|
||||||
|
bool "Force 1-Wire multidrop addressing"
|
||||||
|
depends on W1_NET
|
||||||
|
help
|
||||||
|
This option will ignore the number of 1-Wire
|
||||||
|
slave devices defined in the DTS. Specifically,
|
||||||
|
this option avoids the SKIP ROM command,
|
||||||
|
which is otherwise used in case of a single
|
||||||
|
1-Wire slave on the bus. In most cases, enabling
|
||||||
|
this option is not needed, yet it is essential
|
||||||
|
if multiple 1-Wire devices unspecified in the
|
||||||
|
DTS are interfaced.
|
||||||
|
|
||||||
endif # W1
|
endif # W1
|
||||||
|
|
|
@ -346,7 +346,7 @@ int w1_skip_rom(const struct device *dev, const struct w1_slave_config *config)
|
||||||
|
|
||||||
static int reset_select(const struct device *dev, const struct w1_slave_config *config)
|
static int reset_select(const struct device *dev, const struct w1_slave_config *config)
|
||||||
{
|
{
|
||||||
if (w1_get_slave_count(dev) > 1) {
|
if (IS_ENABLED(CONFIG_W1_NET_FORCE_MULTIDROP_ADDRESSING) || w1_get_slave_count(dev) > 1) {
|
||||||
return match_rom(dev, config);
|
return match_rom(dev, config);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue