# 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_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
