coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
gpio_common.h
Go to the documentation of this file.
1
/* SPDX-License-Identifier: GPL-2.0-only */
2
3
#ifndef _SOC_QUALCOMM_COMMON_GPIO_H_
4
#define _SOC_QUALCOMM_COMMON_GPIO_H_
5
6
#include <soc/gpio.h>
7
#include <soc/addressmap.h>
8
9
#define GPIO_FUNC_GPIO 0
10
#define TLMM_GPIO_OFF_DELTA 0x1000
11
12
/* GPIO TLMM INTR: Mask */
13
enum
gpio_tlmm_intr_bmsk
{
14
GPIO_INTR_STATUS_MASK
= 0x1,
15
GPIO_INTR_DECT_CTL_MASK
= 0x3,
16
};
17
18
/* GPIO TLMM: Mask */
19
enum
gpio_tlmm_bmsk
{
20
GPIO_BMSK
= 0x1,
21
GPIO_CFG_PULL_BMSK
= 0x3,
22
GPIO_CFG_FUNC_BMSK
= 0xF,
23
GPIO_CFG_DRV_BMSK
= 0x7,
24
GPIO_CFG_EGPIO_BMSK
= 0x800,
25
};
26
27
/* GPIO TLMM INTR: Shift */
28
enum
gpio_tlmm_intr_shft
{
29
GPIO_INTR_DECT_CTL_SHFT
= 2,
30
GPIO_INTR_RAW_STATUS_EN_SHFT
= 4,
31
};
32
33
/* GPIO TLMM: Shift */
34
enum
gpio_tlmm_shft
{
35
GPIO_CFG_PULL_SHFT
= 0,
36
GPIO_CFG_FUNC_SHFT
= 2,
37
GPIO_CFG_DRV_SHFT
= 6,
38
GPIO_CFG_OE_SHFT
= 9,
39
GPIO_CFG_EGPIO_SHFT
= 1,
40
};
41
42
/* GPIO IO: Shift */
43
enum
gpio_io_shft
{
44
GPIO_IO_IN_SHFT
,
45
GPIO_IO_OUT_SHFT
,
46
};
47
48
/* GPIO INTR STATUS */
49
enum
gpio_irq_status
{
50
GPIO_INTR_STATUS_DISABLE
,
51
GPIO_INTR_STATUS_ENABLE
,
52
};
53
54
/* GPIO TLMM: Direction */
55
enum
gpio_direction
{
56
GPIO_INPUT
,
57
GPIO_OUTPUT
,
58
};
59
60
/* GPIO TLMM: Pullup/Pulldown */
61
enum
gpio_pull
{
62
GPIO_NO_PULL
,
63
GPIO_PULL_DOWN
,
64
GPIO_KEEPER
,
65
GPIO_PULL_UP
,
66
};
67
68
/* GPIO TLMM: Drive Strength */
69
enum
gpio_drv_str
{
70
GPIO_2MA
,
71
GPIO_4MA
,
72
GPIO_6MA
,
73
GPIO_8MA
,
74
GPIO_10MA
,
75
GPIO_12MA
,
76
GPIO_14MA
,
77
GPIO_16MA
,
78
};
79
80
enum
gpio_irq_type
{
81
IRQ_TYPE_LEVEL
,
82
IRQ_TYPE_RISING_EDGE
,
83
IRQ_TYPE_FALLING_EDGE
,
84
IRQ_TYPE_DUAL_EDGE
,
85
};
86
87
typedef
struct
{
88
u32
addr
;
89
}
gpio_t
;
90
91
struct
tlmm_gpio
{
92
uint32_t
cfg
;
93
uint32_t
in_out
;
94
uint32_t
intr_cfg
;
95
uint32_t
intr_status
;
96
};
97
98
#define GPIO(num) ((gpio_t){.addr = GPIO##num##_ADDR})
99
100
void
gpio_configure
(
gpio_t
gpio
,
uint32_t
func,
uint32_t
pull
,
101
uint32_t
drive_str,
uint32_t
enable);
102
void
gpio_input_irq
(
gpio_t
gpio
,
enum
gpio_irq_type
type
,
uint32_t
pull
);
103
int
gpio_irq_status
(
gpio_t
gpio
);
104
105
#endif
/* _SOC_QUALCOMM_COMMON_GPIO_H_ */
pull
#define pull
Definition:
asmlib.h:26
type
unsigned int type
Definition:
edid.c:57
gpio_irq_type
gpio_irq_type
Definition:
gpio_common.h:54
GPIO_PULL_DOWN
@ GPIO_PULL_DOWN
Definition:
gpio_common.h:17
GPIO_PULL_UP
@ GPIO_PULL_UP
Definition:
gpio_common.h:18
gpio_drv_str
gpio_drv_str
Definition:
gpio_common.h:69
GPIO_8MA
@ GPIO_8MA
Definition:
gpio_common.h:73
GPIO_12MA
@ GPIO_12MA
Definition:
gpio_common.h:75
GPIO_14MA
@ GPIO_14MA
Definition:
gpio_common.h:76
GPIO_6MA
@ GPIO_6MA
Definition:
gpio_common.h:72
GPIO_2MA
@ GPIO_2MA
Definition:
gpio_common.h:70
GPIO_16MA
@ GPIO_16MA
Definition:
gpio_common.h:77
GPIO_4MA
@ GPIO_4MA
Definition:
gpio_common.h:71
GPIO_10MA
@ GPIO_10MA
Definition:
gpio_common.h:74
gpio_input_irq
void gpio_input_irq(gpio_t gpio, enum gpio_irq_type type, uint32_t pull)
Definition:
gpio.c:65
IRQ_TYPE_DUAL_EDGE
@ IRQ_TYPE_DUAL_EDGE
Definition:
gpio_common.h:84
IRQ_TYPE_RISING_EDGE
@ IRQ_TYPE_RISING_EDGE
Definition:
gpio_common.h:82
IRQ_TYPE_FALLING_EDGE
@ IRQ_TYPE_FALLING_EDGE
Definition:
gpio_common.h:83
IRQ_TYPE_LEVEL
@ IRQ_TYPE_LEVEL
Definition:
gpio_common.h:81
gpio_irq_status
gpio_irq_status
Definition:
gpio_common.h:49
GPIO_INTR_STATUS_DISABLE
@ GPIO_INTR_STATUS_DISABLE
Definition:
gpio_common.h:50
GPIO_INTR_STATUS_ENABLE
@ GPIO_INTR_STATUS_ENABLE
Definition:
gpio_common.h:51
gpio_tlmm_intr_bmsk
gpio_tlmm_intr_bmsk
Definition:
gpio_common.h:13
GPIO_INTR_DECT_CTL_MASK
@ GPIO_INTR_DECT_CTL_MASK
Definition:
gpio_common.h:15
GPIO_INTR_STATUS_MASK
@ GPIO_INTR_STATUS_MASK
Definition:
gpio_common.h:14
gpio_io_shft
gpio_io_shft
Definition:
gpio_common.h:43
GPIO_IO_OUT_SHFT
@ GPIO_IO_OUT_SHFT
Definition:
gpio_common.h:45
GPIO_IO_IN_SHFT
@ GPIO_IO_IN_SHFT
Definition:
gpio_common.h:44
gpio_tlmm_intr_shft
gpio_tlmm_intr_shft
Definition:
gpio_common.h:28
GPIO_INTR_DECT_CTL_SHFT
@ GPIO_INTR_DECT_CTL_SHFT
Definition:
gpio_common.h:29
GPIO_INTR_RAW_STATUS_EN_SHFT
@ GPIO_INTR_RAW_STATUS_EN_SHFT
Definition:
gpio_common.h:30
gpio_direction
gpio_direction
Definition:
gpio_common.h:55
GPIO_INPUT
@ GPIO_INPUT
Definition:
gpio_common.h:56
GPIO_OUTPUT
@ GPIO_OUTPUT
Definition:
gpio_common.h:57
gpio_configure
void gpio_configure(gpio_t gpio, uint32_t func, uint32_t pull, uint32_t drive_str, uint32_t enable)
Definition:
gpio.c:7
gpio_pull
gpio_pull
Definition:
gpio_common.h:61
GPIO_KEEPER
@ GPIO_KEEPER
Definition:
gpio_common.h:64
GPIO_NO_PULL
@ GPIO_NO_PULL
Definition:
gpio_common.h:62
gpio_tlmm_shft
gpio_tlmm_shft
Definition:
gpio_common.h:34
GPIO_CFG_EGPIO_SHFT
@ GPIO_CFG_EGPIO_SHFT
Definition:
gpio_common.h:39
GPIO_CFG_FUNC_SHFT
@ GPIO_CFG_FUNC_SHFT
Definition:
gpio_common.h:36
GPIO_CFG_DRV_SHFT
@ GPIO_CFG_DRV_SHFT
Definition:
gpio_common.h:37
GPIO_CFG_PULL_SHFT
@ GPIO_CFG_PULL_SHFT
Definition:
gpio_common.h:35
GPIO_CFG_OE_SHFT
@ GPIO_CFG_OE_SHFT
Definition:
gpio_common.h:38
gpio_tlmm_bmsk
gpio_tlmm_bmsk
Definition:
gpio_common.h:19
GPIO_CFG_PULL_BMSK
@ GPIO_CFG_PULL_BMSK
Definition:
gpio_common.h:21
GPIO_CFG_DRV_BMSK
@ GPIO_CFG_DRV_BMSK
Definition:
gpio_common.h:23
GPIO_CFG_EGPIO_BMSK
@ GPIO_CFG_EGPIO_BMSK
Definition:
gpio_common.h:24
GPIO_BMSK
@ GPIO_BMSK
Definition:
gpio_common.h:20
GPIO_CFG_FUNC_BMSK
@ GPIO_CFG_FUNC_BMSK
Definition:
gpio_common.h:22
gpio_t
uint32_t gpio_t
Definition:
gpio.h:9
uint32_t
unsigned int uint32_t
Definition:
stdint.h:14
u32
uint32_t u32
Definition:
stdint.h:51
gpio_t
Definition:
gpio_base.h:7
gpio_t::addr
u32 addr
Definition:
gpio_common.h:88
gpio
Definition:
pinmux.c:36
tlmm_gpio
Definition:
gpio_common.h:91
tlmm_gpio::intr_cfg
uint32_t intr_cfg
Definition:
gpio_common.h:94
tlmm_gpio::intr_status
uint32_t intr_status
Definition:
gpio_common.h:95
tlmm_gpio::cfg
uint32_t cfg
Definition:
gpio_common.h:92
tlmm_gpio::in_out
uint32_t in_out
Definition:
gpio_common.h:93
src
soc
qualcomm
common
include
soc
gpio_common.h
Generated by
1.9.1