75bd3009d3
Many i2c device drivers used similar code to access registers on the ICs they drive. This commit implements that functionality in libi2cdriver and updates the drivers to use the library instead of their own register access functions. The net result is 375+ fewer lines of code and less work for people developing new drivers. The two exceptions were cat24c256 and parts of tda19988. They access the bus in uncommon ways. It doesn't make sense at this time to move their read/write functions into libi2cdriver. Change-Id: Id8280b71af33b710a49944d7f20a7262be9f5988
71 lines
1.6 KiB
C
71 lines
1.6 KiB
C
#ifndef __TPS65950_H
|
|
#define __TPS65950_H
|
|
|
|
/*
|
|
* The chip is so huge it's split into multiple sub-modules, each with 256
|
|
* byte register maps on it's own slave addresses. Use ID1, ID2, ... to
|
|
* specify which sub-module to communicate with. Each slave address can have
|
|
* registers for one or more peripherals.
|
|
*/
|
|
|
|
/* Slave Address 0x48 (USB) */
|
|
#define ID1 0
|
|
|
|
/* Slave Address 0x49 (AUDIO_VOICE/GPIO/INTBR/PIH/TEST) */
|
|
#define ID2 1
|
|
|
|
/* Interface Bit Registers (INTBR) */
|
|
|
|
/* Chip Identifier
|
|
*
|
|
* When combined to uint32_t, these are the subfields:
|
|
* [31:28] - Silicon version number
|
|
* [27:12] - Part code number
|
|
* [11: 1] - Manufacturer code
|
|
* [ 0] - Least-significant bit (LSB)
|
|
*/
|
|
#define IDCODE_7_0_REG 0x85
|
|
#define IDCODE_15_8_REG 0x86
|
|
#define IDCODE_23_16_REG 0x87
|
|
#define IDCODE_31_24_REG 0x88
|
|
|
|
#define IDCODE_REV_1_0 0x00009002f
|
|
#define IDCODE_REV_1_1 0x01009002f
|
|
#define IDCODE_REV_1_2 0x03009002f
|
|
|
|
/* Write 0x49 to UNLOCK_TEST_REG to unlock reading of IDCODE and DIEID */
|
|
#define UNLOCK_TEST_REG 0x97
|
|
#define UNLOCK_TEST_CODE 0x49
|
|
|
|
|
|
/* Slave Address 0x4a (BCI/MADC/MAIN_CHARGE/PWM01/LED/PWMAB/KEYPAD) */
|
|
#define ID3 2
|
|
|
|
|
|
/* Slave Address 0x4b (BACKUP_REG/INT/PM_MASTER/SECURED_REG) */
|
|
#define ID4 3
|
|
|
|
/*
|
|
* Real Time Clock
|
|
*/
|
|
|
|
#define SECONDS_REG 0x1c
|
|
#define MINUTES_REG 0x1d
|
|
#define HOURS_REG 0x1e
|
|
#define DAYS_REG 0x1f
|
|
#define MONTHS_REG 0x20
|
|
#define YEARS_REG 0x21
|
|
|
|
#define RTC_CTRL_REG 0x00000029
|
|
#define GET_TIME_BIT 6
|
|
#define STOP_RTC_BIT 0
|
|
|
|
#define RTC_STATUS_REG 0x0000002A
|
|
#define RUN_BIT 1
|
|
|
|
#define NADDRESSES 4
|
|
|
|
extern endpoint_t bus_endpoint;
|
|
extern i2c_addr_t addresses[NADDRESSES];
|
|
|
|
#endif /* __TPS65950_H */
|