blob: 713e79840f983679b0bd9468bab230c13a091caf [file] [log] [blame]
Thierry Reding6173c452014-12-09 22:25:05 -07001/*
2 * Copyright (C) 2014 NVIDIA Corporation
3 *
4 * SPDX-License-Identifier: GPL-2.0+
5 */
6
7#ifndef __POWER_AS3722_H__
8#define __POWER_AS3722_H__
9
10#include <asm/types.h>
11
12#define AS3722_GPIO_OUTPUT_VDDH (1 << 0)
13#define AS3722_GPIO_INVERT (1 << 1)
14
Simon Glassdeea2112017-07-25 08:30:10 -060015#define AS3722_DEVICE_ID 0x0c
16#define AS3722_SD_VOLTAGE(n) (0x00 + (n))
17#define AS3722_LDO_VOLTAGE(n) (0x10 + (n))
18#define AS3722_SD_CONTROL 0x4d
19#define AS3722_LDO_CONTROL 0x4e
20#define AS3722_ASIC_ID1 0x90
21#define AS3722_ASIC_ID2 0x91
22
Simon Glassc2012cb2017-07-25 08:30:11 -060023#define AS3722_GPIO_CONTROL(n) (0x08 + (n))
24#define AS3722_GPIO_CONTROL_MODE_OUTPUT_VDDH (1 << 0)
25#define AS3722_GPIO_CONTROL_MODE_OUTPUT_VDDL (7 << 0)
26#define AS3722_GPIO_CONTROL_INVERT (1 << 7)
27
Thierry Reding6173c452014-12-09 22:25:05 -070028struct udevice;
29
30int as3722_init(struct udevice **devp);
31int as3722_sd_enable(struct udevice *pmic, unsigned int sd);
32int as3722_sd_set_voltage(struct udevice *pmic, unsigned int sd, u8 value);
33int as3722_ldo_enable(struct udevice *pmic, unsigned int ldo);
34int as3722_ldo_set_voltage(struct udevice *pmic, unsigned int ldo, u8 value);
35int as3722_gpio_configure(struct udevice *pmic, unsigned int gpio,
36 unsigned long flags);
37int as3722_gpio_direction_output(struct udevice *pmic, unsigned int gpio,
38 unsigned int level);
Simon Glassd55b7d42015-04-14 21:03:26 -060039int as3722_read(struct udevice *pmic, u8 reg, u8 *value);
40int as3722_write(struct udevice *pmic, u8 reg, u8 value);
41int as3722_get(struct udevice **devp);
Thierry Reding6173c452014-12-09 22:25:05 -070042
43#endif /* __POWER_AS3722_H__ */