1/* 2 * Copyright 2017, Data61 3 * Commonwealth Scientific and Industrial Research Organisation (CSIRO) 4 * ABN 41 687 119 230. 5 * 6 * This software may be distributed and modified according to the terms of 7 * the BSD 2-Clause license. Note that NO WARRANTY is provided. 8 * See "LICENSE_BSD2.txt" for details. 9 * 10 * @TAG(DATA61_BSD) 11 */ 12 13#pragma once 14 15#include <utils/util.h> 16#include <platsupport/gpio.h> 17#include <platsupport/mux.h> 18 19/* GPIO IDs */ 20#define GPIOID_GPIO0 GPIOID(GPIO_BANK1, 0) 21#define GPIOID_GPIO1 GPIOID(GPIO_BANK1, 1) 22#define GPIOID_GPIO2 GPIOID(GPIO_BANK1, 2) 23#define GPIOID_GPIO3 GPIOID(GPIO_BANK1, 3) 24#define GPIOID_GPIO4 GPIOID(GPIO_BANK1, 4) 25#define GPIOID_GPIO5 GPIOID(GPIO_BANK1, 5) 26#define GPIOID_GPIO6 GPIOID(GPIO_BANK1, 6) 27#define GPIOID_GPIO7 GPIOID(GPIO_BANK1, 7) 28#define GPIOID_GPIO8 GPIOID(GPIO_BANK1, 8) 29#define GPIOID_GPIO9 GPIOID(GPIO_BANK1, 9) 30#define GPIOID_GPIO16 GPIOID(GPIO_BANK7, 11) 31#define GPIOID_GPIO17 GPIOID(GPIO_BANK7, 12) 32#define GPIOID_GPIO18 GPIOID(GPIO_BANK7, 13) 33#define GPIOID_GPIO19 GPIOID(GPIO_BANK4, 5) 34#define GPIOID_NAND_D00 GPIOID(GPIO_BANK2, 0) 35#define GPIOID_NAND_D01 GPIOID(GPIO_BANK2, 1) 36#define GPIOID_NAND_D02 GPIOID(GPIO_BANK2, 2) 37#define GPIOID_NAND_D03 GPIOID(GPIO_BANK2, 3) 38#define GPIOID_NAND_D04 GPIOID(GPIO_BANK2, 4) 39#define GPIOID_NAND_D05 GPIOID(GPIO_BANK2, 5) 40#define GPIOID_NAND_D06 GPIOID(GPIO_BANK2, 6) 41#define GPIOID_NAND_D07 GPIOID(GPIO_BANK2, 7) 42 43#define MAX_GPIO_ID GPIOID_NAND_D07 44 45/* Aliases */ 46#define KEY_VOL_UP GPIOID_GPIO18 47#define KEY_HOME GPIOID_NAND_D04 48#define KEY_SEARCH GPIOID_NAND_D03 49#define KEY_BACK GPIOID_NAND_D02 50#define KEY_MENU GPIOID_NAND_D01 51#define KEY_VOL_DN GPIOID_GPIO19 52 53enum gpio_port { 54 GPIO_BANK1, 55 GPIO_BANK2, 56 GPIO_BANK3, 57 GPIO_BANK4, 58 GPIO_BANK5, 59 GPIO_BANK6, 60 GPIO_BANK7, 61 GPIO_NBANKS 62}; 63 64/** 65 * Initialise the exynos GPIO system given an exynos MUX subsystem 66 * @param[in] bankX A virtual mapping for gpio bank X. 67 * @param[in] mux_sys A handle to the mux subsystem. This subsystem 68 * must contain memory mapped IO for the MUX regions. 69 * @param[out] gpio_sys A handle to a gpio subsystem to populate. 70 * @return 0 on success 71 */ 72int imx6_gpio_sys_init(void *bank1, void *bank2, void *bank3, 73 void *bank4, void *bank5, void *bank6, 74 void *bank7, 75 mux_sys_t *mux_sys, gpio_sys_t *gpio_sys); 76 77