diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/config_fallbacks.h | 3 | ||||
| -rw-r--r-- | include/configs/sandbox.h | 5 | ||||
| -rw-r--r-- | include/linux/crc8.h | 23 | ||||
| -rw-r--r-- | include/os.h | 65 | ||||
| -rw-r--r-- | include/part.h | 5 | ||||
| -rw-r--r-- | include/sandboxblockdev.h | 18 | 
6 files changed, 118 insertions, 1 deletions
| diff --git a/include/config_fallbacks.h b/include/config_fallbacks.h index 3633b09aa..d8339b26c 100644 --- a/include/config_fallbacks.h +++ b/include/config_fallbacks.h @@ -50,7 +50,8 @@  	defined(CONFIG_CMD_PART) || \  	defined(CONFIG_CMD_GPT) || \  	defined(CONFIG_MMC) || \ -	defined(CONFIG_SYSTEMACE) +	defined(CONFIG_SYSTEMACE) || \ +	defined(CONFIG_SANDBOX)  #define HAVE_BLOCK_DEVICE  #endif diff --git a/include/configs/sandbox.h b/include/configs/sandbox.h index 7e78a231d..a6d55822b 100644 --- a/include/configs/sandbox.h +++ b/include/configs/sandbox.h @@ -39,6 +39,9 @@  #define CONFIG_CMD_FAT  #define CONFIG_CMD_EXT4  #define CONFIG_CMD_EXT4_WRITE +#define CONFIG_CMD_PART +#define CONFIG_DOS_PARTITION +#define CONFIG_HOST_MAX_DEVICES 4  #define CONFIG_SYS_VSNPRINTF @@ -126,4 +129,6 @@  #define CONFIG_LZO  #define CONFIG_LZMA +#define CONFIG_TPM_TIS_SANDBOX +  #endif diff --git a/include/linux/crc8.h b/include/linux/crc8.h new file mode 100644 index 000000000..b5fd2ac9d --- /dev/null +++ b/include/linux/crc8.h @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2013 Google, Inc + * + * SPDX-License-Identifier:	GPL-2.0+ + */ + + +#ifndef __linux_crc8_h +#define __linux_crc8_h + +/** + * crc8() - Calculate and return CRC-8 of the data + * + * This uses an x^8 + x^2 + x + 1 polynomial.  A table-based algorithm would + * be faster, but for only a few bytes it isn't worth the code size + * + * @vptr: Buffer to checksum + * @len: Length of buffer in bytes + * @return CRC8 checksum + */ +unsigned int crc8(const unsigned char *vptr, int len); + +#endif diff --git a/include/os.h b/include/os.h index 950433daa..b65fba430 100644 --- a/include/os.h +++ b/include/os.h @@ -107,6 +107,35 @@ void os_tty_raw(int fd);  void *os_malloc(size_t length);  /** + * Free memory previous allocated with os_malloc()/os_realloc() + * + * This returns the memory to the OS. + * + * \param ptr		Pointer to memory block to free + */ +void *os_free(void *ptr); + +/** + * Reallocate previously-allocated memory to increase/decrease space + * + * This works in a similar way to the C library realloc() function. If + * length is 0, then ptr is freed. Otherwise the space used by ptr is + * expanded or reduced depending on whether length is larger or smaller + * than before. + * + * If ptr is NULL, then this is similar to calling os_malloc(). + * + * This function may need to move the memory block to make room for any + * extra space, in which case the new pointer is returned. + * + * \param ptr		Pointer to memory block to reallocate + * \param length	New length for memory block + * \return pointer to new memory block, or NULL on failure or if length + *	is 0. + */ +void *os_realloc(void *ptr, size_t length); + +/**   * Access to the usleep function of the os   *   * \param usec Time to sleep in micro seconds @@ -180,4 +209,40 @@ const char *os_dirent_get_typename(enum os_dirent_t type);   */  ssize_t os_get_filesize(const char *fname); +/** + * Write a character to the controlling OS terminal + * + * This bypasses the U-Boot console support and writes directly to the OS + * stdout file descriptor. + * + * @param ch	Character to write + */ +void os_putc(int ch); + +/** + * Write a string to the controlling OS terminal + * + * This bypasses the U-Boot console support and writes directly to the OS + * stdout file descriptor. + * + * @param str	String to write (note that \n is not appended) + */ +void os_puts(const char *str); + +/** + * Write the sandbox RAM buffer to a existing file + * + * @param fname		Filename to write memory to (simple binary format) + * @return 0 if OK, -ve on error + */ +int os_write_ram_buf(const char *fname); + +/** + * Read the sandbox RAM buffer from an existing file + * + * @param fname		Filename containing memory (simple binary format) + * @return 0 if OK, -ve on error + */ +int os_read_ram_buf(const char *fname); +  #endif diff --git a/include/part.h b/include/part.h index ce840bd84..4beb6db89 100644 --- a/include/part.h +++ b/include/part.h @@ -58,6 +58,8 @@ typedef struct block_dev_desc {  #define IF_TYPE_MMC		6  #define IF_TYPE_SD		7  #define IF_TYPE_SATA		8 +#define IF_TYPE_HOST		9 +#define IF_TYPE_MAX		10	/* Max number of IF_TYPE_* supported */  /* Part types */  #define PART_TYPE_UNKNOWN	0x00 @@ -102,6 +104,8 @@ block_dev_desc_t* usb_stor_get_dev(int dev);  block_dev_desc_t* mmc_get_dev(int dev);  block_dev_desc_t* systemace_get_dev(int dev);  block_dev_desc_t* mg_disk_get_dev(int dev); +block_dev_desc_t *host_get_dev(int dev); +int host_get_dev_err(int dev, block_dev_desc_t **blk_devp);  /* disk/part.c */  int get_partition_info (block_dev_desc_t * dev_desc, int part, disk_partition_t *info); @@ -123,6 +127,7 @@ static inline block_dev_desc_t* usb_stor_get_dev(int dev) { return NULL; }  static inline block_dev_desc_t* mmc_get_dev(int dev) { return NULL; }  static inline block_dev_desc_t* systemace_get_dev(int dev) { return NULL; }  static inline block_dev_desc_t* mg_disk_get_dev(int dev) { return NULL; } +static inline block_dev_desc_t *host_get_dev(int dev) { return NULL; }  static inline int get_partition_info (block_dev_desc_t * dev_desc, int part,  	disk_partition_t *info) { return -1; } diff --git a/include/sandboxblockdev.h b/include/sandboxblockdev.h new file mode 100644 index 000000000..627787aa3 --- /dev/null +++ b/include/sandboxblockdev.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2013, Henrik Nordstrom <henrik@henriknordstrom.net> + * + * SPDX-License-Identifier:	GPL-2.0+ + */ + +#ifndef __SANDBOX_BLOCK_DEV__ +#define __SANDBOX_BLOCK_DEV__ + +struct host_block_dev { +	block_dev_desc_t blk_dev; +	char *filename; +	int fd; +}; + +int host_dev_bind(int dev, char *filename); + +#endif |