Pull request for efi-2022-07-rc1

Documentation:

* Describe how enable DM_SERIAL for a board

UEFI

* Preparatory patches for better integration of DM and UEFI
* Use sysreset after capsule updates instead of do_reset
* Allow to disable persisting non-volatile variables
This commit is contained in:
Tom Rini
2022-04-10 11:21:39 -04:00
22 changed files with 552 additions and 42 deletions

View File

@@ -474,6 +474,10 @@ struct global_data {
*/
struct event_state event_state;
#endif
/**
* @dmtag_list: List of DM tags
*/
struct list_head dmtag_list;
};
#ifndef DO_DEPS_ONLY
static_assert(sizeof(struct global_data) == GD_SIZE);

110
include/dm/tag.h Normal file
View File

@@ -0,0 +1,110 @@
/* SPDX-License-Identifier: GPL-2.0+ */
/*
* Copyright (c) 2021 Linaro Limited
* Author: AKASHI Takahiro
*/
#ifndef _DM_TAG_H
#define _DM_TAG_H
#include <linux/list.h>
#include <linux/types.h>
struct udevice;
enum dm_tag_t {
/* EFI_LOADER */
DM_TAG_EFI = 0,
DM_TAG_COUNT,
};
/**
* dmtag_node
*
* @sibling: List of dm-tag nodes
* @dev: Associated udevice
* @tag: Tag type
* @ptr: Pointer as a value
* @val: Value
*/
struct dmtag_node {
struct list_head sibling;
struct udevice *dev;
enum dm_tag_t tag;
union {
void *ptr;
ulong val;
};
};
/**
* dev_tag_set_ptr() - set a tag's value as a pointer
* @dev: Device to operate
* @tag: Tag type
* @ptr: Pointer to set
*
* Set the value, @ptr, as of @tag associated with the device, @dev
*
* Return: 0 on success, -ve on error
*/
int dev_tag_set_ptr(struct udevice *dev, enum dm_tag_t tag, void *ptr);
/**
* dev_tag_set_val() set a tag's value as an integer
* @dev: Device to operate
* @tag: Tag type
* @val: Value to set
*
* Set the value, @val, as of @tag associated with the device, @dev
*
* Return: on success, -ve on error
*/
int dev_tag_set_val(struct udevice *dev, enum dm_tag_t tag, ulong val);
/**
* dev_tag_get_ptr() - get a tag's value as a pointer
* @dev: Device to operate
* @tag: Tag type
* @ptrp: Pointer to tag's value (pointer)
*
* Get a tag's value as a pointer
*
* Return: on success, -ve on error
*/
int dev_tag_get_ptr(struct udevice *dev, enum dm_tag_t tag, void **ptrp);
/**
* dev_tag_get_val() - get a tag's value as an integer
* @dev: Device to operate
* @tag: Tag type
* @valp: Pointer to tag's value (ulong)
*
* Get a tag's value as an integer
*
* Return: 0 on success, -ve on error
*/
int dev_tag_get_val(struct udevice *dev, enum dm_tag_t tag, ulong *valp);
/**
* dev_tag_del() - delete a tag
* @dev: Device to operate
* @tag: Tag type
*
* Delete a tag of @tag associated with the device, @dev
*
* Return: 0 on success, -ve on error
*/
int dev_tag_del(struct udevice *dev, enum dm_tag_t tag);
/**
* dev_tag_del_all() - delete all tags
* @dev: Device to operate
*
* Delete all the tags associated with the device, @dev
*
* Return: 0 on success, -ve on error
*/
int dev_tag_del_all(struct udevice *dev);
#endif /* _DM_TAG_H */