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

#include <zephyr/drivers/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 uint32_t data;
	/* Offset: 0x004 (r/w) data output latch register */
	volatile uint32_t dataout;
	volatile uint32_t reserved0[2];
	/* Offset: 0x010 (r/w) output enable set register */
	volatile uint32_t outenableset;
	/* Offset: 0x014 (r/w) output enable clear register */
	volatile uint32_t outenableclr;
	/* Offset: 0x018 (r/w) alternate function set register */
	volatile uint32_t altfuncset;
	/* Offset: 0x01c (r/w) alternate function clear register */
	volatile uint32_t altfuncclr;
	/* Offset: 0x020 (r/w) interrupt enable set register */
	volatile uint32_t intenset;
	/* Offset: 0x024 (r/w) interrupt enable clear register */
	volatile uint32_t intenclr;
	/* Offset: 0x028 (r/w) interrupt type set register */
	volatile uint32_t inttypeset;
	/* Offset: 0x02c (r/w) interrupt type clear register */
	volatile uint32_t inttypeclr;
	/* Offset: 0x030 (r/w) interrupt polarity set register */
	volatile uint32_t intpolset;
	/* Offset: 0x034 (r/w) interrupt polarity clear register */
	volatile uint32_t intpolclr;
	union {
		/* Offset: 0x038 (r/ ) interrupt status register */
		volatile uint32_t intstatus;
		/* Offset: 0x038 ( /w) interrupt clear register */
		volatile uint32_t  intclear;
	};
	volatile uint32_t reserved1[241];
	/* Offset: 0x400 - 0x7fc lower byte masked access register (r/w) */
	volatile uint32_t lb_masked[256];
	/* Offset: 0x800 - 0xbfc upper byte masked access register (r/w) */
	volatile uint32_t ub_masked[256];
};

#ifdef __cplusplus
}
#endif

#endif /* ZEPHYR_DRIVERS_GPIO_GPIO_CMSDK_AHB_H_ */
