summaryrefslogtreecommitdiff
path: root/include/cavium
diff options
context:
space:
mode:
authorSergey Temerkhanov <s.temerkhanov@gmail.com>2015-10-14 09:55:51 -0700
committerTom Rini <trini@konsulko.com>2016-01-19 22:26:12 +0000
commit900f88f3b08b71becd5cecba0687e8eb24fc342b (patch)
tree99680f9ca2a2156890098010a41fde7584e59ab6 /include/cavium
parent746f985add5244c00a5dbb19bc67ceab52566a91 (diff)
downloadu-boot-900f88f3b08b71becd5cecba0687e8eb24fc342b.tar.gz
u-boot-900f88f3b08b71becd5cecba0687e8eb24fc342b.tar.bz2
u-boot-900f88f3b08b71becd5cecba0687e8eb24fc342b.zip
armv8: cavium: Add an implementation of ATF calling functions
This commit adds functions issuing calls to the product-specific ATF services Signed-off-by: Sergey Temerkhanov <s.temerkhanov@gmail.com> Signed-off-by: Radha Mohan Chintakuntla <rchintakuntla@cavium.com>
Diffstat (limited to 'include/cavium')
-rw-r--r--include/cavium/atf.h22
-rw-r--r--include/cavium/atf_part.h26
-rw-r--r--include/cavium/thunderx_svc.h67
3 files changed, 115 insertions, 0 deletions
diff --git a/include/cavium/atf.h b/include/cavium/atf.h
new file mode 100644
index 0000000000..0a53c2f1de
--- /dev/null
+++ b/include/cavium/atf.h
@@ -0,0 +1,22 @@
+/**
+ * (C) Copyright 2014, Cavium Inc.
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+**/
+#ifndef __ATF_H__
+#define __ATF_H__
+#include <cavium/atf_part.h>
+
+ssize_t atf_read_mmc(uintptr_t offset, void *buffer, size_t size);
+ssize_t atf_read_nor(uintptr_t offset, void *buffer, size_t size);
+ssize_t atf_get_pcount(void);
+ssize_t atf_get_part(struct storage_partition *part, unsigned int index);
+ssize_t atf_erase_nor(uintptr_t offset, size_t size);
+ssize_t atf_write_nor(uintptr_t offset, const void *buffer, size_t size);
+ssize_t atf_write_mmc(uintptr_t offset, const void *buffer, size_t size);
+ssize_t atf_dram_size(unsigned int node);
+ssize_t atf_node_count(void);
+ssize_t atf_env_count(void);
+ssize_t atf_env_string(size_t index, char *str);
+
+#endif
diff --git a/include/cavium/atf_part.h b/include/cavium/atf_part.h
new file mode 100644
index 0000000000..182f6f4b88
--- /dev/null
+++ b/include/cavium/atf_part.h
@@ -0,0 +1,26 @@
+/**
+ * (C) Copyright 2014, Cavium Inc.
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+**/
+
+#ifndef __ATF_PART_H__
+#define __ATF_PART_H__
+
+struct storage_partition {
+ unsigned int type;
+ unsigned int size;
+ unsigned long offset;
+};
+
+enum {
+ PARTITION_NBL1FW_REST = 0,
+ PARTITION_BL2_BL31 = 1,
+ PARTITION_UBOOT = 2,
+ PARTITION_UEFI = 2,
+ PARTITION_KERNEL = 3,
+ PARTITION_DEVICE_TREE = 4,
+ PARTITION_LAST,
+};
+
+#endif
diff --git a/include/cavium/thunderx_svc.h b/include/cavium/thunderx_svc.h
new file mode 100644
index 0000000000..416ce3cfec
--- /dev/null
+++ b/include/cavium/thunderx_svc.h
@@ -0,0 +1,67 @@
+/**
+ * (C) Copyright 2014, Cavium Inc.
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+**/
+
+#ifndef __THUNDERX_SVC_H__
+#define __THUNDERX_SVC_H__
+
+/* SMC function IDs for general purpose queries */
+
+#define THUNDERX_SVC_CALL_COUNT 0x4300ff00
+#define THUNDERX_SVC_UID 0x4300ff01
+
+#define THUNDERX_SVC_VERSION 0x4300ff03
+
+#define ARM_STD_SVC_VERSION 0x8400ff03
+
+/* ThunderX Service Calls version numbers */
+#define THUNDERX_VERSION_MAJOR 0x0
+#define THUNDERX_VERSION_MINOR 0x1
+
+#define THUNDERX_MMC_READ 0x43000101
+/* x1 - block address
+ * x2 - size
+ * x3 - buffer address
+ */
+#define THUNDERX_MMC_WRITE 0x43000102
+/* x1 - block address
+ * x2 - size
+ * x3 - buffer address
+ */
+
+#define THUNDERX_NOR_READ 0x43000111
+/* x1 - block address
+ * x2 - size
+ * x3 - buffer address
+ */
+#define THUNDERX_NOR_WRITE 0x43000112
+/* x1 - block address
+ * x2 - size
+ * x3 - buffer address
+ */
+#define THUNDERX_NOR_ERASE 0x43000113
+/* x1 - block address
+ */
+
+#define THUNDERX_PART_COUNT 0x43000201
+#define THUNDERX_GET_PART 0x43000202
+/* x1 - pointer to the buffer
+ * x2 - index
+ */
+
+#define THUNDERX_DRAM_SIZE 0x43000301
+/* x1 - node number
+ */
+
+#define THUNDERX_GTI_SYNC 0x43000401
+
+#define THUNDERX_ENV_COUNT 0x43000501
+#define THUNDERX_ENV_STRING 0x43000502
+/* x1 - index
+ */
+
+#define THUNDERX_NODE_COUNT 0x43000601
+
+#endif /* __THUNDERX_SVC_H__ */