/*
 * Copyright (c) 2016 Linaro Limited.
 *
 * SPDX-License-Identifier: Apache-2.0
 */
#ifndef _DRIVERS_GPIO_CMSDK_AHB_
#define _DRIVERS_GPIO_CMSDK_AHB_

#include <gpio.h>

#ifdef __cplusplus
extern "C" {
#endif

/* ARM LTD CMSDK AHB General Purpose Input/Output (GPIO) */
struct gpio_cmsdk_ahb {
	/* Offset: 0x000 (r/w) data register */
	volatile u32_t data;
	/* Offset: 0x004 (r/w) data output latch register */
	volatile u32_t dataout;
	volatile u32_t reserved0[2];
	/* Offset: 0x010 (r/w) output enable set register */
	volatile u32_t outenableset;
	/* Offset: 0x014 (r/w) output enable clear register */
	volatile u32_t outenableclr;
	/* Offset: 0x018 (r/w) alternate function set register */
	volatile u32_t altfuncset;
	/* Offset: 0x01c (r/w) alternate function clear register */
	volatile u32_t altfuncclr;
	/* Offset: 0x020 (r/w) interrupt enable set register */
	volatile u32_t intenset;
	/* Offset: 0x024 (r/w) interrupt enable clear register */
	volatile u32_t intenclr;
	/* Offset: 0x028 (r/w) interrupt type set register */
	volatile u32_t inttypeset;
	/* Offset: 0x02c (r/w) interrupt type clear register */
	volatile u32_t inttypeclr;
	/* Offset: 0x030 (r/w) interrupt polarity set register */
	volatile u32_t intpolset;
	/* Offset: 0x034 (r/w) interrupt polarity clear register */
	volatile u32_t intpolclr;
	union {
		/* Offset: 0x038 (r/ ) interrupt status register */
		volatile u32_t intstatus;
		/* Offset: 0x038 ( /w) interrupt clear register */
		volatile u32_t  intclear;
	};
	volatile u32_t reserved1[241];
	/* Offset: 0x400 - 0x7fc lower byte masked access register (r/w) */
	volatile u32_t lb_masked[256];
	/* Offset: 0x800 - 0xbfc upper byte masked access register (r/w) */
	volatile u32_t ub_masked[256];
};

#ifdef __cplusplus
}
#endif

#endif /* _DRIVERS_GPIO_CMSDK_AHB_ */
