minix/drivers/tps65950
Thomas Cort 75bd3009d3 libi2cdriver: add functions for IC register access
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
2013-09-18 08:10:26 -04:00
..
Makefile tps65950: driver for the TPS65950 PMIC 2013-08-09 12:41:43 +02:00
README.txt tps65950: driver for the TPS65950 PMIC 2013-08-09 12:41:43 +02:00
rtc.c libi2cdriver: add functions for IC register access 2013-09-18 08:10:26 -04:00
rtc.h tps65950: driver for the TPS65950 PMIC 2013-08-09 12:41:43 +02:00
tps65950.c libi2cdriver: add functions for IC register access 2013-09-18 08:10:26 -04:00
tps65950.h libi2cdriver: add functions for IC register access 2013-09-18 08:10:26 -04:00

TPS65950 Driver (Power Management IC)
=====================================

Overview
--------

This driver is for the power management chip commonly found on the
BeagleBoard-xM.

Limitations
-----------

The TPS65950 has a pin labelled MSECURE which provides a form of write
protection. Depending on the pin's state (high or low), writing to certain
registers is disabled or enabled. The pin is driven by a GPIO on the SoC. 
There isn't a good way to access that pin on the SoC yet, so the PMIC
is always in the default insecure mode. It isn't really insecure as this
driver is the only one that the i2c bus driver will allow to access the
PMIC.

This is a huge chip. It has two I2C controllers, one with 4 slave addresses
hosting 256 registers per address. The TRM is over 900 pages. Given the
limited usefulness of some peripherals on the chip, not everything is
implemented.

Testing the Code
----------------

Starting up an instance:

/bin/service up /usr/sbin/tps65950 -label tps65950.1.48 \
	-args 'bus=1 address=0x48'

Killing an instance:

/bin/service down tps65950.1.48