OSHW-DEIMOS/SOFTWARE/A64-TERES/linux-a64/drivers/pinctrl/axp/pinctrl-axp.h
Dimitar Gamishev f9b0e7a283 linux
2017-10-13 14:07:04 +03:00

106 lines
2.7 KiB
C
Executable File

/*
* Allwinner AXP SoCs pinctrl driver.
*
* Copyright (C) 2012 sunny
*
* sunny <sunny@allwinnertech.com>
*
* This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any
* warranty of any kind, whether express or implied.
*/
#ifndef __PINCTRL_AXP_H
#define __PINCTRL_AXP_H
#include <linux/kernel.h>
#include <linux/pinctrl/pinconf-sunxi.h>
#define AXP_PINCTRL_GPIO0 PINCTRL_PIN(0, "GPIO0") /* axp8xx GPIO0 */
#define AXP_PINCTRL_GPIO1 PINCTRL_PIN(1, "GPIO1") /* axp8xx GPIO1 */
#define AXP_PINCTRL_GPIO2 PINCTRL_PIN(2, "GPIO2") /* axp8xx CHGLED : power supply for moto OUTPUT */
#define AXP_PINCTRL_GPIO3 PINCTRL_PIN(3, "GPIO3") /* axp8xx N_VBUSEN : OUTPUT */
/*
* GPIO Registers.
*/
/* AXP8XX
* GPIO0<-->GPIO0/LDO(PIN 37)
* GPIO1<-->GPIO1/LDO(PIN 31)
* GPIO2<-->CHGLED/MOTODRV(PIN 52)
* GPIO3<-->N_VBUSEN(PIN 11)
*/
#if defined (CONFIG_AW_AXP81X)
#define AXP_GPIO0_CFG (AXP81X_GPIO0_CTL)//0x90
#define AXP_GPIO1_CFG (AXP81X_GPIO1_CTL)//0x92
#define AXP_GPIO2_CFG (AXP81X_LDO_DC_EN2)//0x12
#define AXP_GPIO3_CFG (AXP81X_HOTOVER_CTL)//0x8f
#define AXP_GPIO3_STA (AXP81X_IPS_SET)//0x30
#define AXP_GPIO01_STATE (AXP81X_GPIO01_SIGNAL)
#endif
#ifndef AXP_GPIO0_CFG
#define AXP_GPIO0_CFG (0)
#define AXP_GPIO1_CFG (0)
#define AXP_GPIO2_CFG (0)
#define AXP_GPIO3_CFG (0)
#define AXP_GPIO3_STA (0)
#define AXP_GPIO01_STATE (0)
#endif
#define AXP_PIN_NAME_MAX_LEN 8
struct axp_desc_function {
const char *name;
u8 muxval;
};
struct axp_desc_pin {
struct pinctrl_pin_desc pin;
struct axp_desc_function *functions;
};
struct axp_pinctrl_desc {
const struct axp_desc_pin *pins;
int npins;
};
struct axp_pinctrl_function {
const char *name;
const char **groups;
unsigned ngroups;
};
struct axp_pinctrl_group {
const char *name;
unsigned long config;
unsigned pin;
};
struct axp_pinctrl {
struct device *dev;
struct pinctrl_dev *pctl_dev;
struct gpio_chip *gpio_chip;
struct axp_pinctrl_desc *desc;
struct axp_pinctrl_function *functions;
unsigned nfunctions;
struct axp_pinctrl_group *groups;
unsigned ngroups;
};
#define AXP_PIN_DESC(_pin, ...) \
{ \
.pin = _pin, \
.functions = (struct axp_desc_function[]){ \
__VA_ARGS__, { } }, \
}
#define AXP_FUNCTION(_val, _name) \
{ \
.name = _name, \
.muxval = _val, \
}
#endif /* __PINCTRL_AXP_H */