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 seperate 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