diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-generic/memory_layout.h | 4 | ||||
-rw-r--r-- | include/image-metadata.h | 38 | ||||
-rw-r--r-- | include/linux/clk/clk-conf.h | 15 | ||||
-rw-r--r-- | include/linux/hash.h | 104 | ||||
-rw-r--r-- | include/linux/jffs2.h | 218 | ||||
-rw-r--r-- | include/mci.h | 26 | ||||
-rw-r--r-- | include/mfd/pfuze.h | 16 | ||||
-rw-r--r-- | include/param.h | 24 | ||||
-rw-r--r-- | include/pwm.h | 2 | ||||
-rw-r--r-- | include/regmap.h | 3 | ||||
-rw-r--r-- | include/spi/eeprom.h | 2 | ||||
-rw-r--r-- | include/tee/optee.h | 11 |
12 files changed, 432 insertions, 31 deletions
diff --git a/include/asm-generic/memory_layout.h b/include/asm-generic/memory_layout.h index 3f69664aa0..0d7ce3fe02 100644 --- a/include/asm-generic/memory_layout.h +++ b/include/asm-generic/memory_layout.h @@ -11,8 +11,8 @@ #define MALLOC_BASE CONFIG_MALLOC_BASE #endif -#ifdef CONFIG_BOOTM_OPTEE_SIZE -#define OPTEE_SIZE CONFIG_BOOTM_OPTEE_SIZE +#ifdef CONFIG_OPTEE_SIZE +#define OPTEE_SIZE CONFIG_OPTEE_SIZE #else #define OPTEE_SIZE 0 #endif diff --git a/include/image-metadata.h b/include/image-metadata.h index 330ca3588a..42ddf2fab0 100644 --- a/include/image-metadata.h +++ b/include/image-metadata.h @@ -26,9 +26,12 @@ #define IMD_TYPE_MODEL 0x640c8004 /* The board name this image is for */ #define IMD_TYPE_OF_COMPATIBLE 0x640c8005 /* the device tree compatible string */ #define IMD_TYPE_PARAMETER 0x640c8006 /* A generic parameter. Use key=value as data */ +#define IMD_TYPE_CRC32 0x640c1007 /* the checksum of the barebox images */ #define IMD_TYPE_END 0x640c7fff #define IMD_TYPE_INVALID 0xffffffff +#define IMD_CRC32_FLAG_TAG_VALID (1 << 0) + /* * The IMD header. All data is stored in little endian format in the image. * The next header starts at the next 4 byte boundary after the data. @@ -52,8 +55,26 @@ static inline int imd_is_string(uint32_t type) return (type & 0x8000) ? 1 : 0; } -static inline int imd_type_valid(uint32_t type) +/* + * A IMD int. + */ +struct imd_entry_crc32 { + struct imd_header header; + uint32_t data; + uint32_t flags; +}; + +static inline int imd_is_crc32(uint32_t type) +{ + return (type & IMD_TYPE_CRC32) ? 1 : 0; +} + +static inline int imd_crc32_is_valid(uint32_t flags) { + return (flags & IMD_CRC32_FLAG_TAG_VALID) ? 1 : 0; +} + +static inline int imd_type_valid(uint32_t type) { return (type & 0xffff0000) == 0x640c0000; } @@ -79,11 +100,18 @@ static inline uint32_t imd_read_length(const struct imd_header *imd) return imd_read_le32(&imd->datalength); } +static inline uint32_t imd_read_flags(const struct imd_entry_crc32 *imd) +{ + return imd_read_le32(&imd->flags); +} + const struct imd_header *imd_find_type(const struct imd_header *imd, uint32_t type); const struct imd_header *imd_get(const void *buf, int size); const char *imd_string_data(const struct imd_header *imd, int index); +const uint32_t *imd_uint32_data(const struct imd_header *imd); +uint32_t *imd_uint32_flags(const struct imd_header *imd); const char *imd_type_to_name(uint32_t type); char *imd_concat_strings(const struct imd_header *imd); const char *imd_get_param(const struct imd_header *imd, const char *name); @@ -91,6 +119,7 @@ const char *imd_get_param(const struct imd_header *imd, const char *name); extern int imd_command_verbose; int imd_command_setenv(const char *variable_name, const char *value); int imd_command(int argc, char *argv[]); +int imd_verify_crc32(void *buf, size_t size); #ifdef __BAREBOX__ @@ -108,6 +137,13 @@ int imd_command(int argc, char *argv[]); .data = _string, \ } +#define BAREBOX_IMD_CRC(_name, _crc, _keep_if_unused) \ + const struct imd_entry_crc32 __barebox_imd_##__name \ + __BAREBOX_IMD_SECTION(.barebox_imd_ ## _keep_if_unused ## _ ## _name) = { \ + .header.type = cpu_to_le32(IMD_TYPE_CRC32), \ + .header.datalength = cpu_to_le32(sizeof(uint32_t) * 2), \ + .data = _crc, \ + } #ifdef CONFIG_IMD void imd_used(const void *); diff --git a/include/linux/clk/clk-conf.h b/include/linux/clk/clk-conf.h index 8f4382e6c6..8da0f99d66 100644 --- a/include/linux/clk/clk-conf.h +++ b/include/linux/clk/clk-conf.h @@ -6,12 +6,23 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ - -#if defined(CONFIG_OFTREE) && defined(CONFIG_COMMON_CLK_OF_PROVIDER) +#ifndef __CLK_CONF_H +#define __CLK_CONF_H #include <linux/types.h> +#if defined(CONFIG_OFTREE) && defined(CONFIG_COMMON_CLK_OF_PROVIDER) + struct device_node; int of_clk_set_defaults(struct device_node *node, bool clk_supplier); +#else + +static inline int of_clk_set_defaults(struct device_node *node, + bool clk_supplier) +{ + return 0; +} + #endif +#endif /* __CLK_CONF_H */ diff --git a/include/linux/hash.h b/include/linux/hash.h new file mode 100644 index 0000000000..ad6fa21d97 --- /dev/null +++ b/include/linux/hash.h @@ -0,0 +1,104 @@ +#ifndef _LINUX_HASH_H +#define _LINUX_HASH_H +/* Fast hashing routine for ints, longs and pointers. + (C) 2002 Nadia Yvette Chambers, IBM */ + +#include <asm/types.h> +#include <linux/compiler.h> + +/* + * The "GOLDEN_RATIO_PRIME" is used in ifs/btrfs/brtfs_inode.h and + * fs/inode.c. It's not actually prime any more (the previous primes + * were actively bad for hashing), but the name remains. + */ +#if BITS_PER_LONG == 32 +#define GOLDEN_RATIO_PRIME GOLDEN_RATIO_32 +#define hash_long(val, bits) hash_32(val, bits) +#elif BITS_PER_LONG == 64 +#define hash_long(val, bits) hash_64(val, bits) +#define GOLDEN_RATIO_PRIME GOLDEN_RATIO_64 +#else +#error Wordsize not 32 or 64 +#endif + +/* + * This hash multiplies the input by a large odd number and takes the + * high bits. Since multiplication propagates changes to the most + * significant end only, it is essential that the high bits of the + * product be used for the hash value. + * + * Chuck Lever verified the effectiveness of this technique: + * http://www.citi.umich.edu/techreports/reports/citi-tr-00-1.pdf + * + * Although a random odd number will do, it turns out that the golden + * ratio phi = (sqrt(5)-1)/2, or its negative, has particularly nice + * properties. (See Knuth vol 3, section 6.4, exercise 9.) + * + * These are the negative, (1 - phi) = phi**2 = (3 - sqrt(5))/2, + * which is very slightly easier to multiply by and makes no + * difference to the hash distribution. + */ +#define GOLDEN_RATIO_32 0x61C88647 +#define GOLDEN_RATIO_64 0x61C8864680B583EBull + +#ifdef CONFIG_HAVE_ARCH_HASH +/* This header may use the GOLDEN_RATIO_xx constants */ +#include <asm/hash.h> +#endif + +/* + * The _generic versions exist only so lib/test_hash.c can compare + * the arch-optimized versions with the generic. + * + * Note that if you change these, any <asm/hash.h> that aren't updated + * to match need to have their HAVE_ARCH_* define values updated so the + * self-test will not false-positive. + */ +#ifndef HAVE_ARCH__HASH_32 +#define __hash_32 __hash_32_generic +#endif +static inline u32 __hash_32_generic(u32 val) +{ + return val * GOLDEN_RATIO_32; +} + +#ifndef HAVE_ARCH_HASH_32 +#define hash_32 hash_32_generic +#endif +static inline u32 hash_32_generic(u32 val, unsigned int bits) +{ + /* High bits are more random, so use them. */ + return __hash_32(val) >> (32 - bits); +} + +#ifndef HAVE_ARCH_HASH_64 +#define hash_64 hash_64_generic +#endif +static __always_inline u32 hash_64_generic(u64 val, unsigned int bits) +{ +#if BITS_PER_LONG == 64 + /* 64x64-bit multiply is efficient on all 64-bit processors */ + return val * GOLDEN_RATIO_64 >> (64 - bits); +#else + /* Hash 64 bits using only 32x32-bit multiply. */ + return hash_32((u32)val ^ __hash_32(val >> 32), bits); +#endif +} + +static inline u32 hash_ptr(const void *ptr, unsigned int bits) +{ + return hash_long((unsigned long)ptr, bits); +} + +/* This really should be called fold32_ptr; it does no hashing to speak of. */ +static inline u32 hash32_ptr(const void *ptr) +{ + unsigned long val = (unsigned long)ptr; + +#if BITS_PER_LONG == 64 + val ^= (val >> 32); +#endif + return (u32)val; +} + +#endif /* _LINUX_HASH_H */ diff --git a/include/linux/jffs2.h b/include/linux/jffs2.h new file mode 100644 index 0000000000..ed2ebcfc42 --- /dev/null +++ b/include/linux/jffs2.h @@ -0,0 +1,218 @@ +/* + * JFFS2 -- Journalling Flash File System, Version 2. + * + * Copyright © 2001-2007 Red Hat, Inc. + * Copyright © 2004-2010 David Woodhouse <dwmw2@infradead.org> + * + * Created by David Woodhouse <dwmw2@infradead.org> + * + * For licensing information, see the file 'LICENCE' in the + * jffs2 directory. + */ + +#ifndef __LINUX_JFFS2_H__ +#define __LINUX_JFFS2_H__ + +#include <linux/types.h> +#include <linux/magic.h> + +/* You must include something which defines the C99 uintXX_t types. + We don't do it from here because this file is used in too many + different environments. */ + +/* Values we may expect to find in the 'magic' field */ +#define JFFS2_OLD_MAGIC_BITMASK 0x1984 +#define JFFS2_MAGIC_BITMASK 0x1985 +#define KSAMTIB_CIGAM_2SFFJ 0x8519 /* For detecting wrong-endian fs */ +#define JFFS2_EMPTY_BITMASK 0xffff +#define JFFS2_DIRTY_BITMASK 0x0000 + +/* Summary node MAGIC marker */ +#define JFFS2_SUM_MAGIC 0x02851885 + +/* We only allow a single char for length, and 0xFF is empty flash so + we don't want it confused with a real length. Hence max 254. +*/ +#define JFFS2_MAX_NAME_LEN 254 + +/* How small can we sensibly write nodes? */ +#define JFFS2_MIN_DATA_LEN 128 + +#define JFFS2_COMPR_NONE 0x00 +#define JFFS2_COMPR_ZERO 0x01 +#define JFFS2_COMPR_RTIME 0x02 +#define JFFS2_COMPR_RUBINMIPS 0x03 +#define JFFS2_COMPR_COPY 0x04 +#define JFFS2_COMPR_DYNRUBIN 0x05 +#define JFFS2_COMPR_ZLIB 0x06 +#define JFFS2_COMPR_LZO 0x07 +/* Compatibility flags. */ +#define JFFS2_COMPAT_MASK 0xc000 /* What do to if an unknown nodetype is found */ +#define JFFS2_NODE_ACCURATE 0x2000 +/* INCOMPAT: Fail to mount the filesystem */ +#define JFFS2_FEATURE_INCOMPAT 0xc000 +/* ROCOMPAT: Mount read-only */ +#define JFFS2_FEATURE_ROCOMPAT 0x8000 +/* RWCOMPAT_COPY: Mount read/write, and copy the node when it's GC'd */ +#define JFFS2_FEATURE_RWCOMPAT_COPY 0x4000 +/* RWCOMPAT_DELETE: Mount read/write, and delete the node when it's GC'd */ +#define JFFS2_FEATURE_RWCOMPAT_DELETE 0x0000 + +#define JFFS2_NODETYPE_DIRENT (JFFS2_FEATURE_INCOMPAT | JFFS2_NODE_ACCURATE | 1) +#define JFFS2_NODETYPE_INODE (JFFS2_FEATURE_INCOMPAT | JFFS2_NODE_ACCURATE | 2) +#define JFFS2_NODETYPE_CLEANMARKER (JFFS2_FEATURE_RWCOMPAT_DELETE | JFFS2_NODE_ACCURATE | 3) +#define JFFS2_NODETYPE_PADDING (JFFS2_FEATURE_RWCOMPAT_DELETE | JFFS2_NODE_ACCURATE | 4) + +#define JFFS2_NODETYPE_SUMMARY (JFFS2_FEATURE_RWCOMPAT_DELETE | JFFS2_NODE_ACCURATE | 6) + +#define JFFS2_NODETYPE_XATTR (JFFS2_FEATURE_INCOMPAT | JFFS2_NODE_ACCURATE | 8) +#define JFFS2_NODETYPE_XREF (JFFS2_FEATURE_INCOMPAT | JFFS2_NODE_ACCURATE | 9) + +/* XATTR Related */ +#define JFFS2_XPREFIX_USER 1 /* for "user." */ +#define JFFS2_XPREFIX_SECURITY 2 /* for "security." */ +#define JFFS2_XPREFIX_ACL_ACCESS 3 /* for "system.posix_acl_access" */ +#define JFFS2_XPREFIX_ACL_DEFAULT 4 /* for "system.posix_acl_default" */ +#define JFFS2_XPREFIX_TRUSTED 5 /* for "trusted.*" */ + +#define JFFS2_ACL_VERSION 0x0001 + +#define JFFS2_INO_FLAG_PREREAD 1 /* Do read_inode() for this one at + mount time, don't wait for it to + happen later */ +#define JFFS2_INO_FLAG_USERCOMPR 2 /* User has requested a specific + compression type */ + + +/* These can go once we've made sure we've caught all uses without + byteswapping */ + +typedef struct { + __u32 v32; +} __attribute__((packed)) jint32_t; + +typedef struct { + __u32 m; +} __attribute__((packed)) jmode_t; + +typedef struct { + __u16 v16; +} __attribute__((packed)) jint16_t; + +struct jffs2_unknown_node +{ + /* All start like this */ + jint16_t magic; + jint16_t nodetype; + jint32_t totlen; /* So we can skip over nodes we don't grok */ + jint32_t hdr_crc; +}; + +struct jffs2_raw_dirent +{ + jint16_t magic; + jint16_t nodetype; /* == JFFS2_NODETYPE_DIRENT */ + jint32_t totlen; + jint32_t hdr_crc; + jint32_t pino; + jint32_t version; + jint32_t ino; /* == zero for unlink */ + jint32_t mctime; + __u8 nsize; + __u8 type; + __u8 unused[2]; + jint32_t node_crc; + jint32_t name_crc; + __u8 name[0]; +}; + +/* The JFFS2 raw inode structure: Used for storage on physical media. */ +/* The uid, gid, atime, mtime and ctime members could be longer, but + are left like this for space efficiency. If and when people decide + they really need them extended, it's simple enough to add support for + a new type of raw node. +*/ +struct jffs2_raw_inode +{ + jint16_t magic; /* A constant magic number. */ + jint16_t nodetype; /* == JFFS2_NODETYPE_INODE */ + jint32_t totlen; /* Total length of this node (inc data, etc.) */ + jint32_t hdr_crc; + jint32_t ino; /* Inode number. */ + jint32_t version; /* Version number. */ + jmode_t mode; /* The file's type or mode. */ + jint16_t uid; /* The file's owner. */ + jint16_t gid; /* The file's group. */ + jint32_t isize; /* Total resultant size of this inode (used for truncations) */ + jint32_t atime; /* Last access time. */ + jint32_t mtime; /* Last modification time. */ + jint32_t ctime; /* Change time. */ + jint32_t offset; /* Where to begin to write. */ + jint32_t csize; /* (Compressed) data size */ + jint32_t dsize; /* Size of the node's data. (after decompression) */ + __u8 compr; /* Compression algorithm used */ + __u8 usercompr; /* Compression algorithm requested by the user */ + jint16_t flags; /* See JFFS2_INO_FLAG_* */ + jint32_t data_crc; /* CRC for the (compressed) data. */ + jint32_t node_crc; /* CRC for the raw inode (excluding data) */ + __u8 data[0]; +}; + +struct jffs2_raw_xattr { + jint16_t magic; + jint16_t nodetype; /* = JFFS2_NODETYPE_XATTR */ + jint32_t totlen; + jint32_t hdr_crc; + jint32_t xid; /* XATTR identifier number */ + jint32_t version; + __u8 xprefix; + __u8 name_len; + jint16_t value_len; + jint32_t data_crc; + jint32_t node_crc; + __u8 data[0]; +} __attribute__((packed)); + +struct jffs2_raw_xref +{ + jint16_t magic; + jint16_t nodetype; /* = JFFS2_NODETYPE_XREF */ + jint32_t totlen; + jint32_t hdr_crc; + jint32_t ino; /* inode number */ + jint32_t xid; /* XATTR identifier number */ + jint32_t xseqno; /* xref sequential number */ + jint32_t node_crc; +} __attribute__((packed)); + +struct jffs2_raw_summary +{ + jint16_t magic; + jint16_t nodetype; /* = JFFS2_NODETYPE_SUMMARY */ + jint32_t totlen; + jint32_t hdr_crc; + jint32_t sum_num; /* number of sum entries*/ + jint32_t cln_mkr; /* clean marker size, 0 = no cleanmarker */ + jint32_t padded; /* sum of the size of padding nodes */ + jint32_t sum_crc; /* summary information crc */ + jint32_t node_crc; /* node crc */ + jint32_t sum[0]; /* inode summary info */ +}; + +union jffs2_node_union +{ + struct jffs2_raw_inode i; + struct jffs2_raw_dirent d; + struct jffs2_raw_xattr x; + struct jffs2_raw_xref r; + struct jffs2_raw_summary s; + struct jffs2_unknown_node u; +}; + +/* Data payload for device nodes. */ +union jffs2_device_node { + jint16_t old_id; + jint32_t new_id; +}; + +#endif /* __LINUX_JFFS2_H__ */ diff --git a/include/mci.h b/include/mci.h index 50febdd4b8..cf9d188c5c 100644 --- a/include/mci.h +++ b/include/mci.h @@ -357,6 +357,18 @@ struct mci_data { unsigned blocksize; /**< block size in bytes (mostly 512) */ }; +enum mci_timing { + MMC_TIMING_LEGACY = 0, + MMC_TIMING_MMC_HS = 1, + MMC_TIMING_SD_HS = 2, + MMC_TIMING_UHS_SDR12 = MMC_TIMING_LEGACY, + MMC_TIMING_UHS_SDR25 = MMC_TIMING_SD_HS, + MMC_TIMING_UHS_SDR50 = 3, + MMC_TIMING_UHS_SDR104 = 4, + MMC_TIMING_UHS_DDR50 = 5, + MMC_TIMING_MMC_HS200 = 6, +}; + struct mci_ios { unsigned int clock; /* clock rate */ @@ -366,17 +378,7 @@ struct mci_ios { #define MMC_BUS_WIDTH_4 2 #define MMC_BUS_WIDTH_8 3 - unsigned char timing; /* timing specification used */ - -#define MMC_TIMING_LEGACY 0 -#define MMC_TIMING_MMC_HS 1 -#define MMC_TIMING_SD_HS 2 -#define MMC_TIMING_UHS_SDR12 MMC_TIMING_LEGACY -#define MMC_TIMING_UHS_SDR25 MMC_TIMING_SD_HS -#define MMC_TIMING_UHS_SDR50 3 -#define MMC_TIMING_UHS_SDR104 4 -#define MMC_TIMING_UHS_DDR50 5 -#define MMC_TIMING_MMC_HS200 6 + enum mci_timing timing; /* timing specification used */ #define MMC_SDR_MODE 0 #define MMC_1_2V_DDR_MODE 1 @@ -398,6 +400,7 @@ struct mci_host { unsigned f_max; /**< host interface upper limit */ unsigned clock; /**< Current clock used to talk to the card */ unsigned bus_width; /**< used data bus width to the card */ + enum mci_timing timing; /**< used timing specification to the card */ unsigned max_req_size; unsigned dsr_val; /**< optional dsr value */ int use_dsr; /**< optional dsr usage flag */ @@ -458,7 +461,6 @@ struct mci { int dsr_imp; /**< DSR implementation state from CSD */ char *ext_csd; int probe; - struct param_d *param_probe; struct param_d *param_boot; int bootpart; diff --git a/include/mfd/pfuze.h b/include/mfd/pfuze.h index 6045ceec0a..8e021680ef 100644 --- a/include/mfd/pfuze.h +++ b/include/mfd/pfuze.h @@ -1,6 +1,22 @@ #ifndef __INCLUDE_PFUZE_H #define __INCLUDE_PFUZE_H +#include <regmap.h> + +#ifdef CONFIG_REGULATOR_PFUZE +/* + * For proper poweroff sequencing, users on imx6 needs to call + * poweroff_handler_register_fn(imx6_pm_stby_poweroff); + * inside of the callback, to ensure a proper poweroff sequence + */ int pfuze_register_init_callback(void(*callback)(struct regmap *map)); +#else + +static inline int pfuze_register_init_callback(void(*callback)(struct regmap *map)) +{ + return -ENODEV; +} +#endif + #endif /* __INCLUDE_PFUZE_H */ diff --git a/include/param.h b/include/param.h index 2d68338bb3..6aca1b481d 100644 --- a/include/param.h +++ b/include/param.h @@ -38,6 +38,8 @@ struct param_d { enum param_type type; }; +enum param_tristate { PARAM_TRISTATE_UNKNOWN, PARAM_TRISTATE_TRUE, PARAM_TRISTATE_FALSE }; + #ifdef CONFIG_PARAMETER const char *get_param_type(struct param_d *param); const char *dev_get_param(struct device_d *dev, const char *name); @@ -64,8 +66,6 @@ struct param_d *dev_add_param_enum(struct device_d *dev, const char *name, int (*get)(struct param_d *p, void *priv), int *value, const char * const *names, int max, void *priv); -enum param_tristate { PARAM_TRISTATE_UNKNOWN, PARAM_TRISTATE_TRUE, PARAM_TRISTATE_FALSE }; - struct param_d *dev_add_param_tristate(struct device_d *dev, const char *name, int (*set)(struct param_d *p, void *priv), int (*get)(struct param_d *p, void *priv), @@ -119,7 +119,7 @@ static inline struct param_d *dev_add_param(struct device_d *dev, const char *na const char *(*get)(struct device_d *, struct param_d *p), unsigned long flags) { - return ERR_PTR(-ENOSYS); + return NULL; } static inline struct param_d *dev_add_param_string(struct device_d *dev, const char *name, @@ -127,7 +127,7 @@ static inline struct param_d *dev_add_param_string(struct device_d *dev, const c int (*get)(struct param_d *p, void *priv), char **value, void *priv) { - return ERR_PTR(-ENOSYS); + return NULL; } static inline struct param_d *__dev_add_param_int(struct device_d *dev, const char *name, @@ -135,7 +135,7 @@ static inline struct param_d *__dev_add_param_int(struct device_d *dev, const ch int (*get)(struct param_d *p, void *priv), void *value, enum param_type type, const char *format, void *priv) { - return ERR_PTR(-ENOSYS); + return NULL; } static inline struct param_d *dev_add_param_enum(struct device_d *dev, const char *name, @@ -144,7 +144,7 @@ static inline struct param_d *dev_add_param_enum(struct device_d *dev, const cha int *value, const char * const *names, int max, void *priv) { - return ERR_PTR(-ENOSYS); + return NULL; } static inline struct param_d *dev_add_param_bitmask(struct device_d *dev, const char *name, @@ -152,7 +152,7 @@ static inline struct param_d *dev_add_param_bitmask(struct device_d *dev, const int (*get)(struct param_d *p, void *priv), unsigned long *value, const char * const *names, int max, void *priv) { - return ERR_PTR(-ENOSYS); + return NULL; } static inline struct param_d *dev_add_param_tristate(struct device_d *dev, const char *name, @@ -160,13 +160,13 @@ static inline struct param_d *dev_add_param_tristate(struct device_d *dev, const int (*get)(struct param_d *p, void *priv), int *value, void *priv) { - return ERR_PTR(-ENOSYS); + return NULL; } static inline struct param_d *dev_add_param_tristate_ro(struct device_d *dev, const char *name, int *value) { - return ERR_PTR(-ENOSYS); + return NULL; } static inline struct param_d *dev_add_param_ip(struct device_d *dev, const char *name, @@ -174,7 +174,7 @@ static inline struct param_d *dev_add_param_ip(struct device_d *dev, const char int (*get)(struct param_d *p, void *priv), IPaddr_t *ip, void *priv) { - return ERR_PTR(-ENOSYS); + return NULL; } static inline struct param_d *dev_add_param_mac(struct device_d *dev, const char *name, @@ -182,13 +182,13 @@ static inline struct param_d *dev_add_param_mac(struct device_d *dev, const char int (*get)(struct param_d *p, void *priv), u8 *mac, void *priv) { - return ERR_PTR(-ENOSYS); + return NULL; } static inline struct param_d *dev_add_param_fixed(struct device_d *dev, const char *name, const char *value) { - return ERR_PTR(-ENOSYS); + return NULL; } static inline void dev_remove_param(struct param_d *p) {} diff --git a/include/pwm.h b/include/pwm.h index dcc81af867..ca01f5b53d 100644 --- a/include/pwm.h +++ b/include/pwm.h @@ -67,7 +67,7 @@ struct pwm_ops { struct pwm_chip { int id; const char *devname; - struct pwm_ops *ops; + const struct pwm_ops *ops; int duty_ns; int period_ns; }; diff --git a/include/regmap.h b/include/regmap.h index 8528f81079..718bb51979 100644 --- a/include/regmap.h +++ b/include/regmap.h @@ -38,6 +38,9 @@ struct regmap_bus { regmap_hw_reg_read reg_read; }; +struct device_d; +struct device_node; + struct regmap *regmap_init(struct device_d *dev, const struct regmap_bus *bus, void *bus_context, diff --git a/include/spi/eeprom.h b/include/spi/eeprom.h index 410ecea19c..1afeeede98 100644 --- a/include/spi/eeprom.h +++ b/include/spi/eeprom.h @@ -11,7 +11,7 @@ */ struct spi_eeprom { char name[10]; - u16 page_size; /* for writes */ + u32 page_size; /* for writes */ u16 flags; #define EE_ADDR1 0x0001 /* 8 bit addrs */ #define EE_ADDR2 0x0002 /* 16 bit addrs */ diff --git a/include/tee/optee.h b/include/tee/optee.h index 8cfe06d889..fa124236ba 100644 --- a/include/tee/optee.h +++ b/include/tee/optee.h @@ -10,6 +10,9 @@ #ifndef _OPTEE_H #define _OPTEE_H +#include <types.h> +#include <asm-generic/errno.h> + #define OPTEE_MAGIC 0x4554504f #define OPTEE_VERSION 1 #define OPTEE_ARCH_ARM32 0 @@ -27,4 +30,12 @@ struct optee_header { uint32_t paged_size; }; +int optee_verify_header (struct optee_header *hdr); + +#ifdef __PBL__ + +int start_optee_early(void* fdt, void* tee); + +#endif /* __PBL__ */ + #endif /* _OPTEE_H */ |