Blame view

include/axp209.h 2.7 KB
83d290c56   Tom Rini   SPDX: Convert all...
1
  /* SPDX-License-Identifier: GPL-2.0+ */
14bc66bd9   Henrik Nordstrom   sunxi: Add axp209...
2
3
  /*
   * (C) Copyright 2012 Henrik Nordstrom <henrik@henriknordstrom.net>
14bc66bd9   Henrik Nordstrom   sunxi: Add axp209...
4
   */
048447ce4   Olliver Schinagl   power: axp209: Us...
5
  #include <linux/bitops.h>
940382fe7   Paul Kocialkowski   power: axp209: Re...
6
7
8
  enum axp209_reg {
  	AXP209_POWER_STATUS = 0x00,
  	AXP209_CHIP_VERSION = 0x03,
beba401f0   Hans de Goede   sunxi: power: Add...
9
  	AXP209_OUTPUT_CTRL = 0x12,
940382fe7   Paul Kocialkowski   power: axp209: Re...
10
  	AXP209_DCDC2_VOLTAGE = 0x23,
61436d502   Olliver Schinagl   power: axp209: Ad...
11
  	AXP209_VRC_DCDC2_LDO3 = 0x25,
940382fe7   Paul Kocialkowski   power: axp209: Re...
12
13
14
15
16
17
18
19
20
21
  	AXP209_DCDC3_VOLTAGE = 0x27,
  	AXP209_LDO24_VOLTAGE = 0x28,
  	AXP209_LDO3_VOLTAGE = 0x29,
  	AXP209_IRQ_ENABLE1 = 0x40,
  	AXP209_IRQ_ENABLE2 = 0x41,
  	AXP209_IRQ_ENABLE3 = 0x42,
  	AXP209_IRQ_ENABLE4 = 0x43,
  	AXP209_IRQ_ENABLE5 = 0x44,
  	AXP209_IRQ_STATUS5 = 0x4c,
  	AXP209_SHUTDOWN = 0x32,
940382fe7   Paul Kocialkowski   power: axp209: Re...
22
  };
048447ce4   Olliver Schinagl   power: axp209: Us...
23
24
  #define AXP209_POWER_STATUS_ON_BY_DC	BIT(0)
  #define AXP209_POWER_STATUS_VBUS_USABLE	BIT(4)
940382fe7   Paul Kocialkowski   power: axp209: Re...
25

f5eebc792   Olliver Schinagl   power: axp209: De...
26
  #define AXP209_CHIP_VERSION_MASK	0x0f
048447ce4   Olliver Schinagl   power: axp209: Us...
27
28
29
30
31
32
  #define AXP209_OUTPUT_CTRL_EXTEN	BIT(0)
  #define AXP209_OUTPUT_CTRL_DCDC3	BIT(1)
  #define AXP209_OUTPUT_CTRL_LDO2		BIT(2)
  #define AXP209_OUTPUT_CTRL_LDO4		BIT(3)
  #define AXP209_OUTPUT_CTRL_DCDC2	BIT(4)
  #define AXP209_OUTPUT_CTRL_LDO3		BIT(6)
beba401f0   Hans de Goede   sunxi: power: Add...
33

61436d502   Olliver Schinagl   power: axp209: Ad...
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
  /*
   * AXP209 datasheet contains wrong information about LDO3 VRC:
   * - VRC is actually enabled when BIT(1) is True
   * - VRC is actually not enabled by default (BIT(3) = 0 after reset)
   */
  #define AXP209_VRC_LDO3_EN		BIT(3)
  #define AXP209_VRC_DCDC2_EN		BIT(2)
  #define AXP209_VRC_LDO3_800uV_uS	(BIT(1) | AXP209_VRC_LDO3_EN)
  #define AXP209_VRC_LDO3_1600uV_uS	AXP209_VRC_LDO3_EN
  #define AXP209_VRC_DCDC2_800uV_uS	(BIT(0) | AXP209_VRC_DCDC2_EN)
  #define AXP209_VRC_DCDC2_1600uV_uS	AXP209_VRC_DCDC2_EN
  #define AXP209_VRC_LDO3_MASK		0xa
  #define AXP209_VRC_DCDC2_MASK		0x5
  #define AXP209_VRC_DCDC2_SLOPE_SET(reg, cfg) \
  	(((reg) & ~AXP209_VRC_DCDC2_MASK) | \
  	((cfg) & AXP209_VRC_DCDC2_MASK))
  #define AXP209_VRC_LDO3_SLOPE_SET(reg, cfg) \
  	(((reg) & ~AXP209_VRC_LDO3_MASK) | \
  	((cfg) & AXP209_VRC_LDO3_MASK))
3f7d76a7e   Olliver Schinagl   power: axp209: Re...
53
54
55
56
57
58
59
60
61
62
63
64
  #define AXP209_LDO24_LDO2_MASK		0xf0
  #define AXP209_LDO24_LDO4_MASK		0x0f
  #define AXP209_LDO24_LDO2_SET(reg, cfg)	\
  	(((reg) & ~AXP209_LDO24_LDO2_MASK) | \
  	(((cfg) << 4) & AXP209_LDO24_LDO2_MASK))
  #define AXP209_LDO24_LDO4_SET(reg, cfg)	\
  	(((reg) & ~AXP209_LDO24_LDO4_MASK) | \
  	(((cfg) << 0) & AXP209_LDO24_LDO4_MASK))
  
  #define AXP209_LDO3_VOLTAGE_FROM_LDO3IN	BIT(7)
  #define AXP209_LDO3_VOLTAGE_MASK	0x7f
  #define AXP209_LDO3_VOLTAGE_SET(x)	((x) & AXP209_LDO3_VOLTAGE_MASK)
048447ce4   Olliver Schinagl   power: axp209: Us...
65
66
  #define AXP209_IRQ5_PEK_UP		BIT(6)
  #define AXP209_IRQ5_PEK_DOWN		BIT(5)
940382fe7   Paul Kocialkowski   power: axp209: Re...
67

048447ce4   Olliver Schinagl   power: axp209: Us...
68
  #define AXP209_POWEROFF			BIT(7)
940382fe7   Paul Kocialkowski   power: axp209: Re...
69

2fcf033d3   Hans de Goede   sunxi: axp: Move ...
70
71
  /* For axp_gpio.c */
  #define AXP_POWER_STATUS		0x00
048447ce4   Olliver Schinagl   power: axp209: Us...
72
  #define AXP_POWER_STATUS_VBUS_PRESENT	BIT(5)
2fcf033d3   Hans de Goede   sunxi: axp: Move ...
73
74
75
  #define AXP_GPIO0_CTRL			0x90
  #define AXP_GPIO1_CTRL			0x92
  #define AXP_GPIO2_CTRL			0x93
048447ce4   Olliver Schinagl   power: axp209: Us...
76
77
78
  #define AXP_GPIO_CTRL_OUTPUT_LOW	0x00 /* Drive pin low */
  #define AXP_GPIO_CTRL_OUTPUT_HIGH	0x01 /* Drive pin high */
  #define AXP_GPIO_CTRL_INPUT		0x02 /* Input */
2fcf033d3   Hans de Goede   sunxi: axp: Move ...
79
  #define AXP_GPIO_STATE			0x94
048447ce4   Olliver Schinagl   power: axp209: Us...
80
  #define AXP_GPIO_STATE_OFFSET		4