/*      $NetBSD: ds2482owreg.h,v 1.1 2024/11/04 20:43:38 brad Exp $     */

/*
* Copyright (c) 2024 Brad Spencer <[email protected]>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/

#ifndef _DEV_I2C_DS2482REG_H_
#define _DEV_I2C_DS2482REG_H_

#define DS2482_LOWEST_ADDR              0x18
#define DS2482_HIGHEST_ADDR             0x1F

#define DS2482_DEVICE_RESET             0xF0
#define DS2482_SET_READ_POINTER         0xE1
#define         DS2482_REGISTER_STATUS  0xF0
#define                 DS2482_STATUS_1WB       0x01
#define                 DS2482_STATUS_PPD       0x02
#define                 DS2482_STATUS_SD        0x04
#define                 DS2482_STATUS_LL        0x08
#define                 DS2482_STATUS_RST       0x10
#define                 DS2482_STATUS_SBR       0x20
#define                         DS2482_STATUS_SBR_SHIFT 5
#define                 DS2482_STATUS_TSB       0x40
#define                 DS2482_STATUS_DIR       0x80
#define         DS2482_REGISTER_DATA    0xE1
#define         DS2482_REGISTER_CONFIG  0xC3
#define         DS2482_REGISTER_CHANNEL 0xD2 /* DS2482-800 only */
#define DS2482_WRITE_CONFIG             0xD2
#define         DS2482_CONFIG_1WS       0x08
#define         DS2482_CONFIG_SPU       0x04
#define         DS2482_CONFIG_APU       0x01
#define DS2482_SELECT_CHANNEL           0xC3 /* DS2482-800 only */
#define         DS2482_CHANNEL_IO0      0xF0
#define         DS2482_CHANNEL_IO1      0xE1
#define         DS2482_CHANNEL_IO2      0xD2
#define         DS2482_CHANNEL_IO3      0xC3
#define         DS2482_CHANNEL_IO4      0xB4
#define         DS2482_CHANNEL_IO5      0xA5
#define         DS2482_CHANNEL_IO6      0x96
#define         DS2482_CHANNEL_IO7      0x87
#define DS2482_ONEWIRE_RESET            0xB4
#define DS2482_ONEWIRE_SINGLE_BIT       0x87
#define         DS2482_ONEWIRE_BIT_ZERO         0x00
#define         DS2482_ONEWIRE_BIT_ONE          0x80
#define DS2482_ONEWIRE_WRITE_BYTE       0xA5
#define DS2482_ONEWIRE_READ_BYTE        0x96
#define DS2482_ONEWIRE_TRIPLET          0x78
#define         DS2482_TRIPLET_DIR_ZERO 0x00
#define         DS2482_TRIPLET_DIR_ONE  0x80

#endif