aos/devices/ti_twl6030.dev
Daniel Schwyn 6d444bf552 Main handout
Signed-off-by: Daniel Schwyn <daniel.schwyn@inf.ethz.ch>
2022-03-03 14:57:51 +01:00

160 lines
5.7 KiB
Plaintext

/*
* Copyright (c) 2012, ETH Zurich. All rights reserved.
*
* This file is distributed under the terms in the attached LICENSE file.
* If you do not find this file, copies can be found by writing to:
* ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group.
*/
/*
* ti_twl6030.dev
*
* DESCRIPTION: TI TWL6030 Power Companion IC
*
* Section numbers refer to TWL6030 Register Map
* (Literature Number: SWCU084)
*
* Talking to this device will usually go over I2C, but it's still helpful to
* have the register definitions
*
* TODO: need to add everything other than VMMC -SG
*/
device ti_twl6030 msbfirst (addr b) "TI TWL6030 Power Companion (via I2C)" {
// dummy set of constants representing the I2C addresses of the different
// register groups
constants i2c_addrs "Physical (I2C) addresses" {
i2c_addr_vmmc = 0x48 "VMMC I2C address";
};
// address spaces for I2C physical adresses
// id1 == i2c addr 0x48
space id1(i) valuewise "Registers accessed via I2C addr 0x48";
regtype cfg_grp "Group Configuration" {
_ 5 rsvd;
grp_mod 1 "Modem Power Group";
grp_con 1 "Connectivity Power Group";
grp_app 1 "Application Power Group";
};
constants transition_cmd width(2) "Transition Command" {
tcmd_off = 0b00 "Off";
tcmd_ams = 0b01 "Sleep/Active";
// 0b10 is reserved
tcmd_act = 0b11 "Active";
};
regtype cfg_trans "Transition Configuration" { // not sure about name, guessing -SG
_ 2 rsvd;
off 2 type(transition_cmd) "off state";
sleep 2 type(transition_cmd) "sleep state";
active 2 type(transition_cmd) "active state";
};
constants pwrstate width(2) "Power State" {
pwr_off = 0b00 "Off";
pwr_on = 0b01 "On";
pwr_off_2 = 0b10 "Off";
pwr_sleep = 0b11 "Sleep";
};
regtype cfg_state_w "State configuration (write)" {
grp_mod 1 "Set if apply state to modem power group";
grp_con 1 "Set if apply state to connectivity power group";
grp_app 1 "Set if apply state to application power group";
_ 3 rsvd;
state 2 type(pwrstate) "Resource state to apply";
};
regtype cfg_state_r "State configuration (read)" {
mod_state 2 type(pwrstate) "Resource state for modem power group";
con_state 2 type(pwrstate) "Resource state for connectivity power group";
app_state 2 type(pwrstate) "Resource state for application power group";
state 2 type(pwrstate) "Resource state after power group arbitration";
};
constants wr width(1) "Warm reset" {
wr_reload_dflt = 0b0 "Reload default VSEL value on warm reset";
wr_keep = 0b1 "Keep voltage configuration settings on warm reset";
};
// Table 121
constants vsel width(5) "Voltage selector" {
v0v0 = 0b00000 "0.0V";
v1v0 = 0b00001 "1.0V";
v1v1 = 0b00010 "1.1V";
v1v2 = 0b00011 "1.2V";
v1v3 = 0b00100 "1.3V";
v1v4 = 0b00101 "1.4V";
v1v5 = 0b00110 "1.5V";
v1v6 = 0b00111 "1.6V";
v1v7 = 0b01000 "1.7V";
v1v8 = 0b01001 "1.8V";
v1v9 = 0b01010 "1.9V";
v2v0 = 0b01011 "2.0V";
v2v1 = 0b01100 "2.1V";
v2v2 = 0b01101 "2.2V";
v2v3 = 0b01110 "2.3V";
v2v4 = 0b01111 "2.4V";
v2v5 = 0b10000 "2.5V";
v2v6 = 0b10001 "2.6V";
v2v7 = 0b10010 "2.7V";
v2v8 = 0b10011 "2.8V";
v2v9 = 0b10100 "2.9V";
v3v0 = 0b10101 "3.0V";
v3v1 = 0b10110 "3.1V";
v3v2 = 0b10111 "3.2V";
v3v3 = 0b11000 "3.3V";
// 0b11001 - 0b11110 reserved
v2v75 = 0b11111 "2.75V";
};
regtype cfg_voltage "Voltage configuration" {
wr_s 1 type(wr) "Warm reset sensitivity";
_ 2 rsvd;
vsel 5 type(vsel) "Voltage to apply";
};
regtype cfg_voltage2 "Voltage configuration" {
wr_s 1 type(wr) "Warm reset sensitivity";
_ 1 rsvd;
vsel 6 "Voltage to apply";
};
register mmcctrl id1(0xEE) "MMCCTRL" {
_ 4 rsvd;
vmmc_auto_off 1 "Is the regulator turned off automatically in case card is extracted?";
sw_fc 1 "Configure the external receptable mechanical contact";
_ 1 rsvd;
sts_mmc 1 "Is card present?";
};
register mmcdebouncing id1(0xED) "MMC Debouncing" {
mmc_dev_bypass 1 "Is MMC debouncing bypassed?";
mins_deb 4 "Card insertion debouncing time";
mext_deb 3 "Card extraction debouncing time";
};
register vcore_cfg_voltage id1(0x62) "VCORE3 Config Voltage" type(cfg_voltage2);
// VMMC registers
// Table 152
//register vmmc_cfg_grp addr(b, 0x98) "VMMC Group Configuration" type(cfg_grp);
register vmmc_cfg_grp id1(0x98) "VMMC Group Configuration" type(cfg_grp);
// Table 153
//register vmmc_cfg_trans addr(b, 0x99) "VMMC Transition Configuration" type(cfg_trans);
register vmmc_cfg_trans id1(0x99) "VMMC Transition Configuration" type(cfg_trans);
// Table 154
//register vmmc_cfg_state_w wo addr(b, 0x9A) "VMMC State Configuration (write format)" type(cfg_state_w);
register vmmc_cfg_state_w wo id1(0x9A) "VMMC State Configuration (write format)" type(cfg_state_w);
// Table 155
//register vmmc_cfg_state_r ro also addr(b, 0x9A) "VMMC State Configuration (read format)" type(cfg_state_r);
register vmmc_cfg_state_r ro also id1(0x9A) "VMMC State Configuration (read format)" type(cfg_state_r);
// Table 156
//register vmmc_cfg_voltage addr(b, 0x9B) "VMMC Voltage Configuration" type(cfg_voltage);
register vmmc_cfg_voltage id1(0x9B) "VMMC Voltage Configuration" type(cfg_voltage);
};