diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/fdt_support.h | 5 | ||||
-rw-r--r-- | include/fdtdec.h | 14 | ||||
-rw-r--r-- | include/misc.h | 35 |
3 files changed, 49 insertions, 5 deletions
diff --git a/include/fdt_support.h b/include/fdt_support.h index 731809874f..e9f3497ab6 100644 --- a/include/fdt_support.h +++ b/include/fdt_support.h @@ -180,7 +180,8 @@ static inline void fdt_fixup_mtdparts(void *fdt, void *node_info, #endif void fdt_del_node_and_alias(void *blob, const char *alias); -u64 fdt_translate_address(void *blob, int node_offset, const __be32 *in_addr); +u64 fdt_translate_address(const void *blob, int node_offset, + const __be32 *in_addr); int fdt_node_offset_by_compat_reg(void *blob, const char *compat, phys_addr_t compat_off); int fdt_alloc_phandle(void *blob); @@ -239,7 +240,7 @@ static inline u64 of_read_number(const fdt32_t *cell, int size) return r; } -void of_bus_default_count_cells(void *blob, int parentoffset, +void of_bus_default_count_cells(const void *blob, int parentoffset, int *addrc, int *sizec); int ft_verify_fdt(void *fdt); int arch_fixup_memory_node(void *blob); diff --git a/include/fdtdec.h b/include/fdtdec.h index 70ea0bfc0b..aeb6bab1c4 100644 --- a/include/fdtdec.h +++ b/include/fdtdec.h @@ -297,11 +297,13 @@ int fdtdec_next_compatible_subnode(const void *blob, int node, * @param na the number of cells used to represent an address * @param ns the number of cells used to represent a size * @param sizep a pointer to store the size into. Use NULL if not required + * @param translate Indicates whether to translate the returned value + * using the parent node's ranges property. * @return address, if found, or FDT_ADDR_T_NONE if not */ fdt_addr_t fdtdec_get_addr_size_fixed(const void *blob, int node, const char *prop_name, int index, int na, int ns, - fdt_size_t *sizep); + fdt_size_t *sizep, bool translate); /* * Look up an address property in a node and return the parsed address, and @@ -317,10 +319,13 @@ fdt_addr_t fdtdec_get_addr_size_fixed(const void *blob, int node, * @param prop_name name of property to find * @param index which address to retrieve from a list of addresses. Often 0. * @param sizep a pointer to store the size into. Use NULL if not required + * @param translate Indicates whether to translate the returned value + * using the parent node's ranges property. * @return address, if found, or FDT_ADDR_T_NONE if not */ fdt_addr_t fdtdec_get_addr_size_auto_parent(const void *blob, int parent, - int node, const char *prop_name, int index, fdt_size_t *sizep); + int node, const char *prop_name, int index, fdt_size_t *sizep, + bool translate); /* * Look up an address property in a node and return the parsed address, and @@ -340,10 +345,13 @@ fdt_addr_t fdtdec_get_addr_size_auto_parent(const void *blob, int parent, * @param prop_name name of property to find * @param index which address to retrieve from a list of addresses. Often 0. * @param sizep a pointer to store the size into. Use NULL if not required + * @param translate Indicates whether to translate the returned value + * using the parent node's ranges property. * @return address, if found, or FDT_ADDR_T_NONE if not */ fdt_addr_t fdtdec_get_addr_size_auto_noparent(const void *blob, int node, - const char *prop_name, int index, fdt_size_t *sizep); + const char *prop_name, int index, fdt_size_t *sizep, + bool translate); /* * Look up an address property in a node and return the parsed address. diff --git a/include/misc.h b/include/misc.h index 2b788143b5..03ef55cdc8 100644 --- a/include/misc.h +++ b/include/misc.h @@ -38,6 +38,27 @@ int misc_write(struct udevice *dev, int offset, void *buf, int size); int misc_ioctl(struct udevice *dev, unsigned long request, void *buf); /* + * Send a message to the device and wait for a response. + * + * The caller provides the message type/ID and payload to be sent. + * The callee constructs any message header required, transmits it to the + * target, waits for a response, checks any error code in the response, + * strips any message header from the response, and returns the error code + * (or a parsed version of it) and the response message payload. + * + * @dev: the device. + * @msgid: the message ID/number to send. + * tx_msg: the request/transmit message payload. + * tx_size: the size of the buffer pointed at by tx_msg. + * rx_msg: the buffer to receive the response message payload. May be NULL if + * the caller only cares about the error code. + * rx_size: the size of the buffer pointed at by rx_msg. + * @return the response message size if OK, -ve on error + */ +int misc_call(struct udevice *dev, int msgid, void *tx_msg, int tx_size, + void *rx_msg, int rx_size); + +/* * struct misc_ops - Driver model Misc operations * * The uclass interface is implemented by all miscellaneous devices which @@ -74,6 +95,20 @@ struct misc_ops { * @return: 0 if OK, -ve on error */ int (*ioctl)(struct udevice *dev, unsigned long request, void *buf); + /* + * Send a message to the device and wait for a response. + * + * @dev: the device + * @msgid: the message ID/number to send + * tx_msg: the request/transmit message payload + * tx_size: the size of the buffer pointed at by tx_msg + * rx_msg: the buffer to receive the response message payload. May be + * NULL if the caller only cares about the error code. + * rx_size: the size of the buffer pointed at by rx_msg + * @return the response message size if OK, -ve on error + */ + int (*call)(struct udevice *dev, int msgid, void *tx_msg, int tx_size, + void *rx_msg, int rx_size); }; #endif /* _MISC_H_ */ |