162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0+ */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * da9211-regulator.h - Regulator definitions for DA9211/DA9212
462306a36Sopenharmony_ci * /DA9213/DA9223/DA9214/DA9224/DA9215/DA9225
562306a36Sopenharmony_ci * Copyright (C) 2015  Dialog Semiconductor Ltd.
662306a36Sopenharmony_ci */
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#ifndef __DA9211_REGISTERS_H__
962306a36Sopenharmony_ci#define __DA9211_REGISTERS_H__
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci/* Page selection */
1262306a36Sopenharmony_ci#define	DA9211_REG_PAGE_CON			0x00
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci/* System Control and Event Registers */
1562306a36Sopenharmony_ci#define	DA9211_REG_STATUS_A			0x50
1662306a36Sopenharmony_ci#define	DA9211_REG_STATUS_B			0x51
1762306a36Sopenharmony_ci#define	DA9211_REG_EVENT_A			0x52
1862306a36Sopenharmony_ci#define	DA9211_REG_EVENT_B			0x53
1962306a36Sopenharmony_ci#define	DA9211_REG_MASK_A			0x54
2062306a36Sopenharmony_ci#define	DA9211_REG_MASK_B			0x55
2162306a36Sopenharmony_ci#define	DA9211_REG_CONTROL_A		0x56
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci/* GPIO Control Registers */
2462306a36Sopenharmony_ci#define	DA9211_REG_GPIO_0_1			0x58
2562306a36Sopenharmony_ci#define	DA9211_REG_GPIO_2_3			0x59
2662306a36Sopenharmony_ci#define	DA9211_REG_GPIO_4			0x5A
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci/* Regulator Registers */
2962306a36Sopenharmony_ci#define	DA9211_REG_BUCKA_CONT			0x5D
3062306a36Sopenharmony_ci#define	DA9211_REG_BUCKB_CONT			0x5E
3162306a36Sopenharmony_ci#define	DA9211_REG_BUCK_ILIM			0xD0
3262306a36Sopenharmony_ci#define	DA9211_REG_BUCKA_CONF			0xD1
3362306a36Sopenharmony_ci#define	DA9211_REG_BUCKB_CONF			0xD2
3462306a36Sopenharmony_ci#define	DA9211_REG_BUCK_CONF			0xD3
3562306a36Sopenharmony_ci#define	DA9211_REG_VBACKA_MAX			0xD5
3662306a36Sopenharmony_ci#define	DA9211_REG_VBACKB_MAX			0xD6
3762306a36Sopenharmony_ci#define	DA9211_REG_VBUCKA_A				0xD7
3862306a36Sopenharmony_ci#define	DA9211_REG_VBUCKA_B				0xD8
3962306a36Sopenharmony_ci#define	DA9211_REG_VBUCKB_A				0xD9
4062306a36Sopenharmony_ci#define	DA9211_REG_VBUCKB_B				0xDA
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci/* I2C Interface Settings */
4362306a36Sopenharmony_ci#define DA9211_REG_INTERFACE			0x105
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci/* BUCK Phase Selection*/
4662306a36Sopenharmony_ci#define DA9211_REG_CONFIG_E			0x147
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci/* Device ID */
4962306a36Sopenharmony_ci#define	DA9211_REG_DEVICE_ID			0x201
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci/*
5262306a36Sopenharmony_ci * Registers bits
5362306a36Sopenharmony_ci */
5462306a36Sopenharmony_ci/* DA9211_REG_PAGE_CON (addr=0x00) */
5562306a36Sopenharmony_ci#define	DA9211_REG_PAGE_SHIFT			1
5662306a36Sopenharmony_ci#define	DA9211_REG_PAGE_MASK			0x06
5762306a36Sopenharmony_ci/* On I2C registers 0x00 - 0xFF */
5862306a36Sopenharmony_ci#define	DA9211_REG_PAGE0			0
5962306a36Sopenharmony_ci/* On I2C registers 0x100 - 0x1FF */
6062306a36Sopenharmony_ci#define	DA9211_REG_PAGE2			2
6162306a36Sopenharmony_ci#define	DA9211_PAGE_WRITE_MODE			0x00
6262306a36Sopenharmony_ci#define	DA9211_REPEAT_WRITE_MODE		0x40
6362306a36Sopenharmony_ci#define	DA9211_PAGE_REVERT			0x80
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ci/* DA9211_REG_STATUS_A (addr=0x50) */
6662306a36Sopenharmony_ci#define	DA9211_GPI0				0x01
6762306a36Sopenharmony_ci#define	DA9211_GPI1				0x02
6862306a36Sopenharmony_ci#define	DA9211_GPI2				0x04
6962306a36Sopenharmony_ci#define	DA9211_GPI3				0x08
7062306a36Sopenharmony_ci#define	DA9211_GPI4				0x10
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci/* DA9211_REG_EVENT_A (addr=0x52) */
7362306a36Sopenharmony_ci#define	DA9211_E_GPI0				0x01
7462306a36Sopenharmony_ci#define	DA9211_E_GPI1				0x02
7562306a36Sopenharmony_ci#define	DA9211_E_GPI2				0x04
7662306a36Sopenharmony_ci#define	DA9211_E_GPI3				0x08
7762306a36Sopenharmony_ci#define	DA9211_E_GPI4				0x10
7862306a36Sopenharmony_ci#define	DA9211_E_UVLO_IO			0x40
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ci/* DA9211_REG_EVENT_B (addr=0x53) */
8162306a36Sopenharmony_ci#define	DA9211_E_PWRGOOD_A			0x01
8262306a36Sopenharmony_ci#define	DA9211_E_PWRGOOD_B			0x02
8362306a36Sopenharmony_ci#define	DA9211_E_TEMP_WARN			0x04
8462306a36Sopenharmony_ci#define	DA9211_E_TEMP_CRIT			0x08
8562306a36Sopenharmony_ci#define	DA9211_E_OV_CURR_A			0x10
8662306a36Sopenharmony_ci#define	DA9211_E_OV_CURR_B			0x20
8762306a36Sopenharmony_ci
8862306a36Sopenharmony_ci/* DA9211_REG_MASK_A (addr=0x54) */
8962306a36Sopenharmony_ci#define	DA9211_M_GPI0				0x01
9062306a36Sopenharmony_ci#define	DA9211_M_GPI1				0x02
9162306a36Sopenharmony_ci#define	DA9211_M_GPI2				0x04
9262306a36Sopenharmony_ci#define	DA9211_M_GPI3				0x08
9362306a36Sopenharmony_ci#define	DA9211_M_GPI4				0x10
9462306a36Sopenharmony_ci#define	DA9211_M_UVLO_IO			0x40
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_ci/* DA9211_REG_MASK_B (addr=0x55) */
9762306a36Sopenharmony_ci#define	DA9211_M_PWRGOOD_A			0x01
9862306a36Sopenharmony_ci#define	DA9211_M_PWRGOOD_B			0x02
9962306a36Sopenharmony_ci#define	DA9211_M_TEMP_WARN			0x04
10062306a36Sopenharmony_ci#define	DA9211_M_TEMP_CRIT			0x08
10162306a36Sopenharmony_ci#define	DA9211_M_OV_CURR_A			0x10
10262306a36Sopenharmony_ci#define	DA9211_M_OV_CURR_B			0x20
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ci/* DA9211_REG_CONTROL_A (addr=0x56) */
10562306a36Sopenharmony_ci#define	DA9211_DEBOUNCING_SHIFT		0
10662306a36Sopenharmony_ci#define	DA9211_DEBOUNCING_MASK		0x07
10762306a36Sopenharmony_ci#define	DA9211_SLEW_RATE_SHIFT		3
10862306a36Sopenharmony_ci#define	DA9211_SLEW_RATE_A_MASK		0x18
10962306a36Sopenharmony_ci#define	DA9211_SLEW_RATE_B_SHIFT	5
11062306a36Sopenharmony_ci#define	DA9211_SLEW_RATE_B_MASK		0x60
11162306a36Sopenharmony_ci#define	DA9211_V_LOCK				0x80
11262306a36Sopenharmony_ci
11362306a36Sopenharmony_ci/* DA9211_REG_GPIO_0_1 (addr=0x58) */
11462306a36Sopenharmony_ci#define	DA9211_GPIO0_PIN_SHIFT		0
11562306a36Sopenharmony_ci#define	DA9211_GPIO0_PIN_MASK		0x03
11662306a36Sopenharmony_ci#define	DA9211_GPIO0_PIN_GPI		0x00
11762306a36Sopenharmony_ci#define	DA9211_GPIO0_PIN_GPO_OD		0x02
11862306a36Sopenharmony_ci#define	DA9211_GPIO0_PIN_GPO		0x03
11962306a36Sopenharmony_ci#define	DA9211_GPIO0_TYPE			0x04
12062306a36Sopenharmony_ci#define	DA9211_GPIO0_TYPE_GPI		0x00
12162306a36Sopenharmony_ci#define	DA9211_GPIO0_TYPE_GPO		0x04
12262306a36Sopenharmony_ci#define	DA9211_GPIO0_MODE			0x08
12362306a36Sopenharmony_ci#define	DA9211_GPIO1_PIN_SHIFT		4
12462306a36Sopenharmony_ci#define	DA9211_GPIO1_PIN_MASK		0x30
12562306a36Sopenharmony_ci#define	DA9211_GPIO1_PIN_GPI		0x00
12662306a36Sopenharmony_ci#define	DA9211_GPIO1_PIN_VERROR		0x10
12762306a36Sopenharmony_ci#define	DA9211_GPIO1_PIN_GPO_OD		0x20
12862306a36Sopenharmony_ci#define	DA9211_GPIO1_PIN_GPO		0x30
12962306a36Sopenharmony_ci#define	DA9211_GPIO1_TYPE_SHIFT		0x40
13062306a36Sopenharmony_ci#define	DA9211_GPIO1_TYPE_GPI		0x00
13162306a36Sopenharmony_ci#define	DA9211_GPIO1_TYPE_GPO		0x40
13262306a36Sopenharmony_ci#define	DA9211_GPIO1_MODE			0x80
13362306a36Sopenharmony_ci
13462306a36Sopenharmony_ci/* DA9211_REG_GPIO_2_3 (addr=0x59) */
13562306a36Sopenharmony_ci#define	DA9211_GPIO2_PIN_SHIFT		0
13662306a36Sopenharmony_ci#define	DA9211_GPIO2_PIN_MASK		0x03
13762306a36Sopenharmony_ci#define	DA9211_GPIO2_PIN_GPI		0x00
13862306a36Sopenharmony_ci#define	DA9211_GPIO5_PIN_BUCK_CLK	0x10
13962306a36Sopenharmony_ci#define	DA9211_GPIO2_PIN_GPO_OD		0x02
14062306a36Sopenharmony_ci#define	DA9211_GPIO2_PIN_GPO		0x03
14162306a36Sopenharmony_ci#define	DA9211_GPIO2_TYPE			0x04
14262306a36Sopenharmony_ci#define	DA9211_GPIO2_TYPE_GPI		0x00
14362306a36Sopenharmony_ci#define	DA9211_GPIO2_TYPE_GPO		0x04
14462306a36Sopenharmony_ci#define	DA9211_GPIO2_MODE			0x08
14562306a36Sopenharmony_ci#define	DA9211_GPIO3_PIN_SHIFT		4
14662306a36Sopenharmony_ci#define	DA9211_GPIO3_PIN_MASK		0x30
14762306a36Sopenharmony_ci#define	DA9211_GPIO3_PIN_GPI		0x00
14862306a36Sopenharmony_ci#define	DA9211_GPIO3_PIN_IERROR		0x10
14962306a36Sopenharmony_ci#define	DA9211_GPIO3_PIN_GPO_OD		0x20
15062306a36Sopenharmony_ci#define	DA9211_GPIO3_PIN_GPO		0x30
15162306a36Sopenharmony_ci#define	DA9211_GPIO3_TYPE_SHIFT		0x40
15262306a36Sopenharmony_ci#define	DA9211_GPIO3_TYPE_GPI		0x00
15362306a36Sopenharmony_ci#define	DA9211_GPIO3_TYPE_GPO		0x40
15462306a36Sopenharmony_ci#define	DA9211_GPIO3_MODE			0x80
15562306a36Sopenharmony_ci
15662306a36Sopenharmony_ci/* DA9211_REG_GPIO_4 (addr=0x5A) */
15762306a36Sopenharmony_ci#define	DA9211_GPIO4_PIN_SHIFT		0
15862306a36Sopenharmony_ci#define	DA9211_GPIO4_PIN_MASK		0x03
15962306a36Sopenharmony_ci#define	DA9211_GPIO4_PIN_GPI		0x00
16062306a36Sopenharmony_ci#define	DA9211_GPIO4_PIN_GPO_OD		0x02
16162306a36Sopenharmony_ci#define	DA9211_GPIO4_PIN_GPO		0x03
16262306a36Sopenharmony_ci#define	DA9211_GPIO4_TYPE			0x04
16362306a36Sopenharmony_ci#define	DA9211_GPIO4_TYPE_GPI		0x00
16462306a36Sopenharmony_ci#define	DA9211_GPIO4_TYPE_GPO		0x04
16562306a36Sopenharmony_ci#define	DA9211_GPIO4_MODE			0x08
16662306a36Sopenharmony_ci
16762306a36Sopenharmony_ci/* DA9211_REG_BUCKA_CONT (addr=0x5D) */
16862306a36Sopenharmony_ci#define	DA9211_BUCKA_EN				0x01
16962306a36Sopenharmony_ci#define	DA9211_BUCKA_GPI_SHIFT		1
17062306a36Sopenharmony_ci#define DA9211_BUCKA_GPI_MASK		0x06
17162306a36Sopenharmony_ci#define	DA9211_BUCKA_GPI_OFF		0x00
17262306a36Sopenharmony_ci#define	DA9211_BUCKA_GPI_GPIO0		0x02
17362306a36Sopenharmony_ci#define	DA9211_BUCKA_GPI_GPIO1		0x04
17462306a36Sopenharmony_ci#define	DA9211_BUCKA_GPI_GPIO3		0x06
17562306a36Sopenharmony_ci#define	DA9211_BUCKA_PD_DIS			0x08
17662306a36Sopenharmony_ci#define	DA9211_VBUCKA_SEL			0x10
17762306a36Sopenharmony_ci#define	DA9211_VBUCKA_SEL_A			0x00
17862306a36Sopenharmony_ci#define	DA9211_VBUCKA_SEL_B			0x10
17962306a36Sopenharmony_ci#define	DA9211_VBUCKA_GPI_SHIFT		5
18062306a36Sopenharmony_ci#define	DA9211_VBUCKA_GPI_MASK		0x60
18162306a36Sopenharmony_ci#define	DA9211_VBUCKA_GPI_OFF		0x00
18262306a36Sopenharmony_ci#define	DA9211_VBUCKA_GPI_GPIO1		0x20
18362306a36Sopenharmony_ci#define	DA9211_VBUCKA_GPI_GPIO2		0x40
18462306a36Sopenharmony_ci#define	DA9211_VBUCKA_GPI_GPIO4		0x60
18562306a36Sopenharmony_ci
18662306a36Sopenharmony_ci/* DA9211_REG_BUCKB_CONT (addr=0x5E) */
18762306a36Sopenharmony_ci#define	DA9211_BUCKB_EN				0x01
18862306a36Sopenharmony_ci#define	DA9211_BUCKB_GPI_SHIFT		1
18962306a36Sopenharmony_ci#define DA9211_BUCKB_GPI_MASK		0x06
19062306a36Sopenharmony_ci#define	DA9211_BUCKB_GPI_OFF		0x00
19162306a36Sopenharmony_ci#define	DA9211_BUCKB_GPI_GPIO0		0x02
19262306a36Sopenharmony_ci#define	DA9211_BUCKB_GPI_GPIO1		0x04
19362306a36Sopenharmony_ci#define	DA9211_BUCKB_GPI_GPIO3		0x06
19462306a36Sopenharmony_ci#define	DA9211_BUCKB_PD_DIS			0x08
19562306a36Sopenharmony_ci#define	DA9211_VBUCKB_SEL			0x10
19662306a36Sopenharmony_ci#define	DA9211_VBUCKB_SEL_A			0x00
19762306a36Sopenharmony_ci#define	DA9211_VBUCKB_SEL_B			0x10
19862306a36Sopenharmony_ci#define	DA9211_VBUCKB_GPI_SHIFT		5
19962306a36Sopenharmony_ci#define	DA9211_VBUCKB_GPI_MASK		0x60
20062306a36Sopenharmony_ci#define	DA9211_VBUCKB_GPI_OFF		0x00
20162306a36Sopenharmony_ci#define	DA9211_VBUCKB_GPI_GPIO1		0x20
20262306a36Sopenharmony_ci#define	DA9211_VBUCKB_GPI_GPIO2		0x40
20362306a36Sopenharmony_ci#define	DA9211_VBUCKB_GPI_GPIO4		0x60
20462306a36Sopenharmony_ci
20562306a36Sopenharmony_ci/* DA9211_REG_BUCK_ILIM (addr=0xD0) */
20662306a36Sopenharmony_ci#define DA9211_BUCKA_ILIM_SHIFT			0
20762306a36Sopenharmony_ci#define DA9211_BUCKA_ILIM_MASK			0x0F
20862306a36Sopenharmony_ci#define DA9211_BUCKB_ILIM_SHIFT			4
20962306a36Sopenharmony_ci#define DA9211_BUCKB_ILIM_MASK			0xF0
21062306a36Sopenharmony_ci
21162306a36Sopenharmony_ci/* DA9211_REG_BUCKA_CONF (addr=0xD1) */
21262306a36Sopenharmony_ci#define DA9211_BUCKA_MODE_SHIFT			0
21362306a36Sopenharmony_ci#define DA9211_BUCKA_MODE_MASK			0x03
21462306a36Sopenharmony_ci#define	DA9211_BUCKA_MODE_MANUAL		0x00
21562306a36Sopenharmony_ci#define	DA9211_BUCKA_MODE_SLEEP			0x01
21662306a36Sopenharmony_ci#define	DA9211_BUCKA_MODE_SYNC			0x02
21762306a36Sopenharmony_ci#define	DA9211_BUCKA_MODE_AUTO			0x03
21862306a36Sopenharmony_ci#define DA9211_BUCKA_UP_CTRL_SHIFT		2
21962306a36Sopenharmony_ci#define DA9211_BUCKA_UP_CTRL_MASK		0x1C
22062306a36Sopenharmony_ci#define DA9211_BUCKA_DOWN_CTRL_SHIFT	5
22162306a36Sopenharmony_ci#define DA9211_BUCKA_DOWN_CTRL_MASK		0xE0
22262306a36Sopenharmony_ci
22362306a36Sopenharmony_ci/* DA9211_REG_BUCKB_CONF (addr=0xD2) */
22462306a36Sopenharmony_ci#define DA9211_BUCKB_MODE_SHIFT			0
22562306a36Sopenharmony_ci#define DA9211_BUCKB_MODE_MASK			0x03
22662306a36Sopenharmony_ci#define	DA9211_BUCKB_MODE_MANUAL		0x00
22762306a36Sopenharmony_ci#define	DA9211_BUCKB_MODE_SLEEP			0x01
22862306a36Sopenharmony_ci#define	DA9211_BUCKB_MODE_SYNC			0x02
22962306a36Sopenharmony_ci#define	DA9211_BUCKB_MODE_AUTO			0x03
23062306a36Sopenharmony_ci#define DA9211_BUCKB_UP_CTRL_SHIFT		2
23162306a36Sopenharmony_ci#define DA9211_BUCKB_UP_CTRL_MASK		0x1C
23262306a36Sopenharmony_ci#define DA9211_BUCKB_DOWN_CTRL_SHIFT	5
23362306a36Sopenharmony_ci#define DA9211_BUCKB_DOWN_CTRL_MASK		0xE0
23462306a36Sopenharmony_ci
23562306a36Sopenharmony_ci/* DA9211_REG_BUCK_CONF (addr=0xD3) */
23662306a36Sopenharmony_ci#define DA9211_PHASE_SEL_A_SHIFT		0
23762306a36Sopenharmony_ci#define DA9211_PHASE_SEL_A_MASK			0x03
23862306a36Sopenharmony_ci#define DA9211_PHASE_SEL_B_SHIFT		2
23962306a36Sopenharmony_ci#define DA9211_PHASE_SEL_B_MASK			0x04
24062306a36Sopenharmony_ci#define DA9211_PH_SH_EN_A_SHIFT			3
24162306a36Sopenharmony_ci#define DA9211_PH_SH_EN_A_MASK			0x08
24262306a36Sopenharmony_ci#define DA9211_PH_SH_EN_B_SHIFT			4
24362306a36Sopenharmony_ci#define DA9211_PH_SH_EN_B_MASK			0x10
24462306a36Sopenharmony_ci
24562306a36Sopenharmony_ci/* DA9211_REG_VBUCKA_MAX (addr=0xD5) */
24662306a36Sopenharmony_ci#define DA9211_VBUCKA_BASE_SHIFT		0
24762306a36Sopenharmony_ci#define DA9211_VBUCKA_BASE_MASK			0x7F
24862306a36Sopenharmony_ci
24962306a36Sopenharmony_ci/* DA9211_REG_VBUCKB_MAX (addr=0xD6) */
25062306a36Sopenharmony_ci#define DA9211_VBUCKB_BASE_SHIFT		0
25162306a36Sopenharmony_ci#define DA9211_VBUCKB_BASE_MASK			0x7F
25262306a36Sopenharmony_ci
25362306a36Sopenharmony_ci/* DA9211_REG_VBUCKA/B_A/B (addr=0xD7/0xD8/0xD9/0xDA) */
25462306a36Sopenharmony_ci#define DA9211_VBUCK_SHIFT			0
25562306a36Sopenharmony_ci#define DA9211_VBUCK_MASK			0x7F
25662306a36Sopenharmony_ci#define DA9211_VBUCK_BIAS			0
25762306a36Sopenharmony_ci#define DA9211_BUCK_SL				0x80
25862306a36Sopenharmony_ci
25962306a36Sopenharmony_ci/* DA9211_REG_INTERFACE (addr=0x105) */
26062306a36Sopenharmony_ci#define DA9211_IF_BASE_ADDR_SHIFT		4
26162306a36Sopenharmony_ci#define DA9211_IF_BASE_ADDR_MASK		0xF0
26262306a36Sopenharmony_ci
26362306a36Sopenharmony_ci/* DA9211_REG_CONFIG_E (addr=0x147) */
26462306a36Sopenharmony_ci#define DA9211_SLAVE_SEL			0x40
26562306a36Sopenharmony_ci
26662306a36Sopenharmony_ci#endif	/* __DA9211_REGISTERS_H__ */
267