GK SDK 源码库: XMIPCLinuxV100R005C00SPC030 (kernel/tools/open_source excluded)
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Copyright (c) 2019, Linaro Limited
|
||||
* Copyright (c) 2019, Ying-Chun Liu (PaulLiu) <paul.liu@linaro.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#ifndef RPI3_GPIO_H
|
||||
#define RPI3_GPIO_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <drivers/gpio.h>
|
||||
|
||||
void rpi3_gpio_init(void);
|
||||
int rpi3_gpio_get_select(int gpio);
|
||||
void rpi3_gpio_set_select(int gpio, int fsel);
|
||||
|
||||
#define RPI3_GPIO_GPFSEL(n) ((n) * U(0x04))
|
||||
#define RPI3_GPIO_GPSET(n) (((n) * U(0x04)) + U(0x1C))
|
||||
#define RPI3_GPIO_GPCLR(n) (((n) * U(0x04)) + U(0x28))
|
||||
#define RPI3_GPIO_GPLEV(n) (((n) * U(0x04)) + U(0x34))
|
||||
#define RPI3_GPIO_GPPUD U(0x94)
|
||||
#define RPI3_GPIO_GPPUDCLK(n) (((n) * U(0x04)) + U(0x98))
|
||||
|
||||
#define RPI3_GPIO_FUNC_INPUT U(0)
|
||||
#define RPI3_GPIO_FUNC_OUTPUT U(1)
|
||||
#define RPI3_GPIO_FUNC_ALT0 U(4)
|
||||
#define RPI3_GPIO_FUNC_ALT1 U(5)
|
||||
#define RPI3_GPIO_FUNC_ALT2 U(6)
|
||||
#define RPI3_GPIO_FUNC_ALT3 U(7)
|
||||
#define RPI3_GPIO_FUNC_ALT4 U(3)
|
||||
#define RPI3_GPIO_FUNC_ALT5 U(2)
|
||||
|
||||
#endif /* RPI3_GPIO_H */
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
* Copyright (c) 2019, Arm Limited and Contributors. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#ifndef RPI3_MBOX_H
|
||||
#define RPI3_MBOX_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/* This struct must be aligned to 16 bytes */
|
||||
typedef struct __packed __aligned(16) rpi3_mbox_request {
|
||||
uint32_t size; /* Buffer size in bytes */
|
||||
uint32_t code; /* Request/response code */
|
||||
uint32_t tags[0];
|
||||
} rpi3_mbox_request_t;
|
||||
|
||||
#define RPI3_MBOX_BUFFER_SIZE U(256)
|
||||
|
||||
/* Constants to perform a request/check the status of a request. */
|
||||
#define RPI3_MBOX_PROCESS_REQUEST U(0x00000000)
|
||||
#define RPI3_MBOX_REQUEST_SUCCESSFUL U(0x80000000)
|
||||
#define RPI3_MBOX_REQUEST_ERROR U(0x80000001)
|
||||
|
||||
/* Command constants */
|
||||
#define RPI3_TAG_HARDWARE_GET_BOARD_REVISION U(0x00010002)
|
||||
#define RPI3_TAG_END U(0x00000000)
|
||||
|
||||
#define RPI3_TAG_REQUEST U(0x00000000)
|
||||
#define RPI3_TAG_IS_RESPONSE U(0x80000000) /* Set if response */
|
||||
#define RPI3_TAG_RESPONSE_LENGTH_MASK U(0x7FFFFFFF)
|
||||
|
||||
#define RPI3_CHANNEL_ARM_TO_VC U(0x8)
|
||||
#define RPI3_CHANNEL_MASK U(0xF)
|
||||
|
||||
void rpi3_vc_mailbox_request_send(rpi3_mbox_request_t *req, int req_size);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,12 @@
|
||||
/*
|
||||
* Copyright (c) 2019, Arm Limited and Contributors. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#ifndef RPI3_RNG_H
|
||||
#define RPI3_RNG_H
|
||||
|
||||
void rpi3_rng_read(void *buf, size_t len);
|
||||
|
||||
#endif
|
||||
+123
@@ -0,0 +1,123 @@
|
||||
/*
|
||||
* Copyright (c) 2019, Linaro Limited
|
||||
* Copyright (c) 2019, Ying-Chun Liu (PaulLiu) <paul.liu@linaro.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#ifndef RPI3_SDHOST_H
|
||||
#define RPI3_SDHOST_H
|
||||
|
||||
#include <drivers/mmc.h>
|
||||
#include <stdint.h>
|
||||
#include <platform_def.h>
|
||||
|
||||
struct rpi3_sdhost_params {
|
||||
uintptr_t reg_base;
|
||||
uint32_t clk_rate;
|
||||
uint32_t bus_width;
|
||||
uint32_t flags;
|
||||
uint32_t current_cmd;
|
||||
uint8_t cmdbusy;
|
||||
uint8_t mmc_app_cmd;
|
||||
uint32_t ns_per_fifo_word;
|
||||
|
||||
uint32_t sdcard_rca;
|
||||
uint32_t gpio48_pinselect[6];
|
||||
};
|
||||
|
||||
void rpi3_sdhost_init(struct rpi3_sdhost_params *params,
|
||||
struct mmc_device_info *mmc_dev_info);
|
||||
void rpi3_sdhost_stop(void);
|
||||
|
||||
/* Registers */
|
||||
#define HC_COMMAND 0x00 /* Command and flags */
|
||||
#define HC_ARGUMENT 0x04
|
||||
#define HC_TIMEOUTCOUNTER 0x08
|
||||
#define HC_CLOCKDIVISOR 0x0c
|
||||
#define HC_RESPONSE_0 0x10
|
||||
#define HC_RESPONSE_1 0x14
|
||||
#define HC_RESPONSE_2 0x18
|
||||
#define HC_RESPONSE_3 0x1c
|
||||
#define HC_HOSTSTATUS 0x20
|
||||
#define HC_POWER 0x30
|
||||
#define HC_DEBUG 0x34
|
||||
#define HC_HOSTCONFIG 0x38
|
||||
#define HC_BLOCKSIZE 0x3c
|
||||
#define HC_DATAPORT 0x40
|
||||
#define HC_BLOCKCOUNT 0x50
|
||||
|
||||
/* Flags for HC_COMMAND register */
|
||||
#define HC_CMD_ENABLE 0x8000
|
||||
#define HC_CMD_FAILED 0x4000
|
||||
#define HC_CMD_BUSY 0x0800
|
||||
#define HC_CMD_RESPONSE_NONE 0x0400
|
||||
#define HC_CMD_RESPONSE_LONG 0x0200
|
||||
#define HC_CMD_WRITE 0x0080
|
||||
#define HC_CMD_READ 0x0040
|
||||
#define HC_CMD_COMMAND_MASK 0x003f
|
||||
|
||||
#define HC_CLOCKDIVISOR_MAXVAL 0x07ff
|
||||
#define HC_CLOCKDIVISOR_PREFERVAL 0x027b
|
||||
#define HC_CLOCKDIVISOR_SLOWVAL 0x0148
|
||||
#define HC_CLOCKDIVISOR_STOPVAL 0x01fb
|
||||
|
||||
/* Flags for HC_HOSTSTATUS register */
|
||||
#define HC_HSTST_HAVEDATA 0x0001
|
||||
#define HC_HSTST_ERROR_FIFO 0x0008
|
||||
#define HC_HSTST_ERROR_CRC7 0x0010
|
||||
#define HC_HSTST_ERROR_CRC16 0x0020
|
||||
#define HC_HSTST_TIMEOUT_CMD 0x0040
|
||||
#define HC_HSTST_TIMEOUT_DATA 0x0080
|
||||
#define HC_HSTST_INT_BLOCK 0x0200
|
||||
#define HC_HSTST_INT_BUSY 0x0400
|
||||
|
||||
#define HC_HSTST_RESET 0xffff
|
||||
|
||||
#define HC_HSTST_MASK_ERROR_DATA (HC_HSTST_ERROR_FIFO | \
|
||||
HC_HSTST_ERROR_CRC7 | \
|
||||
HC_HSTST_ERROR_CRC16 | \
|
||||
HC_HSTST_TIMEOUT_DATA)
|
||||
|
||||
#define HC_HSTST_MASK_ERROR_ALL (HC_HSTST_MASK_ERROR_DATA | \
|
||||
HC_HSTST_TIMEOUT_CMD)
|
||||
|
||||
/* Flags for HC_HOSTCONFIG register */
|
||||
#define HC_HSTCF_INTBUS_WIDE 0x0002
|
||||
#define HC_HSTCF_EXTBUS_4BIT 0x0004
|
||||
#define HC_HSTCF_SLOW_CARD 0x0008
|
||||
#define HC_HSTCF_INT_DATA 0x0010
|
||||
#define HC_HSTCF_INT_BLOCK 0x0100
|
||||
#define HC_HSTCF_INT_BUSY 0x0400
|
||||
|
||||
/* Flags for HC_DEBUG register */
|
||||
#define HC_DBG_FIFO_THRESH_WRITE_SHIFT 9
|
||||
#define HC_DBG_FIFO_THRESH_READ_SHIFT 14
|
||||
#define HC_DBG_FIFO_THRESH_MASK 0x001f
|
||||
#define HC_DBG_FSM_MASK 0xf
|
||||
#define HC_DBG_FSM_IDENTMODE 0x0
|
||||
#define HC_DBG_FSM_DATAMODE 0x1
|
||||
#define HC_DBG_FSM_READDATA 0x2
|
||||
#define HC_DBG_FSM_WRITEDATA 0x3
|
||||
#define HC_DBG_FSM_READWAIT 0x4
|
||||
#define HC_DBG_FSM_READCRC 0x5
|
||||
#define HC_DBG_FSM_WRITECRC 0x6
|
||||
#define HC_DBG_FSM_WRITEWAIT1 0x7
|
||||
#define HC_DBG_FSM_POWERDOWN 0x8
|
||||
#define HC_DBG_FSM_POWERUP 0x9
|
||||
#define HC_DBG_FSM_WRITESTART1 0xa
|
||||
#define HC_DBG_FSM_WRITESTART2 0xb
|
||||
#define HC_DBG_FSM_GENPULSES 0xc
|
||||
#define HC_DBG_FSM_WRITEWAIT2 0xd
|
||||
#define HC_DBG_FSM_STARTPOWDOWN 0xf
|
||||
#define HC_DBG_FORCE_DATA_MODE 0x40000
|
||||
|
||||
/* Settings */
|
||||
#define HC_FIFO_SIZE 16
|
||||
#define HC_FIFO_THRESH_READ 4
|
||||
#define HC_FIFO_THRESH_WRITE 4
|
||||
|
||||
#define HC_TIMEOUT_DEFAULT 0x00f00000
|
||||
#define HC_TIMEOUT_IDLE 0x00a00000
|
||||
|
||||
#endif /* RPI3_SDHOST_H */
|
||||
Reference in New Issue
Block a user