123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- #ifndef _ACTIONS_SOC_GPIO_H_
- #define _ACTIONS_SOC_GPIO_H_
- typedef enum {
- GPIO_0 = 0,
- GPIO_1 = 1,
- GPIO_2 = 2,
- GPIO_3 = 3,
- GPIO_4 = 4,
- GPIO_5 = 5,
- GPIO_6 = 6,
- GPIO_7 = 7,
- GPIO_8 = 8,
- GPIO_9 = 9,
- GPIO_10 = 10,
- GPIO_11 = 11,
- GPIO_12 = 12,
- GPIO_13 = 13,
- GPIO_14 = 14,
- GPIO_15 = 15,
- GPIO_16 = 16,
- GPIO_17 = 17,
- GPIO_18 = 18,
- GPIO_19 = 19,
- GPIO_20 = 20,
- GPIO_21 = 21,
- GPIO_22 = 22,
- GPIO_23 = 23,
- GPIO_24 = 24,
- GPIO_25 = 25,
- GPIO_26 = 26,
- GPIO_27 = 27,
- GPIO_28 = 28,
- GPIO_29 = 29,
- GPIO_30 = 30,
- GPIO_31 = 31,
- GPIO_32 = 32,
- GPIO_33 = 33,
- GPIO_34 = 34,
- GPIO_35 = 35,
- GPIO_36 = 36,
- GPIO_37 = 37,
- GPIO_38 = 38,
- GPIO_39 = 39,
- GPIO_40 = 40,
- GPIO_41 = 41,
- GPIO_42 = 42,
- GPIO_43 = 43,
- GPIO_44 = 44,
- GPIO_45 = 45,
- GPIO_46 = 46,
- GPIO_47 = 47,
- GPIO_48 = 48,
- GPIO_49 = 49,
- GPIO_50 = 50,
- GPIO_51 = 51,
- GPIO_52 = 52,
- GPIO_53 = 53,
- GPIO_54 = 54,
- GPIO_55 = 55,
- GPIO_56 = 56,
- GPIO_57 = 57,
- GPIO_58 = 58,
- GPIO_59 = 59,
- GPIO_60 = 60,
- GPIO_61 = 61,
- GPIO_62 = 62,
- GPIO_63 = 63,
- GPIO_64 = 64,
- GPIO_65 = 65,
- GPIO_66 = 66,
- GPIO_67 = 67,
- GPIO_68 = 68,
- GPIO_69 = 69,
- GPIO_70 = 70,
- GPIO_71 = 71,
- GPIO_72 = 72,
- GPIO_73 = 73,
- GPIO_74 = 74,
- GPIO_75 = 75,
- GPIO_76 = 76,
- GPIO_77 = 77,
- GPIO_MAX_PIN_NUM
- } gpio_pin_e;
- typedef enum {
- WIO_0 = 0,
- WIO_1 = 1,
- WIO_2 = 2,
- WIO_3 = 3,
- GPIO_WIO_MAX_PIN_NUM
- } wio_pin_e;
- #define GPIO_MAX_GROUPS (((GPIO_MAX_PIN_NUM) + 31) / 32)
- #define GPIO_MAX_IRQ_GRP 3
- #define GPIO_MAX_INT_PIN_NUM 64
- #define GPIO_WIO_REG_BASE (GPIO_REG_BASE + 0x300)
- #define GPIO_CTL0 0x0
- #define GPIO_ODAT0 0x200
- #define GPIO_BSR0 0x210
- #define GPIO_BRR0 0x220
- #define GPIO_IDAT0 0x230
- #define GPIO_IRQ_PD0 0x240
- #define JTAG_CTL 0x40068400
- #define SC_SWEN_SHIFT 12
- #define SC_SWMAP_SHIFT 8
- #define JTAG_CTL_SC_SWEN(x) ((x) << SC_SWEN_SHIFT)
- #define JTAG_CTL_SC_SWMAP(x) ((x) << SC_SWMAP_SHIFT)
- #define GPIO_REG_CTL(base, pin) ((base) + GPIO_CTL0 + (pin) * 4)
- #define GPIO_REG_ODAT(base, pin) ((base) + GPIO_ODAT0 + (pin) / 32 * 4)
- #define GPIO_REG_IDAT(base, pin) ((base) + GPIO_IDAT0 + (pin) / 32 * 4)
- #define GPIO_REG_BSR(base, pin) ((base) + GPIO_BSR0 + (pin) / 32 * 4)
- #define GPIO_REG_BRR(base, pin) ((base) + GPIO_BRR0 + (pin) / 32 * 4)
- #define GPIO_REG_IRQ_PD(base, pin) ((base) + GPIO_IRQ_PD0 + (pin) / 32 * 4)
- #define GPIO_BIT(pin) (1 << ((pin) % 32))
- #define GPION_CTL(n) GPIO_REG_CTL(GPIO_REG_BASE,n)
- #define GPION_ODAT(n) GPIO_REG_ODAT(GPIO_REG_BASE,n)
- #define GPION_IDAT(n) GPIO_REG_IDAT(GPIO_REG_BASE,n)
- #define GPION_BSR(n) GPIO_REG_BSR(GPIO_REG_BASE,n)
- #define GPION_BRR(n) GPIO_REG_BRR(GPIO_REG_BASE,n)
- #define GPION_IRQ_PD(n) GPIO_REG_IRQ_PD(GPIO_REG_BASE,n)
- #define WIO_REG_CTL(pin) (GPIO_WIO_REG_BASE + (pin) * 4)
- #define WIO_CTL_INT_PD_SHIFT (24)
- #define WIO_CTL_INT_PD_MASK (1 << WIO_CTL_INT_PD_SHIFT)
- #define GPIO_CTL_MFP_SHIFT (0)
- #define GPIO_CTL_MFP_MASK (0x1f << GPIO_CTL_MFP_SHIFT)
- #define GPIO_CTL_MFP_GPIO (0x0 << GPIO_CTL_MFP_SHIFT)
- #define GPIO_CTL_SMIT (0x1 << 5)
- #define GPIO_CTL_GPIO_OUTEN (0x1 << 6)
- #define GPIO_CTL_GPIO_INEN (0x1 << 7)
- #define GPIO_CTL_PULL_MASK (0xf << 8)
- #define GPIO_CTL_PULLUP_STRONG (0x1 << 8)
- #define GPIO_CTL_PULLDOWN (0x1 << 9)
- #define GPIO_CTL_PULLUP (0x1 << 11)
- #define GPIO_CTL_PADDRV_SHIFT (12)
- #define GPIO_CTL_PADDRV_LEVEL(x) ((x) << GPIO_CTL_PADDRV_SHIFT)
- #define GPIO_CTL_PADDRV_MASK GPIO_CTL_PADDRV_LEVEL(0x7)
- #define GPIO_CTL_INTC_EN (0x1 << 20)
- #define GPIO_CTL_INC_TRIGGER_SHIFT (21)
- #define GPIO_CTL_INC_TRIGGER(x) ((x) << GPIO_CTL_INC_TRIGGER_SHIFT)
- #define GPIO_CTL_INC_TRIGGER_MASK GPIO_CTL_INC_TRIGGER(0x7)
- #define GPIO_CTL_INC_TRIGGER_RISING_EDGE GPIO_CTL_INC_TRIGGER(0x0)
- #define GPIO_CTL_INC_TRIGGER_FALLING_EDGE GPIO_CTL_INC_TRIGGER(0x1)
- #define GPIO_CTL_INC_TRIGGER_DUAL_EDGE GPIO_CTL_INC_TRIGGER(0x2)
- #define GPIO_CTL_INC_TRIGGER_HIGH_LEVEL GPIO_CTL_INC_TRIGGER(0x3)
- #define GPIO_CTL_INC_TRIGGER_LOW_LEVEL GPIO_CTL_INC_TRIGGER(0x4)
- #define GPIO_CTL_INTC_MASK (0x1 << 25)
- #define PINMUX_MODE_MASK (GPIO_CTL_MFP_MASK | \
- GPIO_CTL_PULL_MASK | GPIO_CTL_PADDRV_MASK | \
- GPIO_CTL_SMIT)
- #endif
|