1 // Copyright 2018 The Fuchsia Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #pragma once 6 7 #define GPIO_INTERRUPT_POLARITY_SHIFT 16 8 #define PINS_PER_BLOCK 32 9 #define ALT_FUNCTION_MAX 6 10 #define MAX_GPIO_INDEX 255 11 #define BITS_PER_GPIO_INTERRUPT 8 12 13 #define S912_GPIOX_PINS 19 14 #define S912_GPIODV_PINS 30 15 #define S912_GPIOH_PINS 10 16 #define S912_GPIOBOOT_PINS 16 17 #define S912_GPIOCARD_PINS 7 18 #define S912_GPIOCLK_PINS 2 19 #define S912_GPIOZ_PINS 16 20 #define S912_GPIOAO_PINS 10 21 22 #define S912_GPIOX_START (0 * 32) 23 #define S912_GPIODV_START (1 * 32) 24 #define S912_GPIOH_START (2 * 32) 25 #define S912_GPIOBOOT_START (3 * 32) 26 #define S912_GPIOCARD_START (4 * 32) 27 #define S912_GPIOCLK_START (5 * 32) 28 #define S912_GPIOZ_START (6 * 32) 29 #define S912_GPIOAO_START (7 * 32) 30 31 #define S912_GPIOX(n) (S912_GPIOX_START + n) 32 #define S912_GPIODV(n) (S912_GPIODV_START + n) 33 #define S912_GPIOH(n) (S912_GPIOH_START + n) 34 #define S912_GPIOBOOT(n) (S912_GPIOBOOT_START + n) 35 #define S912_GPIOCARD(n) (S912_GPIOCARD_START + n) 36 #define S912_GPIOCLK(n) (S912_GPIOCLK_START + n) 37 #define S912_GPIOZ(n) (S912_GPIOZ_START + n) 38 #define S912_GPIOAO(n) (S912_GPIOAO_START + n) 39 40 #define S912_GPIOX_0EN 0x18 41 #define S912_GPIOX_OUT 0x19 42 #define S912_GPIOX_IN 0x1a 43 #define S912_GPIODV_0EN 0x0c 44 #define S912_GPIODV_OUT 0x0d 45 #define S912_GPIODV_IN 0x0e 46 #define S912_GPIOH_0EN 0x0f 47 #define S912_GPIOH_OUT 0x10 48 #define S912_GPIOH_IN 0x11 49 #define S912_GPIOBOOT_0EN 0x12 50 #define S912_GPIOBOOT_OUT 0x13 51 #define S912_GPIOBOOT_IN 0x14 52 #define S912_GPIOCARD_0EN 0x12 53 #define S912_GPIOCARD_OUT 0x13 54 #define S912_GPIOCARD_IN 0x14 55 #define S912_GPIOCLK_0EN 0x15 56 #define S912_GPIOCLK_OUT 0x16 57 #define S912_GPIOCLK_IN 0x17 58 #define S912_GPIOZ_0EN 0x15 59 #define S912_GPIOZ_OUT 0x16 60 #define S912_GPIOZ_IN 0x17 61 62 #define S912_PERIPHS_PIN_MUX_0 0x2C 63 #define S912_PERIPHS_PIN_MUX_1 0x2D 64 #define S912_PERIPHS_PIN_MUX_2 0x2E 65 #define S912_PERIPHS_PIN_MUX_3 0x2F 66 #define S912_PERIPHS_PIN_MUX_4 0x30 67 #define S912_PERIPHS_PIN_MUX_5 0x31 68 #define S912_PERIPHS_PIN_MUX_6 0x32 69 #define S912_PERIPHS_PIN_MUX_7 0x33 70 #define S912_PERIPHS_PIN_MUX_8 0x34 71 #define S912_PERIPHS_PIN_MUX_9 0x35 72 73 #define S912_PULL_UP_REG0 0x3A 74 #define S912_PULL_UP_REG1 0x3B 75 #define S912_PULL_UP_REG2 0x3C 76 #define S912_PULL_UP_REG3 0x3D 77 #define S912_PULL_UP_REG4 0x3E 78 79 #define S912_PULL_UP_EN_REG0 0x48 80 #define S912_PULL_UP_EN_REG1 0x49 81 #define S912_PULL_UP_EN_REG2 0x4A 82 #define S912_PULL_UP_EN_REG3 0x4B 83 #define S912_PULL_UP_EN_REG4 0x4C 84 85 // These are relative to base address 0xc1100000 and in sizeof(uint32_t) 86 #define S912_GPIO_INT_STATUS 0x2618 87 #define S912_GPIO_INT_CLEAR 0x2619 88 #define S912_GPIO_INT_MASK 0x261A 89 #define S912_GPIO_INT_EDGE_POLARITY 0x2620 90 #define S912_GPIO_0_3_PIN_SELECT 0x2621 91 #define S912_GPIO_4_7_PIN_SELECT 0x2622 92 #define S912_GPIO_FILTER_SELECT 0x2623 93 94 #define S912_GPIOA0_PIN_START 0 95 #define S912_GPIOZ_PIN_START 10 96 #define S912_GPIOH_PIN_START 26 97 #define S912_GPIOBOOT_PIN_START 36 98 #define S912_GPIOCARD_PIN_START 52 99 #define S912_GPIODV_PIN_START 59 100 #define S912_GPIOX_PIN_START 89 101 #define S912_GPIOCLK_PIN_START 108 102 103 // GPIO AO registers live in a separate register bank. 104 #define S912_AO_RTI_PIN_MUX_REG 0x05 105 #define S912_AO_RTI_PIN_MUX_REG2 0x06 106 #define S912_AO_GPIO_OEN_OUT 0x09 // OEN: [9:0], OUT: [25:16] 107 #define S912_AO_GPIO_IN 0x0a 108 #define S912_A0_GPIO_OUT_OFFSET 16 109 110 // Alternate Functions for SDIO 111 #define S912_WIFI_SDIO_D0 S912_GPIOX(0) 112 #define S912_WIFI_SDIO_D0_FN 1 113 #define S912_WIFI_SDIO_D1 S912_GPIOX(1) 114 #define S912_WIFI_SDIO_D1_FN 1 115 #define S912_WIFI_SDIO_D2 S912_GPIOX(2) 116 #define S912_WIFI_SDIO_D2_FN 1 117 #define S912_WIFI_SDIO_D3 S912_GPIOX(3) 118 #define S912_WIFI_SDIO_D3_FN 1 119 #define S912_WIFI_SDIO_CLK S912_GPIOX(4) 120 #define S912_WIFI_SDIO_CLK_FN 1 121 #define S912_WIFI_SDIO_CMD S912_GPIOX(5) 122 #define S912_WIFI_SDIO_CMD_FN 1 123 #define S912_WIFI_SDIO_WAKE_HOST S912_GPIOX(7) 124 #define S912_WIFI_SDIO_WAKE_HOST_FN 1 125