# SPDX-License-Identifier: GPL-2.0-only
#
# 1-wire slaves configuration
#

menu "1-wire Slaves"

config W1_SLAVE_THERM
	tristate "Thermal family implementation"
	help
	  Say Y here if you want to connect 1-wire thermal sensors to your
	  wire.

config W1_SLAVE_SMEM
	tristate "Simple 64bit memory family implementation"
	help
	  Say Y here if you want to connect 1-wire
	  simple 64bit memory rom(ds2401/ds2411/ds1990*) to your wire.

config W1_SLAVE_DS2405
	tristate "DS2405 Addressable Switch"
	help
	  Say Y or M here if you want to use a DS2405 1-wire
	  single-channel addressable switch.
	  This device can also work as a single-channel
	  binary remote sensor.

config W1_SLAVE_DS2408
	tristate "8-Channel Addressable Switch (IO Expander) 0x29 family support (DS2408)"
	help
	  Say Y here if you want to use a 1-wire
	  DS2408 8-Channel Addressable Switch device support

config W1_SLAVE_DS2408_READBACK
	bool "Read-back values written to DS2408's output register"
	depends on W1_SLAVE_DS2408
	default y
	help
	  Enabling this will cause the driver to read back the values written
	  to the chip's output register in order to detect errors.

	  This is slower but useful when debugging chips and/or busses.

config W1_SLAVE_DS2413
	tristate "Dual Channel Addressable Switch 0x3a family support (DS2413)"
	help
	  Say Y here if you want to use a 1-wire
	  DS2413 Dual Channel Addressable Switch device support

config W1_SLAVE_DS2406
	tristate "Dual Channel Addressable Switch 0x12 family support (DS2406)"
	select CRC16
	help
	  Say Y or M here if you want to use a 1-wire
	  DS2406 Dual Channel Addressable Switch.  EPROM read/write
	  support for these devices is not implemented.

config W1_SLAVE_DS2423
	tristate "Counter 1-wire device (DS2423)"
	select CRC16
	help
	  If you enable this you can read the counter values available
	  in the DS2423 chipset from the w1_slave file under the
	  sys file system.

	  Say Y here if you want to use a 1-wire
	  counter family device (DS2423).

config W1_SLAVE_DS2805
	tristate "112-byte EEPROM support (DS28E05)"
	help
	  Say Y here if you want to use a 1-wire
	  is a 112-byte user-programmable EEPROM is
	  organized as 7 pages of 16 bytes each with 64bit
	  unique number. Requires OverDrive Speed to talk to.

config W1_SLAVE_DS2430
	tristate "256b EEPROM family support (DS2430)"
	help
	  Say Y here if you want to use a 1-wire 256bit EEPROM
	  family device (DS2430).
	  This EEPROM is organized as one page of 32 bytes for random
	  access.

config W1_SLAVE_DS2431
	tristate "1kb EEPROM family support (DS2431)"
	help
	  Say Y here if you want to use a 1-wire
	  1kb EEPROM family device (DS2431)

config W1_SLAVE_DS2433
	tristate "4kb EEPROM family support (DS2433)"
	help
	  Say Y here if you want to use a 1-wire
	  4kb EEPROM family device (DS2433).

config W1_SLAVE_DS2433_CRC
	bool "Protect DS2433 data with a CRC16"
	depends on W1_SLAVE_DS2433
	select CRC16
	help
	  Say Y here to protect DS2433 data with a CRC16.
	  Each block has 30 bytes of data and a two byte CRC16.
	  Full block writes are only allowed if the CRC is valid.

config W1_SLAVE_DS2438
	tristate "DS2438 Smart Battery Monitor 0x26 family support"
	help
	  Say Y here if you want to use a 1-wire
	  DS2438 Smart Battery Monitor device support

config W1_SLAVE_DS250X
	tristate "512b/1kb/16kb EPROM family support"
	select CRC16
	help
	  Say Y here if you want to use a 1-wire
	  512b/1kb/16kb EPROM family device (DS250x).

config W1_SLAVE_DS2780
	tristate "Dallas 2780 battery monitor chip"
	help
	  If you enable this you will have the DS2780 battery monitor
	  chip support.

	  The battery monitor chip is used in many batteries/devices
	  as the one who is responsible for charging/discharging/monitoring
	  Li+ batteries.

	  If you are unsure, say N.

config W1_SLAVE_DS2781
	tristate "Dallas 2781 battery monitor chip"
	help
	  If you enable this you will have the DS2781 battery monitor
	  chip support.

	  The battery monitor chip is used in many batteries/devices
	  as the one who is responsible for charging/discharging/monitoring
	  Li+ batteries.

	  If you are unsure, say N.

config W1_SLAVE_DS28E04
	tristate "4096-Bit Addressable 1-Wire EEPROM with PIO (DS28E04-100)"
	select CRC16
	help
	  If you enable this you will have the DS28E04-100
	  chip support.

	  Say Y here if you want to use a 1-wire
	  4kb EEPROM with PIO family device (DS28E04).

	  If you are unsure, say N.

config W1_SLAVE_DS28E17
	tristate "1-wire-to-I2C master bridge (DS28E17)"
	select CRC16
	depends on I2C
	help
	  Say Y here if you want to use the DS28E17 1-wire-to-I2C master bridge.
	  For each DS28E17 detected, a new I2C adapter is created within the
	  kernel. I2C devices on that bus can be configured to be used by the
	  kernel and userspace tools as on any other "native" I2C bus.

	  This driver is also available as a module. If so, the module
	  will be called w1_ds28e17.

	  If you are unsure, say N.

endmenu
