Kernel driver da9052

Supported chips:

  • Dialog Semiconductors DA9052-BC and DA9053-AA/Bx PMICs

    Prefix: ‘da9052’

    Datasheet: Datasheet is not publicly available.

Authors: David Dajun Chen <dchen@diasemi.com>

Description

The DA9052/53 provides an Analogue to Digital Converter (ADC) with 10 bitsresolution and track and hold circuitry combined with an analogue inputmultiplexer. The analogue input multiplexer will allow conversion of up to 10different inputs. The track and hold circuit ensures stable input voltages atthe input of the ADC during the conversion.

The ADC is used to measure the following inputs:

Channel 0VDDOUT - measurement of the system voltage
Channel 1ICH - internal battery charger current measurement
Channel 2TBAT - output from the battery NTC
Channel 3VBAT - measurement of the battery voltage
Channel 4ADC_IN4 - high impedance input (0 - 2.5V)
Channel 5ADC_IN5 - high impedance input (0 - 2.5V)
Channel 6ADC_IN6 - high impedance input (0 - 2.5V)
Channel 7XY - TSI interface to measure the X and Y voltage of the touchscreen resistive potentiometers
Channel 8Internal Tjunc. - sense (internal temp. sensor)
Channel 9VBBAT - measurement of the backup battery voltage

By using sysfs attributes we can measure the system voltage VDDOUT, the batterycharging current ICH, battery temperature TBAT, battery junction temperatureTJUNC, battery voltage VBAT and the back up battery voltage VBBAT.

Voltage Monitoring

Voltages are sampled by a 10 bit ADC.

The battery voltage is calculated as:

Milli volt = ((ADC value * 1000) / 512) + 2500

The backup battery voltage is calculated as:

Milli volt = (ADC value * 2500) / 512;

The voltages on ADC channels 4, 5 and 6 are calculated as:

Milli volt = (ADC value * 2500) / 1023

Temperature Monitoring

Temperatures are sampled by a 10 bit ADC. Junction and battery temperaturesare monitored by the ADC channels.

The junction temperature is calculated:

Degrees celsius = 1.708 * (TJUNC_RES - T_OFFSET) - 108.8

The junction temperature attribute is supported by the driver.

The battery temperature is calculated:

Degree Celsius = 1 / (t1 + 1/298) - 273

where t1 = (1/B)* ln(( ADCval * 2.5)/(R25*ITBAT*255))

Default values of R25, B, ITBAT are 10e3, 3380 and 50e-6 respectively.