1d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov/*
2d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov * 1-Wire implementation for the ds2760 chip
3d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov *
4d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov * Copyright © 2004-2005, Szabolcs Gyurko <szabolcs.gyurko@tlt.hu>
5d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov *
6d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov * Use consistent with the GNU GPL is permitted,
7d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov * provided that this copyright notice is
8d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov * preserved in its entirety in all copies and derived works.
9d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov *
10d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov */
11d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov
12d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov#ifndef __w1_ds2760_h__
13d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov#define __w1_ds2760_h__
14d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov
15d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov/* Known commands to the DS2760 chip */
16d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov#define W1_DS2760_SWAP			0xAA
17d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov#define W1_DS2760_READ_DATA		0x69
18d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov#define W1_DS2760_WRITE_DATA		0x6C
19d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov#define W1_DS2760_COPY_DATA		0x48
20d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov#define W1_DS2760_RECALL_DATA		0xB8
21d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov#define W1_DS2760_LOCK			0x6A
22d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov
23d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov/* Number of valid register addresses */
24d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov#define DS2760_DATA_SIZE		0x40
25d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov
26d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov#define DS2760_PROTECTION_REG		0x00
27d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov#define DS2760_STATUS_REG		0x01
28cef437e3a9b6d229d4ed3730cde047007267df6dDaniel Mack	#define DS2760_STATUS_IE	(1 << 2)
29cef437e3a9b6d229d4ed3730cde047007267df6dDaniel Mack	#define DS2760_STATUS_SWEN	(1 << 3)
30cef437e3a9b6d229d4ed3730cde047007267df6dDaniel Mack	#define DS2760_STATUS_RNAOP	(1 << 4)
31cef437e3a9b6d229d4ed3730cde047007267df6dDaniel Mack	#define DS2760_STATUS_PMOD	(1 << 5)
32d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov#define DS2760_EEPROM_REG		0x07
33d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov#define DS2760_SPECIAL_FEATURE_REG	0x08
34d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov#define DS2760_VOLTAGE_MSB		0x0c
35d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov#define DS2760_VOLTAGE_LSB		0x0d
36d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov#define DS2760_CURRENT_MSB		0x0e
37d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov#define DS2760_CURRENT_LSB		0x0f
38d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov#define DS2760_CURRENT_ACCUM_MSB	0x10
39d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov#define DS2760_CURRENT_ACCUM_LSB	0x11
40d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov#define DS2760_TEMP_MSB			0x18
41d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov#define DS2760_TEMP_LSB			0x19
42d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov#define DS2760_EEPROM_BLOCK0		0x20
43d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov#define DS2760_ACTIVE_FULL		0x20
44d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov#define DS2760_EEPROM_BLOCK1		0x30
45cef437e3a9b6d229d4ed3730cde047007267df6dDaniel Mack#define DS2760_STATUS_WRITE_REG		0x31
46d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov#define DS2760_RATED_CAPACITY		0x32
47d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov#define DS2760_CURRENT_OFFSET_BIAS	0x33
48d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov#define DS2760_ACTIVE_EMPTY		0x3b
49d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov
50d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsovextern int w1_ds2760_read(struct device *dev, char *buf, int addr,
51d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov			  size_t count);
52d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsovextern int w1_ds2760_write(struct device *dev, char *buf, int addr,
53d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov			   size_t count);
540b47b5703b1cc6c3aa89663ac70e28dadedf6cccDaniel Mackextern int w1_ds2760_store_eeprom(struct device *dev, int addr);
550b47b5703b1cc6c3aa89663ac70e28dadedf6cccDaniel Mackextern int w1_ds2760_recall_eeprom(struct device *dev, int addr);
56d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov
57d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7Anton Vorontsov#endif /* !__w1_ds2760_h__ */
58