From ed666fb12910f46cff73a3869058ea59aef4261b Mon Sep 17 00:00:00 2001 From: Walter Lozano Date: Thu, 23 Jan 2020 16:05:05 -0300 Subject: watchdog: Use dev_read only if OF_PLATDATA is not enabled Currently watchdog tries to use dev_read_u32_default to get timeout configuration in case OF_CONTROL is enabled. However, if SPL is built with OF_PLATDATA this has no sense as there is no device tree. This patch fixes this issue by only use dev_read_u32_default if OF_CONTROL is enabled but OF_PLATDATA is not. Signed-off-by: Walter Lozano Reviewed-by: Simon Glass --- include/wdt.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'include') diff --git a/include/wdt.h b/include/wdt.h index 5bcff24ab31..dd83dfdd320 100644 --- a/include/wdt.h +++ b/include/wdt.h @@ -130,11 +130,10 @@ static inline int initr_watchdog(void) } } - if (CONFIG_IS_ENABLED(OF_CONTROL)) { + if (CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)) { timeout = dev_read_u32_default(gd->watchdog_dev, "timeout-sec", WATCHDOG_TIMEOUT_SECS); } - wdt_start(gd->watchdog_dev, timeout * 1000, 0); gd->flags |= GD_FLG_WDT_READY; printf("WDT: Started with%s servicing (%ds timeout)\n", -- cgit v1.2.3 From 7cceef7bde3d78dbd0f85794fbda0c431bac39c0 Mon Sep 17 00:00:00 2001 From: AKASHI Takahiro Date: Tue, 17 Mar 2020 11:12:34 +0900 Subject: efi_loader: define OsIndicationsSupported flags These flags are expected to be set in OsIndicationsSupported variable if corresponding features are supported. See UEFI specification, section 8.5.4. In particular, capsule-related flags will be used in my capsule update patch. Signed-off-by: AKASHI Takahiro Fix misspelled EFI_OS_INDICATIONS_BOOT_TO_FW_UI. Reviewed-by: Heinrich Schuchardt Signed-off-by: Heinrich Schuchardt --- include/efi_api.h | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'include') diff --git a/include/efi_api.h b/include/efi_api.h index 3d1a6beeeac..9162a27d2e1 100644 --- a/include/efi_api.h +++ b/include/efi_api.h @@ -57,6 +57,16 @@ typedef u16 efi_form_id_t; struct efi_event; +/* OsIndicationsSupported flags */ +#define EFI_OS_INDICATIONS_BOOT_TO_FW_UI 0x0000000000000001 +#define EFI_OS_INDICATIONS_TIMESTAMP_REVOCATION 0x0000000000000002 +#define EFI_OS_INDICATIONS_FILE_CAPSULE_DELIVERY_SUPPORTED 0x0000000000000004 +#define EFI_OS_INDICATIONS_FMP_CAPSULE_SUPPORTED 0x0000000000000008 +#define EFI_OS_INDICATIONS_CAPSULE_RESULT_VAR_SUPPORTED 0x0000000000000010 +#define EFI_OS_INDICATIONS_START_OS_RECOVERY 0x0000000000000020 +#define EFI_OS_INDICATIONS_START_PLATFORM_RECOVERY 0x0000000000000040 +#define EFI_OS_INDICATIONS_JSON_CONFIG_DATA_REFRESH 0x0000000000000080 + /* EFI Boot Services table */ #define EFI_BOOT_SERVICES_SIGNATURE 0x56524553544f4f42 struct efi_boot_services { -- cgit v1.2.3 From b74d568d83689234f505726399e483d2dc509898 Mon Sep 17 00:00:00 2001 From: AKASHI Takahiro Date: Tue, 17 Mar 2020 11:12:35 +0900 Subject: efi_loader: define System Resource Table macros Some of those values will be used in an implementation of UEFI firmware management protocol as part of my capsule update patch. Signed-off-by: AKASHI Takahiro --- include/efi_api.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'include') diff --git a/include/efi_api.h b/include/efi_api.h index 9162a27d2e1..3b0845aafda 100644 --- a/include/efi_api.h +++ b/include/efi_api.h @@ -1655,4 +1655,31 @@ struct efi_load_file_protocol { #define LOAD_OPTION_CATEGORY_BOOT 0x00000000 #define LOAD_OPTION_CATEGORY_APP 0x00000100 +/* + * System Resource Table + */ +/* Firmware Type Definitions */ +#define ESRT_FW_TYPE_UNKNOWN 0x00000000 +#define ESRT_FW_TYPE_SYSTEMFIRMWARE 0x00000001 +#define ESRT_FW_TYPE_DEVICEFIRMWARE 0x00000002 +#define ESRT_FW_TYPE_UEFIDRIVER 0x00000003 + +/* Last Attempt Status Values */ +#define LAST_ATTEMPT_STATUS_SUCCESS 0x00000000 +#define LAST_ATTEMPT_STATUS_ERROR_UNSUCCESSFUL 0x00000001 +#define LAST_ATTEMPT_STATUS_ERROR_INSUFFICIENT_RESOURCES 0x00000002 +#define LAST_ATTEMPT_STATUS_ERROR_INCORRECT_VERSION 0x00000003 +#define LAST_ATTEMPT_STATUS_ERROR_INVALID_FORMAT 0x00000004 +#define LAST_ATTEMPT_STATUS_ERROR_AUTH_ERROR 0x00000005 +#define LAST_ATTEMPT_STATUS_ERROR_PWR_EVT_AC 0x00000006 +#define LAST_ATTEMPT_STATUS_ERROR_PWR_EVT_BATT 0x00000007 +#define LAST_ATTEMPT_STATUS_ERROR_UNSATISFIED_DEPENDENCIES 0x00000008 + +/* + * The LastAttemptStatus values of 0x1000 - 0x4000 are reserved for vendor + * usage. + */ +#define LAST_ATTEMPT_STATUS_ERROR_UNSUCCESSFUL_VENDOR_RANGE_MIN 0x00001000 +#define LAST_ATTEMPT_STATUS_ERROR_UNSUCCESSFUL_VENDOR_RANGE_MAX 0x00004000 + #endif -- cgit v1.2.3 From b51ec639788bdf8220de458f49498d9f19f65b2b Mon Sep 17 00:00:00 2001 From: AKASHI Takahiro Date: Tue, 17 Mar 2020 11:12:36 +0900 Subject: efi_loader: export a couple of protocol related functions This is a preparatory patch. Those functions will be used in an implementation of UEFI firmware management protocol as part of my capsule update patch. Signed-off-by: AKASHI Takahiro --- include/efi_loader.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'include') diff --git a/include/efi_loader.h b/include/efi_loader.h index 8e343798339..37c3f15da1b 100644 --- a/include/efi_loader.h +++ b/include/efi_loader.h @@ -457,6 +457,20 @@ efi_status_t efi_remove_all_protocols(const efi_handle_t handle); /* Install multiple protocol interfaces */ efi_status_t EFIAPI efi_install_multiple_protocol_interfaces (efi_handle_t *handle, ...); +/* Get handles that support a given protocol */ +efi_status_t EFIAPI efi_locate_handle_buffer( + enum efi_locate_search_type search_type, + const efi_guid_t *protocol, void *search_key, + efi_uintn_t *no_handles, efi_handle_t **buffer); +/* Close an previously opened protocol interface */ +efi_status_t EFIAPI efi_close_protocol(efi_handle_t handle, + const efi_guid_t *protocol, + efi_handle_t agent_handle, + efi_handle_t controller_handle); +/* Open a protocol interface */ +efi_status_t EFIAPI efi_handle_protocol(efi_handle_t handle, + const efi_guid_t *protocol, + void **protocol_interface); /* Call this to create an event */ efi_status_t efi_create_event(uint32_t type, efi_uintn_t notify_tpl, void (EFIAPI *notify_function) ( -- cgit v1.2.3 From 74b44875357378c83e4bd150c0b759ca6ae6563a Mon Sep 17 00:00:00 2001 From: AKASHI Takahiro Date: Tue, 17 Mar 2020 11:12:37 +0900 Subject: efi_loader: correct a definition of struct efi_capsule_header See UEFI specification, section 8.5.3. In addition, the structure, efi_capsule_header, should be "packed" as it is a serialized binary format in a capsule file. Signed-off-by: AKASHI Takahiro --- include/efi_api.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/efi_api.h b/include/efi_api.h index 3b0845aafda..4713da2e1d0 100644 --- a/include/efi_api.h +++ b/include/efi_api.h @@ -217,11 +217,11 @@ enum efi_reset_type { #define CAPSULE_FLAGS_INITIATE_RESET 0x00040000 struct efi_capsule_header { - efi_guid_t *capsule_guid; + efi_guid_t capsule_guid; u32 header_size; u32 flags; u32 capsule_image_size; -}; +} __packed; #define EFI_RT_SUPPORTED_GET_TIME 0x0001 #define EFI_RT_SUPPORTED_SET_TIME 0x0002 -- cgit v1.2.3 From 7a4e717b9c0c255137a58f3ab90f002fc3aade2b Mon Sep 17 00:00:00 2001 From: Heinrich Schuchardt Date: Sun, 22 Mar 2020 18:28:20 +0100 Subject: efi_loader: definition of GetNextVariableName() 'vendor' is both an input and an output parameter. So it cannot be constant. Fixes: 0bda81bfdc5c ("efi_loader: use const efi_guid_t * for variable services") Signed-off-by: Heinrich Schuchardt --- include/efi_api.h | 2 +- include/efi_loader.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/efi_api.h b/include/efi_api.h index 4713da2e1d0..1c40ffc4f56 100644 --- a/include/efi_api.h +++ b/include/efi_api.h @@ -272,7 +272,7 @@ struct efi_runtime_services { efi_uintn_t *data_size, void *data); efi_status_t (EFIAPI *get_next_variable_name)( efi_uintn_t *variable_name_size, - u16 *variable_name, const efi_guid_t *vendor); + u16 *variable_name, efi_guid_t *vendor); efi_status_t (EFIAPI *set_variable)(u16 *variable_name, const efi_guid_t *vendor, u32 attributes, diff --git a/include/efi_loader.h b/include/efi_loader.h index 37c3f15da1b..3f2792892f3 100644 --- a/include/efi_loader.h +++ b/include/efi_loader.h @@ -645,7 +645,7 @@ efi_status_t EFIAPI efi_get_variable(u16 *variable_name, efi_uintn_t *data_size, void *data); efi_status_t EFIAPI efi_get_next_variable_name(efi_uintn_t *variable_name_size, u16 *variable_name, - const efi_guid_t *vendor); + efi_guid_t *vendor); efi_status_t EFIAPI efi_set_variable(u16 *variable_name, const efi_guid_t *vendor, u32 attributes, efi_uintn_t data_size, const void *data); -- cgit v1.2.3 From af827140e5965e5bb2bcad1c53ca8419b428ff6d Mon Sep 17 00:00:00 2001 From: Kristian Amlie Date: Tue, 25 Feb 2020 18:22:16 +0100 Subject: vexpress_ca9x4: Enable use of correct DTB file and restore EFI loader. EFI was disabled in f95b8a4b5f64f because of the missing DTB file, and indeed, the DTB file is required to load recent versions of GRUB (2.04) correctly. Signed-off-by: Kristian Amlie --- include/configs/vexpress_common.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/include/configs/vexpress_common.h b/include/configs/vexpress_common.h index 7f215a67077..e73658a9e6e 100644 --- a/include/configs/vexpress_common.h +++ b/include/configs/vexpress_common.h @@ -207,7 +207,8 @@ "devtmpfs.mount=0 vmalloc=256M\0" \ "bootflash=run flashargs; " \ "cp ${ramdisk_addr} ${ramdisk_addr_r} ${maxramdisk}; " \ - "bootm ${kernel_addr} ${ramdisk_addr_r}\0" + "bootm ${kernel_addr} ${ramdisk_addr_r}\0" \ + "fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0" /* FLASH and environment organization */ #define PHYS_FLASH_SIZE 0x04000000 /* 64MB */ -- cgit v1.2.3 From 23cb61761b137f088ef8625a1c4e7d9af2cbd296 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 2 Mar 2020 07:57:55 +0000 Subject: rockchip: Change keyboard input from CrOS EC keyboard to a USB keyboard These boards aren't ChromeOS devices so won't have a cros-ec-keyb input as it's the keyboard available via the ChromeOS Embedded Controller. Update them to use a USB keyboard which would actually be available. Also enable the usb keyboard option for those devices that don't have it enabled already. Signed-off-by: Peter Robinson Reviewed-by: Michael Trimarchi Reviewed-by: Simon Glass Reviewed-by: Kever Yang --- include/configs/miqi_rk3288.h | 2 +- include/configs/roc-pc-rk3399.h | 2 +- include/configs/rock2.h | 2 +- include/configs/tinker_rk3288.h | 2 +- include/configs/vyasa-rk3288.h | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) (limited to 'include') diff --git a/include/configs/miqi_rk3288.h b/include/configs/miqi_rk3288.h index c9691a0392d..e19fa902128 100644 --- a/include/configs/miqi_rk3288.h +++ b/include/configs/miqi_rk3288.h @@ -7,7 +7,7 @@ #define __CONFIG_H #define ROCKCHIP_DEVICE_SETTINGS \ - "stdin=serial,cros-ec-keyb\0" \ + "stdin=serial,usbkbd\0" \ "stdout=serial,vidconsole\0" \ "stderr=serial,vidconsole\0" diff --git a/include/configs/roc-pc-rk3399.h b/include/configs/roc-pc-rk3399.h index 3fd10625426..d4cbc3532e1 100644 --- a/include/configs/roc-pc-rk3399.h +++ b/include/configs/roc-pc-rk3399.h @@ -7,7 +7,7 @@ #define __ROC_PC_RK3399_H #define ROCKCHIP_DEVICE_SETTINGS \ - "stdin=serial,cros-ec-keyb\0" \ + "stdin=serial,usbkbd\0" \ "stdout=serial,vidconsole\0" \ "stderr=serial,vidconsole\0" diff --git a/include/configs/rock2.h b/include/configs/rock2.h index 917caf4d53a..9e4a66902b5 100644 --- a/include/configs/rock2.h +++ b/include/configs/rock2.h @@ -7,7 +7,7 @@ #define __CONFIG_H #define ROCKCHIP_DEVICE_SETTINGS \ - "stdin=serial,cros-ec-keyb\0" \ + "stdin=serial,usbkbd\0" \ "stdout=serial,vidconsole\0" \ "stderr=serial,vidconsole\0" diff --git a/include/configs/tinker_rk3288.h b/include/configs/tinker_rk3288.h index f1095ccd0e1..d239e3beb1c 100644 --- a/include/configs/tinker_rk3288.h +++ b/include/configs/tinker_rk3288.h @@ -7,7 +7,7 @@ #define __CONFIG_H #define ROCKCHIP_DEVICE_SETTINGS \ - "stdin=serial,cros-ec-keyb\0" \ + "stdin=serial,usbkbd\0" \ "stdout=serial,vidconsole\0" \ "stderr=serial,vidconsole\0" diff --git a/include/configs/vyasa-rk3288.h b/include/configs/vyasa-rk3288.h index e31dc777200..c3521cac419 100644 --- a/include/configs/vyasa-rk3288.h +++ b/include/configs/vyasa-rk3288.h @@ -9,7 +9,7 @@ #define __CONFIG_H #define ROCKCHIP_DEVICE_SETTINGS \ - "stdin=serial,cros-ec-keyb\0" \ + "stdin=serial,usbkbd\0" \ "stdout=serial,vidconsole\0" \ "stderr=serial,vidconsole\0" -- cgit v1.2.3 From 39984d22138339fb2b14b21de635ef177cce0c7a Mon Sep 17 00:00:00 2001 From: Tom Rini Date: Fri, 27 Mar 2020 11:47:04 -0400 Subject: Revert "vexpress_ca9x4: Enable use of correct DTB file and restore EFI loader." Currently this causes failures of the platform when running the EFI loader tests, so disable it for now. This reverts commit af827140e5965e5bb2bcad1c53ca8419b428ff6d. Signed-off-by: Tom Rini --- include/configs/vexpress_common.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'include') diff --git a/include/configs/vexpress_common.h b/include/configs/vexpress_common.h index e73658a9e6e..7f215a67077 100644 --- a/include/configs/vexpress_common.h +++ b/include/configs/vexpress_common.h @@ -207,8 +207,7 @@ "devtmpfs.mount=0 vmalloc=256M\0" \ "bootflash=run flashargs; " \ "cp ${ramdisk_addr} ${ramdisk_addr_r} ${maxramdisk}; " \ - "bootm ${kernel_addr} ${ramdisk_addr_r}\0" \ - "fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0" + "bootm ${kernel_addr} ${ramdisk_addr_r}\0" /* FLASH and environment organization */ #define PHYS_FLASH_SIZE 0x04000000 /* 64MB */ -- cgit v1.2.3 From ac28e59a574dd231a4787752d923f618587e3d10 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Wed, 4 Mar 2020 08:59:50 +0800 Subject: usb: Migrate to support live DT for some driver Use ofnode_ instead of fdt_ APIs so that the drivers can support live DT. This patch updates usb_get_dr_mode() and usb_get_maximum_speed() to use ofnode as parameter instead of fdt offset. And all the drivers who use these APIs update to use live dt APIs at the same time. Signed-off-by: Kever Yang --- include/linux/usb/otg.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'include') diff --git a/include/linux/usb/otg.h b/include/linux/usb/otg.h index d2604c5cafb..c19b916be9d 100644 --- a/include/linux/usb/otg.h +++ b/include/linux/usb/otg.h @@ -9,6 +9,8 @@ #ifndef __LINUX_USB_OTG_H #define __LINUX_USB_OTG_H +#include + enum usb_dr_mode { USB_DR_MODE_UNKNOWN, USB_DR_MODE_HOST, @@ -18,20 +20,20 @@ enum usb_dr_mode { /** * usb_get_dr_mode() - Get dual role mode for given device - * @node: Node offset to the given device + * @node: ofnode of the given device * * The function gets phy interface string from property 'dr_mode', * and returns the correspondig enum usb_dr_mode */ -enum usb_dr_mode usb_get_dr_mode(int node); +enum usb_dr_mode usb_get_dr_mode(ofnode node); /** * usb_get_maximum_speed() - Get maximum speed for given device - * @node: Node offset to the given device + * @node: ofnode of the given device * * The function gets phy interface string from property 'maximum-speed', * and returns the correspondig enum usb_device_speed */ -enum usb_device_speed usb_get_maximum_speed(int node); +enum usb_device_speed usb_get_maximum_speed(ofnode node); #endif /* __LINUX_USB_OTG_H */ -- cgit v1.2.3