summaryrefslogtreecommitdiff
path: root/src/soc/marvell/mvmap2315/include
diff options
context:
space:
mode:
authorHakim Giydan <hgiydan@marvell.com>2016-09-08 10:36:06 -0700
committerMartin Roth <martinroth@google.com>2016-09-13 16:56:43 +0200
commit03d10ea29ce015797bbb257f2cc890a1abb7837b (patch)
tree7fe465dd8d366da16455441ba3c4c4fc4519bf67 /src/soc/marvell/mvmap2315/include
parent65c7ccc8b1567394e6118bf66a301462602262e0 (diff)
soc/marvell/mvmap2315: Add gpio driver
Testing: booted successfully. Change-Id: I89dee1bbf8b68460897f64bf673b328533e70cd4 Signed-off-by: Hakim Giydan <hgiydan@marvell.com> Reviewed-on: https://review.coreboot.org/15508 Tested-by: build bot (Jenkins) Reviewed-by: Martin Roth <martinroth@google.com>
Diffstat (limited to 'src/soc/marvell/mvmap2315/include')
-rw-r--r--src/soc/marvell/mvmap2315/include/soc/addressmap.h3
-rw-r--r--src/soc/marvell/mvmap2315/include/soc/gpio.h99
2 files changed, 102 insertions, 0 deletions
diff --git a/src/soc/marvell/mvmap2315/include/soc/addressmap.h b/src/soc/marvell/mvmap2315/include/soc/addressmap.h
index 53e627bffe..f646b00e5a 100644
--- a/src/soc/marvell/mvmap2315/include/soc/addressmap.h
+++ b/src/soc/marvell/mvmap2315/include/soc/addressmap.h
@@ -24,6 +24,9 @@
#define MVMAP2315_PINMUX_BASE 0xE0140000
#define MVMAP2315_TIMER0_BASE 0xE1020000
+#define MVMAP2315_GPIOF_BASE 0xE0142000
+#define MVMAP2315_GPIOG_BASE 0xE0142100
+#define MVMAP2315_GPIOH_BASE 0xE0142200
#define MVMAP2315_BCM_GICD_BASE 0xE0111000
#define MVMAP2315_BCM_GICC_BASE 0xE0112000
diff --git a/src/soc/marvell/mvmap2315/include/soc/gpio.h b/src/soc/marvell/mvmap2315/include/soc/gpio.h
new file mode 100644
index 0000000000..93535de90f
--- /dev/null
+++ b/src/soc/marvell/mvmap2315/include/soc/gpio.h
@@ -0,0 +1,99 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2016 Marvell, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#ifndef __SOC_MARVELL_MVMAP2315_GPIO_H__
+#define __SOC_MARVELL_MVMAP2315_GPIO_H__
+
+#include <stdint.h>
+
+#include <types.h>
+
+#define GPIO(b, i) ((gpio_t){.bank = GPIO_##b, .idx = i})
+#define GET_GPIO_PAD(gpio) ((gpio.bank * 32) + gpio.idx + 160)
+
+struct mvmap2315_gpio_regs {
+ u32 plr;
+ u32 pdr;
+ u32 psr;
+ u32 pcr;
+ u32 hripr;
+ u32 lfipr;
+ u32 isr;
+ u32 sdr;
+ u32 cdr;
+ u32 shripr;
+ u32 chripr;
+ u32 slfipr;
+ u32 clfipr;
+ u32 olr;
+ u32 dwer;
+ u32 imr;
+ u32 rev0;
+ u32 rev1;
+ u32 simr;
+ u32 cimr;
+ u32 iter0;
+ u32 iter1;
+ u32 iter2;
+ u32 iter3;
+ u32 iter4;
+ u32 iter5;
+ u32 iter6;
+ u32 iter7;
+ u32 iter8;
+ u32 iter9;
+ u32 iter10;
+ u32 iter11;
+ u32 iter12;
+ u32 iter13;
+ u32 iter14;
+ u32 iter15;
+ u32 iter16;
+ u32 iter17;
+ u32 iter18;
+ u32 iter19;
+ u32 iter20;
+ u32 iter21;
+ u32 iter22;
+ u32 iter23;
+};
+
+check_member(mvmap2315_gpio_regs, iter23, 0xac);
+
+typedef union {
+ u32 raw;
+ struct {
+ u16 port;
+ union {
+ struct {
+ u16 num : 5;
+ u16 reserved1 : 11;
+ };
+ struct {
+ u16 idx : 3;
+ u16 bank : 2;
+ u16 reserved2 : 11;
+ };
+ };
+ };
+} gpio_t;
+
+enum {
+ GPIO_F = 0,
+ GPIO_G = 1,
+ GPIO_H = 2,
+};
+
+#endif /* __SOC_MARVELL_MVMAP2315_GPIO_H__ */